<< 29-03-2014 >>

00:08:08Skrylardom96 / Araq: do you think state machine macros would be useful?
00:08:14Skrylarkind of like (link pending) does?
00:08:30Skrylarhttp://smc.sourceforge.net/
00:10:21Skrylarit looks like it would be an easy macro to do
00:11:07*askatasuna quit (Quit: WeeChat 0.4.3)
00:15:12*awestroke quit (Ping timeout: 255 seconds)
00:37:31*EXetoC quit (Quit: WeeChat 0.4.3)
01:18:08Skrylarwhy is it if i do type x = seq[y]
01:18:17Skrylar"x" is an invalid type name for a procedure
01:20:36Skrylaroh. ast bugs
01:20:59Skrylarmalformed proc subtype, a sequence of malformed proc causes strange errors instead of warning that the proc is wrong
01:27:11fowlcode
01:28:58Skrylarfowl: https://gist.github.com/Skrylar/9846618
01:31:36fowlso it should say something about whats happening
01:31:47Skrylarit should say that the proc type is bad
01:31:49fowllike "hey you can store generic functions"
01:31:52fowlcant*
01:32:05Skrylarright now it just says "invalid type" and its like "whats invalid about it?"
01:34:06fowlyea
01:34:11fowlerror messages can always be improved
01:34:51fowlid hardly call that an ast bug though
01:35:24Skrylarmy reasoning was that the invalid proc was making a nonsense AST and then the compiler was going "what? this is wrong." and claiming it invalid
01:35:41fowlbut it is invalid
01:35:58Skrylaryes, and it shouldn't have allowed the broken type to parse in the first place
01:36:09Skrylarinstead it seems to pretend it knows what the proc definition is, only to get confused later
01:36:31fowlits not getting confused later
01:36:52fowlfhandler is generic, errors can only be caught when its instantiated
02:17:35*q66 quit (Quit: Leaving)
02:42:35*DAddYE joined #nimrod
03:32:50runvncits probably bad form for me to try to promote nimrod in the rust vs go submission on proggit but I did it anyway
03:32:59runvnctried to do it in a polite way
03:35:21*DAddYE quit (Remote host closed the connection)
03:40:17VarriountAraq: Ooo, shiny
03:40:28Varriountrunvnc: Link?
03:44:59VarriountSkrylar: I think your problem may have indirectly been my fault.
03:46:07VarriountOne of the few fixes to compiler I submitted was disallowing certain forms of generic procs (that were not fully concrete) from being created.
03:46:43VarriountHowever, I would like to think that the current error message is better than the previous behavior, which was the compiler crashing.
03:49:51*Demos quit (Read error: Connection reset by peer)
03:53:13*BitPuffin quit (Ping timeout: 265 seconds)
03:53:41*DAddYE joined #nimrod
04:11:04runvncVarriount: http://www.reddit.com/r/programming/comments/21mn1e/rust_vs_go/
04:11:57runvncoh, this guy says he likes everything about nimrod except it needs more curly braces and semicolons
04:11:59runvncfor real
04:12:01runvnclol
04:12:24VarriountGah.
04:12:37Varriountrunvnc: Hand me my axe, we are going a-hunting tonight.
04:12:49runvncheh
04:13:27Varriountrunvnc: Should I tell him that semicolons are allowed, and that curly-brace varient syntax is planned?
04:13:38runvncoh is it really?
04:13:40runvncI should have known
04:13:46runvncseems like everything is in the works already heh
04:13:52runvncyah someone should tell him
04:13:59fowlnimrod 2.0 will have a sandwich crafting module too
04:14:04runvnchaha
04:16:07Varriountrunvnc: ./compiler/pbraces
04:17:18VarriountAlso, a quick hack for allowing braces to be used (if indentation rules are followed) would be to run a nimrod file through a regex which deletes braces on empty lines.
04:19:20runvnccompiler pbraces is kind of funny in a way
04:20:39renesacI really need to write that 'whitespace FAQ'
04:22:10Varriountrunvnc: "pendx" is also for pascal 'end' style code, I think
04:22:42runvnchm. don't really get why people do that anymore
04:23:19runvncI want my functions to be short so its easy to see where they end
04:23:29runvncI also have text editors with code folding
04:24:07renesac#{ and #} can also be used, if you are identing right
04:24:23runvncanyway to a certain degree that stuff is not so much a matter of objective judgement, but more like a belief system or worldview, depending on what you are used to
04:24:25renesacor a simple script to correct the indenting based on them
04:27:54Varriountrenesac: Also, if you want to use tabs instead of spaces, you can just use a template filter and replace tabs with 2 spaces.
04:29:01renesacthe !# thing?
04:29:18renesaccan I use two template filters together?
04:31:09Varriountrenesac: What do you mean?
04:31:21VarriountYou just combine the code.
04:31:30renesaclike, that tab filtering plus !#strongspace
04:31:52VarriountHm. I *think* so
04:32:33Varriountrenesac: http://nimrod-lang.org/filters.html#replace-filter
04:32:47Varriount"Filters can be combined with the pipe operator"
04:33:14renesacoh, interesting
04:39:12*DAddYE quit (Remote host closed the connection)
04:40:53*DAddYE_ joined #nimrod
05:10:29*DAddYE_ quit (Remote host closed the connection)
05:23:22*DAddYE joined #nimrod
05:31:29*xenagi quit (Read error: Connection reset by peer)
05:56:38*brson quit (Quit: leaving)
06:00:53renesachttps://github.com/Araq/Nimrod/wiki/Whitespace-FAQ <-- started working on it, but still a draft
06:03:37renesaclatter I would like a native english speaker reviewing this page, but not now
06:04:09renesacgoing to sleep
06:11:01Varriountrenesac: I'll take a look, and edit as needed.
06:47:36*brson joined #nimrod
06:55:38*DAddYE quit (Remote host closed the connection)
06:56:05*DAddYE joined #nimrod
07:00:08*DAddYE quit (Ping timeout: 240 seconds)
07:01:45reactormonkhmm, that visualvm is a nice sampler for jvm - anything similar for nimrod/C?
07:02:50*Mordecai joined #nimrod
07:03:10*Mordecai is now known as Guest14350
07:04:47*psquid quit (Ping timeout: 255 seconds)
07:05:56*nande quit (Remote host closed the connection)
07:08:01*DAddYE joined #nimrod
07:09:51*DAddYE quit (Client Quit)
07:10:52*DAddYE joined #nimrod
07:19:08*ruzu quit (Read error: Connection reset by peer)
07:20:21*ruzu joined #nimrod
08:02:40*DAddYE quit (Remote host closed the connection)
08:03:07*DAddYE joined #nimrod
08:04:44*DAddYE_ joined #nimrod
08:07:56*DAddYE quit (Ping timeout: 265 seconds)
08:21:55*[1]Endy joined #nimrod
08:28:36AraqDAddYE_: https://github.com/Araq/Nimrod/wiki/Feature-Matrix
08:51:26*DAddYE_ quit (Remote host closed the connection)
09:09:23*[2]Endy joined #nimrod
09:11:56*[1]Endy quit (Ping timeout: 240 seconds)
09:18:09*XAMPP quit (Read error: Connection reset by peer)
09:22:33*DAddYE joined #nimrod
09:24:40*[1]Endy joined #nimrod
09:27:12*DAddYE quit (Ping timeout: 265 seconds)
09:28:10*[2]Endy quit (Ping timeout: 265 seconds)
09:35:54*[1]Endy quit (Ping timeout: 255 seconds)
09:39:47*DAddYE joined #nimrod
09:43:56*DAddYE quit (Ping timeout: 240 seconds)
10:10:32*Matthias247 joined #nimrod
10:28:33*brson quit (Ping timeout: 255 seconds)
10:40:30*DAddYE joined #nimrod
10:45:01*DAddYE quit (Ping timeout: 265 seconds)
10:55:23*Matthias247 quit (Read error: Connection reset by peer)
10:58:23*awestroke joined #nimrod
11:10:58*Zuchto quit (Ping timeout: 240 seconds)
11:31:18*[1]Endy joined #nimrod
11:41:07*DAddYE joined #nimrod
11:45:55*DAddYE quit (Ping timeout: 265 seconds)
11:50:46*[2]Endy joined #nimrod
11:53:38*[1]Endy quit (Ping timeout: 240 seconds)
12:02:27*q66 joined #nimrod
12:05:16*q66 quit (Client Quit)
12:05:36*q66 joined #nimrod
12:06:12*[1]Endy joined #nimrod
12:09:31*[2]Endy quit (Ping timeout: 264 seconds)
12:19:33*[2]Endy joined #nimrod
12:21:53*[1]Endy quit (Ping timeout: 268 seconds)
12:41:22*BitPuffin joined #nimrod
12:41:54*DAddYE joined #nimrod
12:46:15*DAddYE quit (Ping timeout: 255 seconds)
13:02:45*EXetoC joined #nimrod
13:42:53*DAddYE joined #nimrod
13:47:36*DAddYE quit (Ping timeout: 268 seconds)
13:47:51NimBotAraq/Nimrod devel 2f64c75 Araq [+0 ±1 -0]: iterators check seqs/strings are not resized during iteration
13:47:51NimBotAraq/Nimrod devel 74e0ca4 Araq [+0 ±1 -0]: fixes #932
13:47:51NimBotAraq/Nimrod devel f7cbe20 Araq [+0 ±1 -0]: Merge branch 'devel' of https://github.com/Araq/Nimrod into devel
13:51:48*darkf quit (Quit: Leaving)
14:17:24*skyfex joined #nimrod
14:19:28*gverilla joined #nimrod
14:34:23Araqhi gverilla welcome
14:43:27*DAddYE joined #nimrod
14:48:09*DAddYE quit (Ping timeout: 265 seconds)
14:49:50*awestroke quit (Remote host closed the connection)
15:06:00*gverilla left #nimrod (#nimrod)
15:44:10*DAddYE joined #nimrod
15:49:03*DAddYE quit (Ping timeout: 265 seconds)
16:00:31*Araq0 joined #nimrod
16:01:35*Araq0 quit (Client Quit)
16:44:56*DAddYE joined #nimrod
16:49:15OrionPKVarriount did you ever get the ST plugin published?
16:49:28*DAddYE quit (Ping timeout: 265 seconds)
17:10:01*askatasuna joined #nimrod
17:16:37dom96hi
17:19:44Skrylardom96: helloes
17:20:12dom96hey Skrylar, how's things?
17:20:26Skrylarthey're alright; fiddling around with this event code
17:20:54dom96I just got back from a Uni talk.
17:21:08SkrylarI discovered something interesting: if you give parameters to do(), when handing it to a macro, it will allow you to use the parameters inside the macro but the macro is oblivious to this (it gets the inner stmtblock)
17:21:14Skrylarhow'd the talk go?
17:21:46dom96I wasn't giving the talk, if that's what you think heh.
17:22:36dom96But the talk was good. Once more am excited about going to Uni.
17:24:28*nande joined #nimrod
17:40:55*psquid joined #nimrod
17:43:42*Guest14350 quit (Ping timeout: 255 seconds)
17:43:46VarriountSkrylar: Example of the do() thing?
17:45:40*DAddYE joined #nimrod
17:48:14SkrylarVarriount: blah(x, y) do(z): z.foo
17:48:31SkrylarVarriount: the AST you get is StmtList(DotExpr(!z, !foo))
17:50:22*DAddYE quit (Ping timeout: 265 seconds)
17:51:25VarriountAh.
17:59:39EXetoCAraq: ok a feature matrix is nice to have
18:01:58EXetoCI've used nested tuples a couple of times. it is a neat way of composing, but I suppose I can do without it
18:06:29dom96Araq: Why didn't you post the feature matrix to the forum?
18:07:26EXetoCso much stuff. I sure hope you get some more compiler manpower soon :>
18:15:27EXetoCwith that said, the things I'm looking forward to the most is working UDTCs, some lambda sugar and a couple of major fixes
18:16:22dom96I guess I should finally finish this lambda sugar :P
18:19:35dom96Araq: ooh cool. I may have an easier reproduction of that corruption.
18:19:40dom96or perhaps it's a different one :P
18:20:03dom96Araq: In tasyncawait.nim:25 s/true/false/
18:25:44dom96skyfex and runvnc: Thank you for supporting Nimrod in that reddit thread :)
18:26:08skyfexdom96: my pleasure :)
18:27:11EXetoCdom96: ya :>
18:28:32dom96skyfex: I would disagree with you saying that Nimrod is less mature than Rust though.
18:29:07dom96Although I haven't used Rust much so perhaps I'm wrong.
18:31:56Skrylarhow can rust be considered mature when they are still making sweeping syntax changes?
18:32:08*BitPuffin quit (Ping timeout: 265 seconds)
18:32:09dom96precisely
18:33:00Skrylaradditionally, the release versions are worthless because libs aren't maintained to them and they're often wholly incompatible with master
18:35:29skyfexdom96: Yeah, you're right, I guess I was thinking more of Go and D in that case
18:46:26*DAddYE joined #nimrod
18:51:16*Matthias247 joined #nimrod
18:51:16*DAddYE quit (Ping timeout: 265 seconds)
18:53:15*rleisti joined #nimrod
18:53:26dom96hello rleisti
18:53:31rleistiHi
18:54:54*Demos joined #nimrod
18:55:16Demosargh I managed to get one of those wierd action-at-a-distance generic bugs
18:55:51rleistiWould anyone be interested in talking about the events module? I was wondering about the behavior of emit when an event isn't defined
18:56:19*io2 joined #nimrod
18:57:53dom96rleisti: I think EInvalidEvent will be raised.
18:58:34rleistiyes; I was wondering what the rationale is for that. I think it could also be useful to raise events which don't (yet) have handlers
18:59:36dom96hrm, perhaps you're right.
19:00:05dom96Araq should be able to tell you more when he's around. Perhaps Amrykid will be able to as well if he's around.
19:00:46rleistithank you
19:15:29Demosif I have a container what is the best way to be able to use an expression like cont[3] *= -1? do I need /another/ accessing proc that returns a var?
19:17:39EXetoCyou might have to invoke `[]=`, which does make the expression a little longer
19:18:14Demosyeah cont[3] = cont[3] * -1 works, but that is hardly ideal
19:18:23Demosesp since it works for primitive containers
19:18:27Amrykidrleisti, yeah, i don't remember the reason why that is like that. feel free to submit a pr that changes that.
19:18:54rleistiok. Thanks Amrykid
19:25:46EXetoCDemos: hm, seems like []= applies only to slices in system.nim. anyway, it might make sense to just expand such occurrences when []= is defined
19:27:09EXetoCI mean, both [] and []=, I think
19:30:44Demosyeah but it does make it /really/ hard to define your own containers that really act like the builtin ones
19:31:50DemosI guess that is not all that strange in the grand scheme of things, but c++ does out of its way to make user defined types work pretty much just like builtin ones
19:32:04EXetoCnot if you expand it
19:32:17Demoswhat do you mean?
19:32:38EXetoCx[y] *= 2 -> x[y] = x[y] * 2
19:32:55Demosyeah but I can say x[y] *= 2 for a builtin container
19:33:35DemosI guess I may be able to define a `[]` that returns a var T but that is just annoying
19:33:53EXetoCyes, but that's basically getting expanded to the above
19:33:58EXetoCso you just need it to be more general
19:34:12Demosright I guess.
19:34:24DemosBut by that argument I should just write in C
19:35:27fowlwhys that annoying
19:35:42fowl`[]=` is usually (a[idx]) = b anyways
19:35:54Demosfowl: yes
19:35:55DemosI know
19:36:12Demosoh wait you mean you define a `[]` then define `[]=` in terms of that?
19:36:26fowli would (and do, in entitty)
19:40:52Demosyeah, probably I good idea. Also. I feel like defineing `+` (and `=` when we can) should get me `+=` for free
19:40:55Demosit does not seem to
19:43:46renesacyeah, `+=` seems defined as a proc, not a template
19:44:40renesacnot sure if that is the problem
19:45:25*andreamila joined #nimrod
19:45:53*andreamila quit (Client Quit)
19:46:22Demosthe docs for `+=` in system seem to indicate it only works on ords and floats
19:47:11*DAddYE joined #nimrod
19:49:34fowlits only defined for ord and float
19:51:41*DAddYE quit (Ping timeout: 265 seconds)
19:52:33Skrylarhrm.
19:52:43Skrylartheres a lambda keyword listed in the manual, but it doesn't work
19:52:49EXetoCDemos: what argument? I'm saying that you can expand those occurrences so as to avoid returning var for example
19:53:28EXetoC*the compiler could expand..
19:56:06EXetoCwhat are the alternatives? here's a really bad one: `[]+=`, `[]-=`
19:57:24*nande quit (Read error: Connection reset by peer)
19:57:55SkrylarI'm getting the impression right now that the compiler really needs some better scoping rules, because I keep finding issues like "proc (event: Event[Blah])" which errors; now, its not unsensible to say 'this identifier is claimed by a type' but more often than not the compiler just gives some vague "cannot instantiate" or "error in sem.nim no traceback"
19:58:54Skrylari'm not sure what the overhead would be to just have it check against symbol misuse specifically
19:59:02EXetoCthe latter is obviously an ICE
19:59:24SkrylarEXetoC: yeah, but the last ICE that happens was fixed with an error that is only marginally more useful :)
19:59:27EXetoCso that should obviously be fixed, but probably the former too
19:59:49Skrylari feel unclean double-wrapping closures o_o
20:00:49Skrylarostensibly it should be inlined because the closure just re-packs a value from a generic in to a direct call, so it seems like the vtable->closure->closure should get optimized out, but I still feel unclean relying on optimizers :B
20:09:11EXetoCcheck
20:12:19EXetoCif it's simple compared to other solutions then maybe it's worth it if at least GCC and VS can optimize it
20:16:47EXetoCbut then can't you reduce it yourself then?
20:17:01EXetoCprobably. yay metaprogramming
20:26:10*DAddYE joined #nimrod
20:29:09dom96where is Araq? :(
20:30:03EXetoChaving fun with nappies?
20:31:33SkrylarEXetoC: nah i'm having to wrench around generics
20:31:35*DAddYE quit (Remote host closed the connection)
20:32:18dom96ooh, the GcMem warning is nice.
20:32:39SkrylarEXetoC: basically event data gets bit-copied in to a 16-int box so it can fit on the queue, and the double-closures are to map event UID -> closure which then re-types it so the user code is always typesafe
20:32:57EXetoCok
20:32:57Skrylarbasically just does proc: var x = <fiddlybits>; otherProc()
20:33:01EXetoCdom96: what's it for?
20:33:17dom96a22.nim(2, 1) Warning: 'add(x, 4)' uses GC'ed memory [GcMem]
20:33:24dom96When you disable the GC.
20:33:27EXetoCI suspected that. neat
20:34:38*nolan_d joined #nimrod
20:42:23Demosyo EXetoC! you should add a proc to get the name of a window to your GLFW wrapper
20:42:48Demosalso maybe one to get the handle, just because I can cast[ptr pointer](wnd)[] does not mean I want to
20:42:52Demos:D
20:48:26renesacSkrylar, if you go the dynamic route with your GUI library, just be sure that it will not bloat static linked programs, like Qt does, as it can't eliminate dead-code as it may be selected to be used at runtime
20:49:21Skrylarrenesac: i doubt thats a problem, since all 3 of the models i tested use the generics and template interface to strongly tie things together
20:49:52Skrylarthere is no dispatch-via-string-table, you have to actually tie the event->closure together in a table
20:50:44renesacah, nice
20:54:50*BitPuffin joined #nimrod
20:57:28EXetoCDemos: ok
20:58:14dom96BitPuffin: Yo
21:03:42Araqdom96: I'm here now
21:04:08EXetoCDemos: curious, what do you need the handle for?
21:04:19EXetoCI'll add a getter anyway. there's no need to be that restrictive
21:04:32dom96Araq: Read what I said
21:10:14DemosEXetoC: hash, and I would not mind using the userdata stuff but you may already use it so I will stay away for now
21:10:24Demosand like getting the title of the window
21:10:39Demosor if I decided I wanted to use the native interop stuff
21:10:44Araqrleisti: welcome. just make a PR to the events module
21:11:20Demoson another note: how does one do perfect forwarding in nimrod
21:14:12Demosfeel free to answer in the logs, ima go get something to eat
21:14:14*Demos quit (Quit: leaving)
21:14:42*askatasuna quit (Quit: WeeChat 0.4.3)
21:15:10EXetoChm "user data" in nimrod :>
21:15:17AraqI dunno about the "perfect" but I described what's necessary for forwarding in some forum thread and don't feel like thinking about it again
21:26:19NimBotAraq/Nimrod devel e012611 Dominik Picheta [+0 ±1 -0]: Replaced idents with genSym in asyncdispatch.
21:32:33*DAddYE joined #nimrod
21:37:03*DAddYE quit (Ping timeout: 265 seconds)
21:49:54BitPuffindom96: oi!
21:50:25AraqSkrylar: if you use Event vs event, try out --cs:partial
21:51:35*Demos joined #nimrod
21:56:11Demosallright, so no forwarding for now
21:59:19NimBotAraq/Nimrod devel 41861c7 Dominik Picheta [+1 ±0 -0]: Fix docgen.
21:59:57*[2]Endy quit (Ping timeout: 252 seconds)
22:11:04*noam quit (Read error: Connection reset by peer)
22:11:29*noam joined #nimrod
22:24:51Araqdom96: to what exactly is 'await client.socket.connect(url.hostname, port)' transformed?
22:33:06*DAddYE joined #nimrod
22:37:58*DAddYE quit (Ping timeout: 265 seconds)
22:39:16dom96Araq: var fut = client.socket.connect(url.hostname, port); yield fut
22:39:30dom96Araq: The macro still outputs the generated code
22:53:58reactormonkbtw, any plans for cs:partial to be default?
22:55:58fowlreactormonk, it is default in nimrod.nimrod.cfg
22:57:55reactormonkcool
23:00:53dom96bah, so my closure macro doesn't work anymore?
23:26:26*Matthias247 quit (Read error: Connection reset by peer)
23:39:48*darkf joined #nimrod
23:56:59*io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist)
23:59:16*Zuchto joined #nimrod