<< 01-12-2014 >>

00:07:53*vendethiel- quit (Ping timeout: 252 seconds)
00:10:52*superfun1 quit (Ping timeout: 240 seconds)
00:12:38*vendethiel joined #nimrod
00:15:50*Matthias247 quit (Read error: Connection reset by peer)
00:26:18*dain joined #nimrod
00:27:28flaviu"lib/core/macros.nim(274, 16) Error: unhandled exception: lib/core/macros.nim(288, 176) Hint: line too long [LineTooLong]"
00:27:30flaviuhuh?
00:30:32reactormonkflaviu, pretty much. ^^
00:30:52flaviuok, I fixed it by splitting it over a few lines
00:31:06flaviuweird, because it was 100-200 chars long, not that much
00:31:09reactormonkI think it's a compiler limitation on buffer allocated
00:31:29reactormonkOr maybe Araq just doesn't like overlong lines, you never know ;-)
00:31:45flaviureactormonk: It really wasn't very long: https://gist.github.com/40fb42726f1cc30f6f37
00:32:13flaviuAnd when I put it in the source file, it works fine.
00:32:21flaviumacro weirdness, I guess
00:35:27*vendethiel quit (Ping timeout: 272 seconds)
00:36:10*fowlmouth joined #nimrod
00:37:40Araqhi dain welcome
00:37:47Araqflaviu: report it, it's a bug
00:37:58Araqhints should not end up as errors
00:38:18flaviuOk.
00:40:13Araqflaviu: also "bloat" in the test suite doesn't refer to its runtime, but to maintainability
00:40:25*vendethiel joined #nimrod
00:42:18*dain quit (Quit: dain)
00:44:45flaviulol, I hit another bug while trying to make a minimal test case for the current one
00:45:23flaviuWait, no, that's just me
00:50:02wangokr: first three links to earlier posts are broken
01:00:23Araqbye
01:01:05wangokr: wow, you really have to remember to put the procCall, else you get a stackoverflow (infinite call)
01:01:45wan(I just removed one to see what it would do)
01:03:29wangood article, btw
01:14:16*Boscop_ joined #nimrod
01:17:17*Boscop quit (Ping timeout: 240 seconds)
01:20:47*boydgreenfield quit (Quit: boydgreenfield)
01:22:23*vendethiel quit (Ping timeout: 240 seconds)
01:35:22*boydgreenfield joined #nimrod
01:35:22*boydgreenfield quit (Client Quit)
01:40:38*Trixar_za quit (Ping timeout: 244 seconds)
01:41:54*BitPuffin quit (Ping timeout: 264 seconds)
01:43:21*Trixar_za joined #nimrod
01:46:17*boydgreenfield joined #nimrod
01:47:37*fowlmouth quit (Ping timeout: 252 seconds)
01:52:05*wan quit (Quit: WeeChat 1.0.1)
01:59:22*vendethiel joined #nimrod
02:03:09*will quit (Read error: Connection reset by peer)
02:06:35*darkf joined #nimrod
02:12:12*boydgreenfield quit (Quit: boydgreenfield)
02:17:32*superfunc joined #nimrod
02:20:44*q66 quit (Quit: Leaving)
02:24:06*vendethiel quit (Ping timeout: 256 seconds)
02:33:41*boydgreenfield joined #nimrod
02:51:29*pink-rg left #nimrod (#nimrod)
03:05:04*saml_ joined #nimrod
03:10:55*srlang joined #nimrod
03:18:12*boydgreenfield quit (Quit: boydgreenfield)
03:29:33*EXetoC quit (Ping timeout: 252 seconds)
03:48:19*kapil__ joined #nimrod
03:58:16*vendethiel joined #nimrod
04:01:52*j3rky quit (Ping timeout: 258 seconds)
04:12:58*flaviu quit (Ping timeout: 250 seconds)
04:31:07*srlang quit (Ping timeout: 245 seconds)
04:34:30*AFKMorpork is now known as AMorpork
04:38:29*BitPuffin joined #nimrod
04:41:57*vendethiel quit (Ping timeout: 240 seconds)
04:42:52*BitPuffin quit (Ping timeout: 250 seconds)
04:44:22ldleworkI am struggling with the difference between generics in method parameters and generics in field storage
04:44:36ldleworkIt seems like it is really easy to pass around different types but not keep references to them etc
04:44:53ldleworkWhy can I have generic references?
04:44:56ldleworkcan't*
04:52:42*superfunc quit (Quit: Connection closed for inactivity)
05:05:15*Demos quit (Read error: Connection reset by peer)
05:06:02*vendethiel joined #nimrod
05:06:17*bjz_ quit (Ping timeout: 240 seconds)
05:08:57*bjz joined #nimrod
05:10:35ldleworkWe should totally support this syntax: https://gist.github.com/dustinlacewell/598fcbcf367b188c15ee
05:10:43*AMorpork is now known as AFKMorpork
05:16:00*kmcguire joined #nimrod
05:18:33*bjz quit (Ping timeout: 272 seconds)
05:21:39*milosn joined #nimrod
05:23:34*Boscop_ quit (Ping timeout: 264 seconds)
05:28:53*vendethiel quit (Ping timeout: 258 seconds)
05:30:00*saml_ quit (Quit: Leaving)
05:32:17*kmcguire quit (Ping timeout: 264 seconds)
05:36:03*vendethiel joined #nimrod
05:52:41*untitaker quit (Ping timeout: 264 seconds)
05:57:50*vendethiel quit (Ping timeout: 250 seconds)
05:58:07*untitaker joined #nimrod
06:06:01*perturbation quit (Quit: Leaving)
06:30:26*vendethiel joined #nimrod
06:40:52*BlaXpirit joined #nimrod
06:52:19*vendethiel quit (Ping timeout: 252 seconds)
06:55:25*flyx left #nimrod ("I'm a happy Miranda NG user! Get it here: http://miranda-ng.org/")
07:00:07*c74d quit (Remote host closed the connection)
07:04:37*gokr_ quit (Ping timeout: 240 seconds)
07:05:13*gokr_ joined #nimrod
07:08:43*c74d joined #nimrod
07:14:06*q66[lap] quit (Ping timeout: 250 seconds)
07:30:24*gokr_ quit (Read error: Connection reset by peer)
07:30:35*gokr_ joined #nimrod
07:46:46ldleworkgood god the requirement that you import methods just hung me up for like an hour
07:48:04*gour joined #nimrod
07:51:32*BlaXpirit quit (Ping timeout: 245 seconds)
07:52:16*bjz joined #nimrod
07:55:32gokrldlework: Regarding generic references... I am no guru on generics, but it seems to me that you can think of generic methods as "templates" - in other words, there are multiple procs created "under the hood" - matching each unique call site.
07:55:50gokrNow... that works just fine for procs. But for an object? There is only "one" :)
07:56:41gokrIn other words, generics in proc signatures can be thought of as "sugar" instead of typing in one proc for all the combinations of actual types used in your program.
07:57:07gokrBtw, thanks to both flaviu and wan for the "bug reports" on my articles, all fixed :)
08:47:18*vendethiel joined #nimrod
08:47:19*Trustable joined #nimrod
08:52:28*ekarlso- quit (Ping timeout: 255 seconds)
08:54:59*wan joined #nimrod
09:09:34*vendethiel quit (Ping timeout: 255 seconds)
09:10:36*ekarlso- joined #nimrod
09:11:18*khmm joined #nimrod
09:17:07*vendethiel joined #nimrod
09:21:15*dts joined #nimrod
09:32:08*Araq0 joined #nimrod
09:32:41Araq0ldlework: why do you think RootRef exists and the language makes you inherit from RootObj when you want inheritance?
09:33:01Araq0RootRef is your "generic" reference
09:33:09dtsbecause you felt like it?
09:34:12Araq0btw it's funny how many people go for "from m import foo" and then curse it imports what they told it to do
09:34:36Araq0and then come up with rules what it obviously "should" import
09:35:07Araq0here's a hint, "import m" works, if you get a conflict, use "import m except foo"
09:35:55dtsjust import everything and be done with it
09:38:51*vendethiel quit (Ping timeout: 265 seconds)
09:40:16*vendethiel joined #nimrod
09:45:28*BitPuffin joined #nimrod
10:06:19*Araq0 quit (Quit: Page closed)
10:25:10*Etheco joined #nimrod
10:26:30*vendethiel quit (Ping timeout: 250 seconds)
10:26:41*gour_ joined #nimrod
10:27:10*BlaXpirit joined #nimrod
10:30:29*gour quit (Ping timeout: 264 seconds)
10:32:18*gour_ is now known as gour
10:33:52*BitPuffin quit (Ping timeout: 250 seconds)
10:37:59*BitPuffin joined #nimrod
10:38:53*bjz quit (Ping timeout: 240 seconds)
10:42:19*BitPuffin quit (Ping timeout: 244 seconds)
10:43:42*vendethiel joined #nimrod
10:59:07*BlaXpirit quit (Quit: Quit Konversation)
11:06:07*vendethiel quit (Ping timeout: 255 seconds)
11:41:46*flaviu joined #nimrod
11:42:50gokrflaviu: Thanks for the corrections to the articles
11:53:42*flaviu quit (Ping timeout: 265 seconds)
12:05:11*bjz joined #nimrod
12:10:55*vendethiel joined #nimrod
12:33:39*vendethiel quit (Ping timeout: 272 seconds)
12:35:05*BitPuffin joined #nimrod
12:35:37*vendethiel joined #nimrod
12:44:02*EXetoC joined #nimrod
12:59:34*vendethiel quit (Ping timeout: 264 seconds)
13:08:59*vendethiel joined #nimrod
13:30:22*vendethiel quit (Ping timeout: 265 seconds)
13:30:24*Puffin joined #nimrod
13:32:15*BlaXpirit joined #nimrod
13:35:05*Puffin quit (Ping timeout: 272 seconds)
13:43:46*vendethiel joined #nimrod
14:05:43*vendethiel quit (Ping timeout: 252 seconds)
14:16:08*vendethiel joined #nimrod
14:24:21*j3rky joined #nimrod
14:31:47*boydgreenfield joined #nimrod
14:51:41*AFKMorpork is now known as AMorpork
15:02:29*vendethiel quit (Ping timeout: 272 seconds)
15:03:30*kostya joined #nimrod
15:10:54*vendethiel joined #nimrod
15:11:38*dom96_ quit (Ping timeout: 250 seconds)
15:15:29*johnsoft quit (Ping timeout: 264 seconds)
15:15:37*darkf quit (Quit: Leaving)
15:16:39*johnsoft joined #nimrod
15:17:25*saml joined #nimrod
15:28:59*boydgreenfield quit (Quit: boydgreenfield)
15:41:23*kapil__ quit (Quit: Connection closed for inactivity)
15:50:42kostyaoptimized https://github.com/kostya/benchmarks/commit/2a52213abe2883810e6c28df7b6949550ceedaa3
15:51:37*gokr_ quit (Ping timeout: 240 seconds)
15:52:33*gokr_ joined #nimrod
15:55:32*boydgreenfield joined #nimrod
15:59:32*gokr_ quit (Ping timeout: 256 seconds)
16:03:19ldlework"Just import everything" sounds like one of those "Its just the Go way dude" things that we all know is bad
16:03:44ldleworkWe've learned over the last 40 years that namespaces are A Good Thing and that anyone telling you otherwise is a kook
16:04:23ldleworkAraq: I'm not surprised that "from m import foo" imports foo, but that it doesn't import everything related to foo is all
16:04:39ldleworkAnd that there is no way to say "Give me all the methods related to foo"
16:05:12ldleworkI've heard things on the forums about how Python gets by with looser checking than this or that
16:05:43ldleworkerr I don't know where I was going with the Python remark
16:05:48ldleworkliterally just woke up
16:06:47*srlang joined #nimrod
16:09:02ldleworkAnyway its not a serious critique this is like the only thing I've found so far that I don't like
16:12:38*bjz quit (Read error: Connection reset by peer)
16:13:03*bjz joined #nimrod
16:13:37*Araq0 joined #nimrod
16:14:10Araq0"We've learned over the last 40 years that namespaces are A Good Thing and that anyone telling you otherwise is a kook" well I didn't learn this lesson
16:14:25Araq0I learned it's a non-issue when you have strict static typing
16:14:50Araq0the type system exists to prevent stupid mistakes
16:15:14EXetoCso it's just "import all procs and methods associated with this type" that is missing? namespaces are a different subject, and the modules are basically namespaces
16:16:27Araq0namespacing is aesthetic
16:17:39EXetoCexcept when used as a way to resolve conflicts
16:19:30Araq0also ... not that I like these kind of arguments, but: "having procs nothing to do with Foo in module foos is a code smell anyway so 'import' is fine with importing everything"
16:20:57Araq0(that would be the counter argument on reddit level)
16:21:02EXetoCexcept maybe when you want to exclude something for the sake of not having to qualify symbols when said proc is imported from another module, which I imagine won't be the case very often
16:22:13EXetoCbut I wouldn't mind such an import feature, but I don't know how many people use it only for the sake of documentation
16:24:08*flyx joined #nimrod
16:27:37EXetoCthere's some danger of hijacking though, if we don't have actual member functions tied to a single module, but unit tests should catch many of these occurrences, if indeed the semantics differ
16:28:15EXetoCbut the intended proc must either have been removed, or excluded when importing
16:30:41Araq0kostya: can you edit tables.nim and sets.nim, to use a different 'nextTry' algorithm and see what/if it changes?
16:30:56Araq0proc nextTry(h, maxHash: THash): THash {.inline.} = result = (h + 1) and maxHash
16:31:07Araq0# linear probing
16:31:44Araq0is a planned optimization
16:32:52EXetoCbut "from x import T*" doesn't seem like a very intrusive addition
16:34:19EXetoCldlework: consider discussing it on the forums and/or on github if you haven't already, assuming that you don't get a straight 'no' here
16:34:41Araq0what's the point though? what evil symbols do you get when you "import pegs"?
16:35:42EXetoCI would consider using it, since it would be so effortless, but I'm not that bothered about it
16:36:12Araq0IMO the module and packaging system is already quite complex
16:36:31Araq0and people already struggle with it all the time
16:36:32EXetoCbut that would be for the sake of documentation, really
16:37:11EXetoCbut the documentation system could track symbol references and so on anyway
16:38:42EXetoCan IDE could do it too
16:38:55EXetoCwill that be a priority before 2.0?
16:39:55Araq0will what be a priority? better idetools support?
16:40:05Araq0sure
16:40:42EXetoCok
16:41:14samlso, x can come from any of the imported modules and those modules' dependencies?
16:42:18EXetoCnot the dependencies, unless they are exported
16:42:51*Boscop joined #nimrod
16:43:22samli guess compiler/linker could incrementally build search index
16:44:41samleach nim installation collects and builds local index. and when the machine goes online, it replicates to central index. web scale.
16:45:25samlwait.. won't work due to private code. people would like some privacy and don't want to publish their index of private code
16:47:27Araq0saml: no idea what you mean but we have theindex.html
16:48:36samlthat's for modules that bundled with nim only
16:48:58samlwait.. maybe nim already has something like maven
16:50:25Araq0we have Nimble (formerly known as Babel)
16:50:32EXetoCshouldn't that be the responsible of either the owner of the package, or the maintainer of the package manager, who could generate documentation for all packages
16:51:02EXetoCpeople can then consult locally generated documentation too, if necessary
16:51:27Araq0we could try and build the index for every registered nimble package
16:51:40Araq0shouldn't be too hard
16:57:03*Varriount|Mobile joined #nimrod
16:57:08Varriount|MobileMeep
16:57:55Varriount|MobileI'm back, at least for a little bit. I'm swamped with final exams preparations
17:00:54Araq0Varriount|Mobile: ok, well, we plan to release this weekend (as always)
17:01:31*gokr_ joined #nimrod
17:01:38Araq0do you have time then?
17:01:54Varriount|MobileAraq: I'll see if I can scrounge together some time... I can't make any promises though
17:02:35Varriount|MobileI'll be free after the 10th, though, that's when classes end.
17:05:21Araq0well dom96 really wants us to release 0.10.2, I don't mind skipping that release too much
17:06:23gourwhat's the point of 0.10.2 less than one monthy before 1.0?
17:07:10Araq0so we get more feedback for 1.0
17:07:54gourbut isn't the road for 1.0 already traced out?
17:08:27Araq0yeah but I'm open to feature removals :P
17:08:44gouri mean. nothing against it if it does not take too much (precious) resources
17:10:13Araq0it doesn't matter too much, 1.0 will be beta quality, this is just reality. KDE 4.0 had the same problem afaict. people use supposedly "stable" software and find all the bugs the devs missed and than it's really stable at 4.2 or something
17:12:06Araq0the joy of open source development
17:12:38ldleworkSorry for being grumpy earlier
17:13:33Araq0ldlework: same here. sorry for being grumpy.
17:19:55*khmm quit (Ping timeout: 272 seconds)
17:20:37kostyanextTry not helping
17:21:53*vendethiel quit (Ping timeout: 265 seconds)
17:22:00ldleworkSo I wrote an application that scrolls random pixels upwards
17:22:09ldleworkI notice there it a slight pause every once and a while
17:22:11ldleworkThis is the GC?
17:22:32Araq0kostya: does it make it worse?
17:22:50kostyaa bit
17:23:15Araq0ldlework: possibly, you can always use the realtime gc
17:23:45Araq0kostya: bah... and this is why I don't like benchmarks on modern hardware ;-)
17:23:58Araq0it should be slightly faster
17:26:13*kostya quit (Quit: Leaving)
17:26:54*vendethiel joined #nimrod
17:27:04ldleworkAraq0: just "var useRealtimeGC = true" or something like that?
17:27:41EXetoChow long are these pauses? is the memory usage high?
17:28:19ldleworkEXetoC: its just a tick, like a barely noticable studder every say, 3-5 seconds or so
17:28:31ldleworkIts just a test, nothing important just trying to understand
17:28:55Araq0ldlework: you have to read the docs
17:29:11ldleworkAraq0: I do! I swear!
17:29:18Araq0http://nim-lang.org/gc.html
17:29:19ldleworkSometimes I don't know what I'm looking for though :)
17:29:38ldleworkAraq0: I'm there. It says "define the symbol" so I wondered if that just meant, define it as anything like = true
17:29:51Araq0ah ok fair enough
17:30:15Araq0it means to use -d:useRealtimeGC on the command line
17:30:21Araq0(or your config file)
17:30:22ldleworkOh okay
17:30:36EXetoCit should maybe say 'conditional symbol'
17:30:48Araq0it should just give an example
17:31:00Araq0examples, examples, examples!
17:31:05boydgreenfielddom96 / others: In Jester, do query strings only get parsed for formData, or am I missing something?
17:31:06Araq0there is no other way to learn
17:31:32ldleworkHmm that didn't fix the pause but anyway its not important I guess :)
17:31:44ldleworkEXetoC: do you know what cellular automata is?
17:32:24ldleworkHmm it might even be an optical illusion or something
17:32:43ldleworkLike my eye is tracking the movement for a second so it only seems to pause or something. haha
17:33:57Araq0boydgreenfield: sorry, I don't know.
17:34:09*Araq0 sucks at web development
17:34:12*onionhammer quit (Ping timeout: 250 seconds)
17:34:18boydgreenfieldAraq0: No worries, I think it just isn’t parsing them… I’ll submit a PR to dom
17:34:20EXetoCldlework: calculate the frame rate and then display that
17:34:40Araq0see you later guys
17:34:47*Araq0 quit (Quit: Page closed)
17:40:01ldleworkEXetoC: if you want to see for yourself, https://github.com/dustinlacewell/nimbots
17:40:10ldleworkThere are two scenes you can toggle between with spacebar
17:40:23ldleworkone does vertical scrolling of random noise, and another just like tv static
17:40:46ldleworkthe vertical scrolling has all this wierd studdering and choppyness, the tv static is smooth as silk
17:40:55ldleworkno need to waste any time on it, but if you were curious what I was seeing
17:41:56*onionhammer joined #nimrod
17:43:31*q66[lap] joined #nimrod
17:44:07*q66 joined #nimrod
17:44:13EXetoCI don't get any pauses
17:45:10ldleworkwow
17:45:15ldleworkMaybe I'll reboot
17:45:24ldleworkbrb
17:46:20Varriount|MobileEXetoC: What's the memory usage like? Is it fluctuating?
17:50:17EXetoCVarriount|Mobile: it stays at about 70mb
17:51:35Varriount|MobileHm, if memory usage is constant, that would suggest the stutter *isn't* caused by the GC
17:52:04EXetoCand an ICE when compiling with -d:release
17:52:59*dom96_ joined #nimrod
17:56:29*boydgreenfield quit (Quit: boydgreenfield)
17:57:03EXetoCldlework: I need to call my lib nim-libtcod2 or something, at least temporary
17:57:38*boydgreenfield joined #nimrod
17:57:38EXetoC*temporarily
17:58:18*boydgreenfield quit (Client Quit)
18:00:22*irrequietus joined #nimrod
18:05:54*milosn quit (Ping timeout: 264 seconds)
18:06:31ldleworkI guess I will chalk it up to my window manager...
18:09:21AraqEXetoC: er ... what do you mean? "ICE" with -d:release?
18:09:55Araqso the compiler crashes when you enable release mode?
18:14:23Araqflaviu: http://www.cs.indiana.edu/~dyb/pubs/nano-jfp.pdf
18:14:47ldleworkIs there a way to build so that dependencies get built into the binary? Is that a stupid question?
18:16:21Araqyes. ;-)
18:17:24ldleworkAraq: heh to the former or latter? :)
18:17:48*Matthias247 joined #nimrod
18:18:32Araqit's both possible with lots of archane linker flags and a stupid question :P
18:20:34ldleworkhehe ok
18:21:00ldleworkI just want to send someone this binary who's on the same arch as me without having to have them install/build libtcod
18:21:10ldleworkJust wondering if I could statically link libtcod
18:22:21Araqso you use Linux and want to share binaries easily ... spot your error. :P
18:22:45*milosn joined #nimrod
18:26:36ldleworkAraq: heh this is totally doable and you're just giving me shit arnt you :D
18:27:28Araqlast time I did it, it worked until some libc version differed
18:27:49*gour quit (Quit: Konversation terminated!)
18:28:39EXetoCAraq: with relative paths?
18:29:36EXetoCor maybe you meant statically
18:30:54AraqEXetoC: I meant copying nimrod binaries around
18:31:22*gour joined #nimrod
18:31:31*gour quit (Changing host)
18:31:31*gour joined #nimrod
18:33:17dtswhy dont iterators contain an implicit result variable?
18:35:40Araqbecause it's not necessary
18:35:51dtshmmm
18:35:53Araqyou need to 'yield' anyway
18:36:10Araq'result's point is to avoid brutal control flow
18:36:25Araqbut you cannot avoid it an iterator
18:36:37dtsyeah good point
18:36:58milosnevening
18:43:30*milosn at starbucks
18:46:46*milosn having coffee
18:46:47milosn:)
18:47:02milosnyou "made" me arsholes, now you take care of me
18:47:04milosnhar har
18:47:35milosnthey love to stir shit up and play all innocent
18:47:37milosnhar har
18:48:10*Boscop quit (Read error: Connection reset by peer)
18:48:25milosnhmmmm
18:48:27*Boscop joined #nimrod
18:49:11*Varriount|Mobile quit (Read error: Connection reset by peer)
18:49:17*Var|Mobile joined #nimrod
18:49:57milosnman i need a holiday, again
18:54:12milosnive started reading new york times last week
18:54:15milosnyou are doomed
18:54:22milosni am gonna see through all your games
18:54:27milosn:)
19:00:06*Boscop_ joined #nimrod
19:03:36milosnmpg123 http://213.8.143.168/100Hits
19:04:05*Boscop quit (Ping timeout: 264 seconds)
19:05:56*skyfex joined #nimrod
19:07:56EXetoCmilosn: it's choppy since the track change
19:07:56*Var|Mobile quit (Read error: Connection reset by peer)
19:08:22milosndont think so
19:08:27milosn:)
19:09:10milosni know chop from "chop"
19:09:20milosnanyway thats less important
19:09:49milosnive lost at least 5kg last 3 weeks
19:10:42milosnsorry wrong #
19:10:44milosn:)
19:10:48milosni was in other place
19:10:53milosnsorry for the bother :D
19:11:04*milosn swicthes back to the place
19:13:22Araqhey, skyfex is back!
19:14:29ldleworkWell
19:14:35ldleworkI'm convinved it is an optical illusion I guess
19:14:45ldleworkIf I drag the window down to the edge of the screen
19:14:51ldleworkso I can only see like three or four rows
19:14:57ldleworkI never see those studder or stop or anything like that
19:15:09skyfexAraq: hey :)
19:15:24ldleworkso it literally must be an illusion where my eye is tracking the movement for a split second making me thing I see studder
19:15:37EXetoCok, but add a frame rate display for tracking changes easily
19:15:45EXetoCI don't know if there's a utility for that in libtcod
19:16:31EXetoCsys_get_fps, or did I omit sys?
19:16:42ldleworkEXetoC: its interesting to me that you don't experience the same illusion
19:19:45EXetoCldlework: it's not tearing then? which causes some jitter
19:20:10ldleworkEXetoC: it was definitely tearing before... but when I run it now, it seems to not
19:20:22ldleworkEXetoC: I still experience the illusion where it stops for a microsecond, but I'm convinced that's my eyes
19:22:28EXetoCok
19:29:56*Var|Mobile joined #nimrod
19:30:57*BitPuffin quit (Ping timeout: 240 seconds)
19:30:57*Var|Mobile quit (Read error: Connection reset by peer)
19:31:26ldleworkEXetoC: I added an FPS counter and pushed up
19:33:41EXetoCvsync only for the second scene?
19:34:06EXetoCand that means no tearing, but that's not the cause?
19:36:08EXetoCnevermind. it's no worth spending time on it, but the second example is indeed vsync'ed
19:36:57ldleworkEXetoC: they are setup exactly the same
19:37:29ldleworkThe only thing that changes is the rendering routine
19:37:38ldleworkEXetoC: are you getting tearing on the first one now?
19:38:29EXetoCI always did, because the frame rate is not that of the monitor frequency
19:41:28ldleworkEXetoC: makes sense
19:42:32ldleworkHmm even if I set the tcod fps to 30 I still get tearing on the first one lol
19:45:23*Var|Mobile joined #nimrod
19:46:32EXetoCit was just a coincidence that it remained at 60
19:46:32*Var|Mobile quit (Read error: Connection reset by peer)
19:48:46ldleworkEXetoC: I think that libtcod is rendering faster than vsync but limiting the user render pipeline to whatever you set the fps to
19:49:19ldleworkOh well
19:58:11ldleworkI feel wierd defining a P version of all my types
19:58:27ldleworkI know it is just an alias
19:58:40ldleworkDoes anyone here just use ref Type everywhere vs defining ref aliases?
19:58:41EXetoCthat convention is deprecated
19:58:53ldleworkEXetoC: oh so I should just be using ref Type?
19:59:22EXetoCsome do, but the primary type should be Type, which could be a ref or a ptr
20:00:07ldleworkEXetoC: hmm if I do type MyType = object; then MyType isn't a ref or a ptr right?
20:00:27ldleworkEXetoC: are you saying to do something like "type BaseType = object ... Type = ref BaseType"
20:00:33EXetoCand secondary types should be called TypeObj, TypeRef and TypePtr IIRC, depending on which type is the primary one and which ones you want to define and export
20:00:51EXetoCalmost
20:01:42*Var|Mobile joined #nimrod
20:02:12*gour is wondering why is suse's partitioner putting 0700 type for btrfs partitions
20:02:29ldleworkEXetoC: "type Type = object ... TypeRef = ref Type" ?
20:04:28AraqVar|Mobile: what about that 'diff' feature?
20:05:06EXetoCldlework: if Type is the primary type, and if TypeRef is needed
20:05:17*j3rky quit (Ping timeout: 264 seconds)
20:05:29ldleworkEXetoC: what if I'm primarily working with ref's to the type
20:06:24ldleworkEXetoC: sorry, just trying to get an idea of the Nim conventions
20:06:40ldleworkEXetoC: btw, if you wanted to look over that code and correct any bad forming habits or anything I wouldn't be offended :)
20:07:05EXetoCldlework: "Type = ref TypeObj" I think
20:07:17ldleworkOh
20:07:19ldleworkI see
20:07:35Araqor simply Type = ref object ...
20:07:43EXetoCwas just going to say
20:07:44ldleworkthat works?
20:07:46ldleworknice
20:07:54EXetoCAraq: so all this is set in stone?
20:07:58ldleworkI don't really understand any of the semantics on the right side of the =
20:08:09ldleworkobject, RootObj, object of
20:08:20AraqEXetoC: yes
20:08:21*Var|Mobile quit (Read error: Connection reset by peer)
20:08:34*Var|Mobile joined #nimrod
20:08:46ldleworkI showed someone the code with RootObj and they said 'ew' and I said 'nooo ignore that, look at the rest of it!'
20:08:46*Var|Mobile quit (Read error: Connection reset by peer)
20:09:00*Var|Mobile joined #nimrod
20:11:13ldleworkSomeone saying that Rust will be the next game-dev language leader
20:11:21ldleworkI said "Except that you can opt out of the GC with Nim"
20:11:23ldleworkhe asks
20:11:25ldlework<rsaarelm> Does that work nicely with the standard library and do you get RAII?
20:11:35ldleworkI'm guessing not
20:11:49ldleworkSince the standard library is probably all GC-based
20:11:59EXetoCit's very hard to predict these things, and Nim is better in many ways
20:12:29EXetoCoh, and syntax does matter
20:12:47ldleworkEXetoC: I'm taking that as a "no it wont play nice with the standard library"
20:14:21EXetoCit mostly like will eventually
20:14:39Araqldlework: the point of Nim's GC is to be good enough that you can use in a game
20:14:56EXetoCand I can't remember if destructors work well outside the global scope
20:14:56Araqand as predictable as you want it
20:15:14Araqdestructors are not stable and will end up in --experimental
20:15:28EXetoCok
20:17:13gokrldlework: Not sure what's so odd there.
20:17:24ldleworkgokr: odd where?
20:17:30gokr(oops, I am 20 lines behind)
20:17:43gokrThe "the code with RootObj" etc
20:17:57Araqthis idea that you have to avoid the stdlib for your game code is really backwards anyway
20:18:10Araqso lets go through some examples:
20:18:15EXetoCand the pause time can be reduced, right? because someone complained that 2ms was way too much
20:18:16ldleworkgokr: probably because it is an arbitrarily defined symbol name for something that is usually hidden in syntax or a keyword, etc
20:18:36*Var|Mobile quit (Quit: AndroIRC - Android IRC Client ( http://www.androirc.com ))
20:18:40gokrldlework: AFAIK RootObj is the same as "Object" in Java, the base type.
20:18:41ldleworkgokr: and it doesn't resemble the "object" or "object of" patterns
20:18:46EXetoCI think you said that the guaranteed maximum pause time is actually lower
20:19:02EXetoCbut there are other ways to go about this
20:19:21*boydgreenfield joined #nimrod
20:19:49Araqmax pause time has been reported to be 0.5ms for some games
20:20:18ldleworkAraq: you should finish your previous thought :P
20:20:19EXetoCldlework: no? it's just an alias then
20:20:33ldleworkEXetoC: sorry what?
20:20:35EXetoCrather than inheritance
20:21:00Araqlet's look at XML processing. allocates? yes. BUT: do you use it in in your main loop?
20:21:16gokrAlso, the GC pauses is "per thread", not global.
20:21:21EXetoCif it's just "Type = RootObj" rather than "Type = object of RootObj" (include ref where necessary)
20:21:30*srlang quit (Quit: WeeChat 1.0.1)
20:21:48Araqosproc. allocates? yes. but running some external process is expensive anyway
20:22:15ldleworkAraq: I think it is for like data structures and stuff
20:22:37ldleworkthe point that the other guy made about the stdlib
20:22:50EXetoCthen you have things like DSP threads, but you wouldn't deal with these things in those
20:22:58*johnsoft quit (Ping timeout: 264 seconds)
20:23:57*johnsoft joined #nimrod
20:24:18Araqldlework: well the GC is just optimized reference counting anyway, the same algorithm that many game engines use
20:25:01ldleworkAraq: I did attempt the point that Jehan had made that some GC's are faster than manual deconstruction anyway (OCaml)
20:25:20Araqother important example is logging
20:25:44Araqwith some TR macro you can get that down to how C does it
20:26:23Araqldlework: they are but it depends on what you do.
20:29:09gokrAFAIK, if you can control for how long the GC pauses (and IIRC, you can in Nim) then its a no-brainer, it will most probably not be the "performance bottle neck".
20:31:34Araqthe thing is: when use a data structure coming from a library, it really depends on how the library is designed. For instance, I wouldn't use "glib" in a game either even though it's in C and doesn't use a GC.
20:31:58gokrTake bitsquid for example - a swedish professional game engine (just bought by Autodesk btw) - they went *all in* on Lua, for basically everything on the "game" side. And still, this is a super high performance game engine.
20:33:01AraqI mean seriously. The typical destructor for a binary tree in C++ is O(n) where n is the tree size and not interruptable.
20:33:20Araqthat's worse than what you get with Nim.
20:34:01Araqwell it's still O(n) of course, but it is interruptable
20:34:26Araqfor other GCs it's O(1) if they can compact
20:35:05gokr(the trick behind bitsquid is being fully job based, everything optimized for multicore. That's where the challenges are, not with "gc or no gc" IMHO)
20:35:32Araqthe libraries you use need to play well in C++ too, so the entire argument makes no sense
20:36:45*gokr playing with having my big screen on the side... hmmm
20:38:32ldleworkgokr: so that it is more tall than wide?
20:38:42*flaviu joined #nimrod
20:41:37gokrRight, I realized I could actually tilt it
20:41:57gokrA friend of mine had it like that, and of course... more text vertically
20:45:00Araqflaviu: check the logs please, I sent you a link
20:45:51*Mat4 joined #nimrod
20:45:55Mat4hello
20:47:28flaviuAraq: Yep, I've seen that paper, but I'
20:47:38flaviuve never completely read it
20:49:03Araqwell the essence is that automatic combining of passes for efficiency is an open research problem :P
20:49:23Mat4compiler passes ?
20:49:25Araqand these many passes really slow down a compiler
20:49:32AraqMat4: yes
20:51:04*Mat4 wonders, why academic researches doesn't seem to relate on researches in computer history end up reinventing the wheel over and over again
20:52:51*boydgreenfield quit (Quit: boydgreenfield)
21:08:18flaviuAraq: I skimmed over it, but from what I can tell, performance is still reasonable, even with all the passes.
21:08:18flaviualso, this compiler compiled to machine code, which is much harder.
21:09:05Araqnot really, it's different, but not harder
21:09:13Araqunless you want to optimize ;-)
21:09:32Araq(then indeed it's much harder)
21:09:42flaviuThey do do a small amount of optimization
21:10:36flaviuThe whole idea with the nanopass compiler is that the framework figures out how and where to run the code.
21:11:10flaviuThey had previously used a "micropass" structure, which is what I imagine you thinking about, where the programmer had to transverse the AST.
21:11:54flaviuThey found that was slow - because it required full transversal each pass, and error prone - it was easy to overlook some cases
21:14:11flaviuThey developed a new framework, the "nanopass framework", where the author defines the pattern to match (this is lisp, so this is trivial), a standard conditional (ideally, this would not frequently fail, increasing performance), and what he wants to replace the given pattern with/
21:17:43Araqyeah sure but that means I'm right :P
21:18:06Araqthe naive way of doing "nano passes" sucks
21:23:23*milosn quit (Ping timeout: 258 seconds)
21:27:14*skroll2 joined #nimrod
21:27:33*heinrich5991_ joined #nimrod
21:28:41Araqhi heinrich5991 welcome
21:28:53Araqhi skroll2. same to you
21:28:58*EXetoC1 joined #nimrod
21:29:02*flaviu1 joined #nimrod
21:29:43*[CBR]Unspoken1 joined #nimrod
21:30:43*JStoker quit (Killed (wolfe.freenode.net (Nickname regained by services)))
21:30:50*JStoker joined #nimrod
21:33:06ldleworkWhat a shitstorm
21:33:38Mat4???
21:33:52Araqwrong channel I guess
21:34:15ldleworkSorry, we need a #nimrod-offtopic
21:34:22ldleworkBecause you guys are cool and I want to chat :P
21:34:30dom96that exists
21:34:32gokrldlework: There is already
21:34:44flaviu1ldlework: Check the status message :P
21:34:45EXetoC1see the topic
21:34:53ldleworkheh woops
21:35:05*flaviu quit (*.net *.split)
21:35:05*skyfex quit (*.net *.split)
21:35:05*EXetoC quit (*.net *.split)
21:35:06*jhc76 quit (*.net *.split)
21:35:06*skroll1 quit (*.net *.split)
21:35:07*[CBR]Unspoken quit (*.net *.split)
21:35:07*heinrich5991 quit (*.net *.split)
21:35:09*EXetoC1 is now known as EXetoC
21:35:15*flaviu1 is now known as flaviu
21:35:17*heinrich5991_ is now known as heinrich5991
21:35:43EXetoClet's just migrate to #nim and so on
21:36:05Mat4there exist a new channel ?
21:37:35EXetoCthere are only a few people in #nim and #nim-offtopic
21:38:22*irrequietus quit ()
21:39:37*dom96_ quit (Ping timeout: 240 seconds)
21:40:00EXetoCjust kick everyone with a message, and update the topic
21:44:05Mat4Both the need for multi-pass compilation and sophisticated optimization strategies are avoidable simply by choosing an effective IL code representation in combination with an interpreter which generate such intermediate code beside parsing (this is also resource effective and ease porting as well as limit complexity)
21:45:11AraqMat4: you're describing LuaJIT, right? ;-)
21:46:22Mat4no but yes ;)
21:48:46*boydgreenfield joined #nimrod
21:52:23Mat4LuaJIT compiles beside interpretation and so add some memory overhead (inclusive the increased code depth caused by it RISC oriented, register-based IL representation which resulting even in an additional overhead for needed SSH transformations for optimization as side effect)
21:52:53Mat4otherwise it's amazing efficient
22:10:01*Joe_knock joined #nimrod
22:11:07Araqping boydgreenfield
22:11:21Araqdoes anybody know what to do about these?
22:11:23Araqhttps://github.com/Araq/Nimrod/issues/782
22:11:32Araqhttps://github.com/Araq/Nimrod/issues/784
22:12:20flaviuWell, it's a security issue, so the only reasonable response is to fix it.
22:13:54ldleworkflaviu: I think Araq meant 'does anyone know how to fix these'
22:14:12flaviuah, I'll look into OpenSSL I guess
22:15:03Araqthanks
22:16:03boydgreenfieldAraq: Hey.
22:16:23Joe_knockwelcome to Nim boydgreenfield
22:18:15*milosn joined #nimrod
22:29:33*jhc76 joined #nimrod
22:33:55Mat4ciao
22:34:25Araqbye
22:34:46*Mat4 left #nimrod (#nimrod)
22:54:23*will joined #nimrod
22:55:30willJoe_knock: how did the presentation go?
22:56:14*tinAndi joined #nimrod
23:03:37*BlaXpirit quit (Quit: Quit Konversation)
23:07:58Joe_knockwill: terrible. very few people showed up
23:13:32ldlework:(
23:13:50ldleworka talk about Nim?
23:20:03flaviuWell, comparing python's usage of openssl to nim's, I'm a bit scared
23:21:15flaviuThere is no way that nim is implementing 5500 lines of python and c code in just a couple hundred.
23:21:59ldlework:3
23:24:06Araqthere are openSSL alternatives around now
23:24:11Araqmaybe we should use these
23:25:35Joe_knockLibreSSL
23:25:53Joe_knockopenSSL is quite bloated, so an alternate will work
23:27:11ldleworkThough everyone has openssl already installed
23:28:16EXetoCc(:)<
23:29:10flaviuyeah, exactly. Requiring extra dependencies isn't good ui, although development time does push in that direction..
23:29:56flaviuWow, libressl libtls is really simple to use
23:30:38Joe_knockWell having 1 is better than none. If libressl takes less time, at least we'll have something
23:31:56*gour quit (Quit: Konversation terminated!)
23:33:43*boydgreenfield quit (Quit: boydgreenfield)
23:47:07Araqyeah go for libressl
23:53:53*j3rky joined #nimrod