<< 07-09-2014 >>

00:00:39filwitAraq: wait, why am i looking at nimfix? is this suppose to be a guide for a new docgen?
00:01:12Araqyes
00:02:06filwitAraq: k. you're right, probably better to just start from scratch and use the old as reference, considering we're going to separate it from the compiler.
00:02:35*DiffuseStorm joined #nimrod
00:02:42Araqhi DiffuseStorm welcome
00:02:54DiffuseStormhi Araq, thanks
00:03:07Araqfilwit: I hope you don't really mean "start from scratch"
00:03:14Araqthat never works
00:03:32Araqyou're doomed to repeat already fixed mistakes
00:04:15filwitAraq: well i meant.. not entirely. But since I have to move everything away from the compiler, i'll do it in chunks, and start small type of thing.
00:05:30filwitAraq: idk exactly, will see when I'm there more. I still have to finish the forums CSS first, but I'll be doing that really soon. I've already thought about how to do this, and honestly even if i did make one from scratch it doesn't seem that hard (given Nim's awesome macro ability & staticRead)
00:07:23DiffuseStormNew to the language, it seems really nice! Is it already known that on the 0.9.4 version downloaded from the website that echo seems buggy with floating point numbers, echo 40.5 returns 4.05?
00:09:20filwitDiffuseStorm: it's not a bug, Nim (currently) doesn't auto-format floats when converting to strings.. use `StrUtils.parseFloat(youVar, 3, FFDecimal)` (i think it's that, one sec)
00:09:46Araqit's formatFloat
00:09:57filwit^ right
00:10:01Araqand we changed that already
00:10:13DiffuseStormhmm ok cool
00:10:25filwitDiffuseStorm: http://nimrod-lang.org/strutils.html#formatFloat,float,TFloatFormat,range[]
00:10:33AraqDiffuseStorm: however, are you sure it doesn't produce an 'e' notation?
00:10:40DiffuseStormoh crap
00:10:43DiffuseStormit does
00:11:16filwitAraq: bigbreak auto formats? cool :)
00:12:11DiffuseStormI'm not to used to the e notation, so I just forgot to think about that i guess. Thought it legimately was outputting the wrong result.
00:12:12Araqfilwit: devel does that too, for quite some time
00:12:26dom96imjoe: It's because the async proc will continue executing until an 'await' happens.
00:12:28AraqDiffuseStorm: hence my question
00:12:58filwitAraq: didn't realize, will go remove all my formatFloats now..
00:13:04VarriountAraq: What was the last csources commit that worked with master?
00:14:07AraqVarriount: not sure, but 1 month ago everything worked
00:14:54Araqhmmm nimfix is unusable: nimfix tools\nimgrep.nim
00:15:03Araq--> stack overflow!
00:15:25dom96imjoe: This may work better: https://gist.github.com/dom96/2d63e2a31a30feae54ea
00:17:32filwitdom96: btw, a little while ago I played around with Nim & Qt... was pretty straight forward actually, if you're willing to do minimal C++ Qt stuff to relay info to Nim
00:19:06dom96filwit: Cool. Got any examples you could push up to git?
00:19:12filwitdom96: i remember you talking about wanting to try Qt before is why i mention it. I could make a test project for you (which is basically as far as I took it) and show you later.
00:19:41dom96filwit: Araq: I would like to see some special styles for warnings in the docgen, that would definitely require docgen changes so jsondoc won't cut it.
00:20:03dom96filwit: That would be awesome.
00:20:21dom96I was going to try Qt but Qt Maker or whatever I was installing took forever to install.
00:20:28imjoedom96: that has a similar result. there is an "await" in createRequest. I am just not understanding how this is suppose to work. I thought that the code after await would resume as soon as it had its data. but instead it's waiting until i stop making awaait calls (at least that's how it appears)
00:21:17filwitdom96: yeah, I'm not sure the jsondoc will cut it. I need to sort things around before outputing the HTML, which will probably be better if i have access to the AST not just a JSON file
00:21:32Onionhammerfilwit not a bad idea
00:22:01filwitdom96: you'll need QtCreator (or at least that's what i used)... though I think there's a simpler way if you know how to use their qmake command
00:22:19Jehan_Varriount: 7d454fb builds master for me.
00:22:33Jehan_With some dire warnings, mind you, but it does.
00:23:26imjoeoh wait! i think i got it: if I add a poll() after asyncCheck createRequest("http://www." & doms[x]) then it starts to get saner
00:23:42Jehan_Varriount: Also builds devel, now that I check.
00:24:28dom96imjoe: Well, what do you want to happen?
00:24:57VarriountJehan_: I created a 'bigbreak' branch at the latest commit, and reset the master branch to the commit you just specified.
00:25:12Jehan_Varriount: Sounds good.
00:25:13VarriountI then created a devel branch at the same commit.
00:25:53dom96imjoe: 'asyncCheck createRequest("http://www." & doms[x])' will execute 'createRequest' until there is a need to receive/send data from/to the socket.
00:26:30dom96This will likely happen whenever the http client is connecting to that url.
00:26:48dom96at that point control will return to that for loop
00:26:57dom96and more requests will be created.
00:27:36dom96These requests will indeed not progress until you call poll()
00:28:12*fowl joined #nimrod
00:28:15filwitAraq: btw, did you see this: http://spin.atomicobject.com/2014/09/03/visualizing-garbage-collection-algorithms/
00:28:43imjoeah. i didn't know about the poll part... so it is working faster now. i did just SIGSEGV though...
00:28:45dom96Varriount: devel needs to be set to a different branch I bet.
00:28:49filwitAraq: I was wondering, looking at that, what Nim's GC would look like visualized that way
00:29:04Araqfilwit: like RC I guess
00:29:39Araqbut these visualizations do not give me anything
00:30:39filwitAraq: Nim's GC is "deferred RC" though... so that means the ref-counting happens only during "scan" right (and in separate data structures) ?
00:30:46imjoedom96: looks like SIGSEGV happened in garbage collector: final line of stack trace: gc.nim(586) collectWhite
00:30:59Jehan_dom96: There really aren't enough different commits.
00:31:44Araqimjoe: it always ends there and yet it's almost never the real cause
00:32:13Araqbut it means I get the blame
00:32:23dom96Araq: Nobody is blaming you.
00:32:30*fowl quit (Client Quit)
00:32:31dom96imjoe: Can you gist the full stack trace?
00:32:41imjoe:-) then asyncdispatch.nim(755) addRead from bigbreak
00:33:16Jehan_imjoe: If the GC is getting confused, then most likely you're having memory corruption issues.
00:33:45imjoeoh yeah, stack trace: https://gist.github.com/anonymous/55afe816a7d5a84964a2
00:34:40Araqsay what you want, but we have the best stack traces
00:37:48imjoedom96: this is what caused it. I have the command line args I used near the top of the gist (webgetting 600 domains): https://gist.github.com/anonymous/012b5ae9809eea4a55ee my change was i added the poll() after the checkAsync...
00:40:30dom96interesting. That does make things much faster.
00:41:41Onionhammeraraq you mean queue traces?
00:42:20AraqOnionhammer: no stack traces
00:43:35dom96imjoe: On Windows with a large number of requests it's pretty much the same though I think
00:43:45dom96I'll boot up my VM and see what I can figure out on Linux
00:45:04OnionhammerAraq yeah but nims are backwards :p
00:45:18dom96filwit: Araq: So what do you guys think? Styles + rst markup for warnings?
00:45:47Araqdom96: no idea what you mean
00:46:02Araqyou mean **warning** in the doc comment?
00:47:07dom96I mean being able to create a orange/red div with warnings in it to make users pay attention to them.
00:48:40imjoeIt would be nice if httpclient had a "http: head" proc. useful for testing
00:49:35dom96yeah, I need add post and head procs.
00:49:47dom96you can use request with httpHead though
00:50:19imjoeyeah i'm gonna do that. i feel bad for all those poor wasted bits :-)
00:50:28Araqdom96: sure why not
00:52:45NimBotAraq/Nimrod bigbreak ae53d1e Araq [+0 ±2 -0]: nimgrep compiles again
00:53:00dom96imjoe: ok, I can reproduce the crash.
00:53:50Araqgood night
00:54:07imjoegood night Araq
00:54:33imjoedom96: good, then i'm not crazy :-)
00:58:04dom96imjoe: But anyway, I think the best way to do this is to have a concurrency number, and only launch that many requests at once.
00:58:49dom96Using poll like this kind of accomplishes that because I can see it outputting the number of active requests around 20
01:00:07imjoeyes i want to do that. i'm hoping to have 1K or 2K active outbound connections (whatever my disk can handle in writing out the results i want).
01:01:21*ics joined #nimrod
01:01:54Araqimjoe: oh btw when you write a crawler you should really give it "source protection"
01:02:09Araqwhich means you need to ensure to not DOS any server
01:02:48Araqthat means a request every 3 seconds for a particular server
01:03:14imjoeyeah i should check that ip is not the same. i am doing 1 request for each domain, so hopefully not a big issue. but if 1 server hosts alot of those domains... i will add that.
01:03:46Araqok, bye
01:06:18*willwillson quit (Remote host closed the connection)
01:08:00dom96unfortunately this bug looks pretty bad
01:08:12dom96i'll look at it some more tomorrow
01:08:15dom96for now good night
01:08:23imjoethanks dom96 i appreciate it
01:08:31imjoehave a good night
01:08:34dom96imjoe: it's possible that it will disappear if you use a concurrency number instead
01:08:39dom96thank you, bye!
01:11:02*Jehan_ quit (Read error: Connection reset by peer)
01:11:22*Jehan_ joined #nimrod
01:25:27*shiv joined #nimrod
01:35:43*Jehan_ quit (Quit: Leaving)
01:36:27*shiv quit (Quit: Page closed)
01:52:05*flaviu joined #nimrod
01:54:03*filwit quit (Quit: Leaving)
02:20:26*q66 quit (Quit: Leaving)
02:23:28VarriountAraq, dom96: The way I've arranged my csources repo ( at github.com/varriount/csources ) seems to work with all of the major branches of the nimrod repository.
02:26:24*vezzy quit (Ping timeout: 246 seconds)
02:43:37*askatasuna joined #nimrod
02:50:05*vezzy joined #nimrod
03:00:29*ARCADIVS joined #nimrod
03:35:47*saml_ joined #nimrod
03:41:09*milosn quit (Ping timeout: 240 seconds)
03:42:20*milosn joined #nimrod
03:53:22*askatasuna quit (Quit: WeeChat 1.0)
04:29:31*Jesin joined #nimrod
06:55:18*saml_ quit (Quit: Leaving)
07:17:15*flaviu quit (Ping timeout: 246 seconds)
07:46:53*bjz quit (Read error: Connection reset by peer)
07:46:58*bjz_ joined #nimrod
08:02:41*filwit joined #nimrod
08:03:37filwitdom96: when you wake up, here's the repo I made for using Qt with Nim: https://github.com/PhilipWitte/NimQt
08:05:32filwitdom96: it's a basic example (two buttons you can click on which send messages to Nim, which in turn echos them).. it doesn't require QtCreator or anything, but you'll like want to (at least) start playing around with QtDesigner to edit the .ui file eventually if you actually do anything with Qt
08:06:37filwitdom96: also, note that you have to compile with -d:release or it fails... probably a Cpp backend thing
08:17:05filwitttyl
08:17:06*filwit quit (Quit: Leaving)
08:43:26*BlaXpirit joined #nimrod
09:01:51*Matthias247 joined #nimrod
09:06:27*wan quit (Ping timeout: 245 seconds)
09:16:17*io2 joined #nimrod
09:18:26*io2 quit (Client Quit)
09:23:35AraqVarriount: great. go ahead and change it please
09:42:37*io2 joined #nimrod
09:52:59*Rational joined #nimrod
09:54:00*milosn_ joined #nimrod
09:54:20*milosn_ quit (Client Quit)
09:54:52*milosn_ joined #nimrod
09:55:00*milosn_ quit (Client Quit)
09:58:35dom96good morning
10:02:18Rationalhi
10:03:55dom96hello Rational, welcome
10:17:21*Trustable joined #nimrod
10:28:27EastBytels
10:28:31EastBytewhoop
10:34:18DiffuseStormDocuments Desktop Downloads Pictures Workspace
10:45:47*pafmaf joined #nimrod
10:45:47DiffuseStormWhere is some info on how things are passed into functions?
10:47:03dom96DiffuseStorm: Likely the manual, what do you want to know?
10:49:02DiffuseStormdom96: I noticed the usage of var like so: proc Test(val: var int) - What does var do in this case, and if its not there are things passed by value?
10:49:40DiffuseStormI'll also take a look at the manual
10:50:09dom96If 'var' isn't there then the compiler decides how to pass it.
10:50:22dom96The 'var' means that you can modify the passed in parameter.
10:50:30DiffuseStormoh the manual is a lot smaller than I expected, so I'll read that right away, I was expecting a c#/C++ full specification haha
10:50:41DiffuseStormokay
10:51:03dom96yeah, the manual is a nice reference.
10:53:15DiffuseStormdom96: in this case when modifying val it is modifying the value passed in, not a local copy. Can the compiler choose between that and passing in a copy?
10:53:37dom96no
10:53:50dom96it'll always modify the value you passed in
10:54:09DiffuseStormso it's like a c++ reference?
10:54:22DiffuseStormis it possible to pass in an int by value and modify it?
10:55:43DiffuseStormOr I just want to make sure that when passing in an int, without var, that it's by value because that's more efficient, is that the case?
10:58:20dom96yes, the compiler will pass it in the most efficient manner.
10:58:49dom96It's like a C# out param.
11:02:05DiffuseStormdom96: well it looks more like the c# ref param, because you don't have to assign to it
11:02:45dom96hrm actually yeah
11:23:25*pafmaf quit (Quit: This computer has gone to sleep)
11:48:55*kunev joined #nimrod
11:49:51*pafmaf joined #nimrod
11:56:07*pafmaf quit (Ping timeout: 245 seconds)
12:01:09*kunev quit (Ping timeout: 260 seconds)
12:06:50DiffuseStormIs there anything like a c#/c++ constructor/destructor in the language?
12:07:50EXetoCno constructors. you'd use "proc initT..." for constructing a value type, and "proc newT..." for constructing a pointer type
12:08:10*kunev joined #nimrod
12:08:24EXetoCthere are destructors though. see the destructor pragma
12:09:06DiffuseStormoh yes! Destructors are the most useful
12:09:20DiffuseStormEspecially if doing manual memory management
12:14:47*kunev quit (Ping timeout: 245 seconds)
12:18:27*io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist)
12:23:42*Ven joined #nimrod
12:26:52*ARCADIVS quit (Ping timeout: 252 seconds)
12:30:48*kunev joined #nimrod
12:34:47reactormonkso we're developing against bigbreak atm?
12:39:56*q66 joined #nimrod
12:41:23*kunev quit (Ping timeout: 255 seconds)
12:42:08dom96reactormonk: me and Araq are, yes.
12:54:24*Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
12:55:56*io2 joined #nimrod
13:10:50*vezzy quit (Ping timeout: 276 seconds)
13:46:37*darkf quit (Quit: Leaving)
13:50:30*willwillson joined #nimrod
14:23:21*filippo joined #nimrod
14:25:06filippohi all, is it me or the actors module is broken?
14:25:41filippoi'm trying to make two actors communicate
14:25:47filippohttp://pastebin.com/S4vpP90k
14:26:02filippoAnd the given example doesn't compile
14:26:39filippofirst in my opinion the inbox procedure return a wrong return type
14:27:23filippoan actor has a channel of type TChannel[TTask[TIn, TOut]]
14:28:13filippoand so the inbox procedure should return a ptr TChannel[Task[TIn,TOut]] and not a ptr TChannel[TIn]
14:46:09*filippo_ joined #nimrod
14:46:45*filippo quit (Ping timeout: 264 seconds)
14:49:13*fran__ joined #nimrod
14:51:27*Fr4n quit (Ping timeout: 245 seconds)
14:52:48*Matthias247 quit (Read error: Connection reset by peer)
14:59:09*Jehan_ joined #nimrod
14:59:38DiffuseStormHow do I create an Aporia project file?
15:00:01DiffuseStormI noticed you can "Compile project"
15:02:12*nullmove joined #nimrod
15:08:16willwillsoni think you make a file called module.nimrod.cfg, where module is the name of the module you want as the entry point
15:09:23DiffuseStormit worked, thanks
15:09:45willwillsonno problem
15:24:48*willwillson quit (Ping timeout: 246 seconds)
15:27:50*flaviu joined #nimrod
15:50:41*nullmove quit (Quit: Leaving)
16:02:22*woodgiraffe quit (Ping timeout: 240 seconds)
16:06:17*Jesin quit (Quit: Leaving)
16:32:58EXetoCDiffuseStorm: uh, there are of course actual constructors: T(field1: x, field2: y)
16:33:09EXetoCbut they are often wrapped in procs
16:34:15DiffuseStormEXetoC: are there constructors you can implement that run when doing something like: var num = TNum() ?
16:34:30flaviuDiffuseStorm: I've asked for that feature
16:34:50flaviuto allow overloading on type names
16:35:01DiffuseStormoh i see, you mean you can specify internal members like so TNum(name: 40)
16:35:33EXetoCyes, if you want
16:35:53EXetoCflaviu: what do you mean? you can just overload procs, but the above syntax is nice and short
16:36:29flaviuYou couldn't do `type Foo...\n proc Foo(abc: dsa): Foo`
16:36:34flaviulast time I checked
16:37:26EXetoCoh. yeah
16:43:38EXetoCdidn't we introduce a pragma related to var parameters? I don't think it's listed
16:44:19*kunev joined #nimrod
16:47:29*bjz_ quit (Read error: Connection reset by peer)
16:47:43*bjz joined #nimrod
16:49:19EXetoCmaybe not
16:50:33*fowl joined #nimrod
16:52:35Jehan_DiffuseStorm: Nimrod is a procedural, not an object-oriented language (though it has some OO-like features).
16:52:54Jehan_"Constructors" insofar as they exist are not associated with types.
16:53:12Jehan_You have a module that defines a type and one or more procs that create instances of that type.
16:53:29DiffuseStormAll that means is I have to remember to call an init function, which is alright I guess.
16:53:43EXetoCwhat's the correct terminology then? initializer?
16:53:55EXetoCT(...)
16:54:06Jehan_EXetoC: Constructor is really fine, I think, as long as you understand it's not the same as the OO concept.
16:54:16Jehan_Plenty of terminology is overloaded.
16:54:29EXetoCthat's not a *user-defined* constructor then?
16:54:59EXetoCbut whatever
16:55:07Jehan_EXetoC: Not sure what you mean?
16:55:22DiffuseStormJehan_: "one or more procs that create instances of that type" - So procedures that create the type themselves on a heap and return a reference?
16:55:48Jehan_DiffuseStorm: Pretty much.
16:56:21DiffuseStormok that's pretty different from c++/c# where the constructors accept a pointer to the type. Meaning you can stack allocate them.
16:56:25Jehan_Also note the difference between "object" and "ref object". If you want to allocate on the heap, "ref object" is what you need.
16:56:40Jehan_DiffuseStorm: That's what "object" is for.
16:56:49EXetoCthey create an object of said type, to be pedantic
16:56:49*def- quit (Ping timeout: 272 seconds)
16:57:26Jehan_DiffuseStorm: One problem with OO-style constructors is that they don't have a good answer to the problem of an error occuring during construction.
16:57:28EXetoCwe might get allocation-agnostic allocation at some point
16:57:52EXetoCbut I often omit 'ref' from parameters now
16:58:07EXetoCit's not exactly much work to just dereference before passing in
16:59:34DiffuseStormJehan_: I'm confused. Do I have an option where the object is going to be located using these new/init procedures?
16:59:53EXetoCyes, see system.new
17:00:22EXetoCvar x: ptr T; new(x)
17:00:33Jehan_DiffuseStorm: If you have an "object", variables will be allocated on the stack for local variables, in static memory for global variables, and in thread-local memory for threadvars.
17:00:49Jehan_If you have a "ref object", it will be allocated on the heap.
17:01:06Jehan_By convention, newX procedures return a ref object, initX procedures return an object.
17:01:08EXetoCoops
17:01:12EXetoCs/ptr/ref
17:01:38DiffuseStormJehan_: right so I have to chose the correct procedure to get an object or a ref object
17:01:38EXetoCthere are procs for pointers too though
17:01:52DiffuseStorminitX seems iffy, no? What is the object is large?
17:01:57DiffuseStormif*
17:02:01Jehan_DiffuseStorm: If you use the existing libraries, yes. But, basically, just look at the return type.
17:02:06*demilichsd joined #nimrod
17:02:15Jehan_DiffuseStorm: The object does not actually get copied if it's a return value.
17:02:34EXetoCand you'd often allocate dynamically then anyway
17:02:50DiffuseStormtrue, true
17:02:56Jehan_Similarly, large objects are internally passed by reference to procedures (unless you use the {.byCopy.} pragma to force pass by value).
17:03:04EXetoCproc initT(): T = result.field1 = 9001
17:03:43EXetoCI guess Jehan knows his stuff. bbl. happy coding and that
17:03:46Jehan_This works, because non-var parameters are immutable, so it's safe to pass a reference in. And var parameters are by reference, anyway.
17:04:42DiffuseStormok, nice
17:17:40DiffuseStormHow do I index into data behind a pointer gotten from alloc?
17:18:57Jehan_To dereference a ptr p, use p[].
17:19:36Jehan_However, [] can be omitted most of the time and the compiler will infer it's needed.
17:19:39fowlcast
17:20:15Jehan_I would generally recommend using new over manual memory management, though.
17:20:52DiffuseStormwell i might but I'm first thinking how I'd convert an existing project as directly as possible
17:22:27fowl(T*)(malloc(sizeof(T))) #=> cast[ptr T](alloc0(sizeof(T)))
17:24:01Jehan_Anyhow, talk to you guys later.
17:24:03*Jehan_ quit (Quit: Leaving)
17:24:04DiffuseStormits a game wip and I've implemented the whole job system and worker threads thing so it's a whole lot of void ptrs and such.
17:24:12DiffuseStormkk
17:27:30fowlDiffuseStorm, nimrod has a separate shared heap
17:27:45fowlsystem.createshared() etc
17:28:39fowlgotta go, cya
17:29:24DiffuseStormcya
17:33:28*bjz quit (Read error: Connection reset by peer)
17:33:34*bjz_ joined #nimrod
17:34:09EXetoCfowl: there's now a shortcut called 'create'
17:34:48EXetoCyeah, createShared is also new-ish. there was just allocShared before
17:46:39*perturbation joined #nimrod
17:53:55*def- joined #nimrod
17:54:59*Varriount|Mobile joined #nimrod
17:55:20*EXetoC quit (Quit: WeeChat 1.0)
17:58:12*EXetoC joined #nimrod
17:59:03Varriount|MobileAraq, dom96: Either I need push access to the csources repo, or what I did in my personal csources repo needs to be repeated in the actual csources repo
17:59:54Varriount|MobileGitHub's PR mechanism won't work for branch creation/moving
18:01:56*Varriount|Mobile quit (Quit: AndroIRC - Android IRC Client ( http://www.androirc.com ))
18:04:03flaviuVarriount: It's impossible for the PRs to work with branches. PRs are just a diff - they are comparing one hash to another, without metadata or anything else
18:06:15Onionhammerdoes csources work for bigbreak yet?
18:12:36Onionhammersomeone should add a flag for c2nim to output clibpp format :p
18:18:13*clone1018_ is now known as clone1018
18:33:20Varriountflaviu: That's why I need push access
18:33:48flaviuah, my bad
18:39:23VarriountOnionhammer: clibpp?
18:58:13EXetoCVarriount: his C++ mocking lib
19:11:20*io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist)
19:11:57*io2 joined #nimrod
19:12:20*saml_ joined #nimrod
19:16:14AraqVarriount: don't remember how this works, but I sent you an "invitation"
19:21:38*wan joined #nimrod
19:26:32DiffuseStormWhat am I doing wrong here: http://pastebin.com/6xr9DJbz - The compiler seems to crash with "SIGSEGV: Illegal storage access."
19:28:54EXetoCthe compiler is doing something wrong
19:29:26*TieSoul joined #nimrod
19:29:42TieSoulhey
19:29:43DiffuseStormok well I'm going to get the development version to at least have an up to date one
19:30:06DiffuseStormhi
19:30:57dom96hello TieSoul
19:30:59DiffuseStorm(I mean one from github master/devel)
19:31:38EXetoCDiffuseStorm: the issue seems to be the name 'New'
19:32:01DiffuseStormyep, hmm
19:32:02TieSoulI'm trying to install Aporia under Windows
19:32:25TieSoulbut it can't find gtk
19:32:37EXetoCDiffuseStorm: try --cs:partial
19:33:12EXetoCbut yes, it is indeed a good idea to use a development version, though a lot is happening right now so YMMV
19:34:10EXetoCTieSoul: have you tried to install it using babel? you need the gtk lib for nimrod
19:34:22TieSoulyeah I have tried
19:34:50EXetoCwell is the outcome different? I get something about gcsafe, which is a recent thing. dom96?
19:34:58dom96TieSoul: are you trying to compile it yourself?
19:35:02TieSoulyes
19:35:58TieSoulI'm using the instructions from the git
19:36:00dom96I experienced some problems with --babelpath, perhaps that is the issue you are experiencing too.
19:36:42dom96TieSoul: Try compiling with --path:/path/to/babel/gtk2/pkg/here (should be something like ~/.babel/pkgs/gtk2-1.0/)
19:37:37TieSoulerm
19:37:38TieSoulokay
19:37:51dom96Araq: Have you (or anyone else that you know of) made any changes to the way --babelpath is handled in the devel branch recently?
19:38:55TieSoulerm
19:38:59TieSoulso how do I do that
19:39:07Araqwell it's --nimblepath in the bigbreak
19:39:15TieSoulI can't find a gtk babel package?
19:39:18Araqbut --babelpath still works there too
19:39:23Araqhrm
19:40:32EXetoCTieSoul: gtk2
19:40:36TieSoulbabel install gtk2 also fails
19:40:51EXetoChow?
19:41:00TieSoulit says it can't find it due to EOS
19:41:23EXetoCok, vague
19:41:29*Demos joined #nimrod
19:42:02dom96oh, so you couldn't get it to install gtk2.
19:42:18TieSoulno
19:42:29dom96what OS are you on?
19:42:49TieSoulWindows
19:42:58TieSoulWindows 8
19:44:26dom96What version of babel are you using?
19:44:28dom96latest from git?
19:44:32dom96if so, try https://github.com/nimrod-code/babel/releases/download/v0.4/babel-0.4_win32.zip
19:44:59TieSoulI just downloaded Nimrod from the full installer link on the website
19:46:16dom96ok, can you try compiling the latest babel from git then?
19:46:26dom96brb
19:47:04filippo_hi all, is it me or the actors module is broken?
19:47:08filippo_i'm trying to make two actors communicate
19:47:17filippo_ http://pastebin.com/S4vpP90k
19:47:20filippo_ And the given example doesn't compile
19:47:24filippo_ first in my opinion the inbox procedure return a wrong return type
19:47:28filippo_an actor has a channel of type TChannel[TTask[TIn, TOut]]
19:47:32filippo_and so the inbox procedure should return a ptr TChannel[Task[TIn,TOut]] and not a ptr TChannel[TIn]
19:49:48TieSoulnope, latest from git still doesn't work
19:51:27Araqhi filippo_: actors is now deprecated
19:52:12filippo_Hi Araq, there's an equivalent?
19:52:21filippo_or i just use channels?
19:52:41Araqyeah well there is 'spawn' but that's not stable
19:52:49Araqjust use channels for now
19:53:53dom96TieSoul: can you gist the output please?
19:54:30filippo_mh ok, but araq the actors module is deprecated for lack of a manteiner?
19:54:48filippo_or because the design/idea is flowed?
19:55:05filippo_because i think that it just need some love
19:55:16filippo_i mean...it seems just half baked
19:55:25Araqit has some weird performance issues
19:55:26TieSoulhttps://gist.github.com/TieSoul/6d63bf936e5708a1db8a
19:55:31Araqthe API sucks
19:56:31filippo_ok so i'll just use thread/join with channels
19:56:36TieSouloh
19:56:41TieSoulI was using cmd.exe
19:56:49TieSoulusing PowerShell fixed it
19:56:53*perturbation quit (Quit: Leaving)
19:57:00Araqand I don't like the actors model at all, it's primitive
19:57:08dom96TieSoul: really? That's weird.
19:57:22dom96TieSoul: Did you perhaps run PowerShell as an admin?
19:57:25TieSoulhrm
19:57:33Araqfilippo_: once 'spawn' is stable that is a much better concurrency model
19:57:34filippo_and in your opinion what's a better model?
19:57:35TieSoulno, I don't think so
19:57:58TieSoulmaybe it's because git somehow isn't in my PATH when I use cmd.exe?
19:58:23filippo_do you mean the spawn proc in the actors module ? or something else?
19:58:24dom96TieSoul: yes, that could be it too.
19:58:34*flaviu quit (Read error: No route to host)
19:58:45*flaviu joined #nimrod
19:59:02filippo_basically i liked the actors model it looked similar to go channels
19:59:12TieSoulyay, I've got aporia running now
19:59:16TieSoulthanks for the help
19:59:18filippo_(i'm new to nimrod and to its library)
19:59:43Araqfilippo_: 'spawn' is closer to Go's 'go' too
19:59:48filippo_so i don't know what's really deprecated and what's not
20:01:24dom96TieSoul: I think the latest babel should give you info about what's missing from the PATH.
20:01:26filippo_btw i got also some strange behaviour with the 'new' asynchttpclient
20:01:53filippo_basically i get some weird exception when i make a get request to https websites
20:01:57TieSouldom96: it didn't for me
20:01:59filippo_i compile with the d:ssl
20:02:00filippo_option
20:02:10dom96filippo_: What exception is that?
20:02:31filippo_it gives me no message
20:02:37dom96filippo_: oh, you need to use the bigbreak branch for ssl support.
20:02:38filippo_i can print only the stacktrace
20:02:48*Rational quit (Quit: leaving)
20:02:50filippo_ah ok
20:03:53filippo_basically the 'bug' was easy to reproduce
20:04:03filippo_i just tested your crawler example
20:04:04filippo_with google
20:04:08filippo_or github
20:04:14filippo_https://github.com
20:05:25dom96you should get an assert failure: https://github.com/Araq/Nimrod/blob/devel/lib/pure/httpclient.nim#L586
20:06:07filippo_mh...
20:06:31filippo_it didn't seems an assert failure
20:06:56filippo_but maybe i didn't got it from the app crash messages
20:07:04*willwillson joined #nimrod
20:09:30*Demos quit (Read error: Connection reset by peer)
20:09:47*filwit joined #nimrod
20:10:37dom96filippo_: right, well, bigbreak should have general async fixes too. In any case it's likely fixed there.
20:10:50dom96hey filwit, how's things?
20:11:37filippo_dom96: ok thank you..is there a meaning for having named the branch "bigbreak"?
20:13:18dom96filippo_: yes, it renames 'nimrod' to 'nim', introduces new type names (TFoo -> FooObj, PFoo -> FooRef) and new case sensitivity rules.
20:13:55dom96So it breaks existing code.
20:13:55fowlneat
20:13:55filippo_i read about the naming/sensitivity changes in the forum
20:14:16filippo_but in the thread i read there wasn't a conclusion
20:14:32filippo_ok so i'll checkout it and test it
20:15:05fowldom96 do you know about building computers
20:15:10Araqwhen I do: git cherry-pick 6e321f799aee6e9e9581 how come git think I want to apply a range of commits?
20:15:20dom96fowl: a bit, why?
20:15:39dom96fowl: #reddit-buildapc is a good place to go
20:15:42Araqin what kind of bizzare alternative universe is that a desired behaviour?
20:15:57fowldom96 how does one choose between AMD/intel and ati/nvidia
20:16:14Araqfowl: pick intel + nvidia
20:16:19dom96fowl: cpuboss.com/gpuboss.com are good for comparisons.
20:16:43filwithey dom96, fine
20:16:57filwitdom96: you see my NimQt repo?
20:17:16filippo_fowl: use nvidia + intel. You have better support in both windows and linux
20:17:20dom96fowl: AMD is usually cheap, but as you might imagine worse.
20:17:40fowlintel seems to be more expensive, nvidia too
20:17:47filippo_fowl: and intel has better cpu than amd (even if the letter are cheaper)
20:18:05dom96fowl: After using AMD for a long time and now recently buying Intel I would recommend Intel.
20:18:18dom96fowl: As for GPU: I still use AMD and it's good IMO.
20:18:22filwitfowl: I have AMD cpu & gpu... I wish i would have bought intel + nvidia
20:18:47dom96fowl: If you want Linux support then I guess nvidia is better, but i've never compared the two, that's just what I hear.
20:18:57willwillsonis your NimQt repo public?
20:18:58dom96fowl: But really, the people at #reddit-buildapc know a lot more.
20:19:16dom96filwit: Saw the link, haven't looked at the files yet.
20:19:23fowlthanks
20:19:55fowli was really hoping someone would recommend the cheap way out amd+radeon :(
20:20:48filwitfowl: a lot of times AMD list's their core/clock higher so you think you're getting more for the price, but if you look at CPU comparisons Intel still wins (even at the price points). AMD GPUs are okay... if you're using Windows & DirectX.. they also get dropped faster in my experience (driver support).
20:20:53dom96fowl: You can get a pretty cheap and powerful Intel.
20:20:58filippo_fowl: if you don't have the money go with the cheaper option. If you use linux however be carefull to check that your amd gpu will work fine..
20:22:09*kunev quit (Quit: Lost terminal)
20:22:22dom96fowl: pcpartpicker.com is really good too
20:22:57dom96fowl: you can ask people in #reddit-buildapc to pick out parts for a computer within your budget and they will likely do that for you.
20:23:02filwitfowl: that said, I've had a better time with KDE & Catalyst than most people give it credit for. And if you use OSS drivers, go with a pure Intel system or use AMD (i'm sure you know that already tho).
20:23:15dom96fowl: Might be a good idea to pick something out yourself first and get them to give you suggestions.
20:23:19*io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist)
20:24:51filwithttp://www.cpubenchmark.net/ is also a useful site for comparing AMD & Intel
20:26:05dom96This is quite nice: http://cpuboss.com/cpus/Desktop-CPUs-best-Performance-Per-Dollar-4300513
20:27:06filippo_bye all, thanks for the tips dom96 and Araq
20:27:26dom96filippo_: no problem. Do come again!
20:27:36filippo_sure ;)
20:27:49*filippo_ quit (Quit: Konversation terminated!)
20:28:40DiffuseStormTo test this language out I'm implementing a dynamic array with manual memory management. So I allocate size * ElementType, get back a 'pointer'. Do I cast that into ptr ElementType?
20:28:52DiffuseStorm* sizeof(ElementType) I mean
20:29:20dom96DiffuseStorm: yes
20:29:59DiffuseStormdom96: but then it's just a pointer to T, how do I index into the array with a pointer to T?
20:30:10DiffuseStormT begin elementType
20:30:13DiffuseStormbeing*
20:30:41dom96you can cast it into an array[size, ElementType] then.
20:31:50DiffuseStormdom96: hmm, then what should the type hold? Perhaps just a pointer and I cast it everytime I need to use it?
20:32:58dom96i'm not sure what you mean
20:33:04dom96what type?
20:33:17DiffuseStormdom96: I mean the object (dynamic array) needs to hold the pointer. What is the type of that pointer
20:33:29DiffuseStormit can't be array[size, because size changes
20:34:17dom96you can store it as either pointer or ptr ElementType I guess
20:35:18DiffuseStormok pointer it is, and then a cast inside every function, that's fine
20:36:37Araqdo not cast to 'array', cast to 'ptr array'
20:37:07DiffuseStormptr array[size, T]?
20:37:20Araqyeah
20:37:32DiffuseStormokay, is the cast accessing size at runtime to fix the bounds checking?
20:38:14Araqer ... what?
20:38:23DiffuseStormin the cast I'm specifying size, why?
20:39:13Araqbecause there is this novel thingie called "memory safety" which means array accesses are checked
20:39:28DiffuseStormthus my question
20:39:44EXetoCyeah but how dynamic is it then?
20:39:46DiffuseStormand size is changing at runtime
20:39:55DiffuseStormand then im casting using that size
20:41:02Araqsize needs to be known at compile-time
20:41:21DiffuseStormI'm creating a dynamic array. I have a ptr from alloca. I need to index into it
20:41:35DiffuseStormthe size for alloca is decided at runtime
20:41:39DiffuseStormhow do I index into it then?
20:41:55DiffuseStormAnd dynamic array has elements of type T
20:42:20Araquse 0..100_000_000 as the index type
20:42:36EXetoCyou can also use create(T, nInstances)
20:42:42Araqthis makes the compile shut up and the runtime check if active becomes rather meaningless
20:42:46Araq*compiler
20:43:13Araqit's a known idiom, but there is also the .unchecked pragma for array declarations
20:43:43DiffuseStormok cool, both of those will work.
20:43:46Araqbut ugh i feel like a broken record. can you write it down in a mini-tutorial?
20:44:17DiffuseStormWho write what?
20:45:02*Salvakiya joined #nimrod
20:45:06Salvakiyahello all
20:45:09Salvakiyahow goes it?
20:45:10*io2 joined #nimrod
20:45:13EXetoCAraq: so we're keeping the long and verbose 'result'? :-P
20:45:24EXetoCand will "assert not x" ever work?
20:45:34dom96hey Salvakiya
20:46:07dom96Araq: Can unchecked arrays not be used?
20:46:27imjoehas anyone written a dns module for nim? and what is the best way to get the first IP for a hostname? i.e. something like Resolv.getaddress("www.google.com") -> 74.125.224.81
20:46:30EXetoChe did mention the unchecked pragma
20:46:35EXetoCis that different?
20:46:57dom96oh, I missed that.
20:47:01Salvakiyaso I just now heard of Nimrod... I have dabbled in Java, C#, spent multiple hours in python and loved it, and am very fluent in GML. how does Nimrod fare for game programming? by that I mean how is the community behind it?
20:47:37Salvakiyacommunity behind game programming with nimrod*
20:47:41dom96Araq: Perhaps we could make array[T] mean unchecked?
20:47:51EXetoCSalvakiya: there are no full-fledged engines or anything
20:48:23EXetoCsome people have been working on engines, but nothing has been announced so I don't know how that's going
20:48:42EXetoCwe do have an OpenGL wrapper and a couple of other things
20:48:49SalvakiyaEXetoC, I would write my own engine to be honest... However I dont know the first thing about OGL programming so I would need some sort of a graphics library to utilize it
20:48:52DiffuseStormSalvakiya: look at the libraries here http://nimrod-lang.org/lib.html
20:48:53fowltons of game-related libraries on github
20:48:54Salvakiyaoh nice
20:48:55Araqdom96: we could but it's a bad idea
20:49:06dom96Araq: why?
20:49:12fowlaudio, video, physics, etc
20:49:29DiffuseStormfowl: physics for nim, where?
20:49:34EXetoCyou can find * in fowl's monolothic lib :-P
20:49:49DiffuseStormbtw is it Nim now?
20:49:53AraqDiffuseStorm: *you* write a minitut about how to re-implement 'seq'
20:49:56EXetoCDiffuseStorm: soon
20:50:02dom96Salvakiya: You can use sdl or sfml for creating games. I've made on using sfml once for ludum dare.
20:50:05fowlwrappers for ODE, bullet, chipmunk
20:50:23Salvakiyadom96 which do you prefer?
20:50:54DiffuseStormAraq: this is my first/second day using nimrod and I suck at writing. I'm all for helping later though :D
20:51:17Salvakiyaand is there an ide yet?
20:51:18dom96Salvakiya: sfml because sdl has kind of stalled in development, although my preference is outdated because sdl 2 was released recently.
20:51:37dom96sfml has more features though IIRC
20:51:48dom96Salvakiya: yes, Aporia.
20:52:10EXetoChow much was there to be worked on anyway?
20:52:41DiffuseStormfowl: can you point me to the bullet wrapper?
20:53:27fowlhttps://github.com/fowlmouth/nimlibs/blob/master/fowltek/bullet.nim
20:53:49fowlbbiab
20:54:24Salvakiyaso what is better about nimrod over cython?
20:54:34DiffuseStormawesome, it looks easy enough to create these wrappers, that's good
20:58:08DiffuseStormAraq: I don't think I'll ever be able to write anything without endless errors, but I look forward to being able to help with something else
21:00:39EXetoCit shouldn't be that bad after a couple of weeks. just develop incrementally
21:03:01AraqSalvakiya: cython
21:03:10Araq's type system is bolted on
21:03:37*saml_ quit (Ping timeout: 245 seconds)
21:04:41EXetoClet's see if the real ETA will be the one on github :-)
21:04:42Araqand it doesn't support meta programming afaict
21:05:43AraqDiffuseStorm: yes it is Nim now.
21:15:26Onionhammerfowl u here?
21:16:34Onionhammerhttps://gist.github.com/onionhammer/4e370688218f8c3c996f
21:23:50AraqI swear I'll make ': void' a compile-time error
21:24:00DiffuseStormplease
21:24:07DiffuseStormi mean i agree
21:24:26Araqdoes any example use that? how come everybody coming from c++ uses it?
21:24:46DiffuseStormhmm don't know, I'm from c++ and don't use it.
21:25:15Onionhammeraraq i usually dont :p
21:25:27Onionhammeryou should make it a warning
21:26:23Onionhammeraraq is it possible to {.push.} an arbitrary value and check if it's been {.pushed.}?
21:27:20AraqOnionhammer: when compileOption("foo") ?
21:27:56OnionhammerAraq so "foo" in this case is the pragma?
21:28:04Araqyeah
21:28:04EXetoCwhat's void actually for again? it would be nice if it could be used as a type parameter default
21:28:43AraqEXetoC: Table[string, void] == Set[string]
21:28:45OnionhammerAraq so what about pushing an arbitrary value?
21:28:58Onionhammere.g. {.push myCustomPragma: "value".}
21:29:06EXetoCI might've forgotten about some use case
21:29:33AraqEXetoC: TThread[void] also requires it
21:30:21AraqOnionhammer: custom pragmas cannot get values but pushing those might work
21:30:45Onionhammerhuh?
21:30:51Onionhammer"pushing those"?
21:31:01Araqpushing a custom pragma
21:31:07DiffuseStormAraq: the manual has a section on "Void type" showing use of it in function return type
21:31:30Onionhammercreating one with the {.pragma.} pragma?
21:31:47AraqDiffuseStorm: I know, but it only shows it exists for consistency. not that it should be used.
21:32:03AraqOnionhammer: yes.
21:32:31OnionhammerAraq is there any example on how to do that other than the 3 liner in the manual?
21:32:54AraqOnionhammer: system/incrtl.nim
21:33:14Araq*inclrtl.nim
21:34:14EXetoCAraq: I do recall wanting to instantiating it for some reason; maybe for a type class parameter. x: something|void
21:34:17EXetoCnothing else would work
21:34:43EXetoCI could've just defined a new type in the meantime I guess (one that isn't special)
21:34:53AraqEXetoC: I'm only talking about the *syntax* proc foo(): void
21:35:15Araq'void' as a concept is quite powerful
21:35:20EXetoCyeah but then I remembered that
21:35:21OnionhammerAraq so.. the idea being that you would push the value?
21:35:32EXetoCrecalled, rather
21:35:53AraqOnionhammer: just try out what you're after
21:36:12EXetoCx: something|void = void(???)
21:36:52EXetoCshould we have a regular type for that purpose?
21:37:38OnionhammerAraq "recursive dependency
21:42:28*untitaker quit (Ping timeout: 272 seconds)
21:43:29Araqdom96: I'm reverting FD_SET backto TFD_SET so it's not ambiguous with --cs:none
21:43:53Araqnimfix really has a hard time when it cannot work with --cs:none
21:44:28dom96how about you rename the proc to setFd instead?
21:44:46dom96or does that not fix the problem?
21:44:49AraqAsyncSocket vs asyncSocket is also affected
21:45:09Araqhrm setFd ?
21:45:21dom96That will be deprecated anyway so it doesn't matter.
21:45:30Araqwe might as well find a real name for it then
21:45:52Araqmaybe a name with more than a single vowel?
21:47:05Araqit should be 'incl' according to our naming conventions, right?
21:47:17*untitaker joined #nimrod
21:49:48*hexagon_sun joined #nimrod
21:50:03dom96hi hexagon_sun
21:50:09hexagon_sunhello
21:50:34dom96Araq: i'd rather keep it close to the OS API name.
21:51:29Araqdom96: well it used to be TFD_SET
21:51:39Araqso I'm renaming it back to that
21:51:52Araqposix.nim keeps most of the T stuff anyway
21:52:04*Demos joined #nimrod
21:52:54*Jehan_ joined #nimrod
21:56:04AraqEXetoC: btw bigbreak has the comment handling changes now
21:58:03DiffuseStormCompiler bug? (I hate to ask that haha) http://pastebin.com/YeqFrFkk
21:58:24EXetoCgreat
21:59:25EXetoCDiffuseStorm: temp ban if > 10 compiler bug questions in a day
21:59:42EXetoCyou're indeed not passing in a ptr int
21:59:58EXetoCwait
22:00:06DiffuseStormoh i bet you I am
22:00:14DiffuseStormbug hunter or an idiot, you decide
22:00:18EXetoCnm
22:00:22AraqDiffuseStorm: (addr num)[3.4]
22:00:22DiffuseStormI'm not?
22:00:48DiffuseStormThe manual seems to use the syntax that I am using
22:01:06EXetoCit's a precedence thing I guess
22:02:22Araqaddr a[i] means to take the address of a[i]
22:02:32Araqand addr(a)[i] means the same
22:06:23DiffuseStormAraq: I don't understand. Say if addr is a function and so is [], then wouldn't addr be called first with the way I used it?
22:06:46AraqDiffuseStorm: but it's an operator
22:06:56DiffuseStormAraq: Can you give an example of where this precedence rule helps
22:07:12AraqDiffuseStorm: I already did?
22:09:29DiffuseStormok ok
22:10:08EXetoCaddr would indeed be evaluated last
22:11:36*TieSoul quit (Read error: Connection reset by peer)
22:11:54*TieSoul joined #nimrod
22:15:42flaviu> addr(a)[i] means the same
22:15:42flaviudon't function calls have precedence over indexing?
22:16:02flaviuI'd expect that to be (addr(a))[i]
22:16:10Araqflaviu: but it is not a function call
22:16:22*Demos quit (Read error: Connection reset by peer)
22:17:01Jehan_flaviu: It works the same way as &(a)[i] in C/C++.
22:18:23flaviuI guess it's logical, but I still don't really like it. What looks like a function call should be a function call
22:18:33Araqhowever since we break lots of code anyway, we could tweak it a bit
22:18:52flaviudekeywordize addr?
22:19:00flaviuand just have a magic function?
22:19:01Araqexactly
22:19:16EXetoCaight
22:21:06Jehan_I'm not sure if it's a practical problem.
22:21:29Jehan_Normally you don't index the result of addr.
22:21:39DiffuseStorm"addr a[i]" looks closer to addr(a[i]) than addr(a)[i] to me.
22:21:55DiffuseStormso i dont think tehy have to have the same behavior
22:21:59Jehan_If you do, you have a superfluous dereference in there.
22:22:16DiffuseStormbut man am i not qualified to say that though, so ignore me
22:22:19Jehan_(addr(a))[] == a
22:22:41Jehan_(addr(a))[x] == a[x]
22:23:07AraqJehan_: yeah but DiffuseStorm overloads []
22:23:09flaviuDiffuseStorm: Don't worry about it, I'm equally unqualified and I say stuff like that all the time :P
22:23:10Jehan_This seems to be a problem that only occurs for people who are exploring the boundaries of the compiler.
22:23:22Jehan_Araq: Yeah, I saw that.
22:23:36Jehan_I just don't see the practical value in doing that.
22:24:04flaviuAraq: While you're agreeing with me, I still want constructors :P
22:24:04flaviuI have a probably slightly buggy patch here: https://gist.github.com/flaviut/aa0dda27a97eb89e03e0
22:24:23Jehan_Mind you, I think it'd probably be cleaner to switch precedences around, but I'm not sure if it's worth breaking backwards compatibility.
22:25:14AraqJehan_: it wouldn't break any real world code, I think
22:25:45Jehan_Araq: What do you propose? To make it a function?
22:26:34AraqJehan_: we can simply treat it as a function syntactically yes
22:26:53Araqbut we can keep addr as a keyword
22:27:01Jehan_Araq: Not sure if that won't break real-world code.
22:27:27AraqJehan_: foo x is a function invokation already
22:27:32Araqsince 0.9.4 I think
22:27:57Araq(is it invocation? I never know)
22:28:12Jehan_Araq: I know, but what about (addr a, b)?
22:28:48Araq(foo a, b) is already (foo(a), b)
22:28:58Araqiirc
22:29:21Jehan_Hmm, I see.
22:30:38Jehan_I just remember from writing parsers that allow function calls without parentheses that there are usually a lot of ambiguities.
22:31:09*flaviu quit (Ping timeout: 260 seconds)
22:31:34DiffuseStormJehan_ well it's only one parameter that's allowed so, correct?
22:31:47*BlaXpirit quit (Ping timeout: 276 seconds)
22:32:13Araqyeah but 'spawn foo(a, b)' and 'await foo(a, b)' are simply too nice, so I thought (and still think) it's worth the complexity
22:32:41Jehan_Araq: Oh, I concur.
22:32:51*io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist)
22:33:40Jehan_I'm just wondering if parsing `addr` like that may lead to a different parse of existing code.
22:34:02Jehan_Which would likely result in a compilation error, but would still be annoying.
22:34:16Jehan_To be honest, I don't know. I'd have to look at the grammar.
22:35:58Jehan_Anyhow, time for bed. Good night. :)
22:36:00*Jehan_ quit (Quit: Leaving)
22:36:05Araqgood night
22:37:34Onionhammerfowl updated clibpp
22:41:22Araqping Varriount
22:43:45DiffuseStormIs it possible to implement an array in such a way that this is possible: "customArray[4] = 2" - Where 2 is assigned not to a local but the actual location in the array?
22:47:48*gsingh93 joined #nimrod
22:47:49Araqoverload `[]=`
22:48:11DiffuseStormI thought it could only accept 2 parameters
22:48:37Araqno, a[i, j, k] is also easily possible
22:50:09DiffuseStormok that was easy enough, thanks. I thought I had tried that already.
22:55:13EXetoC'local'?
22:55:41DiffuseStormi mean if [] would have returned a value, that = 2 would not assign to that
22:56:10DiffuseStormtold you i was bad at writing
22:58:44fowl`[]=` is the operator for that expression
22:59:27fowlthe signature would look like proc `[]=` [t] (arr: var myarray[t], idx:int, val:t)
23:00:01DiffuseStormyep I've got it, Araq helped me a few irc lines ago
23:02:45fowli now have a c++ ide on my phone that can compile sdl2 apps, i wonder how hard it would be to get nimrod running on my phone
23:03:29DiffuseStormfowl: nice, what OS does the phone use?
23:04:07fowlandroid 4.4
23:11:12DiffuseStormfowl: and you are very productive on your phone, programming, yes?
23:11:21DiffuseStormhaha
23:11:38EXetoCI'm sure he is
23:12:10EXetoCit might not be so bad for simple things with voice typing
23:15:16*xenagi joined #nimrod
23:15:44*Trustable quit (Quit: Leaving)
23:22:56*Salvakiya left #nimrod ("Leaving")
23:23:25*darkf joined #nimrod