<< 27-10-2014 >>

00:07:55*Jehan_ quit (Quit: Leaving)
00:13:52*superfun[c] quit (Quit: Page closed)
00:31:08*superfunc joined #nimrod
00:32:32superfuncsup everyone
00:34:28VarriountAraq: What bugfix about the export marker? Do you mean for when private forward declarations have public implementation?
00:40:37ldleworkHow do I setup Aporia for nimrod completion?
00:42:43TrustableIdlework: Do you mean the suggest feature?
00:43:08ldleworkTrustable: yeah
00:43:50TrustableIdlework: Enable it in the settings
00:45:40ldleworkTrustable: don't I have to tell it where nimrod is installed, etc?
00:46:15TrustableIdlework: Normally Aporia finds the location of nimrod automatically.
00:49:10ldleworkInteresting not a single nimrod video on youtube
00:51:58superfuncuntil recently, there wasn't really a rust video or two either
00:52:08ldleworkTrustable: when you type 'import' should it suggest the modules you can import?
00:52:55TrustableIdlework: If you understand German, watch this video: http://media.koeln.ccc.de/events/gpn/gpn14/mp4/gpn14-5892-de-Nimrod_h264-hq.mp4
00:53:22ldleworkI don't :)
00:53:28ldleworkWhat's the point of a TaintedString
00:54:23TrustableIdlework: I don't know how advanced the suggest feature is. It's not working for me at the moment.
00:54:38ldleworkTrustable: yeah too bad
00:55:36ldleworkDoesn't support emacs bindings anyway so
00:56:04TrustableIdlework: If I understood it correct, a TaintedString can contain any arbitrary data.
00:57:01ldleworkTrustable: I'm not sure how to interpret that
00:57:07ldleworkWhat can't a 'string' have?
00:57:13superfuncIs there a way to automatically initialize a seq that is a member of a type?
00:57:27TrustableA normal string only contains visible characters.
00:57:28superfunc^ upon construction, that is
00:57:46Trustableplus line break
00:58:43Trustablesuperfunc: What do you mean by member of a type?
00:59:07superfunctype Foo
00:59:13superfunc f: seq[int]
00:59:40superfuncwhen I create some var a : Foo, i'd like the seq[] to be initialized
00:59:51TrustableI don't think a type can contain any data.
01:00:44TrustableCreate a procedure newFoo()
01:02:48superfuncWhat do you mean a 'type can't contain data'?
01:02:59superfuncYeah, I knew I could do it with a proc
01:03:05superfuncwas wondering if there was a pragma for it
01:03:48ldleworkBy 'multimethod' is it just meant a method redefined multiple times with different signature?
01:04:11ldleworkAnd is dynamic binding simply meaning, that the method you call is dynamically deteremined based on arguments?
01:04:13Trustablesuperfunc: I have no idea, just a guess
01:05:04ldleworkI can't find where Nimrod's pointers/references are described
01:05:23ldleworknm
01:05:31superfuncdynamic binding is when a function call can't be known until runtime
01:06:22superfuncif you have some B which inherits from A and you are accesing through a top level interface, the determination of whether to call A's proc of B's proc can't be known until runtime
01:06:47superfuncs/of/or/g
01:07:52ldleworkHow can I get a reference to a proc?
01:11:39*Trustable quit (Quit: Leaving)
01:17:24*dapz joined #nimrod
01:19:38ldleworkhmm are proc types described anywhere?
01:24:05superfunchttp://nimrod-lang.org/manual.html#procedures
01:25:43ldleworksuperfunc: I meant the 'proc type' syntax
01:26:28superfuncvar f : proc(int): int
01:26:40superfunccreates a variable of type proc taking an int and returning an int
01:27:32ldleworksuperfunc: and you can represent that like (int -> int) right?
01:28:01superfuncYou mean with the lambda syntax? Yeah, I think so. It's in the future module iirc
01:29:08ldleworksuperfunc: so I was wondering how you can specify the same find of proc type, but that takes no args
01:29:33superfuncproc(): int
01:29:42superfuncI'm not positive on the lambda-ish version of that
01:30:03superfuncbut that will work
01:30:27ldleworkk, was just curious what the lambda version was
01:32:49superfuncI don't think the lambda syntax can be used when declaring the type
01:32:49superfuncIt is used when passing a proc in
01:32:49superfunclike: echo(s.map((x: int) => x * 5))
01:32:49ldleworksuperfunc: I was able to do "type fptr = (int -> int)
01:32:49ldlework"
01:32:52superfunchmp, must have been changed in my absence then
01:36:24*superfunc__ joined #nimrod
01:36:44superfunc__That code doesn't compile under 0.10.0
01:37:19*superfunc quit (Ping timeout: 246 seconds)
01:37:19*superfunc__ is now known as superfunc
01:38:40ldleworksuperfunc: you know how to use macros?
01:39:09superfuncNot in nim, no
01:39:26superfuncWhat compiler did you compile that code under?
01:39:37ldleworkDoes anyone know how to craft a simple macro to prevent the repetition here? I've never messed with macros and I'm curious: https://gist.github.com/dustinlacewell/054bc90ee13711f3496b
01:40:09ldleworksuperfunc: Nim Compiler Version 0.10.0 (2014-10-26) [Linux: amd64]
01:41:27superfunctype fptr = (int -> int) fails with an unrecognized symbol under 0.10
01:42:36superfuncUnless I import future
01:42:51ldleworksuperfunc: yeah definitely
01:42:53superfuncWhich, I'm realizing is what you probably meant
01:42:54ldleworkgotta import future
01:42:58superfuncApologies
01:42:58ldleworkyeah
01:43:19superfuncYeah, I hadn't seen that new syntax
01:44:58superfuncFor a parameter less one, you can do (() -> int)
01:45:47ldleworkaww this is sad :( http://nimrod-lang.org/macros.html#procedure-declaration_toc
01:47:26superfuncTry writing a section and do a PR
01:55:43ldleworkI'm so close.. https://gist.github.com/dustinlacewell/076261c8df0545695889
01:55:58ldleworkhow to embed the tempalte expression into a string heh
01:59:04*dapz quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
02:15:01boydgreenfieldHaving a bit of trouble digging in here… but does anybody know how to build babel under 0.9.6 *or* bigbreak on OS X. I’d thought this was only an issue for bigbreak and so scrapped my entire install, but now can’t get it working again. Github issue for reference: https://github.com/nimrod-code/nimble/issues/62
02:16:26boydgreenfield(nevermind, that issue has a fix… but i’m not sure when I will need that functionality)
02:20:08*AFKMorpork is now known as AMorpork
02:32:02boydgreenfieldOk, separate question – is anyone getting this compiler error on OS X? (I just got it on upgrade from v0.9.5 to v0.9.6 release): `
02:32:04boydgreenfield}
02:32:05boydgreenfield^
02:32:06boydgreenfield1 error generated.
02:32:09boydgreenfield“/Users/boyd/Projects/refgen/mg/nimcache/stdlib_cpuinfo.c:10:1: error: extraneous closing brace ('}')
02:32:09boydgreenfield}
02:32:10boydgreenfield^
02:32:11boydgreenfield1 error generated."
02:32:14boydgreenfield(sorry needed to quote that apparently)
02:33:07boydgreenfield(note this appears to happen with —threads:on)
02:40:55*darkf_ joined #nimrod
02:41:17*darkf quit (Disconnected by services)
02:41:19*darkf_ is now known as darkf
02:41:56*kshlm joined #nimrod
02:44:42*bjz quit (Read error: Connection reset by peer)
02:44:45*bjz_ joined #nimrod
02:44:53*superfunc__ joined #nimrod
02:49:11ldleworkAraq: around?
02:56:03superfunc__gokr1: I enjoyed your newest article
02:57:53*boydgreenfield quit (Quit: boydgreenfield)
03:00:50*xenagi quit (Quit: Leaving)
03:01:39*fowlmouth quit (Ping timeout: 244 seconds)
03:02:44*flaviu quit (Read error: No route to host)
03:08:20*boydgreenfield joined #nimrod
03:19:51*BitPuffin quit (Ping timeout: 265 seconds)
03:24:22*boydgreenfield quit (Quit: boydgreenfield)
03:29:58*fowl joined #nimrod
03:32:10*boydgreenfield joined #nimrod
03:38:04*superfunc__ quit (Ping timeout: 246 seconds)
03:51:59*saml_ quit (Quit: Leaving)
03:54:35*dapz joined #nimrod
03:56:09*superfuncc joined #nimrod
03:58:12*nande quit (Remote host closed the connection)
03:59:48*boydgreenfield quit (Quit: boydgreenfield)
04:06:05ldleworki did it! https://gist.github.com/dustinlacewell/ced55b0f727e6b8aff13
04:18:47superfunccnice dude
04:27:08ldleworksuperfuncc: now I'm trying to make a varargs version and huh, doesn't work
04:29:01ldleworkI wonder how I can print out the expansion of a macro..
04:35:49*superfuncc quit (Ping timeout: 246 seconds)
04:59:05*bjz_ quit (Ping timeout: 258 seconds)
04:59:47ldleworkhmm varargs for macros is not working for me
05:00:00*superfunc__ joined #nimrod
05:17:27*superfunc__ quit (Quit: Page closed)
05:23:56*dapz quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
05:28:23*kshlm quit (Quit: Konversation terminated!)
05:31:38*Demos quit (Read error: Connection reset by peer)
05:39:26*kshlm joined #nimrod
05:42:12*kshlm quit (Client Quit)
05:42:40*kshlm joined #nimrod
05:44:59*kemet joined #nimrod
05:47:05*kemet quit (Remote host closed the connection)
05:52:13*kshlm quit (Quit: Konversation terminated!)
05:52:29*kshlm joined #nimrod
06:08:53*johnsoft quit (Ping timeout: 260 seconds)
06:09:52*johnsoft joined #nimrod
06:10:10*superfunc quit (Quit: Connection closed for inactivity)
06:10:19*kshlm quit (Remote host closed the connection)
06:11:21*ARCADIVS joined #nimrod
06:29:58*kshlm joined #nimrod
06:39:52*dapz joined #nimrod
06:41:29*rpag quit (Ping timeout: 245 seconds)
06:56:42*woodgiraffe quit (K-Lined)
06:57:10*woodgiraffe joined #nimrod
07:06:38*gokr1 quit (Quit: Leaving.)
07:07:27*kshlm quit (Quit: Konversation terminated!)
07:07:42*kshlm joined #nimrod
07:10:04*kshlm quit (Client Quit)
07:10:21*kshlm joined #nimrod
07:14:49*dapz quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
07:21:56*dapz joined #nimrod
07:46:30*q66[lap] joined #nimrod
07:46:30*q66[lap] quit (Client Quit)
08:20:54*gokr joined #nimrod
08:25:46gokrmorning
08:28:07*dapz quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
08:32:04ldleworkgokr: hi
08:47:47ldleworkgokr: know anything about the macros?
08:48:55*gokr sitting in an airport...
08:49:56*gokr1 joined #nimrod
08:52:39gokr1superfunc_: Thanks! The one about the server?
08:52:55gokr1ldlework: TaintedString is about tracking "potentially unsafe" strings.
08:53:24gokr1So when you get input from the outside (network, an input field in a UI etc) you can use TaintedString.
08:53:48gokr1TaintedString is just an alias for string - if you don't compile with taintMode:on
08:54:28gokr1But if you do compile with taintMode:on then its a distinct type of string. Meaning it *is* a string, but its a *different type* according to the type system.
08:54:55gokr1So you can't willy nilly send in a TaintedString into a proc that wants a string.
08:55:01ldleworkah just so you can use that to check for strings that need to be validated?
08:55:16gokr1Rather so that you can track what you do with these guys.
08:55:27ldleworkgokr1: I can't get macros to take vargars
08:55:53gokr1Ok, haven't played with macros yet
08:58:37gokr1Also - the comment about TaintedString being able to contain "any data" is not correct AFAIK.
08:59:03gokr1Or rather, both string and TaintedString (they are both "string") can contain any bytes.
08:59:37gokr1But a string *literal* in code can't contain any bytes - but you can use the raw string literal to skip escapes etc.
09:00:25gokr1Further, multimethods is about the dynamic dispatch operating on multiple arguments - and not just the receiver.
09:00:56gokr1Most OO languages only has so called single dispatch - the dynamic lookup of the method is done by looking at the runtime type of the *receiver*.
09:01:18gokr1The receiver being "the first argument" in Nim typically.
09:01:49gokr1But in Nim and some other languages dispatch also looks at more arguments. In Nim it looks at all arguments that are objects IIRC.
09:03:36gokr1This means you can make several different implementations of the same method name - but with different types for the object arguments "narrowing it down" typically for specific combinations of subtypes.
09:05:55gokr1So "method eat(eater: Mammal, food: Food)" and then say "method eat(eater: Monkey, food: Banana)" and "method eat(eater: Monkey, food: Apple)". Depending on arguments passed it would be able to dispatch to any of these. And even if we call "aMonkey.eat(x)" it would choose between the one for bananas and the one for apples.
09:06:17gokr1(pseudo code, I hope I didn't screw it up)
09:06:47gokr1I will talk about these things in my next article, but it will take more time before that one is out - need to study a bit.
09:06:50*khmm joined #nimrod
09:07:26*khmm_ joined #nimrod
09:08:30*kshlm quit (Quit: Konversation terminated!)
09:08:45gokr1So in Nim - you have basically 3 different techniques (or more?). First you can do regular statically bound procs. Then you can use generics to specify procs in a generic way (typically causing multiple variants to be compiled under the hood). And then you can use methods which will do dynamic dispatch during runtime.
09:08:46*kshlm joined #nimrod
09:08:49*kshlm quit (Changing host)
09:08:49*kshlm joined #nimrod
09:12:23*Araq_ joined #nimrod
09:17:44*khmm_ quit (Ping timeout: 255 seconds)
09:18:59*khmm quit (Ping timeout: 245 seconds)
09:21:13*Araq_ quit (Read error: Connection reset by peer)
09:22:43*Araq_ joined #nimrod
09:22:46*fowl quit (Read error: Connection timed out)
09:38:42*kshlm quit (Ping timeout: 250 seconds)
09:40:13*kemet joined #nimrod
09:43:04Araq_'devel' should be able to build a working babel on macosx
09:47:00*gokr1 quit (Quit: Leaving.)
09:47:57*kemet quit (Quit: Instantbird 1.5 -- http://www.instantbird.com)
09:58:59*gokr1 joined #nimrod
10:06:15ldleworkAraq_: do you know is varargs is still supported for macros?
10:06:58Araq_ldlework: sure it works. but you have to treat them differently for 'immediate'
10:07:41ldleworkAraq_: I found that if I did myMacro(A, B, C) and defined it as macro myMacro(n: varargs[expr]) that n only contained A
10:07:48ldleworkAraq_: is that what you mean?
10:08:00Araq_yes
10:09:00ldleworkAraq_: can you please show me an example of a macro taking varargs and just printing them out with hint() or something
10:09:10ldleworkI would really appreciate it, I've been banging my head for some time
10:09:24Araq_let x = callsite()
10:09:43ldleworkI have no idea what that's supposed to tell me
10:09:53Araq_for i in 1.. <x.len: processArg(x[i])
10:10:24Araq_dunno what you use for outputting
10:12:11ldleworkvarargs.nim(3, 21) Error: ambiguous identifier: 'varargs' -- use a qualifier
10:12:27ldleworkhttps://gist.github.com/ca0fe691a965fd323027
10:13:35ldleworkAraq_: ^
10:13:38Araq_so learn to name your modules
10:13:47Araq_for fuck's sake
10:13:57ldlework:3
10:14:34ldleworkAraq_: sorry?
10:14:51Araq_so don't name it varargs when it takes a varargs
10:15:00Araq_varargs is already the name of the type
10:15:11ldleworkAraq_: renaming the macro doesn't change anything
10:15:32Araq_apparently you named your module also varargs
10:15:40ldleworkoh
10:15:43ldleworkfg
10:16:10Araq_and yes, better disambiguation is in the works
10:16:47ldleworkwhere is processArg
10:17:00Araq_it's pseudocode
10:17:11Araq_you should do something with x[i]
10:17:15Araq_like printing it
10:19:55ldleworkAraq_: okay so this is the behavior Iwas getting before https://gist.github.com/e334cf4e89d966413d7e
10:20:07ldleworkit prints the first string, but it doesn't seem to iterate over names
10:20:34Araq_let x = callsite()
10:20:40Araq_for i in 1.. <x.len: processArg(x[i])
10:20:59Araq_there is only so much I can do when you won't read
10:21:25ldleworkOkay that worked
10:21:40ldleworkso I don't really understand what callsite does so I guess I will look it up
10:22:37ldleworkhmm is this a complete sentence? "returns the AST if the invokation expression that invoked this macro."
10:23:36ldleworkI don't really understand what it does, but that did the trick
10:23:58ldleworkAraq_: thanks
10:24:26Araq_ldlework: typo
10:24:33Araq_"AST of the ..."
10:27:04ldleworkoh nice
10:28:39ldleworkAraq_: can you think why this gives "Undeclared identifier 'A'" on line 18 for https://gist.github.com/3555a75524ef39388ce3
10:29:04ldleworkShouldn't the macro create A? I think this was working when I was only creating one proc with the macro
10:30:53Araq_ let result = newStmtList()
10:30:56Araq_make that instead:
10:30:59Araq_ result = newStmtList()
10:31:30Araq_and start from 1 as I told you
10:31:35Araq_you start from ß
10:31:37Araq_0
10:32:09Araq_x[0] is abcProcs itself
10:33:08ldleworkah okay
10:33:32ldleworkAraq_: that worked, thanks a ton
10:34:46Araq_btw usually one uses templates instead of AST building
10:35:00Araq_but whatever, I'm not gonna explain that now :P
10:41:35gokr1Am I correct that the only way to get a "ref" is to allocate a "ref type"? A ptr I can get with addr - and addr seems to work on several things, quite logically since its the "unsafe stuff" anyway.
10:42:10Araq_yes.
10:43:17gokr1Kinda fun that you can do "type IntHolder: ref int" etc.
10:43:31*gokr1 starts wondering why I am still at the airport...
10:43:58gokr1Ok, will disconnect and head back home. I just waved off my daughter Maya going up north to visit cousins.
10:47:43gokr1Although I am not finished reading up and testing the OO features (will take a while) - I guess the "main missing bit" that one could argue is slightly missing in the OO department would be some kind of "trait", "mixin", "group of procs and/or methods" that can be reused in another type. But I guess (not that well versed in generics) generics gives this ... basically. Right?
10:48:45Araq_sounds more like a 'template' gives this
10:49:12Araq_there is some huge overlap between generics and macors
10:49:15Araq_*macros
10:49:28gokr1Mmm. Do you share this view? I mean, that that's the "only" thing missing - and yes, templats/macros probably can fill in that gap.
10:50:46Araq_I consider this generics vs macros the biggest unsolved problem in Nim's design. However, I argue it's an unsolved problem in PL design.
10:51:41Araq_what you likely mean is that "interfaces" are missing. but these can be emulated sufficiently with a tuple of closures
10:51:43*ARCADIVS quit (Quit: ARCADIVS)
10:51:52gokr1I mean, we have inheritance of structure - albeit single inheritance but hey, that's perfectly fine with me. We have both static and dynamic dispatch - and they even mix sensibly it seems (small experiments). We have generic procs. We have the whole ref objects with gc etc.
10:52:06gokr1Nah... interfaces seem to be covered by type classes, or?
10:52:41Araq_nope, type classes are entirely static
10:52:45gokr1No, I was more looking for a way to inherit (or reuse in whatever way, mixin or otherwise) groups of behavior.
10:53:08gokr1Ok, when you said "interfaces" I think "Java style interfaces" and they are static too.
10:53:25Araq_no, they are dynamic
10:53:35Araq_and yes, I mean "Java style interfaces"
10:53:57gokr1Ehm...
10:54:23gokr1Ah, you mean that they are verified against the runtime type of the object, right?
10:54:56Araq_that they support runtime polymorphism
10:55:24gokr1As a Smalltalker I hear dynamic with a slightly different meaning :) (as in "can be created and messed around with in runtime")
10:55:33gokr1Right, agreed.
10:55:57gokr1So the type classes ... don't come into play in method multi dispatch - that is what you are saying?
10:56:20gokr1Right, so in that case - they don't cover the same bases as Java interfaces, true.
10:56:21Araq_yes, they are only an elaborate mechanism for generic constraints
10:56:30gokr1But a very elegant one :)
10:56:59Araq_yeah but I think I'll delay them to version 2.0
10:57:20Araq_we can't implement everything at once
10:57:33gokr1Ok, really have to leave the airport... But its fun and "mind opening" to play with Nim. And ... even though I easily find corners where I go "hum, what will happen here?" I tend to figure things out.
10:58:22gokr1right
10:58:24gokr1Ok, later
10:59:29*gokr1 quit (Quit: Leaving.)
11:01:11ldleworkAraq_: would you like to add the template version? https://gist.github.com/9b6a85f9fc84df0b9d98
11:02:36Araq_ldlework: perhaps later
11:04:01*xcombelle joined #nimrod
11:14:02*khmm joined #nimrod
11:14:27*khmm_ joined #nimrod
11:20:31*xcombelle quit (Ping timeout: 255 seconds)
11:27:31*gokr quit (Read error: Connection reset by peer)
11:27:52*gokr joined #nimrod
11:35:04*fowl joined #nimrod
11:51:30*xcombelle joined #nimrod
12:00:22*gokr1 joined #nimrod
12:01:05*untitaker quit (Ping timeout: 255 seconds)
12:02:23*khmm_ quit (Ping timeout: 240 seconds)
12:02:35*khmm quit (Ping timeout: 272 seconds)
12:04:53*Araq_ quit (Ping timeout: 240 seconds)
12:06:24*darkf_ joined #nimrod
12:06:38*untitaker joined #nimrod
12:10:04*darkf quit (Ping timeout: 265 seconds)
12:14:48*darkf_ is now known as darkf
12:20:05*Araq_ joined #nimrod
12:50:25*rpag joined #nimrod
13:08:27*q66[lap] joined #nimrod
13:26:12*hsuh quit (Ping timeout: 250 seconds)
13:26:33*hsuh joined #nimrod
13:32:05*Araq_ quit (Quit: ChatZilla 0.9.91 [Firefox 33.0/20141011015303])
13:36:35*darkf quit (Quit: Leaving)
13:36:56*BitPuffin joined #nimrod
13:38:53*gokr quit (Ping timeout: 258 seconds)
13:46:47*Trustable joined #nimrod
13:47:12*Trustable quit (Remote host closed the connection)
13:49:42*Trustable joined #nimrod
13:53:26*hsuh quit (Ping timeout: 272 seconds)
13:54:39*hsuh joined #nimrod
13:58:30*Sembei quit (Read error: Connection reset by peer)
13:59:31*MyMind joined #nimrod
13:59:53*hsuh quit (Ping timeout: 240 seconds)
14:01:00*rpag quit (Quit: Leaving)
14:08:07*hsuh joined #nimrod
14:24:08gokr1Annoying "buglet" in Aporia - suggest doesn't care if I am typing a comment :)
14:26:21*superfunc joined #nimrod
14:34:16*rpag joined #nimrod
14:36:38woodgiraffehmmmm... readFile fails if I read something in /proc (e.g. /proc/loadavg), presumably because readAll checks the fileSize of the file, in proc most apparently are 0, and then determines that it's not a file, but a buffer and that seems to not work
14:40:21woodgiraffeI suspect this would trouble reading from FUSE filesystems as well that return 0 filesizes for whatever reason.
14:45:42*brson joined #nimrod
14:47:57woodgiraffeAh actually I'm sort of wrong, readAllBuffer doesn't mean what I thought it meant, instead I think the problem is the "if len >= 0" in readAll, if it's 0 it calls readAllFile with length of 0, which I assume means: read 0 bytes
14:52:19*dom96_ quit (Ping timeout: 245 seconds)
14:54:09*khmm joined #nimrod
15:05:42*khmm_ joined #nimrod
15:15:39*mko joined #nimrod
15:23:58*khmm_ quit (Ping timeout: 255 seconds)
15:24:29*khmm quit (Ping timeout: 255 seconds)
15:40:25*dapz joined #nimrod
15:46:22*willwillson joined #nimrod
15:47:28willwillsonwhen using spawn, can you pass a pointer back through the the flowvar? I'm allocating with allocshared, but pointers always come back nil?
15:54:32*khmm joined #nimrod
15:54:55*khmm_ joined #nimrod
16:03:46*dapz quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:11:54*willwillson quit (Ping timeout: 245 seconds)
16:12:26*Araq_ joined #nimrod
16:15:43*kshlm joined #nimrod
16:22:09*xcombelle quit (Remote host closed the connection)
16:27:55*Araq_ quit (Quit: ChatZilla 0.9.91 [Firefox 33.0/20141011015303])
16:57:53*johnsoft quit (Read error: Connection reset by peer)
16:58:29*johnsoft joined #nimrod
17:03:36*Matthias247 joined #nimrod
17:04:51*khmm_ quit (Ping timeout: 244 seconds)
17:04:58*khmm quit (Ping timeout: 265 seconds)
17:06:20*dapz joined #nimrod
17:08:39*boydgreenfield joined #nimrod
17:19:33*boydgreenfield quit (Quit: boydgreenfield)
17:24:19*boydgreenfield joined #nimrod
17:26:26*kshlm quit (Ping timeout: 255 seconds)
17:39:38*willwillson joined #nimrod
17:40:22*flaviu joined #nimrod
17:41:48*Fran__ joined #nimrod
17:44:36*Fr4n quit (Ping timeout: 272 seconds)
17:53:18*Fran__ quit (Ping timeout: 265 seconds)
17:57:25ldleworkCan anyone help me with the Template version of this program? https://gist.github.com/a8c399707c4648b71806
17:58:51*BlaXpirit joined #nimrod
18:00:10*superfunc quit (Quit: Connection closed for inactivity)
18:01:23*johnsoft quit (Ping timeout: 240 seconds)
18:01:33*johnsoft joined #nimrod
18:04:45willwillsonldlework: do you want to get rid of macros completely or just get rid of the parseStmt?
18:05:10ldleworkwillwillson: I have just implemented the same thing various ways
18:05:13ldleworkI'm just experimenting
18:05:19ldleworkso the last version I want to see is the template version
18:05:22ldleworkof abcProc
18:05:35ldleworkso I can just do abcProc(A) abcProc(B), etc
18:06:16willwillsonldlework: that seems to pretty easy then
18:06:31ldleworkwillwillson: nice, I couldn't figure it out
18:06:37ldleworkwillwillson: mind updating the gist?
18:07:18willwillsonldlework: ok, let me see what I can do
18:07:58Araqwillwillson: yeah FlowVar[shared ptr] is supposed to work, can you create a bug report?
18:08:26*dom96_ joined #nimrod
18:08:42*superfunc_ quit (Quit: Page closed)
18:09:37willwillsonAraq: hopefully I'm not doing something stupid: https://github.com/Araq/Nimrod/issues/1597
18:09:40AraqVarriount: setting the path does not work: http://forum.nimrod-lang.org/t/604
18:14:18ldleworkwillwillson: thanks
18:14:32Araqwillwillson: nope, I don't think so, it should work
18:16:18VarriountAraq: I fixed that with the last version I gave you.
18:16:48AraqVarriount: well I only updated the 64bit version
18:16:53Varriount-_-
18:17:00Araq-_- indeed
18:17:14VarriountI'll go ahead and generate the 32 bit installer.
18:17:45Araqok. btw do you use the same config options as the old inno setup installer?
18:18:10VarriountHuh? What do you mean?
18:18:47Araqinno.tmpl uses c.binPaths
18:19:14VarriountIs that a value in nimrod.cfg?
18:19:20Araqyep
18:19:24Araqwell
18:19:27Araqnimrod.ini
18:19:42Araqwhich is btw *only* used for niminst
18:19:59Araqso yeah, we should rename it some day
18:24:45*Fran__ joined #nimrod
18:25:55ldleworkAraq: can you please show me the varargs version of this template macro? https://gist.github.com/d4039f101923e7e6ec7f
18:26:23VarriountAraq: Regarding a comment you said yesterday, what did you mean by the 'export fix"?
18:26:57AraqVarriount: proc foo() # forward decl; proc foo*() = # star gets lost
18:27:13VarriountYes, there's a PR for that.
18:28:17Araqldlework: now that's really simple: there is no varargs version possible
18:28:35Araqas you cannot iterate over all args in a template
18:28:36ldleworkAraq: ah okay, that's what willwillson thought. thanks for confirming
18:29:04ldleworkAraq: inherent limitation or just a current one?
18:29:21Araqinherent limitation
18:29:36Araqwe could provide a way to do it recursively in a template
18:29:42ldleworkAraq: got it. Araq is it because there'd be no way to loop over the args in a way that would define several new procs?
18:29:43Araqbut why bother
18:29:52Araqexactly.
18:30:00ldleworkAraq: thanks!
18:30:25ldleworkI think I'm going to write a blog up on all of this
18:30:35Araqthat would be very nice
18:30:49ldleworkAraq: is there any reason why I can't do $some_ast_node
18:30:55ldleworkvs astToStr()
18:31:13Araqthe lack of iteration in templates is the primary reason why 'macro' exists
18:31:24ldleworkAraq: I'll note that in the article
18:31:40ldleworkAraq: that you can use the template from your macro is nice
18:32:12ldleworkAraq: also I don't understand the need for callsite(), why doesn't the macro's arguments work as expected, why do I need to pull them in externally?
18:32:17Araqldlework: I don't think $ can work reasonably as an alias for 'astToStr'
18:33:19Araqldlework: for non-immediate macros, macro arguments do work as expected
18:33:35Araqthere are all sort of inherent problems here
18:33:38ldleworkAraq: I should probably learn what the difference of immediate and not immediate is
18:33:59Araqzahary argues immediate should ultimately not be necessary
18:34:23ldleworkAraq: people who I've shown nimrod too get immediately turned off by the pragma tags
18:34:34ldleworksuperficial, I'm just providing a datapoint
18:35:09Araq*shrug*. Their syntax is not a coincidence
18:35:17ldleworkcoincidence?
18:36:02AraqNim has 6 ways to write brackets: () [] {} {. .} (. .) [. .]
18:36:16Araq(. .) and [. .] are currently unused
18:36:34Araqother combinations do not work as well with user definable operators
18:37:00ldleworkAraq: okay so, is the difference that immediate tempaltes/macros have their arguments passed in lexically without any sort of care whether what you're passing exists or not?
18:37:18Araqright
18:37:56ldleworkmetaprogramming is crazy
18:38:08ldleworkpeople get all huffy about metaclasses in python
18:38:24Araqyou can handle the immediate vs non-immediate problem in other ways. but it's an inherent problem
18:38:48ldleworkI could just pass in strings to a non-immediate macro
18:39:00Araqoriginally Nim only had immediate templates and macros
18:39:24ldleworkabcProcs("A", "B", "C")
18:39:25Araqsometimes I wonder whether my original design was much better :P
18:39:28ldleworkbut that's less cool
18:40:59ldleworkAraq: so the reason my immediate varargs version without callsite wasn't working is because `A` the raw lexical content was being 'shoved into' the first param to the macro which was set as varargs but since it was immediate it just got shoved in there anyway?
18:41:00Araqsome people think (. .) should never be used for anything cause it looks like boobs
18:41:17Araqldlework: yup.
18:42:05*q66[lap] quit (Changing host)
18:42:05*q66[lap] joined #nimrod
18:42:26Araqtype checking / argument passing for immediate macros is under-developed
18:43:00Araqbut I consider it super low priority as immediate macros are inherently evil and you better know what you're doing
18:44:13ldleworkAraq: is there any implicitly wrong with my test example?
18:45:26*silven quit (Ping timeout: 265 seconds)
18:45:26*silven_ joined #nimrod
18:46:46Araqldlework: you can try if a non-immediate macro works as well
18:48:13*BlaXpirit quit (Quit: Quit Konversation)
18:50:02*BlaXpirit joined #nimrod
18:50:49*silven_ is now known as silven
18:51:06flaviuHaha, seriously?
18:52:00Araqflaviu: yes.
18:53:09ldleworkAraq: nah it gives "Undeclared identifier 'A'"
18:53:16ldleworkI guess as you'd expect
18:53:34ldleworkAlso, the name change to Nim is official?
18:53:34*dapz quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
18:53:39Araqyeah well there have been developments to make this work
18:54:31Araqwe're officially in the process of changing the name
18:55:05Araqthe process will be complete once 0.10.0 is out and I renamed the github links
18:55:20Araqapparently you can easily rename whole projects on github
18:55:37Araqwe'll see how that will work out :P
18:56:11ldleworkAraq: we did it at Docker, it worked pretty well
18:56:16ldleworkI don't know if there was any pain in the background
18:58:59AraqVarriount: do you think we can officially support WinXP?
19:00:04VarriountAraq: Yes.. although there are certain functions for Vista+ that are very useful.
19:00:23Araqdid we ever did something about that issue?
19:00:30VarriountAraq: It would help to have some sort of compile-time constant for what windows we are targetting.
19:00:34VarriountAraq: Not that I know of .
19:00:41ldleworkNimrod needs a wikipeida article
19:00:55flaviuldlework: don't mention that
19:00:58Araqldlework: we have one that got deleted
19:01:04ldleworko_o
19:01:18flaviuldlework: you've caused lots of wikipedia flaming
19:01:31Araq"lack of secondary sources" or something
19:01:54VarriountDespite the fact that hundreds of relevant articles don't have secondary sources.
19:02:23Araqand despite the fact that we have secondary sources
19:02:38VarriountWe do?
19:02:58Araqif def-'s talk does not cout as such, that's purely wikipedia's problem
19:03:04Araq*count
19:03:27VarriountHave we tried un-deleting the article, and adding -def's talk?
19:03:36Araqpretty sure we did
19:04:20Araqalso my DrDobb's article made the cover story
19:04:37Araqso yeah, ok, written by me so not "secondary"
19:05:09Araqbut come on, you cannot reasonably argue that an article with more errors written by somebody else would have been better
19:08:08VarriountAraq: When was def-'s talk?
19:08:31Araqa couple of months ago
19:08:55VarriountWell the wiki page was deleted way back in april.
19:09:01flaviuAraq: The explaination that I got for that is that it was at a hackerspace, not a major convention
19:09:27Araqyeah well. there is always something.
19:14:55Araqso ... I guess somebody should mark this: http://en.wikipedia.org/wiki/Euphoria_%28programming_language%29 for deletion? because of lack of references.
19:15:40Araq"other crap exists" is not a valid reason to complain, but surely we can help them get rid of the "crap"?
19:15:45flaviuAraq: Don't ruin someone else's fun
19:16:00AraqI mean
19:16:40Araqwho doesn't want an encyclopedia with less information?
19:17:12*johnsoft quit (Ping timeout: 256 seconds)
19:17:55*johnsoft joined #nimrod
19:18:50VarriountNot to mention the loads of software that only has references to the home page.
19:19:03AraqPerformance - Euphoria incorporates an efficient reference-counting garbage collector that correctly handles cyclic references.
19:19:08Araqer nope.
19:19:22AraqEuphoria doesn't allow the creation of cycles
19:19:35Araqbut that's different from correctly handling them
19:19:46Araqsee? the article is not even correct
19:20:22VarriountAraq: I think, because of the name change, that a well written wikipedia article on the Nim programming language might be successful.
19:20:43AraqVarriount: I cannot see how so
19:20:56VarriountWe just have to make sure that it has references to def-'s talk, and doesn't hoist phrases wholesale from the website.
19:21:10Araqthere have been other programming related projects with the name "Nimrod"
19:22:45VarriountAraq: A new name means that whoever was targetting the article for deletion before might miss the name change.
19:23:20Araqnah, the guy has some personal problem with me because I like to rant about unix
19:24:04Araqwell that's my theory
19:24:05VarriountYou know, there are wikipedia channels on freenode. We might be able to garner support for an article there.
19:25:57VarriountIs someone here willing to write a *new* wikipedia article for Nim?
19:27:40AraqI think we can count on gokr1 for that :-)
19:28:09rpagAraq, you mean you prefer windows over unix? o_O
19:28:42Varriountrpag: Don't get him started.
19:28:47rpaghehehe
19:28:58Araqunix is the most overrated OS of all time
19:29:21Araqand it does nothing particurlarly well
19:29:26rpagbest of a bad bunch perhaps i never enjoyed windows
19:30:11woodgiraffeWell, what does Windows particularly well?
19:30:23rpaggames
19:30:34flaviuAraq just doesn't like a bunch of small composable programs that use text as a method of communication :B
19:30:40woodgiraffeThat's hardly due to the OS
19:30:41flaviurpag: Not window's fault
19:31:00rpagdue to directx maybe?
19:31:06rpagwhen games took off anyway
19:31:52Araqwhen you look at osproc.nim you'll notice that even interprocess communication works better on windows
19:32:00*Ven joined #nimrod
19:37:58woodgiraffeWorks better in what way?
19:39:01Araqfewer issues have been created for it
19:39:18woodgiraffeI see
19:39:38flaviuBecause no one serious uses windows? :P
19:41:16*superfunc joined #nimrod
19:41:23Araqthen how come we get bug reports from people using windows xp?
19:42:26*Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
19:42:37rpagthere's always one
19:42:42Araqwhich still has 23% market share btw
19:42:58Araqwhen will Linux have 5% market share?
19:44:18flaviuAraq: Whenever people decide to do stuff with their computers besides watching cute cat videos
19:44:49*Ven joined #nimrod
19:44:53rpagwhich will be never
19:44:56*clone1018 quit (Ping timeout: 272 seconds)
19:45:15Araqflaviu: funny. my linux crashes every few hours
19:45:29flaviuAraq: Check dmesg
19:45:30*clone1018 joined #nimrod
19:46:21rpagimo linux doesn't take off because new hardware you buy at a store might just not work
19:46:39rpaggames dont work for the most part
19:46:49rpagand ton of commercial/business software doesnt work
19:47:05rpagits also a pain to use sometimes, if you're not invested in computers
19:47:11Araqyes. nothing works. exactly.
19:47:24flaviurpag: funny. Every game on the steam front page runs on linux now
19:47:41Araqand the only useful software that doesn't run on windows is valgrind
19:47:56Araqpretty much everything else has been ported
19:47:58flaviuAraq: You still haven't posted dmesg
19:48:17Araqflaviu: can't. I'm on windows
19:49:45rpagflaviu, yeah, steam helped
19:49:51rpagrelatively new thing though
19:50:13flaviuYeah, but better late than never
19:50:30woodgiraffeHW support on Linux really isn't a problem these days
19:50:35woodgiraffeesp. for new HW
19:50:49flaviuwoodgiraffe: video hardware is still a problem
19:50:55woodgiraffeYou mean, Driver 3D performance
19:51:29flaviuI guess, although I've heard some people have trouble getting it working at all.
19:51:57rpag'vesa' always works :<
19:52:20woodgiraffeClearly depends on what distribution you're using etc., if you're using ancient proprietary drivers then yeah, they might just not work
19:53:15Araqthat distribution thing is btw the reason why most commercial software companies cannot be bothered to support it properly
19:53:46Araqso I built a .deb package. where does it install? who knows?
19:53:49flaviuAraq: just make a binary package for the user to drop into /opt/
19:54:17woodgiraffeSure, distributing packages on Linux is much harder then it is on Windows
19:54:20Araqflaviu: I mean "on which distros will it install"
19:54:42rpagfragmentation on linux is definitely a problem
19:54:50rpagand sometimes an annoying one
19:54:56woodgiraffeBut Steam only supports Ubuntu/Debian afaik? - Lots of small devs publish their games on Linux Steam and they seem perfectly able to do this without a lot of problems.
19:55:15Araqand what is the point anyway? they all run the same software
19:55:16woodgiraffeSystemd will change things for the better
19:55:46woodgiraffeAraq: "variety" but largely it is seen as a problem and people try to address it
19:56:23flaviu/opt/
19:56:29woodgiraffethere was this recently: http://0pointer.net/blog/revisiting-how-we-put-together-linux-systems.html
19:58:14willwillsonof course freedom trumps all and you shouldn't consider anything but the GNU system ;D
19:58:16*dapz joined #nimrod
19:58:40*skyfex joined #nimrod
19:58:55woodgiraffewillwillson: agreed, I watch https://rms.sexy/ at least 2h a day
19:59:37willwillsonwoodgiraffe: i'm not sure I want to click that ^^
19:59:45woodgiraffewillwillson: it is "safe for work"
19:59:45flaviuwoodgiraffe: Why is he using a thinkpad?
19:59:57flaviuDoesn't he use some 100% FOSS netbook?
20:00:01woodgiraffeflaviu: I forgot
20:00:40willwillsonhe used to use a thinkpad, doesn't he use a lemote or something now?
20:01:13willwillsonthere you go: https://stallman.org/stallman-computing.html
20:03:14willwillsonof course libreboot works with the thinkpad x60
20:04:08rpaghe uses a netbook manufactured in china afaik
20:29:54*dapz quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
20:41:07*dapz joined #nimrod
20:46:56*dapz quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
20:54:25AraqVarriount: well?
20:54:35*dapz joined #nimrod
20:57:35*dapz quit (Client Quit)
21:02:30*dapz joined #nimrod
21:03:48ldleworkAraq: why doesn't the single argument non-immediate macro not complain that A is an unknown identifier?
21:04:23Araqldlework: as I said, some work has been done on that front
21:05:01Araqthe idea is to deduce from the parameter types whether to perform type checking/symbol lookups for the particular argument
21:05:02ldleworkAraq: ah, so for single argument macro's it may interpret your macro as immediate if the argument is undeclared?
21:06:31ldleworkAraq: it happens even with non-vararg, macros even ones with just multiple args: macro abcProcs(n: expr, g: expr, z: expr): stmt =
21:06:54ldleworkso is the intention that eventually you will not have to mark your macros as immediate for at least this form ^
21:06:57ldleworkor for varargs too?
21:07:28Araqeventually for varargs too
21:07:46ldleworkAraq: thanks I'll put that in the blog
21:08:30*boydgreenfield quit (Quit: boydgreenfield)
21:10:33*boydgreenfield joined #nimrod
21:12:03Araqboydgreenfield: babel works with devel on macosx, I hope
21:14:51boydgreenfieldAraq: Mm, I get a compiler error that’s the same as the above. I can also get it for a variety of my other programs that used to compile under 0.9.5 or 0.9.4
21:14:58boydgreenfield“mg_build.nim(91, 6) Hint: 'bf' is declared but not used [XDeclaredButNotUsed]
21:15:00boydgreenfield}
21:15:01boydgreenfield^
21:15:02boydgreenfield1 error generated.
21:15:03boydgreenfieldError: execution of an external program failed”
21:16:05boydgreenfieldErr… let me double check, possible that the babel/nimble error was a different one (I fixed that by commenting out a line in the source for an external call that was failing, and, I hope, unneeded)
21:16:07Araqdoes the compiler use the stdlib from devel?
21:16:20boydgreenfieldhmm – how do I check / verify that?
21:16:20*noam joined #nimrod
21:16:52boydgreenfieldAraq: I believe I cleanly uninstalled everything and then rebuilt at the v0.9.6 tag, but may have missed something.
21:17:54ldleworkAraq: when you have an immediate mode Macro and you passed it an undeclared identifier such as A, what actually gets passed?
21:17:58ldleworkAraq: is it an AST node?
21:20:53*noam quit (Ping timeout: 255 seconds)
21:21:40Araqboydgreenfield: the fix is not for v0.9.6 tag
21:21:52*Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
21:21:58AraqI plan to release 0.9.8 soon which fixes the problems 0.9.6 caused
21:22:55Araqldlework: yes. the AST is an "identifier" (nnkIdent). after symbol lookup it's a "symbol" (nnkSym)
21:22:57boydgreenfieldAraq: Ah, I must have missed said discussion/details. What commit do you recommend installing from now?
21:23:05boydgreenfield*for now
21:23:10Araqlatest devel
21:23:22boydgreenfieldOk, thanks.
21:24:16*Demos joined #nimrod
21:25:29ldleworkAraq: its weird, its like, the macro will give me the undeclared identifier 'A' in the multi-arg invocation, no matter what until I actually implement the macro as not only calling callsite() but iterating over it too?
21:25:43ldleworkWhat are the actual minimum requirements of a multi-arg immediate macro?
21:26:35ldleworkits not even just iterating over it, I have to like include each callsite item in the ast I return from the macro?
21:26:54Araqno idea what you mean
21:28:11ldleworkAraq: https://gist.github.com/dustinlacewell/6cb5f9944db47f3153a8
21:28:49ldleworkignroe the hint() line
21:30:34Araqldlework: I think I'll let you figure out what the problem is
21:30:51Araqhint: it's all your fault ;-)
21:31:14ldleworkThis is already way over my head
21:31:22Araqno, it' simple
21:31:27Araqbut maybe you need some sleep
21:31:43Araqif you don't declare a proc A via your macro
21:31:43ldleworkThe only difference between the two functions is that I uncomment the lines that build the proc and add it to the st... oh
21:31:48ldleworkheh
21:33:08ldleworkAraq: for immediate macros does it even matter what arguments you define for the macro?
21:33:18ldleworkI mean for multi arg ones
21:33:25AraqI don't think so
21:33:51ldleworkyeah that's weird having to explain
21:33:58*dapz quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
21:33:59Araqbtw my macro skillz suck ;-)
21:34:08Demosdom96, you around?
21:34:13dom96_yes
21:34:18*superfunc_ joined #nimrod
21:34:19Araqfowl knows these things much better
21:34:30ldleworkAraq: you've been really helpful
21:34:40Demosyou got time to discuss I feature for nimble that I am thinking of implementing?
21:34:56dom96_sure
21:35:29Demosso it would be pretty bad-ass if nimble knew how to call cmake to build native libraries that are dependencies for wrappers, this is more useful on windows ofc
21:38:11dom96_I'd rather keep nimble simple. It would be nice to have this as a plug in or something like that.
21:38:21Demosthere is a standard CMAKE_INSTALL_PREFIX so it can install locally to ~/.nimble and I was thinking of having a directory tree for different configurations, I kinda want to be able to easily build totally standalone executables on windows (this may be too complex).
21:38:25Demosyeah a plugin is good
21:38:41Demosbut it should be able to integrate into the .nimble files
21:38:51dom96_but then we need a plugin system
21:39:35Demoshmm.... I dont think it could be hacked together with staticExec either
21:39:54Araqsure why not?
21:40:06AraqstaticExec rules
21:40:10*superfunc quit (Quit: Connection closed for inactivity)
21:40:29Demosbecause you need to be able to call it with some somewhat complex args
21:40:48Demosand at a somewhat complex time
21:41:06Demosfor one you need to get the path to the nimble package tree
21:42:04Araqnimble should have a staticExec-like post installation hook
21:42:18Araqhow hard can it be? 3 lines of code?
21:44:11Demoswhat if instead of dealing with nimble I try and make it a nim library that you use from the wrapper
21:45:00Demosis there a good way to get the path to the nimble tree, or actually I could just make a separate tree I suppose
21:46:20Demoscimble (pronounced thimble) should be the name of this lib
21:46:40*dapz joined #nimrod
21:48:34*dapz quit (Client Quit)
21:50:09*dapz joined #nimrod
21:50:52DemosI think a regular library used from wrappers is the way to go actually...
21:51:53Araqwhat does this library do? I don't get it
21:52:02*Araq is sleeping
21:55:08*dapz quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
21:57:17gokr1hey guys
21:58:59ldleworkAraq: so is this the eventually desired-to-be-supported syntax for all of this: https://gist.github.com/dustinlacewell/188b30fd3e430f2744ab
21:59:11DemosAraq, goes and invokes cmake to build native libraries, so that you dont have to deal with them on windows
21:59:19*dapz joined #nimrod
21:59:45ldleworkoops
21:59:59ldleworkhttps://gist.github.com/dustinlacewell/188b30fd3e430f2744ab
22:00:08ldleworkforgot to remove the callsite
22:00:19ldleworkoops
22:00:23*dapz quit (Client Quit)
22:00:44ldleworkhttps://gist.github.com/dustinlacewell/64b53bdd85645b99cb69
22:00:50ldlework(sorry)
22:02:48gokr1Wikipedia... nah, I am not wikipedia savvy. But I agree it would be nice to have such a thing. Anyone knows what a proper secondary source is?
22:03:11*dapz joined #nimrod
22:08:35ldleworkSo here's my rough draft for my article on Nim metaprogramming: http://blog.ldlework.com/a-cursory-look-at-meta-programming-in-nim/
22:08:42ldlework:3
22:09:52VarriountAraq: Hm?
22:10:56dom96_ldlework: awesome :D
22:11:20AraqVarriount: what about the installer?
22:11:26Varriountdom96_: Araq and I need to talk with you ragrding nimbuild
22:11:40VarriountAraq: I'm working on it, however I got caught up in CS class.
22:11:41AraqI like to answer the guy on the forum that we fixed it
22:11:56dom96_Varriount: Go on then.
22:12:08Varriountdom96_: Have you seen #nimbuild?
22:12:19dom96_no
22:14:02VarriountNimbuild is currently failing.
22:14:17dom96_How is it failing?
22:14:29*Karpax joined #nimrod
22:14:29Varriount Build failed: "git.exe pull origin master" failed.
22:14:42VarriountBoth windows and linux builders
22:15:14VarriountAraq: I believe you also had something to ask dom96 regarding build software?
22:15:18KarpaxHi there, just want to say hi and thanks for creating such a cool language
22:15:40fowlldlework, it doesnt load
22:15:40fowloh wait
22:15:56*dapz quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
22:17:09Karpaxand thank you for jumping on the path problems with WinXP... my apologies for stil using that old os
22:17:12VarriountKarpax: Thanks for the complement. I don't suppose you have any standing in the Wikipedia community?
22:17:16dom96_Varriount: I'll take a look later.
22:17:28dom96_Varriount: Have you tried executing that on your Windows machine?
22:17:30Araqldlework: "...based on whether or not you invoke the macro with undeclared arguments or not. " no. based on whether the parameter's type is a metatype
22:17:52Araqmetatype here means "expr"
22:18:04Karpaxhaha, I have been browsing the logs enough to know to mention anything wikipedia related ;-)
22:18:10Varriountdom96: Yes, and git reports no error.
22:18:11*Jehan_ joined #nimrod
22:18:47*fowl quit (Quit: Leaving)
22:19:31ldleworkAraq: but that doesn't come into consideration until you start with an undeclared argument right?
22:19:32*fowl joined #nimrod
22:20:06dom96_Varriount: Have you tried reproducing the code that nimbuild is trying to execute?
22:20:09ldleworkor are all macros with metatype arguments implicitly immediate?
22:20:10fowlldlework, in your examples items(data) should be items(order)?
22:20:12Araqhi Karpax thanks for your feedback
22:20:22ldleworkfowl: oh thanks
22:20:26Araqas you probably know we're working on fixing it
22:20:33Araqwell ... Varriount is working
22:20:55KarpaxAraq: yes I have seen the chatter
22:22:21ldleworkfowl: fixed
22:22:22fowlldlework, does newProc() work for you without a params parameter?
22:23:11ldleworkfowl: yeah
22:23:18Araqldlework: it doesn't really depend on the undeclared identifier, but on 'expr'
22:23:47ldleworkAraq: does that mean that all macros are implicit immeidate if they have an 'expr' metatype argument?
22:24:10Araqno, if they *only* have 'expr' parameters
22:24:22Araqnote that 'varargs[expr]' is not 'expr'
22:24:41Araqand also I'm not sure this is bugfree ...
22:24:42KarpaxAraq: I doubt I am able to contribute on the actual developing of the language, but I can try to use it and after about 2 months now I am still messing around with it
22:25:33fowlAraq, i've never seen varargs[expr] work
22:26:05ldleworkAraq: what if I switched it to TNimrodIdent
22:26:15Araqfowl: well I fixed it once and have test cases somewhere
22:26:29Araqit's special cased in the compiler
22:27:01Araqldlework: yeah that would be much better, but it doesn't work that way. TNimrodIdent is not a metatype
22:27:38*dapz joined #nimrod
22:27:50KarpaxTrustable: thanks for the video link, I already liked how the guy started his presentation
22:27:52*boydgreenfield quit (Quit: boydgreenfield)
22:28:12TrustableKarpax: you're welcome :)
22:28:24ldleworkAraq: how would you phrase the explanation of when Nim automatically interprets your non-tagged macro as immediate?
22:28:42KarpaxTrustable: stupid question, where did you find that video? if I may ask.
22:29:05ldleworkTrustable: which video?
22:29:23*fowl quit (Quit: Leaving)
22:29:40*fowl joined #nimrod
22:30:06Karpaxidlework: this video: http://media.koeln.ccc.de/events/gpn/gpn14/mp4/gpn14-5892-de-Nimrod_h264-hq.mp4
22:30:39ldleworkaww german
22:32:09ldleworkfowl: any other errors?
22:32:12*gokr1 trying to muster up those 3 years of school german...
22:32:57Araqldlework: er, I didn't tell you the truth
22:33:07ldleworkAraq: that's okay, I didn't understand it anyway
22:33:12gokr1hehe
22:33:24Araqin principle (bugs not withstanding), it's really simple:
22:33:41Araqtemplate foo(a, b: int, x: expr)
22:33:53Araqfoo(2, 4, undeclared)
22:34:01Araq# valid
22:34:11Araqfoo(undeclared, 2, 4) # invalid
22:34:18*dapz quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
22:34:27Araqit's not immediate vs non-immediate, it allows mixing
22:34:32*fowl quit (Ping timeout: 265 seconds)
22:35:03ldleworkAraq: can you ever have a non-immeidate macro with undeclared arguments?
22:35:32Araqread what I wrote
22:36:16ldleworkAraq: I'm just pointing out that immediate conversion only matters in the case of undeclared arguments
22:36:27Karpaxgokr1: thank you for all those nimrod articles by the way
22:36:29ldleworkright?
22:36:38ldleworkKarpax: nimrod articles?!
22:36:41gokr1Karpax: thanks!
22:37:02*dapz joined #nimrod
22:37:09gokr1ldlework: http://goran.krampe.se/category/nim
22:37:25Araqldlework: er ... no. but close enough for a first article
22:37:27KarpaxIdlework: yeah thats the link, cool stuff
22:37:51gokr1Karpax: Basically my stumblings so far ;)
22:38:00*dapz quit (Client Quit)
22:38:12ldleworkah i've read all but the socket server article :)
22:38:17Karpaxcurrently I am using the windows binary on my crappy winxp machine, but I want to bootstrap nimrod myself just to try it
22:39:08gokr1Btw, just tried a trivial nodejs script doing basically the same - 100 bytes payload. Only 7k req/sec and each taking 13-35 ms.
22:39:24Karpaxgokr1: I found them to be very interesting and informative. I hope you will doing more.
22:39:37ldleworkAraq: how about "depending on whether you call it with undeclared arguments or not (and whether the macro is defined to accepted them (it takes type 'expr'))"
22:39:49flaviugokr1: Isn't nodejs doing much more?
22:39:49gokr1Compared with Nim's 17k and 5-12 ms.
22:39:58flaviulike proper headers and stuff
22:40:05gokr1Mmmm...
22:40:30gokr1Ah, yeah, true.
22:40:35ldleworkwhat do you mean?
22:40:55Araqldlework: sounds good
22:41:06gokr1flaviu: I didn't look to closely at the code - just pasted it in and ran. :) But yes, it uses http.createServer - so typically does more.
22:41:53flaviuI'm not trying to bash Nim, btw, just wanting to be fair. I'm sure Nim can do better than 17k
22:42:14Araqyeah but then our spawn that deepcopies the socket is not exactly how it should be either
22:43:43gokr1Yeah
22:44:00flaviuAlso, can't sockets be reused?
22:44:11*BlaXpirit quit (Quit: Quit Konversation)
22:44:23gokr1flaviu: Oh, can try the other silly example on their page.
22:44:43flaviugokr1: hmm?
22:45:04gokr1The one using net instead.
22:45:44flaviuI still have no idea what you're trying to say, sorry
22:46:05gokr1nodejs.org
22:46:11*BitPuffin quit (Ping timeout: 255 seconds)
22:46:18flaviuoh, sure
22:47:13*fowl joined #nimrod
22:47:27Karpaxgood night folks, see you later
22:54:29Araqldlework: your blog software has no Nim syntax highlighting support?
22:54:29ldleworkAraq: apparently not
22:54:29Araqtry dom96's blog software
22:54:29gokr1Its ghost, right?
22:54:30ldleworkgokr1: yeah an old old version
22:54:30gokr1Octopress that I use - uses Pygments and it does "nimrod" just fine it seems.
22:54:30gokr1I played with ghost a bit.
22:54:30*Karpax quit (Quit: Page closed)
22:54:31ldleworklive markdown is nice
22:54:32Araqgood night
22:54:32ldleworko/
22:54:32gokr1Araq: nite
22:54:33ldleworkAraq: you think I should share the article with the wider world?
22:55:31gokr1Ok, redid the nodejs test - this time a minimal net server - it does exactly the same.
22:55:44gokr1Still... 10k req/sec and 10-21 ms per req.
22:55:59gokr1So its still quite a lot slower than the Nim spawning one.
22:56:55gokr1And ... it didn't handle 1000 concurrent that well either.
22:57:44*johnsoft quit (Ping timeout: 244 seconds)
22:58:02*johnsoft joined #nimrod
22:58:57flaviugokr1: Can you post the code? I think I'm getting the lengths messed up or something.
22:59:16gokr1sure...
23:00:14gokr1https://gist.github.com/gokr/af45fc1904cae4ff669b
23:00:32gokr1I think its equally silly as spawningserver :)
23:00:58gokr1I just used the node I had - 0.10.25
23:01:17gokr1And I ran with ab.
23:01:36flaviugokr1: Thanks! Looks like I didn't close the socket correctly
23:01:36superfunc_ldlework: where in SF is docker?
23:01:47superfunc_just curious, I used to live in the east bay
23:01:50gokr1Yeah, I found that "end(" thingy :)
23:01:57ldleworksuperfunc_: financial district
23:02:29gokr1We will probably move towards using Docker, but its on our todo. Do you work there or?
23:03:03ldleworkyeah
23:03:12gokr1Nice
23:03:42ldleworktoo bad I can't bear to work with Go
23:03:44gokr1Our system uses ... chroots to run desktop apps in a locked up fashion on our servers.
23:03:59gokr1And then we project their UIs via VNC into our 3D worlds.
23:04:10ldleworknice
23:04:14gokr1That chroot stuff is nasty, docker seems obvious.
23:04:19ldleworkgokr1: definitely
23:04:26ldleworkgokr1: what kind of 3D worlds?
23:04:45*dapz joined #nimrod
23:04:54gokr1Our system is called Terf, its the successor of Teleplace - check youtube for "Teleplace".
23:04:58gokr1Company is 3dicc.com
23:05:18gokr1And yeah, the homepage isn't exactly stellar - but our system is pretty cool :)
23:06:04superfunc_ldlework: it could be worse
23:06:59VarriountAraq: Png
23:07:05ldleworkgokr1: I hold the opinion that the focus on the virtual office motiff is what has held back the metaverse
23:07:14ldleworkgokr1: but its an ignorant opinion :P
23:07:17*boydgreenfield joined #nimrod
23:08:06gokr1I am actually not that well versed in the 3D virtual world marketplace so to speak - but I do know that our customer cases are ... very varied.
23:08:35VarriountAraq: Here are links to the new installers. First is 32 bit - https://drive.google.com/file/d/0B077nrrf63xtVG9FZ0FQVmw0WHM/view?usp=sharing
23:08:58VarriountSecond is 64 bit - https://drive.google.com/file/d/0B077nrrf63xtSXhHUlprcEV5WFk/view?usp=sharing
23:09:07gokr1So Terf is not "just" a google hangout with some 3D - it can do much more. Exactly what you can use it for - well, right now we have a pretty big deployment in Brazil - a virtual University.
23:09:23*xenagi joined #nimrod
23:09:28flaviugokr1: My results are that nodejs and nim are equivalent.
23:09:37gokr1flaviu: Oh? How much?
23:09:54gokr1Or... what CPU/OS are you on? :)
23:10:03flaviugokr1: https://gist.github.com/flaviut/c2397100b13aeac71fb8
23:10:27ldleworkgokr1: I just wanted a realtime shared programming environment without any preconcieved notions
23:10:46ldleworkI just want a black void where I can create geometry and give it behavior in a language that doesn't suck worse than PHP
23:10:48ldlework(LSL)
23:10:48flaviulinux 3.17.1-1-ARCH, Phenom II x4
23:11:18gokr1Our system builds on Croquet - so our object synchronization is totally domain independent.
23:11:24NimBotVarriount/NimLime master ffc7352 Erik O'Leary [+0 ±2 -0]: Altered auto-indent regex to not match comments
23:12:02gokr1In other terms: We use bit perfect simulation and only perfect synchronization of "input events" from all participating computers.
23:12:05ldleworkgokr1: so you can use croquet to build a tiny app that shares the state of say some simple sprites in a 2D environment?
23:12:18gokr1sure
23:12:33gokr1The synchronization technique has nothing to do with 3D.
23:12:33ldleworkgokr1: it seems like that's how it should be marketed
23:12:47gokr1Well :)
23:12:51ldleworkat least on the development side
23:13:05gokr1I noted the other day that Little Big Planet does something similar.
23:13:11ldleworklike look, you can get started with this, really easily, here's a multi-user hello world
23:13:31ldleworkand its just like the mouse cursor position
23:13:38ldleworkthat would be amazing
23:13:38gokr1Yeah. The protocol etc is fairly easy - the hard part is bit perfect simulation.
23:13:53ldleworkgokr1: but how much does the app developer have to do if they use croquet
23:14:36gokr1So our system has something called the "Island" - which is an isolated object model representing the world. This "island" is fed input events via the synchronization mechanism - so that all computers receive the same events in the exact same order.
23:14:48gokr1Thus making sure our models evolve exactly the same.
23:15:09gokr1This includes stuff like... your float ops must work EXACTLY the same as mine.
23:15:20gokr1Or we will drift apart.
23:15:27ldleworkgokr1: how do you handle things like latency
23:15:39ldleworkgokr1: can croquet support things like, a rolling ball
23:15:53gokr1I think so, yes.
23:15:57gokr1I haven
23:16:03ldleworkI can't imagine how it does that generally
23:16:18gokr1Remember... we don't synch *state*.
23:16:23gokr1We just synch *input events*.
23:16:30gokr1So a rolling ball is trivial.
23:16:44ldleworkyeah prediction and all of that would be up to the app developer
23:16:50gokr1Input events = mouse clicks and keyboard presses basically.
23:16:54ldleworkgokr1: have you hooked Nim up to croquet?
23:16:59gokr1No... you don't need prediction.
23:17:11ldleworkgokr1: of course you do
23:17:14gokr1bit perfect simulation.
23:17:24gokr1That's the ultimate prediction of everything.
23:17:50gokr1Let's say you click on a ball so that it starts to roll down a slope.
23:18:04ldleworkright
23:18:09gokr1That click will be executed at the same logical time instant on all machines involved. Say 100 people.
23:18:15ldleworkthat's not possible
23:18:21gokr1We only do this "logical time".
23:18:24gokr1It is.
23:18:32ldleworkHow?
23:18:38gokr1What do you mean? :)
23:18:45ldleworkDoes it not start simulating the ball rolling as soon as I click it locally?
23:18:50gokr1Nope
23:18:56ldleworkso there's input lag
23:19:18gokr1When you click your machine will send the click to a "router" server - it will timestamp it and number it - then send it out to all participating machines.
23:19:27ldleworkincluding back to you
23:19:32gokr1Yes.
23:19:32ldleworkso its not useful for realtime simluations
23:19:45gokr1Depends on what you mean.
23:19:49ldleworkwell, like, realtime physical simulations no less
23:19:59gokr1The ball will roll perfectly. The mouse click will have a slight delay.
23:20:06ldleworkright
23:20:20ldleworkIt sounds awesome
23:20:20gokr1You can have 1000 balls rolling perfectly.
23:20:27gokr1It is.
23:20:34ldleworkgokr1: right but its not useful for games, etc
23:20:51gokr1Its "less" useful for FPS games - but most other games, definitely usable.
23:20:51ldleworkwell certain games
23:20:57ldleworkyeah like a game of go
23:21:05ldleworkor an artificial life simulation
23:21:10gokr1No, I would say RTS games work just fine.
23:21:21gokr1But mouse-click-you-are-dead works less well.
23:21:22ldleworkright sure
23:21:41ldleworkgokr1: the thing I want is like an environment where you and I could log in
23:21:44ldleworkand I could draw a shape
23:21:49ldleworkand you could write a script
23:21:53ldleworkand we could put em together
23:21:57ldleworkand have it simulate live
23:22:14gokr1This is basically what Croquet is.
23:22:16ldleworkliek a really super efficient second life but totally abstract without all the overhead of simulating wavy hair and shit
23:22:33ldleworkgokr1: have you hooked up croquet to Nim yet?
23:22:49gokr1Hehe, well - let's say we are looking at it :)
23:23:10gokr1Also, this codebase/algorithm was started as Croquet by Alan Kay etc
23:23:21*Matthias247 quit (Read error: Connection reset by peer)
23:23:31ldleworkgokr1: how many days of work would it be to take croquet and SDL and make a basic hello world that used some of the most basic features?
23:23:33gokr1Then it turned into the commercial Teleplace, and subsequently open sourced as OpenQwaq and also OpenCobalt.
23:23:50gokr1We bought all ip of Teleplace, and now we sell it under the name Terf.
23:23:59*boydgreenfield quit (Ping timeout: 245 seconds)
23:24:08gokr1But the basic code is out there as OpenQwaq and OpenCobalt. Several papers on it too.
23:24:32gokr1Mmm, hard to say - it depends on how you go about that.
23:24:58gokr1Croquet and all those derivatives I mentioned - including our product - is all in Smalltalk.
23:25:06gokr1100% Squeak code.
23:25:17gokr1Well, at least the core code.
23:25:58gokr1Now, if you want to use... another language - then you would need to read up on the Croquet architecture - and reimplement it somewhere else.
23:26:20gokr1The architecture is actually not that complicated - but "bit identical simulation" may be, depending.
23:26:47gokr1There are several publishings around this.
23:27:02gokr1This is one: http://www.liacs.nl/~fverbeek/courses/hci/Croquet2003-paper.pdf
23:28:21gokr1http://en.wikipedia.org/wiki/Croquet_Project
23:30:44*boydgreenfield joined #nimrod
23:34:47gokr1Btw, Virtual World Framework builds on the same principles, its David Smith's continued work - but in a js arena: https://virtual.wf
23:37:31*dapz quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
23:40:26ldleworkheh no thanks
23:42:05flaviuhttps://vwf.adlnet.gov/0776/adl/sandbox/example_terraingrass/ is pretty cool
23:42:25flaviuits one of the virtual.wf demos
23:44:36gokr1ldlework: Note that the original TeaTime protocol was a bit complicated with P2P thrown in. Here Andreas Raab (RIP) explains what we use now: http://markmail.org/message/rz4udb5mpxe2xtuw
23:48:59*dapz joined #nimrod
23:50:16*dapz quit (Client Quit)
23:50:46*darkf joined #nimrod
23:53:18ldleworkdoes nim compile to obj-c?
23:53:40gokr1I think it can, didn't try.
23:53:54gokr1Somone has done some iOS app with it, right?
23:54:23gokr1ldlework: https://github.com/gradha/seohtracker-ios
23:55:04ldleworkgokr1: is there info on compiling to ios?
23:55:30gokr1Dunno, but gradha has more: https://github.com/gradha/nimrod-objective-c-bridge
23:55:50gokr1And again: https://github.com/gradha/nimrod-on-ios
23:55:52gokr1:)
23:57:19gokr1ldlework: What's your email?
23:57:29ldleworkgokr1: [email protected]
23:57:48gokr1I can send a pdf to you that has "fallen off the edge of the Internet"
23:57:50ldleworkhmm does nimrod have RAII?
23:57:56ldleworkgokr1: sure