<< 07-02-2014 >>

00:03:24*brson quit (Ping timeout: 245 seconds)
00:04:28*brihat joined #nimrod
00:04:44*brson joined #nimrod
00:12:09*Demos quit (Quit: Textual IRC Client: www.textualapp.com)
00:14:03*brson_ joined #nimrod
00:17:19*brson quit (Ping timeout: 250 seconds)
00:18:47*psquid joined #nimrod
00:25:37*xenagi quit (Read error: Connection reset by peer)
00:26:07reactormonkVarriount, make a repo in nimrod-code, call it python-itertools
00:32:09brihatwow, so happy to see Nimrod in Dr Dobbs: http://dc.ubm-us.com/i/245989
00:32:15brihatwell explained Araq
00:38:36brihatOr the direct link here: http://www.drdobbs.com/open-source/nimrod-a-new-systems-programming-languag/240165321
00:40:55filwityeah i remember Araq talking about how being featured on DrDobbs a few days ago
00:40:59filwithas been reddited?
00:41:12brihati dont know
00:41:34filwitdoesn't look like it
00:41:50filwitbut i don't want to reddit it without getting an Okay from Araq first
00:42:30brihatwhy? it's public and out on the interwebs already!
00:43:12filwityou're probably right, i just remember him saying not to reddit something a little while ago
00:43:18filwitthough i don't think it was this..
00:44:54brihatI just submitted to HN: https://news.ycombinator.com/item?id=7194014
00:45:22filwitk, screw it i'll reddit it
00:45:40brihatok!
00:48:57filwitcrap, submitted under subreddit 'nimrod' but not 'programming'.. how to edit?
00:49:14filwitor is 'nimrod' automatically seen from 'programming'?
00:49:21filwithttp://www.reddit.com/r/nimrod/comments/1x8am6/dr_dobbs_nimrod_a_new_systems_programming_language/
00:50:22brihatI don't see it on /r/programming/new
00:50:25filwitdoesn't look like it's coming up under 'programming', damn
00:50:27filwityeah
00:50:41filwitshit, can you edit the post or do i need to resubmit?
00:51:28brihati dont have a reddit account, sorry
00:52:05filwitAnyone?
00:52:24filwitfirst time i've actually posted something on reddit besides comments
00:53:02filwitdo i just submit two, one under 'programming' and one under 'nimrod'? or can i comma/space separate the subreddit field?
00:53:12filwitguess i should just google this sort of thing..
00:54:11brihatprobably u can resubmit under /r/programming
00:54:46filwityeah i guess someone says to just post to twice to multiple subreddits, okay
00:59:35Varriountreactormonk: You think it's good enough for a repo?
01:01:48reactormonkVarriount, I paste everything into a repo.
01:06:44filwithttp://www.reddit.com/r/programming/comments/1x8chx/dr_dobbs_nimrod_a_new_systems_programming_language/
01:06:51filwitgod that took longer than it should have
01:07:21filwitsweet.js looks really cool for Javascript devs: http://sweetjs.org/
01:07:43filwitnice macro system
01:08:08brihatcool, i see it at the top here: http://www.reddit.com/r/programming/new
01:09:00*DAddYE_ joined #nimrod
01:09:55filwityep!
01:10:08filwitvote it up folks
01:11:55*DAddYE quit (Ping timeout: 250 seconds)
01:13:56*DAddYE_ quit (Remote host closed the connection)
01:14:31*DAddYE joined #nimrod
01:18:11reactormonkVarriount, just do it.
01:19:22Varriountreactormonk: I'll submit it later tonight. I'm fixing it up a bit.
01:19:28VarriountUnless you need it right now?
01:19:50Varriount(Also, fyi, I'm only notified by my irc client when my name is mentioned)
01:27:17reactormonkVarriount, nah
01:27:26reactormonkVarriount, I'm currently busy flashing my phone
01:27:44VarriountAh, I have spent happy/maddening hours doing that before.
01:28:29VarriountI'll never know why companies try to keep people from doing it (Asus, I know, allows you to do all sorts of things, provided you agree to voiding your warreny)
01:28:33Varriount*warrenty
01:28:42reactormonkVarriount, I unlocked it already, htc was kinda open about that
01:37:34*whatelse quit (Quit: Page closed)
01:39:18VarriountHrm, anyone here knowledgable about sorting algorithms?
01:39:19*[Pete_27] quit (Ping timeout: 252 seconds)
01:39:30VarriountNimrod needs a timsort implementation
01:40:05*[Pete_27] joined #nimrod
01:40:34reactormonkyup
01:50:58*brson_ quit (Quit: leaving)
02:02:05*DAddYE quit (Remote host closed the connection)
02:02:40*DAddYE joined #nimrod
02:07:11*DAddYE quit (Ping timeout: 260 seconds)
02:28:54EXetoCthat was an annoying bug. TBson doesn't like to be copied
02:42:51*dmac joined #nimrod
02:57:32*carum joined #nimrod
03:03:03*DAddYE joined #nimrod
03:07:29*DAddYE quit (Ping timeout: 265 seconds)
03:10:57*Demos joined #nimrod
03:12:59*DAddYE joined #nimrod
03:20:41*carum quit (Remote host closed the connection)
03:43:39*dmac quit (Ping timeout: 252 seconds)
04:01:38filwitwasn't there a {.descutor.} or something pragma before?
04:01:43filwitcan't find it in the index
04:01:46filwitwas that removed?
04:04:26*CarpNet quit (Ping timeout: 245 seconds)
04:04:52*CarpNet joined #nimrod
04:53:19*DAddYE quit (Remote host closed the connection)
04:53:45*DAddYE joined #nimrod
04:57:33Demosfilwit: I remember it as well
04:58:12DemosI am having some trouble instanciateing a generic using a typedesc (from inside a template) any tips?
04:58:39*DAddYE quit (Ping timeout: 265 seconds)
04:58:54filwitno but it sounds like a bug with a recent change to devel
04:59:02Demosoh dear god
04:59:55Demosit is on newseq, so it looks like I get into the generic proc and newseq fails
05:00:46filwithmm... can you post a gist i can try?
05:03:27Demosperhaps the Error: cannot instantiate: 'T' should include the type you tried. and let me generate a nice minimal case
05:04:01*carum joined #nimrod
05:04:57Demoshttps://gist.github.com/8857579
05:05:19filwityeah that's the problem i'm having with the macro stuff, it's rather complicated to isolate the problem (though I recently found it has to do with adding a Node inside a if-statement inside a macro).
05:05:23filwitthanks
05:05:34Demossorry, wrong code
05:06:49Demoslet me repost
05:06:49Demoshttps://gist.github.com/8857591
05:07:41Demosyeah, are you working on fixing macros bugs or just writing macros yourself
05:08:00Demosone issue I am having is that incorrect code tends to be rejected with really bad error messages
05:09:04filwiti'm trying to fix a bug related to a OOP macro i'm writing
05:09:21filwitone sec
05:12:14*carum quit (Remote host closed the connection)
05:13:39*carum joined #nimrod
05:16:30filwitDemos: that doesn't work even when it's a proc
05:16:47filwitDemos: seems to be something other than what I originally thought (it's a bug with system.nim)
05:16:55DemosI dont think so
05:17:09Demosthe function that is on line 394 is just newSeq
05:17:14Demosand it points to the first line
05:17:40filwitahh,, wait a sec
05:17:51filwitwell, no nevermind
05:18:04filwitit doesn't build on any version of the compiler
05:18:15filwitso it's not a recent bug or anything
05:18:24Demoswell it could be wrong code
05:18:37filwitit's possible, though i don't see how or why
05:18:58filwitpossibly a template can't just do nothing?
05:19:24filwitno that's not it of course..
05:19:35Demosyeah same thing if I inject it
05:19:40Demosmmmm that is
05:20:11filwitoh, of course using template/proc doesn't matter cause first parameter is a typedesc.. doh
05:20:31filwiti almost wish 'template' was required for those or something, kinda confusing sometimes
05:21:25DemosI dont really care that it is not, esp since since you often want to do computations on these sorts of things from macros
05:21:42filwitwtf.. something is really wrong here, hold on
05:25:04filwitokay finally i got a stack-trace on devel
05:25:17Demosfor my error?
05:25:20filwityeah
05:25:25*DAddYE joined #nimrod
05:26:02filwitcompiler crashes on devel when you use "proc newSeqAlias[T](): seq[T] = ..."
05:26:15Demosthat is wonderful but I actually have to go, just realized that I need to go catch a bus
05:26:27filwitwhoops, i meant turn that into: "proc newSeqAlias[T:typedesc](): seq[T] = ..."
05:26:36filwitokay, later
05:27:01Demoshm, that is strange, replace the param of test with an expr and see if it works...
05:27:19filwityeah i'm trying different things and looking at the stack trace
05:27:29filwiti'll let you know if i find anything
05:28:30filwithas to be 'typedec' (expr doesn't work) or Nimrod wont compile it (thinks it's bad syntax cause it can't enforce it's a typedesc for return type)
05:31:30*Demos quit (Ping timeout: 250 seconds)
05:45:47*ics joined #nimrod
05:49:47*xtagon quit (Ping timeout: 260 seconds)
05:53:53*Demos joined #nimrod
05:54:00Demosck
05:54:02Demosok back
05:54:27filwitwell the stack-trace was due to a bug in devel which, after i pulled, it went away
05:55:06filwitcompiler still can't seem to initialize a seq of a 'None' which is what it things 'T' is
05:55:43filwitso some but with templates not passing on their generic types to sequences or something along those lines
05:56:18filwiti probably wont be able to fix it anytime soon, so I would report it if it isn't already a known issue
05:56:32Demoswell lets see if it is only sequences
05:57:33filwitgood idea, but I'm setting it aside for the moment. I've made a test case for it, so If you don't end up fixing it I'll continue to try
05:58:07filwitI'm going to continue fixing my macros stuff tonight
05:58:20Demoswowah seems to work when sequences are not involved
05:58:36filwityeah cause seq's in the compiler are somewhat special
05:59:32Demosyeah. For my needs I could implement a regular old dynamicly sized array that just does not use GC'd memory
05:59:38Demosassuming destructors work
06:00:39filwitdestruction should work fine, and you can always fall back to malloc/free if you had too
06:05:51*Demos_ joined #nimrod
06:06:00Demosright, but I dont want to manually manage stuff like that
06:07:07filwitof course
06:07:28*carum quit (Remote host closed the connection)
06:07:29Demosthat bug is known as issue #853
06:08:19Demosbeing able to implement seqs as a pure library feature would be great, but I suspect that garbage collection related stuff is going on that I really know nothing about
06:09:50filwityeah
06:12:13*carum joined #nimrod
06:17:24*Discoloda joined #nimrod
06:21:29Demos_does nimrod have generic specialization? or do people just use the is operator
06:22:16filwiti believe so, like: proc foo[T:int|float]
06:22:42filwitcalled type-classes?
06:23:03filwithttp://nimrod-lang.org/manual.html#type-class_1295114935
06:23:16Demos_right but if I have proc foo[T] as well how does overload resolution work
06:23:25Demos_most constrained first?
06:23:46filwitmost like just like parameter overloading, but I have no idea for sure, sorry
06:24:00filwitlikely*
06:24:55Demos_right, I need to have many of my function gcref stuff in the ref | string case
06:28:54*carum quit (Remote host closed the connection)
06:30:51*ddl_smurf quit (Ping timeout: 260 seconds)
06:33:07*carum joined #nimrod
06:45:29*carum quit (Remote host closed the connection)
06:48:03Demos_how do I do pointer arithmetic? succ is not working
06:48:32Demos_do I just cast the pointer to an int?
06:49:51*carum joined #nimrod
06:52:06*Demos_ quit (Quit: Textual IRC Client: www.textualapp.com)
06:56:51*Demos quit (Ping timeout: 245 seconds)
07:01:02*vbtt joined #nimrod
07:02:15vbttHi
07:02:34reactormonkvbtt, sup
07:03:29reactormonkvbtt, what nimrod are you writing today?
07:04:21vbttreactormonk: not much really
07:06:26vbtt nimrod is on reddit again
07:06:59reactormonktha't s the idea
07:07:30vbttreactormonk: I want to write a few serious things in nimrod but waiting for syntax and features to settle a bit
07:12:18reactormonkvbtt, start something smaller then, Varriount mentioned itertools
07:13:45vbttUnfortunately don't have much free time :(
07:15:53vbttAre you writing nimrod?
07:16:35reactormonkvbtt, from time to time https://github.com/Araq/Nimrod/commits/devel
07:17:37vbttCool.
07:18:20vbttI might write more blog posts or docs cos that's easier with the intermittent free time i have
07:20:46reactormonkvbtt, perfect
07:21:23reactormonkbtw,
07:21:26reactormonkhttp://www.reddit.com/r/nottheonion/
07:32:35vbttLater, guys.
07:32:42*vbtt quit (Quit: Bye)
08:02:50*carum quit (Remote host closed the connection)
08:03:18*carum joined #nimrod
08:25:27*aftershave_ joined #nimrod
08:56:28*filwit quit (Quit: Leaving)
09:07:31*carum quit (Remote host closed the connection)
09:09:02*carum joined #nimrod
09:09:59*Eruquen left #nimrod ("Leaving")
09:13:11*carum quit (Ping timeout: 245 seconds)
09:40:11*DAddYE quit (Remote host closed the connection)
10:13:07*awestroke joined #nimrod
10:32:21*ics quit (Ping timeout: 245 seconds)
10:33:40*ics joined #nimrod
11:41:49*carum joined #nimrod
11:50:35*carum quit (Ping timeout: 272 seconds)
12:24:20*darkf quit (Quit: Leaving)
12:28:53*awestroke quit (Ping timeout: 248 seconds)
12:29:36*psquid quit (Quit: meal -> work)
12:59:45*isenmann quit (Quit: Leaving.)
13:29:28*awestroke joined #nimrod
13:55:35*BitPuffin joined #nimrod
14:40:39dom96hello
14:55:48Varriountdom96: Good morning
14:56:00VarriountYou have the new asyncio stuff done?
14:56:27VarriountOr semi-done? Or even half-done? (I'm desperate)
14:58:26dom96Varriount: Do you need something to do?
14:58:39dom96semi-done.
14:58:45VarriountSomewhat. Although I'm in class right now.
15:02:35dom96Might be able to get it done by today
15:07:41dom96But please try to figure out why reading process output is out of order when osproc merges stderr and stdout.
15:07:57*Demos joined #nimrod
15:22:35*[1]Endy joined #nimrod
15:23:33Demos wow. someone submitted a proposal to add templates (like nimrod's) to c++...
15:23:49dom96Really? Link?
15:25:48Demoshttp://www.open-std.org/JTC1/SC22/WG21/docs/papers/2014/n3883.html
15:26:04DemosI think it may have macros as well, but the syntax is pretty bad
15:26:31Demosthey seem to say "we propose a new astnode template constraint, we have no idea what the hell astnodes are allowed to be"
15:26:57dom96oh, I thought it mentioned Nimrod...
15:27:28VarriountDemos: "The idea comes from the AngularJS templating system"
15:27:47VarriountYeah, translating a javascript feature to C++ is going to work so well...
15:27:51Demosno, it does not. But the idea seems to be similar. I saw that as well but yeah
15:28:28Demosalso Raymond Chen blogged about iocps and OVERLAPPED structures yesterday
15:30:01Demosyeah, I feel like that paper will get shot down pretty hard as "really needs a test implementation"
15:32:28EXetoCdom96: today? great
15:32:43dom96EXetoC: /maybe/ :P
15:33:48dom96Indeed. Raymond Chen's blog helped me quite a bit with IOCP
15:33:59*dom96 is considering buying his book
15:35:01*[2]Endy joined #nimrod
15:35:05Demosyeah some of those docs are really helpful, one of the few places with in depth informaton on the rationale behind com
15:38:15*[1]Endy quit (Ping timeout: 260 seconds)
15:46:58*randallsquared quit (Quit: Off for now...)
15:55:22OrionPKyay IOCP
15:55:55*Demos quit (Ping timeout: 252 seconds)
15:56:45OrionPKIO clown posse
15:59:33VarriountAraq: http://www.heise.de/newsticker/meldung/Uneasy-Rider-Radfahren-in-Las-Vegas-2087813.html
16:03:00*awestroke quit (Remote host closed the connection)
16:08:23*ddl_smurf joined #nimrod
16:20:44Varriountdom96: I just wish that there was a similar book for the linux kernal
16:29:51EXetoCdom96: I have no choice but to take that back then
16:50:07*carum joined #nimrod
16:50:24dom96hi carum
16:53:47*truff__ quit (Read error: Connection reset by peer)
16:54:42*carum quit (Ping timeout: 265 seconds)
16:55:06*truff__ joined #nimrod
17:21:56NimBotAraq/Nimrod devel 6c04256 Araq [+1 ±5 -0]: bugfix: codegen issue that caused getGMTime() to leak memory
17:21:56NimBotAraq/Nimrod devel 201fe49 Araq [+1 ±5 -0]: Merge branch 'devel' of https://github.com/Araq/Nimrod into devel
17:24:30Araqso we're on reddit again ...
17:24:47Araqand when somebody bothers to look at the forum, what do they see?
17:25:03Araqa regression, (;) didn't work anymore
17:25:15bstrie"The (simplified) rule is that the first character of the operator determines the precedence." <-- can I see the docs on this?
17:25:26bstrie(from the dobbs article)
17:25:31Araqthe table is in the manual, bstrie
17:25:37bstriewill look
17:27:27Araqyou know guys, when you post on reddit, you could check the first impression is a good one ... but aparently nobody really cares ...
17:29:27AraqOrionPK: can you check the leak is also gone for your real code? I only checked the getGMTime loop
17:48:41EXetoCAraq: I do; I just haven't done anything about it. There's no list of related issues, right? A couple of things comes to mind (no auto-validated examples, no cookbook etc)
17:49:51NimBotAraq/Nimrod devel 84eb9df Araq [+0 ±2 -0]: tester compiles again
17:50:28EXetoCI might look into that, if there isn't anything more urgent
17:50:35AraqEXetoC: yeah auto-validated examples would be good
17:50:59Araqthough atcually I still think the tests cover most things
17:51:31Araqexcept that getting 600 tests to work at the same time is a task that nobody can handle, apparently
17:53:18EXetoCwhat's the issue?
17:54:42Araqwe're humans, that's the issue
18:00:53EXetoCdon't you mean a handful of tests at the same time? I don't know what you're referring to exactly, but it's not yet a parallel process IIRC
18:01:03*ics quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
18:04:04Araqno, I mean things like "ok, I fixed bug #xyz but now tests a, b, c and fail ..."
18:09:23EXetoCas in not everyone runs the test suite?
18:10:32NimBotAraq/Nimrod devel bd3a215 EXetoC [+0 ±1 -0]: Export procs that are useful elsewhere.
18:10:32NimBotAraq/Nimrod devel 81838b0 Andreas Rumpf [+0 ±1 -0]: Merge pull request #877 from EXetoC/times-symbol-export... 2 more lines
18:11:44AraqEXetoC: the tests suite runs for too long and nobody can compare ~600 tests to see what now fails that didn't use to fail before
18:12:07Araqthe new tester improves things substantially, but still misses the 'diff' feature
18:13:07*CarpNet quit (Quit: Leaving)
18:13:45OrionPKAraq when i get some time, i'll let you know
18:20:40Araqping renesac
18:21:15Araqping dom96
18:22:37BitPuffinAraq: if you ever want advice on how to not do syntax, check out objective-c blocks
18:22:49BitPuffinhttp://fuckingblocksyntax.com/
18:25:51EXetoC:E
18:28:35*filwit joined #nimrod
18:28:55Araqhi filwit
18:29:05filwit165 upvotes on the reddit, not bad
18:29:08filwithey Araq
18:29:32Araqyou know the Dr Dobbs article will be released officially on 11th of february
18:30:02filwitdamn, see, i knew there was something telling me not to post it
18:30:09Araqyup
18:30:22filwitsorry man, should have talked to you first
18:30:34Araqalso the top post in our forum is another embarrassing regression
18:31:37filwitcrap, well now i kinda screwed that release all up
18:31:47Araqno worries
18:33:11filwitwell i was worried the whole time cause i remember you posting something saying not to post some announcement till later. Should have done more digging before posting an article i was unsure about.
18:33:37filwitjust figured since it was already public it had been released
18:33:51Araqyeah funny thing is
18:34:11AraqDr Dobbs content management system sucks so they have to date it back
18:34:27Araqand then they update the release date to get to the frontpage
18:34:35Araqsomething like that anyway
18:35:12filwitahh, i see. well that was confusing but still not a good excuse. I'll make sure to check with you before posting any future articles.
18:35:23Araqthank you
18:35:58filwitin the mean time, there have been a couple of questions asked on the reddit that I didn't know how to answer the best
18:36:18Araqoh really? now who would thought that
18:36:18filwitas long as it's out there and on the /r/programming/hot, might as well do our best to answer them
18:39:41DiscolodaBitPuffin: as a C programmer, i understand the block syntax. C type syntax is just fucked up
18:40:20BitPuffinDiscoloda: I also know C
18:40:26BitPuffinDiscoloda: and it does not make sense
18:40:29BitPuffinLike I understand it
18:40:32Araqfilwit: you know, this is exactly what annoys me the most
18:40:36BitPuffinbut I can't see how it is in any way logical
18:41:31Araqdo I want to answer the guys who think Haskell and Clojure is the solution for everything?
18:41:38Araqno, I don't
18:42:24filwitwell i was talking about the guy asking for a official grammar, and the guy asking about Nimrod's RAII support
18:42:25dom96Araq: yo, sup?
18:43:50Araqdom96: have a look at https://github.com/Araq/Nimrod/issues/852
18:44:20dom96Araq: You should stop stereotyping reddit.
18:44:44DiscolodaBitPuffin: the only thing new is the block primary expression: "^returnType(params){...}" the rest are just function pointers using ^ instead of *
18:44:50dom96What's interesting is that we seem to have reached a saturation point of reddit users.
18:45:03dom96or at least the users who are willing to join our IRC channel.
18:45:19Araqwe also have a saturation point for github watchers
18:45:33dom96indeed
18:45:49dom96Which means that we need to do something differently.
18:45:56dom96So you better start answering questions :P
18:46:05BitPuffinDiscoloda: yeah which is weird
18:46:15BitPuffinDiscoloda: I guess the C function pointer syntax doesn't really make sense
18:46:19BitPuffinso that's why it's weird :P
18:46:37Araqdom96: yeah ... I prefer to go jogging instead though
18:47:09dom96Araq: You could do both.
18:47:23filwitthe manual would be good reference to respond to the grammer question?
18:47:40filwitheya, I was planning on going jogging today too
18:47:58filwit(probably won't happen like the last five times i planned to do it)
18:48:13Araqfilwit: the grammar is in the manual but doesn't entirely relfect reality
18:48:28filwitokay, i'll post that then.
18:48:30Araqit comes pretty close as it's generated from the parser though
18:49:47filwitoh, btw, i ran into something rather annoying i didn't realize about overloading by typedesc[T].. that is, the compiler see's typedesc[Foo] and typedesc[Bar] as the same thing
18:50:33Araqwell typedesc[T] has only recently got *somewhat* stable
18:51:13*DAddYE joined #nimrod
18:51:33filwitwell I'm not asking why the code isn't working really, I will do the best to fix any bugs related to my problems from now on, but I wasn't sure if this was *wanted* behaviour or not
18:51:38filwitbehavior*
18:51:43filwitis it?
18:52:01Araqno, makes no sense to me
18:52:30Araqof course the guy to really ask is in a never ending holiday
18:52:41filwitah, i see
18:53:34filwitwell for the moment it's not completely blocking my engine development. But I'm glad to hear it's not expected, and that the two different typedesc's should cause an overload.
18:54:02filwiti'll talk to Zahary more about how to fix it when he's back from vaca
18:55:36dom96would be nice if someone could fix Aporia on Mac OS X: https://github.com/nimrod-code/Aporia/issues/49
18:57:52dom96filwit: s/grammer/grammar/
18:58:00dom96(On your reddit post)
18:58:15filwitk, let me update one sec
18:59:57filwitdom96: i have a Mac, I'll try and take a look at the bug sometime this weekend, but mostly am focused on getting my project rolling now.
19:00:29filwiti've been hunting this macro bug for the last three days.. damn VM is complicated to just jump right into
19:01:20dom96Araq: Do you want me to fix #852?
19:01:22filwitoh, and where did OpenGL lib move too? Babel?
19:01:32dom96filwit: yes
19:01:38filwitk
19:04:49filwiti hate the whole "who's backing this.." question..
19:05:28dom96This is just depressing :( http://www.reddit.com/r/programming/comments/1x8chx/dr_dobbs_nimrod_a_new_systems_programming_language/cf9iinr
19:05:52filwiti get why it's viable to a degree.. but it's like "oh, the language looks good, seems to be pretty stable and well designed, but i'm don't want to support it if no one else has already.."
19:06:58filwiti wouldn't say that's depressing, but it is slightly true
19:07:47filwitreally, we need a "star app", Linux's Apache, MS's Visual Studios, etc
19:07:59Araqthis post is not depressing, it is *spot on*
19:08:26filwitsomething that get's a lot of people interested in Nimrod because Nimrod was the language used to write said "star app"
19:08:41Araqfilwit: even that doesn't really help
19:08:56filwiti think it will help a lot actually, but we will see
19:09:10Araqit's the old "killer app" idea
19:09:28dom96The reality that we will likely never have a big corporate sponsor is not depressing?
19:09:48AraqRuby got Rails, but Rails was a killer app to *build web apps*
19:10:02*BitPuffin quit (Ping timeout: 246 seconds)
19:10:12filwityes exactly
19:10:14Araqit wasn't an some flying birds game
19:10:44filwitwell obviously, i didn't mean some "consumable", lol
19:11:04filwiti think either dom's Jester or my Game Engine could fit the bill for "star app"
19:11:28filwitmeaning it get's a lot more people using Nimrod because they want to do something with our project, and therefor need to use Nimrod
19:14:41filwitultimately, we don't know what's around the corner, but Nimrod has a lot of potential so it doesn't really do anyone any good to think it'll never get anywhere
19:22:04*DAddYE_ joined #nimrod
19:24:35*DAddYE_ quit (Remote host closed the connection)
19:25:08*DAddYE_ joined #nimrod
19:25:37*DAddYE quit (Read error: Connection reset by peer)
19:26:44Araqwell either way, getting 0.9.4 out with decent async support can't be bad for nim
19:30:21dom96If you want it to be decent then we will need to have a period for porting the current sockets stuff to the new async as well as for testing.
19:32:13dom96Getting all of that done could take months.
19:40:47*ics joined #nimrod
19:57:29*tdc joined #nimrod
19:59:58*xtagon joined #nimrod
20:00:28*XAMPP quit (Quit: Drink all the Booze; Hack all the Things; Kill all the Humans;)
20:02:11*carum joined #nimrod
20:03:53*[1]Endy joined #nimrod
20:06:29*[2]Endy quit (Ping timeout: 248 seconds)
20:14:27*io2 joined #nimrod
20:40:41Araqhi carum welcome
20:41:13carum/mode $me +x
20:41:16carumerrr.
20:41:17carumhi
20:46:01*[1]Endy quit (Ping timeout: 245 seconds)
21:10:14*Demos joined #nimrod
21:11:28Demosfilwit, you say your game engine could be a star app... got a link?
21:12:36*tdc quit (Quit: Leaving)
21:14:20Araqdom96: I think we really should change how the compiler generates the C filenames
21:14:33Araqnobody likes the way I do it :P
21:14:46DemosI was just thinking about that. We need to make it so that if my project is (wait for a gist)
21:14:51filwitDemos: no source code yet. initial design though can be found here: http://reign-studios.net/philipwitte/hymn/
21:15:42filwitDemos: my statement about my project being the "star app" wasn't that it currently is, only that it's one of the projects that *could* be (there are a lot of people who want to write games)
21:15:54Araqwe could make the compiler go up the hierarchy until it finds a babel file
21:16:04Demosyeah, I just wanted to look at some design. And nice design docs btw
21:16:25Araqthe directory with the babel file in it is then the package name
21:17:12filwitDemos: thanks. Currently I have two code bases for the project, the engine is rendering instances polygons objects and I'm working on a basic animation system and editor. Once those two things are in a better state I'll put it on github.
21:17:59filwitDemos: the other code base for the project has to do with how the code connects to the editor through domain-specific macros. I'm currently fixing bugs in my way on that one, so Idk how long it will take.
21:18:04*brson joined #nimrod
21:18:05Demoshttps://gist.github.com/barcharcraz/207ad7e332a95880b1a4
21:19:39dom96Araq: sure
21:20:12AraqDemos: tbh I don't follow your proposal
21:20:17DemosI have been toying around with my ideas for a very decentrailized game engine (i.e the scene is really a list of procs and an id, the data is elsewhere), hitting those macro walls I was talking about yesterday.
21:20:52Demosand Araq I just mean that "external" modules will never import stuff from the local project
21:21:19Araqthis is unfortunately not true, Demos
21:21:26DemosprojectDir/winlean.nim would be user code that just happened to be in a file called winlean (contrived I know)
21:22:02Araqexternal modules can import from your project
21:22:14DemosI know Araq, I hit a hard to find bug a few days ago that convinced me it should be true, and I realized that it is somewhat related to changeing the names of c files
21:22:36Araqsee the toy OS example on github
21:22:45Araqit introduces its own panicoverride
21:23:06Araqthough I guess this should be done explicitly some pragma instead ...
21:23:32filwitDemos: this is essentially what I've been doing as well. I've toyed with lots of ideas with the Macros, and I have some cool ideas for how I can use domain-specific stuff for "built-in" state machine game-objects can use without performance overhead when they don't need them. Kinda like a blend between Unity3D and MS Expression Blend (if anyone's familiar with that software)
21:24:18Araqfilwit: do you have a gist which triggers the 'unused' vm bug?
21:24:37AraqI feel like fixing something simple ...
21:24:42Demosright. I did like the builtin state machine things you had. I suppose you could have a vector of object ids that are going to jump and then a function that is called every frame to deal with those, callbacks could also happen
21:24:44filwitDemos: ultimately though, most of the game-engine is pretty straight forward. The only optimized way to do certain thing's is rather clear-cut by now, and I'm so i'm working on that.
21:25:18filwitAraq: I've been trying to isolate the problem for awhile now. I've recently found it has something to do with ocpNAdd inside an if-block.
21:25:32Araqlol
21:25:35filwitAraq: so i'll try and make a gist really fast based on that.
21:25:45Araqthat's what I know already from your stack traces :P
21:25:48DemosI also don't really like having procs part of the ship type (presumably there is a vtable being generated and whatnot)
21:26:06Demosbut who knows, you have the implementation experience
21:26:50filwitthe thing about game-engine stuff is you're biggest concern is batching things.
21:26:54filwitfor performance
21:27:39filwityou have to separate the execution of objects into isolated peice (i guess that could be said about any realtime-sensitic app which moves memory around)
21:28:11filwitand things are constantly spawning/dying, so you need to memory pool everything
21:28:34filwitmy idea about 'part's isn't that they're complete classes like a Java/C# object
21:28:37Demosyeah, that is how I cam to the design I have been working on. I am not sure how well it will work though. By storing parts of the scene in globals (managed strictly ofc, they can appear to be part of a scene but they are not) I can actually know the type of all my things, and avoid type erasure completely
21:28:51Demosare they like "prefabs"
21:28:52filwitin fact, all allocation and deallocation is mostly editor defined for each 'part'
21:29:39filwit'part's are mostly just 'logic' for and editor defined thing (although it works both ways, so programmers can define things the editor sees)
21:30:18*io2 quit (Remote host closed the connection)
21:31:20DemosI still do not like them bundled together, but the fact is they usually are, and I can see a transformation between what I am doing and what it looks like you are doing.
21:32:04filwitDemos: your idea is something similar to mine it seems (about storing globals). My idea is to have all software modules (mainly the 'Canvas') be regular game nodes, subject to state-machine editing
21:34:34Demosyeah, I have a type TSceneNode[T] = object[data: seq[seq[T]]] and a macro MakeComponent that if called like MakeComponent(int) will make a global var intSceneNode: TSceneNode[T] and an "add component" overload that takes a scene id and an int. Update functions are just proc updateInts(sceneId) = ...
21:35:09filwitDemos: it also means you control the rendering order completely, since Canvas can be a dependant child of the specific state of any other game-object. Eg. Gui objects which 'render' their own clipped-scene/mask-layers/etc.
21:35:48Demoswell I hadle that by just calling each update function once per frame and expecting them to loop in whatever order they want
21:36:12filwitexactly
21:36:38Demoswhat is a dependent child?
21:37:12filwitcall order
21:38:02filwitpart's define a multi-directional hierarchy, or rather, their sub-parts do.
21:38:26DemosI think I would do that with an if WeAreInTheProperState: render, or have the proper state's signal the rendering code
21:38:42filwitthe editor will reflect this and allow the scene to be sorted in different hiearchtical ways: Rendering, Physics, Project (user defined), etc..
21:41:34filwitparts scan income 'var's for other known part types, and builds the appropriate execution trees
21:42:15filwitone for rendering, one for updating, etc. This is needed when you want user-defined rendering sorting control (like Unity's rendering layers)
21:43:18Demosmy solution would jut be to look at the other components, it you want user defined rendering control than you would write a proc (and add it to the scene) that does that in a user defined way
21:45:04filwitThe problem is then artist-type designers can't edit the rendering order at that point
21:45:14filwityou need editor control for popularity
21:45:36filwitand my idea is to remove much of the programming workload all together
21:46:26filwitlook up Microsoft's Project Spark game's "scripting" and you'll see some of my directions for editor-defined things.
21:46:51filwitI encourage you to make your idea though
21:47:17Araqhow many component parts are there in a typical engine?
21:47:29Demosright. The idea is that you define rendering order in code as essentially "undefined" and then have a update proc that goes and defines it in the way you want. all the trees and whatnot that you would have in a traditional "scene graph" would just be constructed locally or done via refs. We shall see. I have something like this (but without the global state thing) in c++, but c++ is just terrable
21:47:54filwiteventually it would be cool to work on a joined project with some of your folks here, so i'm glad to see a lot of interested people on the Nimrod community
21:48:54filwitAraq: quite a few, but mostly these mains ones: Rendering, Animation, Physics + Some form of Logic-block/scripting system.
21:49:49Araqwell from time to time I think about how I would design a component system ;-)
21:50:09filwityou need good math libraries first, and good rendering techniques. I know how to do all those. Plus i'm going to port Reign SDK's modified Jitter Physics engine to Nimrod
21:50:47filwitAraq: it would be interesting to know your ideas on that. My main focus with mine is "editor driven"
21:50:49DemosAraq, apperently Prototype had: 1544 game object defs, 145 behaviors, and 335 data types (135 of those were props)
21:52:24DemosAlso, I came to the conclusion you only need one callback like "event" avalible to each component
21:52:38AraqDemos: thanks for the numbers
21:54:09Demosthat is from "Theory and Practice of Game Object Component Architecture" presented at GDC'09
21:54:11filwitDemos: You usually need to seporate processing into "what executes per frame" and "what executes per physics-step", plus these days you also want "what executes per input-step" for raw-input devices + vsync systems
21:55:19Araqwell I would design an entity as an object [header, data: array [0..0xff, ptr Component]] but don't allocate the full array, but only what's necessary
21:55:25filwitTo do that, you could have one event object with a case statement, true, but I'm not sure exactly why you would want that really. The idea behind game-engines is to make things simple for everyone so they can focus on their app
21:55:32filwit^ Demos
21:56:20Demosright, but those are not events that any run-of-the-mill system can trigger. My idea is that you have the OnUpdate event. And if instead of making more events you make more components so you only need to handle that one event
21:56:23Araqthe header has a bitset which describes which components may exist
21:57:13Araqand then you need to know your data so that the uncommon components are stored towards the end of the array
21:58:15filwitAraq: are you doing this for performance reasons? You eventually need pools of each component type, so having a pool of (basically) seq[component] for top-level game objects (since their structures mostly only change on birth)
21:58:43Araq(instead of 'ptr Component' you might want indexes instead for networking and persistency)
21:59:06Araqfilwit: the classic way is that the header tells you the offset of where to find the component afaict
21:59:18Araqbut this is a double indirection
22:00:03Demosmy idea is to have a seperate array for each component, that way I know their size. Ofc you need an indirect call /someplace/ but you can manage once per component type I think
22:00:03Araqin my scheme the Animation component would always be at the same offset
22:00:28DemosAraq, isnt that pretty much the same as a struct though
22:00:46Araqpretty much yes
22:01:21Araqbut I have a bitset header :P
22:01:58Araqso it's a safe variable length struct ... perhaps
22:02:24filwitaccept it's not variable length
22:02:28filwitexcept*
22:02:49Araqfilwit: read what I wrote, it is
22:03:24filwitwell i mean it has a max 0xff size
22:03:37Araqthe array part is flexible length but you lie to the compiler
22:03:48filwitah, i understand
22:03:54Araqwell I thought 0xff is the upper bound
22:04:00filwiti thought you did that for memory performance of something
22:04:14Demosspeaking of which, how does one do pointer arithmatic in nimrod?
22:04:19Araqwell it's faster than a seq this way
22:04:39filwit0xff is 16 unique items right?
22:04:41AraqDemos: fowl has a module for it, everybody else uses 'cast[int](x)'
22:04:45filwitor is that 256?
22:04:51Araq256
22:04:58filwitah, okay that makes more sense
22:05:53Demosdoes fowl's module do a + 3 = a + sizeof(a) * 3?
22:06:08AraqDemos: I think so
22:06:12Demossweet
22:06:50DemosI ended up needing to write a dynamic array that uses alloc because of the seq[T] bug
22:07:01filwitwhat my system does is, each core Service Node (Rendering, Physics, etc) maintains a list of objects. I'm not sure if I'll be using a linked-list of some for of memory pool for these entirely yet
22:07:14AraqDemos: you mean the 'newseq[T]' bug?
22:07:18DemosI do
22:07:32Araqok, will fix that then now
22:07:35Demoscan I make a seq with @[] to bypass that?
22:07:35Araqlooks easy
22:08:16Araqyou can do: var s: seq[T]; newSeq(s, sizeHere) I think
22:08:20filwitsorry, not list of objects, list of callbacks to parts that provide functionality to the service (through macro pragmas)
22:08:35dom96Araq: Would it be easy to expand type aliases in error messages?
22:08:46Araqdom96: no
22:08:57Araqwell it is very easy to do it
22:09:11Araqbut it's also annoying as hell when you do it always
22:09:32DemosIt is better than not having any idea what is wrong, maybe do it on --verbosity:4
22:09:36Araqso the compiler needs to look at what it wrote and then annotate module.stuff where necessary
22:09:36dom96It would be very useful in certain cases though.
22:09:49filwityeah i'm going to work on my project now as well. I'll try and isolate the issue and make a gist for you to see later Araq
22:10:01dom96Instead of having to hunt down the definition the compiler should be able to tell you.
22:10:26Araqdom96: as I said, it's very easy but I think the compiler should be smart instead of verbose
22:10:44Araqit should say 'int' unless it's 'myevilmodule.int'
22:11:05dom96Make it smart then if you so wish.
22:16:19Araqlol, my workaround works
22:16:40dom96whoo, accept works :)
22:16:54Araqand this means everybody uses newSeq[T](...) and nobody how it originally worked
22:16:58*carum quit (Remote host closed the connection)
22:17:26Araqexcept of course the compiler itself and so zahary missed he broke it ...
22:18:02Araqyou guys should really program the same style the compiler uses ... :P
22:18:31filwitno..
22:18:40filwit:P
22:18:44EXetoCwut
22:19:12dom96I never use newSeq.
22:19:16dom96@[] ftw
22:19:25Demosso I would say newSeq(s, sizeof(int)) or whatever
22:19:39AraqDemos: that is the workaround, yes
22:19:52Araqexcept for the 'sizeof(int)' part
22:19:59Araqyou give to it the number of elements
22:20:07Araqlike for the other newSeq
22:20:22Demosoh? and then newSeq(s) fails, it is not just newSeq[T]() that fails
22:20:38Araqjust tested it
22:20:51AraqnewsSeq(s, 32) # compiles
22:21:02AraqnewSeq(s, 32) # compiles
22:21:14Araqs = newSeq[T](32) # fails
22:21:41filwitwoah... what?
22:21:51*brihat quit (Ping timeout: 245 seconds)
22:22:04filwittemplate params can be passed to the regular param body?
22:22:21filwitparam list*
22:22:36filwitor is that just an overload?
22:23:24Araqjust an overload
22:24:40filwitoh wait duh, i was reading 's' as a typedesc
22:27:06*carum joined #nimrod
22:27:33*carum quit (Remote host closed the connection)
22:27:38*brihat joined #nimrod
22:31:07Araqfunny bug
22:31:17Araqit works when I do this:
22:31:34Araqproc someOther[T](len: int): seq[T] = newSeq(result, len)
22:31:35Araqproc foo[T](x: T) =
22:31:37Araq var s = someOther[T](34)
22:31:38Araq #newSeq[T](34)
22:31:40Araqfoo 23
22:32:06Araqbut not when I call newSeq instead of someOther even though newSeq is defined in exactly this way in system.nim
22:42:05filwitAraq: i isolated the problem I'm having with Macros. Here's a gist: https://gist.github.com/PhilipWitte/8873506
22:42:20filwiti'll be trying to fix it
22:42:58Araqwell that's easy
22:43:17Araqthe 'if' statement has type 'void' because the 'else' statement has type 'void'
22:43:17filwithint?
22:43:47Araqthe 'then' block still has type PNimrodNode 'cause that's what 't.add' returns
22:44:02filwitohh.....
22:44:05Araqwell technically it got 'void' too
22:44:25filwitso i need a discard? it's just not giving good error messages?
22:44:37Araqno, it's a vmgen bug
22:44:47Araq'discard' is only a workaround
22:45:15filwitdamn, that works!
22:45:26filwitawesome, at least i can move on now.
22:45:34Araqhey
22:45:39Araqfix my vmgen bug instead
22:45:43filwitsure
22:46:03filwitthough i'm not sure how exactly, what you're saying is genIf isn't doing what it's suppose to?
22:46:19filwit(i mean, that's the problem area right?)
22:46:54*psquid joined #nimrod
22:46:57filwiti hack-fixed it, let me revert my changes real quick
22:57:48Araqhmm the only strange thing about this bug is that it ever worked ...
22:58:53filwiti'm still not sure what's going on, i need to dumpTree and if statement to understand the node-tree better. one sec
23:14:16dom96Araq: Are variables captured byval or byref in closures?
23:14:26Araqbyref
23:14:47Araqunless it is not possibe :P
23:15:04dom96So if I allocated some variable on the stack, pass its address to a C function and capture that variable in my closure then the variable will stay alive until the closure is executed?
23:15:51Araqyeah that should work
23:17:20Araqyou don't allocate it on the stack then btw
23:17:34Araqthe compiler allocates it in the heap for you then
23:17:42dom96oh, interesting.
23:19:44Araqn.sons[0..0] = [callOp, calleeName] # splicing surely is unfamiliar
23:25:49dom96yay, send works.
23:26:27Araqdom96: it's called '&=' now :P
23:26:35EXetoCcan I add type-based overloads to the allocation procs?
23:27:13AraqEXetoC: yes but I won't merge until the 'newSeq' bug is fixed
23:27:18EXetoCactually, I don't know
23:27:29Araqotherwise the bug will affect those as well
23:27:29dom96Araq: For now. I will delete those silly aliases one of these days... :P
23:27:51Araqdom96: and break generic programming?
23:28:07dom96Also, it cannot work for this case.
23:28:15dom96Since send returns a Future
23:28:30AraqI see, good point
23:28:50dom96Araq: Remember when BitPuffin wanted to add all those little aliases?
23:29:00EXetoCAraq: should I include any pragmas?
23:29:11EXetoCdom96: such as?
23:29:13AraqEXetoC: make it inline procs
23:29:14dom96Araq: You're halfway there :P
23:29:16*carum joined #nimrod
23:29:17EXetoCok
23:29:21dom96EXetoC: I can't remember
23:29:33Araqdom96: aliases are ruby style and everybody loves ruby
23:29:38filwitbest solution is usually one alias IMO
23:29:44Araqso we'll copy ruby now
23:29:44dom96Araq: I hate Ruby.
23:29:47filwitnot everyone lovs ruby
23:29:55filwiti don't know about or love ruby
23:30:03dom96Araq: Now, stop adding aliases!
23:30:18*Araq <3 Ruby
23:30:52dom96I believe Araq is no longer of a sound mind. I am taking over this project.
23:31:13Araqyou don't have what it takes
23:31:15filwithostile takeover of Araq's repo
23:31:17filwitlol
23:31:23Araqyou are not even an alcoholic yet
23:31:45filwitdo you drink and program on Nimrod?
23:31:56Araqoccasionally
23:32:39filwit(was a trick question. correct answer = "only on weekdays")
23:33:00dom96Yeah, you better hope I don't become one or else nimrod-lang.org won't last long lol
23:33:45Araqhmm I keep forgetting about your admin powers
23:33:46EXetoClöl
23:33:51filwitlol
23:34:07dom96:P
23:34:21Demosare aliases something more than just little functions that call other functions? I don't know ruby
23:34:48filwitthey're different way to access the same behavior
23:35:00filwits.new(...) vs s = TS.new(...)
23:35:05filwitect
23:35:08filwitetc*
23:35:42filwit(and yes, they're just proc/template in Nimrod)
23:35:49Demoswhat is that TS. syntax? is that like method call syntax but with generics instead of the first param?
23:36:12AraqDemos: yes
23:36:15filwitno i just meant it's was s's type
23:36:22filwiterr, yes
23:36:26DemosI figured, is it valid?
23:36:38Araqsometimes
23:36:56filwitproc foo(T:typedesc[Foo], ...) = # warning, doesn't overload entirely properly yet
23:37:04AraqI didn't create the feature so it's buggy :P
23:37:23filwitbut does work when there's no ambiguity in the following parameters
23:38:15filwityou can write it shorter too: proc foo(t:type Foo, ...)
23:39:47Araqfilwit: is that shorter notation documented?
23:40:08filwitidk, but it works
23:40:21filwiti haven't read through the docs in months
23:40:48filwitthough i recently took a look at the tracking part
23:41:10filwitand the finally:/excpet: blocks, didn't realize they where stand-alone statements now, which is cool
23:41:11Araqwell I'm not sure,
23:41:12Demoswhy the hell not just proc foo[T](Foo: T, ...)?
23:41:32Demosmaybe that is just nicer for me because of c++
23:41:37Araqtype(x) is T if x's type is T
23:41:52Araqbut type(T) is typedesc[T] ?
23:42:08Araqwell it makes some sense I guess
23:42:39Araqis typedesc[typedesc[T]] == typedesc[T] ?
23:43:00filwiti just assumed it was typedesc[T], but I never really checked. I always write 'typedesc[T]' cause i wanted to avoid any added execution 'type T' would probably add
23:43:04Demoswell type(typedesc[T]) could be a typedesc2
23:43:07Demosor something like that
23:43:39Demosin the end types of types of types are not useful and having them is really just typesystem masterbation imo
23:43:48AraqDemos: no it would be typedesc[typedesc[T]]
23:43:56Demostrue
23:44:02EXetoClet's cap it at typedesc99 then
23:45:02Demostypedescs are a really underdocumented concept...