<< 15-02-2016 >>

00:20:50*ga2arch quit (Ping timeout: 276 seconds)
00:21:44*vendethiel quit (Ping timeout: 252 seconds)
00:29:53*lankanmon joined #nim
00:31:38*lankanmon quit (Remote host closed the connection)
00:42:21*Matthias247 quit (Read error: Connection reset by peer)
00:50:23*Varriount joined #nim
00:51:11*Varriount_ quit (Ping timeout: 264 seconds)
01:10:19ldleworkCan I override () for a type to simulate a call interface?
01:10:37ldleworklike __call__ in python
01:11:56def-ldlework: http://nim-lang.org/docs/manual.html#special-operators
01:12:26ldleworkI don't want to adjust the method or field interface.
01:12:32ldleworkI want to pretend to call a value directly.
01:12:39ldleworkIf I have `a` of type T
01:12:43ldleworkI want `a()`
01:12:47*lg_ quit (Ping timeout: 264 seconds)
01:13:12ldleworkdef-: the method operator doesn't do that right?
01:14:13def-ldlework: just tried, seems to work for me: https://gist.github.com/def-/800e897635354775b867
01:14:30ldleworkdef-: gah you're too helpful
01:16:45ldleworkhehe that's neat
01:16:51ldleworkseems like cheatiing
01:17:18def-how so?
01:17:39ldleworkNot that operator itself, but how it ties up my abstraction very nicely.
01:18:11ldleworkI went from passing a closure
01:18:23ldleworkto passing an object variant that can store closures of various method signatures
01:18:38ldleworkand now I've just abstracted the fact that it is a variant struct
01:18:48ldleworkby implementing `()` over the top and taking care of the variant casing behind the scenes
01:19:02ldleworkso the clients to this code still believe they are getting a plain ol closure
01:41:09*Amrykid2 is now known as Amrykid
01:41:16*Amrykid quit (Changing host)
01:41:16*Amrykid joined #nim
01:47:20*gokr quit (Quit: Leaving.)
01:58:15*jaco60 quit (Ping timeout: 240 seconds)
02:11:28*vendethiel joined #nim
02:29:09*SShrike joined #nim
02:29:32*Demon_Fox quit (Quit: Leaving)
02:32:08*vendethiel quit (Ping timeout: 276 seconds)
02:51:03*vendethiel joined #nim
03:11:35*vendethiel quit (Ping timeout: 240 seconds)
03:34:33*ked_ joined #nim
03:47:30*ked_ quit (Ping timeout: 252 seconds)
03:53:56*Demon_Fox joined #nim
03:58:14*SShrike quit (Quit: SShrike)
04:00:31*endragor joined #nim
04:18:10*jackv quit (Ping timeout: 272 seconds)
04:18:48*Roin quit (Ping timeout: 272 seconds)
04:19:37*Roin joined #nim
04:19:39*jackv joined #nim
04:41:37*endragor quit (Remote host closed the connection)
04:43:34*endragor joined #nim
04:53:53*Xe quit (Quit: *.yolo *.swag)
04:54:31*Xe joined #nim
05:39:46*s4 joined #nim
05:50:08*_icarus_ joined #nim
05:52:41*ephja joined #nim
06:00:05*_icarus_ quit (Quit: Leaving)
06:06:47*vangroan joined #nim
06:16:06*lompik quit (Ping timeout: 240 seconds)
06:26:45*Varriount quit (Disconnected by services)
06:26:45*Varriount_ joined #nim
06:26:54*endragor quit (Remote host closed the connection)
06:29:27*endragor joined #nim
06:34:12*gokr joined #nim
06:34:12*gokr quit (Read error: Connection reset by peer)
06:34:27*gokr joined #nim
06:46:34*vangroan_ joined #nim
06:49:30*vangroan quit (Ping timeout: 260 seconds)
07:03:30*Demon_Fox quit (Ping timeout: 260 seconds)
07:03:43*ludocode quit (*.net *.split)
07:03:43*avsej quit (*.net *.split)
07:03:43*Wildefyr quit (*.net *.split)
07:03:43*Gonzih quit (*.net *.split)
07:03:44*delian66 quit (*.net *.split)
07:03:50*delian66 joined #nim
07:03:54*sarlalian quit (*.net *.split)
07:03:54*SirCmpwn quit (*.net *.split)
07:03:54*Learath2 quit (*.net *.split)
07:03:55*federico3 quit (*.net *.split)
07:03:55*nim-buildbot quit (*.net *.split)
07:03:55*devn quit (*.net *.split)
07:03:55*r-ku quit (*.net *.split)
07:03:55*so quit (*.net *.split)
07:03:59*ludocode joined #nim
07:04:01*SirCmpwn joined #nim
07:04:02*devn_ joined #nim
07:04:03*Learath2 joined #nim
07:04:07*Wildefyr joined #nim
07:04:11*Gonzih joined #nim
07:04:14*r-ku joined #nim
07:04:35*federico3 joined #nim
07:04:55*sarlalian joined #nim
07:05:50*avsej joined #nim
07:05:50*avsej quit (Changing host)
07:05:50*avsej joined #nim
07:06:39*gokr quit (Quit: Leaving.)
07:10:23*Demon_Fox joined #nim
07:30:00*toaoMgeorge quit (Read error: Connection reset by peer)
07:31:40*vangroan joined #nim
07:34:58*vangroan_ quit (Ping timeout: 240 seconds)
07:41:54*gokr joined #nim
07:47:34ldleworkI feel like the perlin module doesn't produce values that actually go up to 1.0 but I'm not sure
07:52:04*desophos quit (Ping timeout: 256 seconds)
07:54:05*Matthias247 joined #nim
07:57:43*pregressive joined #nim
07:59:05*gokr quit (Quit: Leaving.)
07:59:25*pregressive quit (Remote host closed the connection)
08:01:09*desophos joined #nim
08:01:24*so joined #nim
08:09:02*Matthias247 quit (Read error: Connection reset by peer)
08:20:04*endragor quit (Remote host closed the connection)
08:24:13*Trustable joined #nim
08:32:49*endragor joined #nim
08:35:32*SShrike joined #nim
08:35:35*Trustable quit (Remote host closed the connection)
08:41:02*gokr joined #nim
08:50:55*yglukhov joined #nim
08:59:13*vangroan quit (Quit: Leaving)
08:59:53yglukhovdom96: any thoughts about my pr?
09:04:53*s4 quit (Quit: Konversation terminated!)
09:06:18*dom96_ joined #nim
09:06:52dom96_yglukhov: replied
09:09:43*jaco60 joined #nim
09:16:31*dom96_ quit (Quit: Page closed)
09:28:16*Kingsqueee joined #nim
09:28:54*Kingsquee quit (Read error: Connection reset by peer)
09:43:03*Varriount joined #nim
09:45:41*Varriount_ quit (Ping timeout: 276 seconds)
09:52:10*darkf quit (Quit: Leaving)
10:03:22*Arrrr joined #nim
10:03:35*BlaXpirit quit (Quit: Bye)
10:03:46*BlaXpirit joined #nim
10:04:56*Kingsqueee quit (Read error: Connection reset by peer)
10:05:07*Kingsqueee joined #nim
10:12:03*vendethiel joined #nim
10:35:54*vendethiel quit (Ping timeout: 250 seconds)
10:36:41*arnetheduck joined #nim
10:42:44*Arrrr quit (Ping timeout: 248 seconds)
10:45:35*endragor quit (Remote host closed the connection)
10:57:35*desophos quit (Read error: Connection reset by peer)
11:26:35*endragor joined #nim
11:36:13wuehlmauswhat is the separator in ``nim --path'' ?
11:40:04*Kingsqueee quit (Quit: https://i.imgur.com/qicT3GK.gif)
11:41:53*vendethiel joined #nim
11:49:27*Demon_Fox quit (Quit: Leaving)
11:54:21Araqwuehlmaus: there is none, use --path multiple times instead
11:54:22dom96wuehlmaus: don't think there is one, you have to specify multiple '--path'
11:56:23wuehlmausi think this one should be added to nimc.html, it was not clear to me, thanks for explaining
12:10:44*desophos joined #nim
12:24:56*vendethiel quit (Ping timeout: 276 seconds)
12:26:24*jaco60 quit (Ping timeout: 250 seconds)
12:27:02*SShrike quit (Quit: SShrike)
12:32:55arnetheduckhi.. looking at the compiler, anyone remembers when an object gets the tfEmbedded flag? what kind of object would have a type field which is not the first member?
12:33:49arnetheduckVarriount, now? ;)
12:35:04arnetheduckVarriount, I'm using nimlime (great plugin, thanks!), latest release, but when I save files I get lots of errors - I suspect it's not picking up on nim.cfg in my folder - any ideas?
12:35:32arnetheduckhappens when I edit nlvm for example (which has a bunch of paths in its nim.cfg)
12:42:57Araqarnetheduck: I can't remember, I can only (nim)grep for it, much like you would
12:43:16Araqit's crucial to copy the logic of the C code generator for this though
12:43:38Araqlots of subtle things going on like object that is .inheritable but doesn't inherit from RootObj
12:45:32arnetheduckyeah, I had a cursory look at the function that analyzes the object, but it's nontrivial so I thought maybe someone remembered what it's needed for..
12:46:07arnetheduckhm, I
12:46:23arnetheduck'll see if I can find some c code that causes it to be used :)
12:46:32arnetheduck*nim
12:54:20*EastByte quit (Quit: WeeChat 1.3)
12:55:52*BitPuffin joined #nim
13:14:54*EastByte joined #nim
13:30:28*vendethiel joined #nim
13:37:07*lompik joined #nim
13:50:50*M-max joined #nim
13:51:42*gokr quit (Read error: Connection reset by peer)
13:51:47*gokr1 joined #nim
13:51:47*vendethiel quit (Ping timeout: 264 seconds)
14:15:51*M-max quit (Remote host closed the connection)
14:20:23*M-max joined #nim
14:20:36*vendethiel joined #nim
14:24:36*federico3 quit (*.net *.split)
14:24:36*Learath2 quit (*.net *.split)
14:24:59*federico3 joined #nim
14:27:47*endragor quit (Remote host closed the connection)
14:29:28*Learath2 joined #nim
14:29:53*endragor joined #nim
14:30:22*trn_ joined #nim
14:40:33trn_how I can make array, size of each element array must equal 5 byte only?
14:44:10*vendethiel quit (Ping timeout: 240 seconds)
14:44:33def-trn_: something like this? https://gist.github.com/def-/17925b59924751b527b5
14:48:38trn_def: yes, like this (need check how much overhead for strukture like this)
14:48:44def-no overhead
14:50:16*arnetheduck quit (Ping timeout: 250 seconds)
14:50:56trn_I have 100_000_000 strings in memory like "1234567890" (ten symbols each, only numbers) and want decrease memory allocated
14:51:23def-what's the use case?
14:53:41trn_have two files (new and old) with ~100_000_000 strings each, need show strings added in new file
14:55:21def-you actually have to store the file in memory? what about just iterating over it or using memory maps?
14:55:45trn_files not sorted
14:56:30trn_i'm read old file in array of strings, sort, and search line by line (binarySearch) from new file
14:57:01trn_work good, but need moooore memory
14:58:06def-5 bytes won't be aligned. i guess i'd try to use an array of int64s
14:58:29def-also simpler
15:01:25*M-Quora joined #nim
15:03:02*M-max quit (Quit: node-irc says goodbye)
15:03:13trn_def: now work with this: http://pastebin.com/qpJetwfE
15:04:59trn_array of strings (for example 8 byte each) have more overhead then array of int64?
15:05:49def-yeah, strings are on the heap, so you have an 8 byte pointer to each string
15:06:08def-and if you use int64 you have nothing on heap and no indirection
15:06:31def-should need half the memory
15:07:25trn_good, i'm try with array of int64
15:13:07trn_def: and other question, in file strings like "1234,567890", need cut comma from it and get pure number for store in int64. What better - use strip (from strutils) string or just make result = a[0..3] & a[5..10]?
15:13:47def-strip doesn't do what you want, i believe
15:14:03def-it strips characters from the start and end of a string
15:14:25trn_make split + join?
15:18:02def-I guess I would write my own proc to filter it out, but yeah, that would also work
15:19:03*gokr1 quit (Quit: Leaving.)
15:20:03trn_ok, thanks for help (sorry for annoyng, i'm not programmer - just DBA)
15:24:34*nchambers^ joined #nim
15:24:45reactormonktrn_, cool to know that non-programmers have a go at nim ;-)
15:25:16*nchambers quit (Ping timeout: 248 seconds)
15:25:23*Sornaensis quit (Max SendQ exceeded)
15:26:32*Sornaensis joined #nim
15:26:38*nchambers^ is now known as nchambers
15:29:30def-trn_: btw, you actually have 100 million lines or is this some upper limit?
15:30:01def-if you have a dynamic number, you should use a seq instead of an array
15:32:38trn_dynamic number in file (grow slowly), now 96 millions strings - i'm try seq, but error compile
15:33:22def-var psp = newSeq[int64]()
15:33:34def-and later: psp.add(value)
15:34:30trn_oh, this helpful with dynamic sequence
15:34:42*toaoMgeorge joined #nim
15:42:07*jaco60 joined #nim
15:43:00*Trustable joined #nim
15:54:30*matkuki joined #nim
15:56:53*polde joined #nim
16:06:34*askatasuna joined #nim
16:15:30*Druage joined #nim
16:15:37Druagehey guys!
16:15:51Druagei have a question about calling nim from c
16:17:15Druageso i made a dylib out of nim, and i have these two functionshttp://pastebin.com/Taje2xv7
16:17:19Druageugh
16:17:23Druagehttp://pastebin.com/Taje2xv7
16:17:35Druagei have two functions, both of them run fine how they're currently set up
16:17:59Druageif i try to do the "echo( $n )" though, it instantly segfaults from c
16:18:26Druageany idea as to why changing an int to string would do that"
16:18:28Druage?*
16:19:03Druagehere is my c code http://pastebin.com/
16:19:27Druageits just a dirty little example
16:20:32dom96What is your C code?
16:20:52Druageits in the second pastebin
16:21:02def-no, the second pastebin is empty
16:21:07dom96You posted a link to the pastebin front page
16:21:25Druagewhoops!
16:21:25Druagehttp://pastebin.com/GnczgWiz
16:22:52Druageya the for loop itself works fine
16:23:13dom96 try removing the stdcall pragma
16:23:21Druagekk
16:23:33dom96It's a calling convention used on Windows IIRC
16:23:41Druageo
16:24:13Druagestill segfaults
16:24:31def-use cdecl instead: "The cdecl convention means that a procedure shall use the same convention as the C compiler."
16:24:59def-also, you probably should init the Nim stuff
16:25:14Druageinit the nim stuff?
16:25:17Druagewhat do you mean
16:25:48*polde quit (Quit: q)
16:25:59Druagecdecl doesnt affect the segfault
16:26:11def-yeah, but you should still use cdecl ;)
16:26:18Druagenice!
16:26:21Druagekk
16:26:41trn_def-: last question :) why echo parseInt("3") - got error "expect parseInt(s: string, number: var int, start: int)", but in examples this work
16:27:22*polde joined #nim
16:27:48Druageya its literally will always crash if i try to print a int to stdout, even if its cast to a string
16:27:59def-Call NimMain()
16:28:33Druageare you referring to me def- ?
16:28:37def-Druage: yes
16:28:51DruageNimMain from my c code or nim code?
16:29:02def-otherwise the GC is not initialized and you're trying to create a data structure on the heap that has to be GCed
16:29:05def-from C
16:29:38Druagethat makes sense as to why it'd segfault
16:29:55Druagewhere is NimMain declared?
16:30:34*filwit joined #nim
16:30:37def-Hm, maybe only NimMainInner is exported, I'm not sure
16:33:15def-what system are you on btw? I get no segfault
16:33:19def-on Linux x86_64 here
16:33:23Druagesame
16:33:26Druageubuntu 15.10
16:33:34def-gcc?
16:33:37Druageya
16:33:56Druagedid u add in an echo( $n ) line?
16:33:59Druagein the iterate proc?
16:34:00def-yes
16:34:15Druageidk
16:34:57def-building with: nim --app:lib c test && gcc -ldl -o x x.c
16:35:11Druagehmm those a little different than mine
16:35:12Druageill try it
16:35:26Druagebut i have to get going currently, so ill keep trying and report back later
16:35:37Druagety!
16:38:26def-documented here btw: http://nim-lang.org/docs/backends.html#backend-code-calling-nim-nim-invocation-example-from-c
16:40:15*Druage quit (Ping timeout: 252 seconds)
16:42:28*polde quit (Quit: q)
16:42:38*Druage joined #nim
16:42:46*polde joined #nim
16:43:02Druagedef-: i was compiling with --noMain XD
16:43:07Druageno wonder
16:43:43Druagethought it was referring to a main function, not NimMain()
16:43:50Druageit works now though
16:47:58Araq--noMain produces NimMain anyway and you need to call it
16:54:27Druagewell when i compiled with --noMain any heap allocations from nim
16:54:34*BitPuffin quit (Ping timeout: 240 seconds)
16:54:38Druagecaused a segfault when i called the nim proc from c
16:56:23*BitPuffin joined #nim
16:57:46*polde quit (Quit: q)
16:58:07*polde joined #nim
17:06:07*matkuki quit (Quit: ChatZilla 0.9.92 [Firefox 44.0.2/20160210153822])
17:12:30*desophos quit (Ping timeout: 256 seconds)
17:12:53*BitPuffin quit (Ping timeout: 276 seconds)
17:14:26*endragor quit (Ping timeout: 250 seconds)
17:18:48*BitPuffin joined #nim
17:33:29*Druage quit (Quit: Page closed)
17:35:04*gokr joined #nim
17:36:01*endragor joined #nim
17:43:46*trn_ quit (Quit: Page closed)
17:45:26*vendethiel joined #nim
17:46:19*tyu joined #nim
18:06:32*lompik quit (Ping timeout: 252 seconds)
18:11:16*yglukhov quit (Ping timeout: 248 seconds)
18:17:41*desophos joined #nim
18:18:52*darkf joined #nim
18:19:12*lompik joined #nim
18:22:33federico3dom96: are these imports part of the libraries included in Nim or is it extra stuff? https://github.com/nim-lang/nimble/blob/master/src/nimblepkg/nimscriptsupport.nim#L7
18:29:35*vendethiel quit (Ping timeout: 276 seconds)
18:33:07*vendethiel joined #nim
18:44:02*endragor quit (Remote host closed the connection)
19:06:14ldleworkdef-: dom96 desophos http://i.imgur.com/IDDXR4v.png :)
19:06:17ldleworkoop
19:07:02filwitnice, ldlework
19:08:21ldleworkthx
19:10:12ldleworkmy program is getting slow though
19:11:23filwitwell, time to profile to find the biggest bottleneck
19:13:07ldleworkdunno how to profile
19:13:52def-compile with --debugger:native and use callgrind and kcachegrind
19:14:28ldleworkthat's what tools to use, not how to do it
19:14:30ldlework:)
19:15:08filwitit's easy.. write a general purpose template which accepts a block of code and wraps it in a ``let start = cpuTime() ... let elapsed = cpuTime() - start`` associated with some name.. then dump each name/time to a file or console.. then just wrap parts of your existing code with various tags..
19:15:43filwitprofile "rendering": ...rendering code...
19:15:51filwitprofile "ECS": ...etc...
19:16:25filwitfind which one takes the longest, then add granularity to the code within that section until you find the biggest performance culprit
19:16:49filwitor yeah, do what def- said..
19:17:10federico3def-: better than using the default profiler?
19:18:56*yglukhov joined #nim
19:19:43def-federico3: haven't used the default profiler, but with kcachegrind you can see all functions, how they call each other, inspect the nim source code and asm where most of the time is spent. but callgrind slows down execution a lot so it's not perfectly accurate
19:21:39def-I have a super simple example here: http://hookrace.net/blog/writing-an-async-logger-in-nim/#optimization
19:22:24federico3def-: how about 2-3 lines on profiling on https://github.com/nim-lang/Nim/wiki/Unofficial-FAQ ?
19:22:53federico3https://github.com/nim-lang/Nim/wiki/Profiling maybe?
19:23:39def-federico3: I don't think most people ever find the wiki
19:23:58federico3true, but we can start to direct them there and build from this
19:24:13flyxI autogenerate some procs with a template: https://github.com/flyx/NimYAML/blob/master/private/serialization.nim#L50
19:24:22flyxwhen I generate documentation for that, it looks like this: file:///Users/flyx/Projects/NimYAML/docout/yaml.html#yamlTag,
19:24:27flyxoops, wrong URI
19:24:51flyxhttp://flyx.github.io/NimYAML/yaml.html#yamlTag,
19:25:05flyxis there a way to, um, prevent that from happening?
19:25:17def-flyx: with nim doc2?
19:25:46flyxyes, with doc2
19:26:03VarriountAraq: The GC doesn't use reference counting with the stack, but it still scans it, right?
19:27:14def-flyx: sounds like the docgen should be fixed then
19:27:40flyxhmm okay, I'll file an issue
19:27:49filwitVarriount: yes
19:28:04filwit(sorry, am not Araq but I know that much)
19:29:33ldleworkI have no idea what I'm looking at in kcachegrind lol
19:29:39Varriountfilwit: That's what I thought.
19:29:51Varriountldlework: Pic?
19:30:37ldleworkhttp://i.imgur.com/jjiyfiT.png
19:30:59ldleworklooks like I'm making a lot of objects and sequences?
19:31:46def-ldlework: yeah, 51% of time spent in newSeq
19:32:00ldlework:3
19:32:29filwityeah but 51% of the setup time? or runtime per frame?
19:32:37ephjahow did it go with your OO code?
19:33:08ldleworkephja: I dunno what you're asking for specifically
19:33:23Varriountldlework: Have you marked your strings and sequences as shallow yet?
19:33:37ldleworkVarriount: no I still don't really understand that conceptually
19:34:10Varriountldlework: When assigned to another variable, a string or sequence is copied, just like any non-reference type.
19:34:27ldleworkjust the reference to the sequence right
19:34:32Varriount(although, strings and sequences are references, technically)
19:34:43VarriountNo, all the data is copied.
19:34:46ldleworkwtf?
19:35:16Varriountldlework: `a = @[1,2,3,4]; b=a` will copy data to b
19:35:49VarriountThis is because sequences/strings are mutable/growable.
19:36:06ephjaldlework: it's not too bad. passing a sequence to a non-var parameter does not result in a copy IIRC
19:36:31VarriountWhen a sequence/string is added to, it may need to be reallocated, which means that any reference to it needs to be updated.
19:36:34ldleworkI probably have very wasteful style in Nim
19:37:11ldleworkthis is giving me a bit of anxiety I hope its not too systemic
19:37:21ephjasame goes for non-var, um, variables
19:37:29ldleworkI strive for code-beauty
19:37:53ephjawhich does help a lot
19:38:04ldleworkI use let as much as possible
19:38:11Varriountldlework: Well, you can use the shallow() procedure to prevent copying, however you shouldn't use 'add' on the shallow'ed sequence, nor mutate it in any way.
19:38:45Varriount`shallow` sets a flag in the sequence structure telling the assignment code not to copy.
19:39:24ldleworkhow can I find out where most of the sequence creation is happening
19:39:34ldleworkoh Isee
19:39:46ldleworklooks like initTable is the culprit
19:39:51Varriountldlework: You can also use a `ref seq` and `ref string` type, if you do need to mutate them, however you then get the penalty of double-dereferencing.
19:41:03VarriountThis is one of the big things I disagree with in Nim... I'd rather the default string type be immutable, and have a mutable buffer type.
19:41:40filwit^
19:42:45ephjanevermind
19:42:59ephjawhen exactly are copies not performed when not using shallow?
19:43:17*flyx agrees with Varriount
19:43:19*kulelu88 joined #nim
19:43:19*kulelu88 quit (Changing host)
19:43:19*kulelu88 joined #nim
19:43:38Varriountephja: Copies are only performed when deepcopy is used, such as when copying data between threads.
19:44:03ephjaI'm talking about sequences
19:44:27Varriountephja: Strings and sequences have the same behavior.
19:44:29filwitephja: if you have a seq of ref objects for instance, then you make a local variable "equal" that seq it will be deepCopied
19:44:55Varriountfilwit: Not deepcopied, normal copy.
19:45:09filwiter.. you're right, I'm thinking wrong
19:45:17VarriountThe sequence would be duplicated, but not the references
19:45:24filwitright right
19:45:52VarriountI mean, the actual pointer references would be copied, but not the data they point to (I'm hoping that's clearer).
19:46:07*Subspice joined #nim
19:46:57VarriountHello subspice!
19:47:03Subspicehello :)
19:47:31ephja"proc p(a: var seq[int]) = let b = a" I guess that's what I was referring to -.-
19:47:46Varriountephja: That would copy.
19:48:12ldleworkVarriount: that's horrifying
19:48:14ldleworkWHY
19:48:15Varriountephja: The way to think on it is "would this operation cause the refcount of a sequence to go above '1'?"
19:48:31Varriountldlework: As I told you, it's for memory safety.
19:48:49ldleworklol just make sure data is duplicated everywhere so no one is pointing at the samething
19:48:50Varriountldlework: Internally, sequences are dynamically allocated arrays.
19:48:55ldleworksounds like a horrible strategy for memory safety
19:49:20ephjahttps://gist.github.com/ephja/8fd0816ae4b9dfebee48
19:49:31Varriountldlework: Go complain to Araq if you are so inclined (and like getting your head bitten off)
19:49:35ldleworkI never use var in my param types.
19:49:38ldleworkShould I be?
19:49:54Varriountldlework: Only if you intend to mutate the parameter.
19:50:03ldleworkI seem to be able to mutate things just fine.
19:50:17Varriountldlework: I mean directly mutate the parameter.
19:50:19ldleworklike fields of structs passed in
19:50:37Varriountldlework: Those structs are references?
19:50:45ldleworkprobably
19:50:51ephjaI assume you're referring to an object pointed to by a reference, but not the reference itself if it's not a var
19:51:04ldleworkseems like a weak guarantee
19:51:11Varriountldlework: 'var' passes a pointer to the location of the reference on the stack (or the address of the object data on the stack)
19:51:15*yglukhov quit (Remote host closed the connection)
19:52:11ldleworkright which would allow you to change what the reference itself points to?
19:53:35Varriountldlework: Yep.
19:53:37ephjalet me test byRef with sequences
19:53:49ephjabut sequences are often wrapped in references, fortunately
19:54:20Varriountldlework, ephja: Again, the rule of thumb is that a sequence or string must always have a reference count of 1
19:55:09*nsf quit (Quit: WeeChat 1.4)
19:55:25*Matthias247 joined #nim
19:56:05Varriountfilwit: If the string type were changed to be immutable/copy on mutation... would that change semantics at all? I mean, aside from memory allocation and unsafe mechanisms such as addr, would a program's behavior change at all?
19:58:53ephjabut at the same time there are many procs that take sequences directly, rather than some user-defined ref object that has a seq field
20:00:38Varriountephja: Sequences aren't copied when passed as parameters.
20:01:43SubspiceIs this the right place to ask a question regarding installing Aporia on OS X?
20:01:59Varriountephja: http://forum.nim-lang.org/t/1793#11173
20:02:33VarriountSubspice: Yes, although I don't know if dom96 (the creator) is present right now.
20:02:47VarriountWe can help though.
20:03:24ephjaI shouldn't even be writing code
20:03:26*ephja quit (Quit: WeeChat 1.3)
20:03:35Varriount:|
20:04:44VarriountSubspice: What's the installation problem?
20:04:50Araqit's not done for memory safety. it's done for consistency with the whole rest of the fucking language.
20:05:22AraqI don't know why it is so hard to understand that.
20:05:23filwitVarriount: IDK, and I don't have time to focus on it right now
20:05:43Subspicenot sure if it's a problem per se but I think I'm missing a dependency: when I try to open aporia it says "could not load: libglib-2.0.dylib"
20:06:08VarriountSubspice: What method did you use to install Aporia?
20:06:34SubspiceVarriount: I used "nimble install aporia@#head"
20:06:39Araqand yeah, it kinda sucks and I'm willing to change it so that '=' does the "fastest thing that's reasonable" because nobody cares about the consistency. In fact, most people don't understand it anyway.
20:08:17filwitAraq: it's somewhat inconsistent though.. I mean, if I make a `let a = someString` then mutate that string.. isn't it different than if I'd made a `var a = ...` ?
20:09:03filwitwhich is inconsistent with the way other value type objects (which is what strings are pretending to be)
20:09:14Varriountfilwit: No, in that instance the string is still copied on the `let` assignment.
20:09:33VarriountSubspice: Odd, I wonder why it's trying to load libglib...
20:09:53filwitVarriount: hmm.. okay, I need to test these things out more it seems.
20:10:03SubspiceVarriount: using this method, where should aporia be installed?
20:10:40VarriountSubspice: I'm afraid I don't know. I use Windows. >_<
20:10:48Subspiceaaah ^^
20:11:07VarriountSubspice: However you're having a problem with dynlib loading, so I don't *think* it's a problem with the installation location.
20:12:06AraqSubspice: last time I installed aporia on mac it just worked ...
20:12:25SubspiceVarriount: Ah okay :) I asked because I can't simply type "aporia" in the terminal, I have to locate it manually and I found two places to open it from, so....
20:12:36VarriountSubspice: Do you have libglib in the right path variable (LD_LIBRARY_PATH)?
20:15:02SubspiceVarriount: I think so yes
20:15:22Subspicewait
20:15:27SubspiceI didn't understand the question
20:15:29ldleworkLD_LIBRARY_PATH is like PATH
20:15:37ldleworkit contains a list of directory paths
20:15:50ldleworkis the libglib.dynlib (or whatever) inside one of those paths?
20:16:19Araqlibliblibglib.dylibliblib
20:16:59VarriountAraq: When it comes to dynlib loading, I think I like Windows behavior better (or at least, it's more convenient).
20:17:03Subspiceit's in /opt/local/bin
20:19:00AraqVarriount: tell me about it, Path sep is ; not :, drive letters are much easier than /media/$random_device_UID, files have useful extensions (you can delete all produced *.exe easily)
20:20:01VarriountAraq: On the other hand, you're limited to 26 drives (although NTFS does allow path mounts a la Unix)
20:20:18Araqno, that is a common misconception
20:20:34AraqAA:\ would follow after Z:\
20:20:49Araq;-)
20:21:15VarriountAraq: http://stackoverflow.com/questions/4652545/windows-what-happens-if-i-finish-drive-letters-they-are-26 ?
20:21:24AraqI don't think they implemented it this way though
20:24:48VarriountSubspice: Anyway, any progress?
20:25:28SubspiceVarriount: possibly. Now it says "could not import: iconv_open"
20:26:42VarriountSubspice: Hm. https://github.com/nim-lang/Aporia/issues/69
20:27:07*yglukhov joined #nim
20:27:55VarriountSubspice: Could you do a search for iconv on your system?
20:28:53Varriount'find / -name "*iconv*" ' should do it, I think.
20:28:59SubspiceI'll try
20:29:02Subspiceok
20:29:22VarriountEither that or 'find / -name *iconv* '
20:29:45VarriountI can't remember if find will ignore the double-quotes or not.
20:30:30asdfyou do need to quote the *foo* because otherwise your shell will expand that before even running the find
20:30:57Subspicewaiting...
20:31:35VarriountSubspice: You might get some permission errors, which is expected (unless you're running as root)
20:31:54SubspiceI did... I uhh... I sudo'd
20:32:04VarriountYeah, that works too.
20:32:11Subspiceok two results so far
20:32:56Subspicefound iconv-lite which is probably not what I'm looking for... and... libiconv.2.dylib... ok more results in... many more haha
20:33:27SubspiceI'm looking for iconv_open right?
20:33:52VarriountSubspice: Nope. That's a function name that's part of the dll.
20:33:56Subspiceokay
20:35:01VarriountSubspice: The error means that libglib isn't finding the function, either because it can't load libiconv, or because the version of libiconv that's being loaded doesn't have the function.
20:35:14SubspiceAhaa okay
20:35:24Varriountasdf: Any insights into the situation?
20:35:47asdfuh, not really, sorry, just chimed in there on the thing
20:36:11VarriountI feel like a blind person leading another blind person. :/
20:37:43VarriountSubspice: When it's done, could you find which results are in directories in the LD_LIBRARY_PATH environment variable?
20:38:34SubspiceSure. How can I check what directories are in there?
20:39:25ldleworkSubspice: its an environment variable, just echo it
20:39:28Subspice$LD_LIBRARY_PATH?
20:39:28VarriountUh, manually I think. 'echo $LD_LIBRARY_PATH' will echo the paths needed
20:39:29ldleworkecho $LD_LIBRARY_PATH
20:39:31Subspiceoh ok
20:40:32gokrAraq: There is a funny library in Unix called "libiberty".
20:40:45gokrPerhaps you know about it.
20:43:45Araqsounds familiar
20:44:01gokrSo ... when you link with it... you strip off "lib" and add "-l" in front. Muaha.
20:45:45gokrSubspice: You can use "otool -L which `aporia`" I guess (don't have the mac up)
20:46:04Subspicegokr: what does that do?
20:46:06gokrotool -L is the equivalent of "ldd" in Linux land.
20:46:18gokrSo it will list the dylibs and their paths that Aporia wants to load.
20:46:36Varriountgokr: Including the backticks?
20:46:50*Araq wonders if there is also a libosers library.
20:47:04SubspiceVarriount: Alright, the search is done... do I have to find which results are in the relevant directories manually?
20:47:10gokrEh, the backticks was for the which command... but whatever, use: "otool -L full-path-to-aporia"
20:47:14Subspice:P
20:47:47*tyu quit (Quit: Connection closed for inactivity)
20:48:10gokrSubspice: Worked?
20:48:26gokrAre you using brew btw?
20:48:39*gokr realizes this will lead me to start up my mac soon...
20:48:46Subspiceerror: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/otool: can't open file: which (No such file or directory)
20:48:46Subspiceerror: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/otool: can't open file: aporia (No such file or directory)
20:48:55gokrAh, sorry about that.
20:48:59gokrOk, so run "which aporia"
20:49:10Subspicenothing happens
20:49:15gokrAnd then when you see its full path, run: otool -L whatever-the-full-path-is
20:50:32Subspicenothing happens when I type in 'which aphoria'
20:50:39gokraporia.
20:50:45Subspicesorry aporia
20:50:50Subspiceyeah nothing happens
20:51:05gokrEh. Or is it alled Aporia? Hell, I will start a mac here...
20:51:10gokrAre you using brew?
20:51:16VarriountSubspice: Could you just type in the path you know aporia is in?
20:51:29Subspicegokr: no, just the regular terminal
20:51:52gokrHow did you install aporia? with nimble?
20:51:58SubspiceVarriount: I mentioned before that I seem to find aporia in two places
20:52:16Subspicegokr: yes
20:52:23VarriountSubspice: I'm going to guess one is a link. Could you post the two paths?
20:52:51Subspicesure
20:53:14gokrYeah, nimble puts in a link in nimble's bin dir
20:54:09Varriountgokr: Does it matter which path then? The whole purpose of a symlink is to act as if the real file is there.
20:54:29Subspicehere they are: /Users/Subspice/.nimble/pkgs/aporia-0.2.0/ and /Users/Subspice/.nimble/bin
20:55:01gokrVarriount: On Linux it doesn't matter, right.
20:55:08gokrPobably doesn't matter on OSX either.
20:55:23gokrSo run "otool -L /Users/Subspice/.nimble/pkgs/aporia-0.2.0/aporia"
20:55:26Subspiceprobably not, opening either does exactly the same thing
20:55:28Subspicealright
20:55:45gokrAnd it should hopefully show you some dylib paths.
20:56:00SubspiceUsers/Subspice/.nimble/pkgs/aporia-0.2.0/aporia:
20:56:00Subspice /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
20:59:08gokrAnd nothing more?
20:59:31Subspicenothing else
20:59:34Subspicejust that
21:00:08gokrI am building nim on my OSX - did you build it from github?
21:00:31Subspiceyes
21:00:55gokrOk, so... I will catch up with you :)
21:00:59Varriountgokr: Don't Nim programs use manual dynlib loading? That wouldn't show up with otool.
21:01:10*Varriount wants a copy of OSX
21:01:11gokrVarriount: Could be, dunno.
21:01:30gokrVarriount: There is actually a working OSX for vbox - not that... legal of course.
21:02:39Varriount:(
21:05:49gokrJust google for niresh osx.
21:08:20*BitPuffin quit (Ping timeout: 248 seconds)
21:12:36ldleworkWhat is the thing that generates Nim documentation?
21:12:56Araq'nim doc2'
21:13:28ldleworkIt wants a filename... but I have no entrypoint.
21:14:12Varriountldlework: What target do you give 'nim c'?
21:14:32ldleworkVarriount: I don't. Its a library.
21:14:34gokrSubspice: Just FYI, I failed building aporia
21:14:40ldleworkSome other code imports my code and you compile that.
21:14:44gokrSubspice: So I probably need some libs.
21:14:50Subspicegokr: what libs were you missing?
21:15:01Subspicethat's weird, building aporia worked for me...
21:15:01gokr1 sec
21:15:03Subspiceok
21:16:05Varriountldlework: But you still have to compile it somehow.
21:16:24gokrSubspice: Can't open dialogs for some reason
21:16:31ldleworkVarriount: why?
21:16:47ldleworkIts code
21:22:40gokrSubspice: Ok, so I opted for the "latest" of aporia, and that built. And now I have the libglib error.
21:23:00Subspicehmmm :/
21:23:22gokrBut... I will install homebrew on this box and see if I can get it that way
21:24:30Varriountldlework: Yes.. but it still has to be compiled into a library, right?
21:24:52VarriountI mean, you can't use doc2 on a compiled file and expect the documentation to still be generated.
21:25:19ldleworkVarriount: I was thinking the equivalent of `ls dadren/*.nim | xargs nim doc`
21:25:25ldleworkwhich works fine without having a global entrypoint
21:25:36ldleworkwhich makes no sense for library code
21:25:59Varriountldlework: Even a Nim library still has a central file which pulls in the rest.
21:26:09ldleworkVarriount: says who?
21:26:28Varriountldlework: Oh! I was thinking a dynamic library, not a source code library.
21:26:28ldleworkIts library /code/
21:26:31ldleworkheh
21:26:56VarriountWell then, you run it against the public facing modules, or create a stub module.
21:27:03ldleworkxargs worked well
21:31:15ldleworkactually it didn't
21:31:16ldleworkwtf
21:34:11ldleworkno idea why `ls -1 dadren/*.nim | xargs nim doc` wont work
21:34:26ldleworkError: arguments can only be given if the '--run' option is selected
21:35:46ldleworkthere we go
21:36:09Varriountgokr: Subspice's problem seems to be with libiconv
21:36:29Varriountgokr: The dll doesn't appear to contain inconv_open, just _iconv_open
21:36:47VarriountIt's related to encodings.nim
21:36:51gokrYeah, well, I now installed homebrew and had to install pango, glib ...
21:37:05gokrSo I am not at iconv yet :)
21:37:18ldleworkWhat tool will allow me to write prose base docs like the manual?
21:37:30ldleworkI just found, http://nim-lang.org/docs/docgen.html sorry
21:38:43*mat4 joined #nim
21:39:14*Matthias247 quit (Quit: Matthias247)
21:40:15*Matthias247 joined #nim
21:42:41ldleworkHmm I don't understand how to pass multiple files to doc2
21:45:22*toaoMgeorge quit (Read error: Connection reset by peer)
21:48:22Araqldlework: nim doc2 --project myproject.nim might work but I don't think anybody uses it ...
21:48:38ldleworkwhat is myproject.nim ?
21:48:57Araqthe main nim file you pass to Nim, usually to 'nim c'
21:49:09*Demon_Fox joined #nim
21:49:33ldlework-.-
21:49:38gokrSubspice: The issue has been discussed in the forum, for example at: http://forum.nim-lang.org/t/706/4
21:49:42ldleworkfind . -name '*.nim' -exec nim -p=. doc2 '{}' \; seems to do the trick
21:50:17Araqldlework: yeah, our koch tool uses something similiar
21:50:23gokrSo my advice: install homebrew, then do "brew install glib pango gtksourceview gdk-pixbuf" and what not-
21:50:39ldleworkneeds an output directory flag
21:51:40gokrPerhaps... "brew install gtksourceview libiconv" is enough if you are on a non-borken system like I am.
21:51:56*awsteele joined #nim
21:52:35*lompik quit (Ping timeout: 240 seconds)
21:53:44*lompik joined #nim
22:00:25ldleworkyay documentation!
22:00:27ldleworkso cool
22:09:51*nsf joined #nim
22:12:24ldleworkHow do I inject prose based rest files into my documentation?
22:12:31ldleworkor do I just compile them like nim files
22:12:51gokrSubspice: I gotta give up, it seems to be fairly complex to get this going, see https://gist.github.com/oderwat/8cc8c4679729e9e8c1c6
22:13:15Subspicegokr: I've been letting Varriount work on it, when they give up I give up haha
22:13:31Subspicethey've occupied my computer
22:13:39SubspiceNim Invaders
22:13:44Varriountmuahahaha!
22:13:49Subspice;D
22:14:16ldleworklol
22:14:28Subspiceso even if you can't figure out how to solve it, have you learned anything from this?
22:14:37Subspicelike does this help anyone?
22:14:46VarriountI've learned what the 'nm' utility does.
22:15:02VarriountAlthough not what 'nm' stands for.
22:16:29SubspiceXD
22:16:46VarriountSubspice: Tip for the future - Don't ever try to install IntelliJ, Pycharm, or any of the Jetbrains IDE's. They'll probably make your computer melt.
22:17:33SubspiceVarriount: have I done that?
22:18:14SubspiceI've done all sorts of things to my computer
22:18:14Subspicehahaha
22:18:24VarriountI don't think so.
22:18:50SubspiceI'm purely a hobby programmer
22:18:51VarriountAs nice as Jetbrain's IDE's are, they are all written in Java.
22:19:09SubspiceI try not to do stuff that goes beyond what works for my hobby
22:19:12VarriountWhich, when it comes to memory, is rather... needy.
22:19:22SubspiceI've heard... and read... a bit about that
22:20:28ldleworkkinda silly that the rst2html docs generate a "$Name module" header
22:21:54*vendethiel quit (Ping timeout: 256 seconds)
22:24:53mat4Java is a nice language except for ressource effective applications, system programming, computer games, scientific programming, hardware control and positive thinking (in my opinion)
22:25:27gokrSubspice: Aporia works great on Linux :)
22:26:07gokrAnd Nim works fine on OSX too - but Aporia is another story.
22:28:13*filwit_ joined #nim
22:28:56def-gokr: gtk is problematic on OSX and Windows or is this about something else?
22:29:10gokrTrue, gtk.
22:29:32gokrAnd... googling indicates its perhaps not even gtk itself either, but the packaging of it in homebrew etc.
22:29:41def-Not a Nim-specific problem though, had the same troubles with Haskell: http://felsin9.de/nnis/ghc-vis/#installation
22:29:50gokrexact
22:30:04def-(compare the Linux instructions to Win and OSX)
22:30:05gokrBut it still means... aporia is not easy to get running on OSX.
22:30:29def-right, but I don't know much about UIs so no idea what to use to get a good GUI on each platform
22:30:35*filwit quit (Ping timeout: 240 seconds)
22:30:40ldleworkthe links that the docgen generates make no sense
22:30:43ldleworkthey are relative
22:31:00ldleworkif they are in a submodule that is
22:31:13Subspicethis community... http://orig10.deviantart.net/1499/f/2011/265/a/3/profile_picture_by_sirslicerplz-d4an7x1.png
22:31:14ldleworkif the import is like dadren/application.nim
22:31:16def-ldlework: --docSeeSrcUrl might help?
22:31:31def-ldlework: eh wait, that's the wrong one
22:31:36ldleworkthen links on to that module will be dadren/application.html
22:31:42ldleworkbut you're already at dadren/foo.thml
22:31:51ldleworkso it will be dadren/dadren/application.html
22:31:56def-ldlework: you can fix it!
22:32:41ldleworkdoes nim have relative imports
22:32:55ldleworkshould I be importing modules from the same package as packagename/modulename or as ./modulename
22:32:56def-ldlework: import ../foo works
22:33:02ldlework.. ?
22:33:32def-sure, parent directory
22:34:09*gokr about to try out a new blink.nim on the ARM LinkIt ONE with GC enabled...
22:34:22gokrAraq: I have myself a binary ;)
22:34:37ldleworklol
22:34:43ldleworkthat indeed fixes the docgen
22:35:49Araqgokr: you mean one that doesn't crash?
22:36:06gokrI mean it compiled.
22:36:45gokrWohoo! It blinks.
22:37:37*Guest41777 quit (Remote host closed the connection)
22:38:10*Heartmender joined #nim
22:38:32*Heartmender is now known as Guest54166
22:40:06Araq:D
22:40:11mat4gokr: nice
22:41:42mat4what was the problem with the GC (if at all) ?
22:43:12Subspicewow I feel like I can relax
22:44:07Araqmat4: it was never tested without an OS
22:44:13Subspiceso what kind of things do you guys use Nim for?
22:45:35mat4Araq: now it is :)
22:47:05ldleworkSubspice: wait you got it working?
22:47:14ldleworkAporia that is?
22:47:18Subspiceldlework: nope!
22:47:20ldleworkheh
22:47:21Subspicewe gave up
22:47:31SubspiceI got sublime text instead
22:47:38ldleworkSubspice: Araq is working on a Nim editor called Nimedit
22:47:43ldleworkits written using just SDL2
22:47:48SubspiceI installed that one to
22:48:06ldleworkbut yeah subline is nice
22:48:07Subspicetoo*
22:48:17SubspiceI'll try both and see which way I swing
22:48:36Subspicebut that's kind of minor compared to the fact that tomorrow when I wake up
22:48:45SubspiceI'll finally get to write some code!
22:51:37VarriountSubspice: You can always use nano
22:51:50Subspicenano?
22:52:00VarriountSimple command-line text editor.
22:52:08Subspiceoh ok
22:52:24Varriountnano <somefile> to open or create a new file.
22:52:38ldleworkVarriount: .. do you use nano
22:53:03gokrnano is great. And I am not afraid to say so.
22:53:04Subspiceoh neat
22:53:08Varriountldlework: For non-gui needs, yes.
22:53:09Subspicethat's what you were doing towards the end!
22:53:14Subspicewell the very end actually
22:53:19ldleworkhuh
22:53:37Subspiceldlework: Varriount invaded my computer for an hour or two
22:53:41ldleworkI hear :)
22:53:44Varriountldlework: I like that it actually tells me how to exit it, unlike vi
22:53:50gokrAraq: I threw in some trivial seq and string things, and it blinks on.
22:53:55SubspiceI let him use my terminal, I even let him sudo something once
22:53:59ldleworkVarriount: if you like nano, those bindings are basically the default emacs bindings
22:54:14ldleworkemacs is basically the same, it has buffers with text. you open and close them and sometimes save them.
22:54:18ldleworknon-modal like nano.
22:54:24Subspicehttps://s-media-cache-ak0.pinimg.com/236x/85/17/d7/8517d7876dfcb84dfc2a48f60b647992.jpg
22:54:29ldleworkbut sometimes emacs will highlight the code you're editing and other stuff :)
22:55:14gokrAraq: Should we perhaps do something about dealloc? :)
22:56:38gokrI will save that one for my fridge door: "ldlework on the subject of nano: Emacs is basically the same"
22:56:51ldleworkgokr: in terms of core bindings?
22:56:54ldleworkit is.
22:57:02ldleworkAnd it is the same in that both editors are just buffers of text.
22:57:11ldleworkyou can always just move a cursor and edit text
22:57:46awsteeleIt's not clear to me how to reconstruct a closure from system.rawProc and system.rawEnv, any pointers? (no pun intended.. maybe)
22:58:01ldleworkheh
22:58:34ldleworkI should probably learn this nimscript business
22:59:26Araqawsteele: you need to cast the rawProc to the proper .cdecl proc type
22:59:41Araqthe env should be 'env: pointer' as the last parameter of the proc type
23:00:29awsteelesomething like "let cb = cast[proc(json: JsonNode, e: pointer): JsonNode {.cdecl}](rawP)" ?
23:00:52awsteeleMissing a period at the end of that pragma, oops
23:01:07ldleworkIs there a way for nimscript tasks to take parameters?
23:01:21gokrhttps://xkcd.com/378/
23:01:23mat4ldlework: Emacs is one of the largest editor I know [inclusive Lisp interpreter ... and OS ;)]
23:01:33ldleworkmat4: yes?
23:01:46ldleworkDoes that counter-point anything I said lol ?
23:02:15gokrmat4: No point, he just ... sortof proves the point ;)
23:03:45*yglukhov quit (Remote host closed the connection)
23:04:03mat4sorry, what point (probably I tranlate the message wrong) ?
23:06:31gokrWell, the emacs user refusing to see the humor in even beginning to compare nano with emacs.
23:07:56Varriountmat4: Part of the joke is the ever-growing absurdity of what a 'real' programmer is.
23:09:10Araqawsteele: seems right, yeah
23:09:23awsteeleJust tried, works perfectly :) thank you very much!
23:10:28Araqldlework: you can access the command line in a task or use a helper proc that the tasks delegate to, depending on what you need
23:11:37mat4Varriount: You mean such programmers which write programs in machine code by using front panels ?
23:13:00Varriountmat4: It's more about the hyperbole shown in the comic.
23:13:11VarriountBut yes, something like that.
23:14:09*yglukhov joined #nim
23:15:21*mat4 study comics about real (weird) programmers
23:39:39*Trustable quit (Quit: Leaving)