<< 06-04-2014 >>

00:03:15Skrylari haven't heard of neovim
00:04:04Skrylari hope it works out
00:08:39EXetoCSkrylar: were you going to parse gl.xml? I'm working on it again now
00:09:00SkrylarEXetoC: its a possibility; right now i'm tinkering with sdl
00:09:02EXetoCit is fun: of "**": ... of "*const*": ...
00:09:11EXetoCok
00:09:22Skrylari don't know what the nimrod xml parser is
00:10:17EXetoCjust a lib, that parses and stuff :>
00:11:00*Skrylar takes a chalk eraser and tries again
00:11:09SkrylarI don't know what the nimrod xml parser is titled and where to find it
00:11:30EXetoCSkrylar: check lib/pure. you probably want xmltree.nim
00:11:55EXetoCbut then you have the low level parser module xmlparser.nim, and also xmldom.nim and xmldomparser.nim
00:12:16EXetoCand htmlparser.nim
00:12:24Skrylarwhy do we have module soup
00:12:37Skrylarimport x.y works but the stdlib has old sdl1.1 modules in different parts in the TLD
00:13:39Skrylarhm
00:13:49Skrylardon't we actually have property setter syntax with `Blah=`?
00:13:59EXetoCyes
00:14:21Skrylari was just looking at SetXProperty thinking "I can just make that 'SetProperty'" and then further realized "can't i just map SetWindowTitle to Title="
00:14:59EXetoCyeah
00:15:20Skrylaryay nimrod
00:15:59EXetoCwoohoo
00:16:02Skrylari remember doing this in rust and C#, and all the manual boilerplating you had to do just so bind a method so you could say mywindow.Title = "Yes" instead of having uglly unsafe { SDL_SetWindowTitle("yus") } /* clean code zone */
00:17:17EXetoCyou can do that at the declaration in Rust
00:20:04EXetoCdom96: I might do that tomorrow. Just gonna parse the gl spec
00:22:34EXetoCwell have fun and don't step on lava
00:22:45dom96alright
00:24:45Araqgood night
00:24:55EXetoCbb
00:25:15EXetoCmaybe parse this and generate some code https://www.alien.net.au/irc/irc2numerics.html
00:36:13SkrylarEXetoC: i might suggest parsing the GL xml in to an AST of its own instead of trying to source-to-source it
00:36:52Skrylarwould make it easier to put in filters for edge cases, and overall easier to have it output a proper nimly module
00:39:54Skrylarsince nimrod definitely has a good means of type-safing quite a bit of the GL API, its just a matter of actually flagging the distincts correctly
00:42:41EXetoCthere isn't really much of an AST to speak of, but it's easy to just query the tables that I store the data in
00:43:12Skrylari guess that works
00:43:33Skrylari'd have ended up like.. parsing the spec in to an sqlite database or something and tagging all of the special conditions in the DB
00:44:53flaviuSkrylar: Seems like a lot of work for one-off code gen
00:45:21flaviuProbably easier to do the last 1% manually
00:45:45Skrylarflaviu: the point of the gl registry is that its not one-off though
00:45:54Skrylarwhenever theres a new extension/revision they update the spec file
00:46:27Skrylarthough i tend to do a lot of bindings by hand, in multiple steps and using vim macros/exps for most of the lifting
00:47:14EXetoCI should end up with nice looking diffs if I do some sorting, but we'll see
00:50:04Skrylaras long as its neat and nimrod-y
00:50:35Skrylarif it feels like C barfed in to the middle of nimrod code i'll be sad ;<
00:50:37Skrylar* :<
00:51:36EXetoCthere's only so much you can do, but some pointers have length information attached to them in the spec
00:54:34flaviuIs there any way to compile modified generated c files?
00:54:53Skrylarthey have the gcc line used to build them as a comment
00:55:02Skrylarthey're just C files, use gcc
00:56:12*Varriount joined #nimrod
00:56:25*eigenlicht quit (Ping timeout: 240 seconds)
00:56:41flaviuI didn't notice the header, I just jumped to the line I needed to edit
00:56:43flaviuthanks
00:57:36VarriountYeesh. Over an hour of time gone for what seems to be an essentially simple update. :/
01:10:23*Demos joined #nimrod
01:11:57Demosallright, how can I get a datastructure that is write-only at compile time and read-only at runtime
01:12:31VarriountDemos: Macros and templates.
01:12:37*jbe quit (Quit: Leaving)
01:12:52VarriountOh, and "static" blocks
01:13:08DemosI really do not want to build up the code that adds stuff with a macro... maybe I can have the macro invoke the template.. or something
01:13:09flaviuisn't that what `const` does?
01:13:29VarriountDemos: Do you mean, you want a constant structure?
01:13:31Demosflaviu: I don't think you can write to a const thing in a macro
01:13:56flaviuWhy do you need a macro? Just do `cost foo = bar()`
01:14:34Demosbecause I want to use it to record stuff each time the macro runs
01:15:46VarriountDemos: You do know that ast nodes are refs, right?
01:16:06DemosVarriount: yes. But how does that help me?
01:16:23VarriountTry using a static global var to store a single const node, and then have each macro call modify the node.
01:16:48VarriountI can't really give better help without a clearer understanding of what it is you are trying to achieve.
01:18:37DemosI think I will have a regular global var and have the macro generate code to insert the proper thing
01:28:27Demosmacros + closures + templates + pointer (the void* kind) WHAT COULD GO WRONG!
01:28:47*Demos is a terrable, terrable programmer
01:29:53*Skrylar readies the paddle
01:30:03*Varriount gets the tar and feathers
01:30:40Demosthat said I think I just "unerased" a type, which is kinda cool
01:31:38*Skrylar always feels like vim's regular expressions are arbitrary as to when \ is used to escape and when it isn't :\
01:32:28Demosin java I used to just add more \ till it worked... been a long time since then
01:32:47Skrylarwell you have to escape () to make groups
01:32:59Skrylarbut you escape * if you want the actual character
01:33:13Skrylarso there's sort of an arbitrary pick and choose as to "which special symbol is inlined"
01:33:42Skrylarsome of the regexps are more explicit in that if its a symbol you use \ to get a literal of that symbol otherwise its taken
01:46:24Demosugh I need to decrustify this module... there are like 12 functions that all do the same thing...
01:50:38*Guest78262 quit (Ping timeout: 240 seconds)
01:51:15*Guest78262 joined #nimrod
01:58:57*Demos quit (Ping timeout: 268 seconds)
02:08:23*q66 quit (Ping timeout: 252 seconds)
02:10:05*Demos joined #nimrod
02:21:46Demosdom96: ping
02:40:20runvnchello
02:40:26runvncwhat projects are using redis that I can test with
02:40:59runvncIm adding pipelining and a different version of transactions
02:50:27*Demos quit (Ping timeout: 255 seconds)
02:51:59*noam quit (Ping timeout: 268 seconds)
02:52:43*noam joined #nimrod
02:54:45*eigenlicht joined #nimrod
03:08:25*Demos joined #nimrod
03:24:37*noam_ joined #nimrod
03:27:10flaviuecho($$locals) is really useful for debugging
03:28:22*noam quit (Ping timeout: 268 seconds)
03:28:30Demoshow is that different from echo $locals?
03:28:59flaviuIt compiles
03:30:11flaviuif any local field doesn't have a $ method, echo $locals fails because it requires everything to have the $ method
03:30:24Demosoh
03:30:39Demosbut doesent $$ still fail?
03:31:13flaviuNo, because $$ is from the marshal module, which (I think) uses the fields iterator to get all the fields
03:31:22Demosoh
03:31:45Demosso it is `$$`(locals) and not `$`(`$`(locals))
03:32:19flaviuYes, and echo needs its parenthesizes or the parser thinks there's a syntax error
03:38:09*Demos quit (Ping timeout: 255 seconds)
03:54:01*flaviu quit (Remote host closed the connection)
03:58:01*Demos joined #nimrod
04:07:50*Demos quit (Ping timeout: 268 seconds)
04:21:29*Demos joined #nimrod
04:26:08*Demos quit (Ping timeout: 240 seconds)
04:50:08*ehaliewicz quit (Ping timeout: 240 seconds)
05:12:19*filwit quit (Quit: Page closed)
05:19:20Skrylaroh hey, filwit was here
05:45:18*[1]Endy joined #nimrod
06:46:26*shodan45 joined #nimrod
07:17:57*[2]Endy joined #nimrod
07:21:38*[1]Endy quit (Ping timeout: 240 seconds)
08:58:22*nande quit (Remote host closed the connection)
09:34:40*io2 joined #nimrod
09:39:17*Matthias247 joined #nimrod
10:09:52*BitPuffin joined #nimrod
10:17:13*Trimsty quit (Ping timeout: 268 seconds)
10:42:30dom96hello
10:50:00runvnchello dom96
10:51:18dom96hey runvnc, NimBuild uses redis but testing it requires a lot of set up.
10:52:12runvncok. well I am mostly done with the pipelining for redis. I am using your tests with a few little modifications
10:52:16runvncneed to fix a few things tomorrow
10:52:59runvncthat was actually what I wanted before instead of the transactions thing, just wanted to send a bunch of gets in one go
10:54:58runvncjust curious are there modules using the new await async feature
10:55:07runvnchm well you showed me one yesterday
10:55:15runvncbesides that one
10:55:25dom96httpclient and asynchttpserver use it
10:56:31runvnchm are you going to change jester so it uses it
10:57:06NimBotnimrod-code/nimforum master aae5609 Grzegorz Adam Hankiewicz [+0 ±1 -0]: Adds published tag as duplicate of updated for old rss clients.
10:57:06NimBotnimrod-code/nimforum master 1740471 Dominik Picheta [+0 ±1 -0]: Merge pull request #24 from gradha/pr_published_rss_tag... 2 more lines
10:57:16dom96yeah, once it's stable.
11:01:37dom96Currently there seems to be a corruption which causes the async http server to fail under a high load.
11:05:49runvnck so what kind of corruption
11:06:20dom96memory
11:07:17runvncdid you guys figure it out already
11:07:30dom96nope
11:07:43dom96it looks difficult :(
11:08:42runvncis there a bug report
11:09:06*Test931812 joined #nimrod
11:09:23dom96not yet.
11:09:27*Test931812 quit (Remote host closed the connection)
11:10:03runvncso the process uses a lot of memory when you send a lot of requests to the httpserver or something?
11:10:27dom96No, the process crashes because the memory gets corrupted somewhere.
11:14:07runvncok last question about it.. what sort of error message do you get when it crashes? just curious
11:14:24dom96Same one you get when you try to access a nil pointer.
11:14:28dom96A SIGSEGV.
11:14:50runvncand no stack trace?
11:14:56*Test931812 joined #nimrod
11:14:59*Test931812 quit (Remote host closed the connection)
11:15:04dom96oh no, there is one.
11:21:39dom96doesn't help much though
11:24:43BitPuffinping fowl
11:25:00BitPuffindom96: helps more than xcode probably
11:25:09BitPuffineverytime something crashes it says it happened it main
11:25:11BitPuffinin*
11:25:13BitPuffinno shit
11:25:57runvncI have a bit of a moral disagreement with Objective-C so
11:26:20EXetoCBitPuffin: at least you know where to start looking
11:26:34BitPuffinEXetoC: \o/
11:26:55EXetoCI think we should have a version of echo that aids in debugging
11:27:13EXetoCI have something basic that prints the location, ast and value
11:27:30EXetoCsomeone else was working on something similar, but I can't remember who that was
11:27:34BitPuffinEXetoC: you mean "debug"
11:27:37BitPuffinin the compiler?
11:27:59EXetoCit could be used anywhere
11:28:22BitPuffinprobabyl yea
11:29:13EXetoCexample output: "gen.nim:339: []($ x, 0 .. min(len($ x), 1000))\n<extensions><extension..."
11:30:54EXetoCI'll have to do something about that character limit expression. there's probably a better way
11:31:32EXetoCbut that's just the expression that I passed to the template so nvm that
11:36:56runvncdom96 what is the stack trace
11:38:17dom96https://gist.github.com/dom96/2dc313817c551be579a3
11:42:16runvncif you hack on gc.nim is there information about the symbol name in forallchildren
11:48:03*jbe joined #nimrod
11:48:27*q66 joined #nimrod
11:49:18*foodoo joined #nimrod
11:59:05*q66 quit (Ping timeout: 252 seconds)
12:01:09*q66 joined #nimrod
12:09:46*rleisti quit (Remote host closed the connection)
12:17:14*q66 quit (Ping timeout: 252 seconds)
12:19:30dom96runvnc: There is a shorter stack trace if I compile with the mark and sweep GC.
12:19:50runvnck
12:19:52dom96The retFuture in asyncdispatch.recv is 0x07 for some reason
12:20:11dom96Not sure how to work out where it gets corrupted.
12:20:14*q66 joined #nimrod
12:24:32Araqhi dom96
12:24:37dom96hey Araq
12:24:54Araqwhat you need for this to hunt down are decent watchpoints
12:25:18Araqwhich ENDB supports ... sometimes it works out
12:25:38Araqsometimes ENDB masks the error or has other problems (*cough* multi threading)
12:25:58dom96Don't watchpoints impact performance?
12:26:52Araqyeah but according to you it crashes almost immediately
12:27:15Araqdo you know which envrionment gets corrupted?
12:27:27Araqor rather where this environment is created?
12:28:02dom96It's the env of the closure in asyncdispatch:357
12:28:18dom96in the mark and sweep gc at least
12:29:20Araqok, compile with --debugger:on and add {.watchpoint: retFuture.} to line 344
12:29:33Araq*after line 344
12:31:36dom96you mean 347?
12:31:41dom96344 is a comment
12:32:02Araqhmmm
12:32:08Araqlet me update
12:34:43Araqyeah I mean line 348
12:35:09dom96endb| rawsockets.nim(79) rawsockets ***
12:35:41dom96why would it stop there?
12:37:01dom96It's printing A LOT.
12:37:25dom96asyncdispatch.nim(74) callback= etc constantly
12:38:41*q66 quit (Ping timeout: 252 seconds)
12:39:58Araqit's printing everywhere where the env gets changed
12:40:06Araqusually 1 stack trace comes up that is weird
12:40:20Araqthat is where the memory gets corrupted
12:40:37dom96It prints one stack trace for each time it gets changed right?
12:40:48dom96if so then it's not weird.
12:40:54dom96recv is called A LOT
12:51:29*q66 joined #nimrod
12:59:06*darkf quit (Quit: Leaving)
13:14:10dom96ping zahary
13:14:41*simargl joined #nimrod
13:14:48dom96hello simargl
13:15:05*foodoo quit (Quit: Lost terminal)
13:15:11simarglhey
13:15:12zaharyhi dom96
13:15:46dom96zahary: It seems you broke my closure macro with your recent changes. Have some time to take a look?
13:16:56EXetoCdid someone report the fact that fields can be skipped when constructing objects?
13:18:26zaharydom96: can I see the closure macro? do you know which change broke it?
13:19:01dom96zahary: https://gist.github.com/dom96/9155536
13:20:56dom96I think this commit breaks it: https://github.com/Araq/Nimrod/commit/40d94436fdbe7ea5c5b508c6916064f803b79155
13:21:07dom96because I get the error you introduced in that commit
13:25:44simarglBeen playing with nimrod/gtk2, ported two samples from vala page to nimrod and later noticed some stuff are missing in gtk2.nim like AboutDialog, ToolButton, get_context_area in GtkDialog and more... But intead of fixing missing parts in gtk2 I thought to ask here - is there support for gtk3? or at least plan...
13:28:04dom96Yeah, thanks for those PRs. The gtk2 wrapper was generated a long time ago and so it's missing some procedures. Foodoo was here yesterday talking about wrapping gtk3 so support may happen, but no official plans yet.
13:31:38simarglokay, thanks I will check it from time to time.
13:31:47*simargl left #nimrod (#nimrod)
13:56:17NimBotAraq/Nimrod devel 42188b8 Zahary Karadjov [+0 ±5 -0]: propagate semExpr flags in macro/template expansion
13:56:26zaharydom96: that should fix the problem
14:08:10BitPuffinI wonder if the show stopping bugs for linagl are fixed yet
14:08:16BitPuffinso that I can work on a god damn nimrod game :D
14:09:14Araqzahary: we want to release today. so better hurry and fix some bugs
14:10:08zaharyI thought we were going to fix the bugs marked as showstoppers on github
14:11:07zaharybtw, have we fixed the brew installation on mac os?
14:12:33Araqno idea
14:12:43Araqlet me see what showstoppers are left
14:13:01*jbe quit (Quit: Leaving)
14:16:56EXetoCdom96: does it work does it work does it work? :p
14:29:39Araqbabel install nake
14:29:59AraqError: unhandled exception: Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch.
14:37:54dom96zahary: Thanks, i'll test it now.
14:38:31dom96Araq: I'm thinking of writing a web crawler as an example of await and the new async httpclient.
14:38:48Araqdom96: I found a babel bug
14:39:02dom96Araq: Tell me more.
14:39:31Araq"babel install nake" fails for me with OSError when babel tries to move stuff from temp to its destination
14:39:58Araqit's not a hard bug, I think, since Windows' explorer frequently shows the same bug on vista ...
14:40:20EXetoCdom96: you might hit that XML bug that I reported then, for values that contain ampersands
14:40:45AraqEXetoC: just fix it properly
14:41:56dom96what does that error say?
14:46:00EXetoCAraq: I've spent too much time on it without getting anywhere
14:47:33Araqdom96: "the syntax of the filename/dirname oder disk is wrong"
14:47:39Araq*or disk
14:48:00dom96weird.
14:48:14Araqmaybe some slash / backslash thing?
14:48:20dom96Compile in debug mode and execute it again
14:48:26dom96to get a traceback
14:48:57Araqlater perhaps
14:49:05AraqI'm fixing bugs
14:49:16*Matthias247 quit (Read error: Connection reset by peer)
14:51:12Araqas I said it says the '->' move arrow and lists files and then dies
14:51:20dom96zahary: Still fails.
14:52:21dom96Araq: Can you give me the full output?
14:52:52Araqwell I performed the file move on my own to get nake
14:52:58Araqso no
14:53:53dom96I can't reproduce it, so you will have to help me now or later.
14:56:13dom96Araq: Do you think a web crawler is a good example for the news post?
14:57:02Araqwhat do you want to say? "nimrod can now be used for web crawlers because we have async httpclient"?
14:57:25dom96No I want to show an example of async await
14:57:45Araqok. well a web crawler is a good example
14:57:47dom96"The following is an example of a web crawler built using the new await API"
14:57:54Araqsure, nice
14:58:00dom96I fear I may run into more bugs though... lol
14:58:26Araqbtw web crawlers can be cpu bound too
14:58:42zaharydom96: the error is on line 39, which is not supported yet on purpose - I agree it could be fixed tho
14:59:20zaharyif you comment out that line, the other places, where the closure is used as a param are ok
14:59:49dom96But it used to work :\
15:00:27zaharywell, it triggers a "safety net" error - it's not a missing path in the compiler
15:00:59zaharythe error is supposed to catch bad usages such as var p = (x) => x*x
15:01:06zaharyp has not proper type here
15:03:37*io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist)
15:05:55BitPuffinAraq: you are mentioned in this video lol http://youtu.be/PXxO75jAGX0
15:06:16dom96zahary: alright.
15:07:44BitPuffinbrb
15:08:46*io2 joined #nimrod
15:12:16*BitPuffin quit (Ping timeout: 252 seconds)
15:27:11Araqzahary: have you seen that exponential blow-up?
15:27:33AraqI tried to track it but my gdb refuses to show stack traces for the test case ...
15:28:05Araqit's worrying me. maybe it's even a fundamental flaw in nimrod's macro design
15:28:18zaharyI haven't seen it - where should I look?
15:29:35Araqhttps://gist.github.com/jbe/9996803
15:30:24Araqcompling niminst also takes quite a long time now. I think it has nothing to do with templates but with nested calls thanks to our complex overloading resolution
15:30:35Araqmight be introduced with my laziness patches long ago
15:33:05Araqbtw I think OR should always take a nkSymChoice and do the matching in parallel
15:33:28zaharyinteresting
15:33:38Araqwhere "in parallel" means all candidates' first param is checked, then their 2nd param etc.
15:34:04Araqand we can already decide for the first param which matches better
15:34:28zaharybut we still have to look at the rest of the params to detect ambiguity I think
15:35:02Araqsure
15:35:29NimBotAraq/Nimrod devel 883a958 Araq [+0 ±1 -0]: fixes #866
15:35:29NimBotAraq/Nimrod devel 20cc46d Araq [+1 ±2 -0]: fixes #913
15:35:29NimBotAraq/Nimrod devel 9ff7ab1 Araq [+0 ±5 -0]: Merge branch 'devel' of https://github.com/Araq/Nimrod into devel
15:35:41Araqtake this you showstoppers
15:36:13dom96You broke 300 tests.
15:36:19dom96Just kidding :P
15:36:45EXetoCare there restrictions for nested tuples already?
15:37:31EXetoCnvm
16:00:48renesacwhat should be the nextPowerOfTwo() result for negative numbers?
16:11:37Araqrenesac: just assert
16:11:47Araqthese things should be *fast*
16:13:44renesacassert that the input is not negative?
16:14:11renesacI'm changing the last line to: result += 1 + ord(x>=0)
16:15:04renesacthis gives 1 as result, even if the number is negative, and is branchless (I hope this 'ord' is transparent on the generated C code)
16:15:47renesac*(x<=0)
16:16:02Araqok that's fine too of course
16:16:33renesacI'm having trouble with the branchless isPowerOfTwo() though
16:16:51renesacI will try solving it
16:17:32renesacbut a 'if' would be much easier
16:18:03renesacor simply accept only "Positive" numbers, but that might be annoying
16:18:34EXetoCwhy? it's basically a contract
16:18:58EXetoCsame as with the assert, except that it's not part of the interface
16:19:49EXetoCand it'd be nice to see how well these work. I don't think ranges are very common yet
16:20:59EXetoCspeaking of which, did anyone report the (range[T], range[T]) (T, T) incompatibility?
16:21:14renesacwell, you would need to 'convert' the number from int to Positive if the compiler can't prove that it will aways be positive
16:21:21Araqno but I know 'range' is quite broken, EXetoC
16:21:49Araqrenesac: that is actually the question ...
16:21:57EXetoCin what way?
16:22:22EXetoCrenesac: I thought it was implicit
16:22:24Araq(1, 2) doesn't match tuple[a,b: range[1..2]] iirc
16:23:05EXetoCI thought you meant something else, as I just said something similar
16:30:28*nequitans joined #nimrod
16:31:31EXetoCany other cases?
16:32:09Araqlots of but they are all equivalent
16:36:59renesaccan I make nextPowerOfTwo() and isPowerofTwo generic, to accept any integer type? Or should I just bugfix for now?
16:37:41renesacright now it don't works on 16bit plataforms, for example
16:37:49renesacthe nextPowerOfTwo()
16:38:14nequitansHi all, I'm porting some basic C code to Nimrod. In C, I have a struct with, among other things, a char[4] variable in it. I write this struct out in binary to disk. In nimrod I use array[0..<4, char], but the bytes being written out are different. I'm probably doing something really stupid here I think
16:38:16*nande joined #nimrod
16:40:40EXetoCshortcut: array[4, char]
16:41:17Skrylarnequitans: a nimrod array stores its size
16:41:31Skrylari'm guessing the size of the fixed-size array is getting saved too
16:41:54nequitansI see
16:41:58OrionPKmorning
16:42:01EXetoChuh
16:42:09nequitanswhen I use array[4,char], i get "Error: type expected"
16:42:26renesacare you using the latest devel?
16:42:28renesacor at least master?
16:42:41nequitansi should pull the latest (it's been a while)
16:43:03renesacwell, any devel in the last months should allow this syntax, I think
16:48:28nequitanskk -- so I'm using a dev version now and that syntax works, but i suppose I still have this issue of the fact that the nimrod array stores its size. Is there something else i can do to write out a char[4] but in a 'raw' c-like way?
16:48:57Araqarray[4, char] is C's char[4]
16:49:03Araqno length stored
16:49:07nequitansah, i see
16:49:42Araqarray[0.. <4, char] is the same
16:50:01nequitanshmm...so i must be doing something else wrong then
16:50:17AraqI guess you have wild casts in C that expose endianness but you don't do that in nimrod
16:50:29Araqand so the order changes
16:52:16renesac## returns the nearest power of two, so that
16:52:17renesac ## result**2 >= x > (result-1)**2. <--- the square of result -1 is smaller than x?
16:52:18EXetoCis nil supposed to be a valid value for TXmlNode.fAttr (PXmlAttributes)?
16:52:32EXetoCan empty table might make more sense
16:53:07AraqI bet nil is valid here
16:53:12Araqeverything else would take up too much ram
16:54:06EXetoCok. that should be more obvious once "not nil" ends up being used
16:55:59renesacAraq, some documentation comments start with an uppercase letter, an others don't
16:56:18EXetoC:p
16:56:20renesacwhat should be the standard?
16:57:42Araqdunno
16:58:01Araqwhat is used more often in the stdlib
16:58:50renesacit seems lower case letters are used more
16:59:03dom96despite that uppercase should be used IMO
16:59:13EXetoCUppercase is correct for English last time I checked
16:59:28renesacyeah
16:59:35Araq"uses foo to build bar baz" is not a full sentence though
16:59:52Araqproc p uses foo to build baz
16:59:58Araqergo lower case
17:01:28Araqand i consider good style to not repeat the symbol's name here
17:01:34dom96No. The proc definition is not a part of the sentence.
17:01:45Araqit is imho
17:02:11dom96In most cases if you look at it that way the docs don't make sense.
17:02:25dom96'int default integer type'
17:02:33dom96'int8 signed 8bit integer type'
17:03:31EXetoCI prefer "do x" to "does x"
17:03:31renesacshould I put {.inline.} on those power of two procs?
17:03:52dom96It looks like the docs for procs work better for this.
17:04:55nequitansah, i was doing somethign stupid: clobbering my file later -- should have used sizeof(cint) rather than sizeof(int)!
17:05:07nequitansthanks for the help
17:05:31dom96But let's not worry about this for now.
17:05:47renesacyeah, latter a script can be made to homogenize that
17:10:56*foodoo joined #nimrod
17:13:12Araqnequitans: c2nim wouldn't have made this mistake :P
17:13:22Araqif you can get c2nim to eat your code, that is
17:13:37nequitanslol -- I used c2nim, but this was an 'added' piece of code
17:13:56Araqyay people use c2nim
17:14:21nequitansyea, worked pretty well!
17:14:43nequitansjust had to convert ptr FILE to TFile and a couple of minor tweaks
17:16:07AraqI should add pattern matching rules to c2nim
17:17:13Araqlike swig
17:17:43Araqspeaking of which, any volunteers for swig support? though it's likely a dead end with clang as a library
17:17:58Araqany volunteers for clang2nim?
17:19:09nequitansthat would be pretty sweet. c2nim could also serve a nice 'example-driven' tutorial on how to canonically do things you would in C in nimrod
17:19:36Araqyeah I thought about this too but unfortunately c2nim is not good enough for that
17:20:06Araqpeople expect a header translator to simply work these days. most likely because they never used one ...
17:20:38nequitansic
17:22:04fowlhow come there is no json.delete(int) or []= for int indexes
17:24:10Araqdom96: I am fixing docgen for asyncdispatch but now I get
17:24:24Araqasyncdispatch.nim(210, 22) Error: ambiguous identifier: 'TSocketHandle' -- use a qualifier
17:24:45Araqany idea why that is?
17:25:07Araqfowl: I dunno, add it
17:25:10renesachttps://github.com/Araq/Nimrod/pull/1071 <-- pull request
17:25:19renesacoh, should I add tests?
17:25:29dom96Araq: rawsockets exports TSocketHandle.
17:25:55dom96So i'm guessing it exports the posix one, and then there is an import winlean too which exports the windows version
17:26:56Araqso it doesn't use rawsockets on windows?
17:27:13Araqbut for the docgen, lol wtf
17:27:21Araqmust be in some other module
17:27:33Araqrenesac: get rid of the ; in line 86
17:27:58Araqrenesac: imho no tests necessary. how likely is it to fail again?
17:30:11Araqrawsockets always exports TSocketHandle ...
17:30:35dom96yes.
17:30:48dom96But depending on the current OS it either exports it from posix or winlean
17:30:51Araqah got it
17:31:19Araqwe need to do 'when defined(windows)' -> 'when defined(windows) or defined(nimdoc)' everywhere ... gah
17:32:24dom96Yeah...
17:32:30dom96There must be a better way...
17:35:29Araqno, there isn't
17:35:35Araqand I am done already
17:35:48EXetoCis using 'mget' to make modifications only possible for reference types?
17:36:15EXetoCt.mget(x).y = ...
17:36:38NimBotAraq/Nimrod devel b9a17dc Araq [+0 ±3 -0]: doc generation for asyncdispatch works
17:37:19Araqdom96: we only have time for brute force :P we'll think of a better solution later but I don't think there is any really
17:37:51dom96My web crawler works
17:37:56dom96But tries to request .zip files :P
17:38:00dom96from nimbuild
17:38:03AraqEXetoC: t has to modifyable for this to work
17:38:51dom96It's only 27 lines :D
17:38:53EXetoCAraq: it is, but the original table value isn't being modified
17:39:34AraqEXetoC: that's a bug then. :-/
17:39:58EXetoCAraq: for value keys too?
17:40:20EXetoCvalue objects
17:40:35Araqnot sure what you mean
17:41:06EXetoCAraq: for keys that are value objects rather than references
17:41:16Araqt.mget(x).y = z should modify t[x].y to contain z
17:41:29Araqvalue objects have nothing to say here
17:41:54EXetoCI'll make a test case when I'm done with this
17:42:29Araqping Varriount
17:48:55Skrylari was just wondering about something
17:49:10Skrylarwhy are people suddenly obsessed with voxels + geometry filters?
17:50:35Skrylari was just thinking about sauerbraten's octree algorithm again, and how if you look at it sideways it actually does a better job at modifiable maps than voxel generators do
17:53:38Skrylarprobably easier to pathfind too, since you could render the top sides of each cuboid region to a navmesh and just exclude extreme slopes
17:53:40Skrylarhmmm
17:54:22NimBotAraq/Nimrod devel 5643b84 Araq [+1 ±0 -0]: fixes #297
17:54:38AraqI love it when things have been already fixed in the meantime
17:56:08AraqSkrylar: I'm not qualified to comment on your thoughts
18:00:03dom96So this just happened: Crawling http://www.nih.at/libzip/index.html/../index.html/.. and it just kept adding '../index.html/' on and on.
18:00:35dom96Gotta love the web.
18:01:05Araqyou need a max depth
18:01:27dom96meh, too complex.
18:01:33dom96I also should request HEAD
18:01:36Araqoh
18:01:37dom96and check content-type etc
18:01:41Araqer
18:01:52AraqI think you must not add this as an example sorry
18:02:02dom96why? :(
18:02:12Araqit encourages denail of service attacks
18:02:29Araqespecially with a toy like this that has no protection at all
18:02:40dom96So you fear someone will call it a DDoS tool?
18:04:01Araqalso people are likely to try it out against nimrod-lang.org crashing our servers
18:04:21Araqthe redditors will scream and shout
18:04:22Araqlet's not do this
18:05:03dom96Ok.
18:05:10dom96I just got it to crash in gc.nim anyway...
18:05:40Araqsame bug as with async http server?
18:05:48dom96dunno
18:05:52dom96the stack trace is different
18:06:03dom96I may have a hunch as to the cause of this corruption now though
18:06:04Araqthat doesn't mean much
18:06:20dom96Because I removed a single 'await'
18:07:15dom96Executing an async proc in its place.
18:07:59dom96Maybe the GC frees the closure inside that async proc
18:08:19dom96by accident
18:08:55dom96It's hard to explain but let's not worry about it for now I guess
18:09:02dom96What example should I create then?
18:10:44Araqdunno, please fix the docgen instead
18:11:35renesachttps://github.com/Araq/Nimrod/pull/1071 <-- updated the pull request
18:12:04dom96Araq: If you can't fix it then how am I supposed to?
18:12:24Araqdom96: it's likely a new issue
18:12:38Araqsome other module now fails, I hope
18:12:48NimBotAraq/Nimrod devel b8d6994 ReneSac [+0 ±1 -0]: Zero is not a power of two. Fix #1047... 2 more lines
18:12:48NimBotAraq/Nimrod devel fd19d59 ReneSac [+0 ±1 -0]: Fix typo in previous commit.
18:12:48NimBotAraq/Nimrod devel 63503f0 ReneSac [+0 ±1 -0]: Removed trailing ';'.
18:12:48NimBotAraq/Nimrod devel 6c98814 Andreas Rumpf [+0 ±2 -0]: Merge pull request #1071 from ReneSac/devel... 2 more lines
18:17:31renesacnow bug #1047 crashes with Error: unhandled exception: isPowerOfTwo(initialSize) [EAssertionFailed]
18:17:43renesacthat is correct, but still a runtime error
18:18:38*Gr33n3gg joined #nimrod
18:19:27dom96I still feel obligated to share this crappy but cool web crawler with you guys so here it is: https://gist.github.com/dom96/10009691
18:19:27Araqyeah
18:19:34*Gr33n3gg left #nimrod (#nimrod)
18:20:14EXetoCkept alive as in keep-alive?
18:20:22Araqdom96: learn to use containsOrIncl
18:21:20Araqif url in visited # lol, sorry but it's still funny
18:21:37Araqmany pages are dynamically generated
18:21:59Araqthe only thing that works is to limit the crawling depth
18:22:17dom96EXetoC: yeah
18:23:24EXetoCnice. was it implemented recently?
18:23:35dom96yeah
18:25:50NimBotAraq/Nimrod devel 4456702 Dominik Picheta [+0 ±1 -0]: Fixes docgen.
18:25:50NimBotAraq/Nimrod devel ca9d02d Dominik Picheta [+0 ±1 -0]: Get rid of incorrect assert in asyncdispatch.
18:25:50NimBotAraq/Nimrod devel 2ace637 Dominik Picheta [+0 ±3 -0]: Documentation for async httpclient. Notes for url modules.
18:25:50NimBotAraq/Nimrod devel 8b38ddd Dominik Picheta [+0 ±1 -0]: Select implementation in selectors module compiles again.
18:26:15dom96Araq: now then, what example should I give?
18:26:20Araqdom96: your 'crawl' is recursive
18:26:34Araqwhich might be the reason for the crashes
18:27:01dom96yes, asynchttpserver is recursive too
18:27:23AraqI don't know if we can support recursive async stuff
18:27:46dom96Why not?
18:28:07Araqbecause we don't capture the full stack, remember?
18:29:08dom96Recursion is very useful though.
18:29:10Araqthe compiler disallows recursive iterators but I guess you found a way around my checks
18:29:23zaharyif I'm not mistaken, it doesn't need the stack
18:29:40zaharycalling the async function recursively creates a new instance of the resumable iterator
18:29:48dom96yeah
18:30:03Araqok, makes sense
18:30:06zaharywhen it gets yielded, it lives in the "callbacks" fields in the outstanding futures
18:30:08dom96It doesn't call the same iterator again
18:30:24*ics quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
18:31:24dom96I can get rid of the recursion in async http server pretty easily though
18:31:26dom96So i'll try it
18:31:50*ics joined #nimrod
18:31:53*ics quit (Client Quit)
18:32:12*ics joined #nimrod
18:32:13zaharydom96: this example is already pretty impressive, but you should try to make it parallel too
18:32:34dom96zahary: You mean introduce threads?
18:33:11zaharyno, you need to composed futures; the simples example is the "await download1 & download2" from my original gist
18:33:40dom96That's what the call to 'crawl' without an 'await' prefix accomplishes.
18:33:45zaharybut a more complete version is to await a sequence of futures (this means that the code is suspended until all of the futures complete)
18:34:36zaharyhmm, you are right - you need the serial processing in order to not fool the servers otherwise (when it's the same url)?
18:34:54dom96yes
18:34:54zahary* same host *
18:34:59dom96Exactly.
18:35:22zaharyok, I see, but still the combinators I describe are really useful
18:35:52dom96Indeed. They should be pretty trivial to implement.
18:35:59EXetoCwill keep-alive pooling be easy to implement?
18:36:34dom96I would like what I have now to work before worrying about adding sugar like that.
18:36:40EXetoCsure
18:37:50dom96You mean storing a list of http clients based on the host they are connected to and routing the requests to the correct ones?
18:38:23*zezba9000 left #nimrod (#nimrod)
18:41:02*OrionPK quit (Ping timeout: 268 seconds)
18:41:37EXetoCjust a list of hosts encountered, so that keep-alive doesn't only if the host is the same as the previous one
18:42:17EXetoC*doesn't work
18:42:31EXetoCor maybe it's not that simple, but it seems like it
18:44:01*OrionPK joined #nimrod
18:44:10dom96i'm not sure what you mean. If you do client.request("nimrod-lang.org") and then client.request("nimrod-lang.org/blah.html") then a new connection will not be created.
18:44:13*vendethiel quit (Remote host closed the connection)
18:44:33dom96But if the second request is to say google.com then the old connection to nimrod-lang.org will be terminated.
18:44:36EXetoCand if you visit another host inbetween?
18:44:52dom96still terminated
18:45:31EXetoCyeah you just said that. the Requests library manages this automatically
18:46:02dom96It seems that getting rid of the recursion doesn't change much
18:47:33dom96EXetoC: We partially manage it then :P
18:47:55*vendethiel joined #nimrod
18:48:05EXetoCso that'd just be session.get rather than get in Requests
18:48:15EXetoCI guess
18:48:38dom96It should be easy to write a session lib on top of httpclient
18:48:55Araqdom96: what came out of the ENDB session?
18:49:08dom96Too much output came out
18:49:33AraqI see
18:49:52AraqI guess I need to implement stack trace sets
18:50:22dom96Araq: So what example should I make then?
18:51:02Araqjust use some nosql database that happens to run over http
18:51:37Araqcouchdb does that iirc
18:51:41dom96meh
18:51:53dom96I don't feel like researching things for this
18:51:57Araqhey, it shows how useful this really is
18:53:30dom96Maybe I should create some simple command server?
18:53:46dom96with some silly commands like "add 5 5"
18:54:23dom96actually
18:54:30dom96I'll create a simple chat server
18:56:19Araqok
18:59:11EXetoCwee fixes
19:00:53AraqEXetoC: how come extracting a small example program from #919 is so hard?
19:01:02AraqI thought I got it
19:01:25Araqyou iterate over an empty set, empty known at compiletime
19:01:59EXetoCno idea. I don't think I could reproduce it
19:04:12Araqer ...
19:04:33Araqyou do set[TCursorOpts] where TCursorOpts is alreay bitset'ish
19:04:41Araqin other words the enum has holes
19:04:53Araqthe compiler should catch that
19:07:17dom96Araq: https://gist.github.com/dom96/10010212
19:07:30EXetoCI don't know why the enumerators matter, and not just the enumerator, whose base type is an integer
19:07:41Araqdom96: excellent
19:07:41dom96Just realised that exceptions are a big problem ...
19:08:11EXetoCbut there's a range limit, right? so maybe I should use TSet
19:08:22dom96But we'll worry about that some other time.
19:08:27Araqno you should fix your types, EXetoC
19:08:38Araqwill tell you how later
19:10:58dom96Araq: I fear many people will try this and then i'll get all the blame when it fails :(
19:11:11Araqdom96: exactly
19:11:44dom96What you mean "exactly"?
19:11:57Araqyou will get all the blame
19:12:19dom96But I don't want all the blame.
19:12:41Araqnow you know why we have a showoff directory in tests/
19:13:05dom96Should I not mention it then?
19:13:38Araqnah, ensure it works, ensure I tested it both on linux and windows and you'll be fine and I take the blame
19:18:43*dom96 makes 'experimental' bold in the release notes :P
19:27:38fowlmonthly point releases plz
19:28:09Araqyou mean 0.9.4.x fowl ?
19:28:44fowlyea
19:29:41fowlim having a problem with () matching locals instead of functions
19:30:58fowlpoint2d(x,y).p is matching the local p instead of a function
19:31:36Araqbug report
19:33:09dom96Adding another dot is a bad idea I think.
19:33:43dom96Appending the date may be better.
19:36:00Araqno that's worse
19:36:10Araqwe might as well give up and only use the date then
19:36:35dom96yeah
19:37:06dom96Is the ```nimrod code block syntax not supported for whatever generates the .html for the website?
19:39:02fowlhttps://github.com/Araq/Nimrod/issues/1072
19:40:54Araqdom96: no thats markdown
19:41:05*Matthias247 joined #nimrod
19:41:09Araqthe website uses rst
19:41:32dom96Would be nice if the doc gen supported this syntax too
19:42:25AraqI disagree
19:43:02*OrionPK quit (Ping timeout: 252 seconds)
19:44:24*BitPuffin joined #nimrod
19:44:31NimBotAraq/Nimrod devel f53c318 Dominik Picheta [+0 ±6 -0]: Updates docs and news.
19:44:50dom96Araq: Take a look at news.txt
19:48:23Araqlater
19:50:33*BitPuffin quit (Ping timeout: 252 seconds)
19:58:33*ics quit (Ping timeout: 240 seconds)
20:00:03*ics joined #nimrod
20:01:57Araqzahary: have you looked at the exponential explosion?
20:03:44zaharynot yet, I'm busy reading some work-related stuff
20:04:46Araqit's sunday night ...
20:05:03Araqplus reading is overrated :P
20:07:07Skrylari still use asciidoc :B
20:07:19*nande quit (Remote host closed the connection)
20:07:30Skrylarit has plugs that make the [source,nimrod] blocks actually colorized
20:07:46Araqlol
20:07:50AraqQ. What do you call a beautiful woman in Ireland?
20:07:51AraqA. A tourist.
20:07:53AraqXD
20:07:55Skrylar:<
20:10:10NimBotAraq/Nimrod devel 20afe8e Araq [+11 ±1 -11]: fixes #798
20:10:10NimBotAraq/Nimrod devel 99fb0c1 Araq [+0 ±13 -0]: Merge branch 'devel' of https://github.com/Araq/Nimrod into devel
20:11:12dom96Araq: What is the reason we include libzip_all.c?
20:11:27Araqthe alternative doesn't work on my linux iirc
20:11:46AraqI could install the package on my linux but my package manager is broken ...
20:11:53Araqand I never find the time to fix it
20:12:01dom96A package for fedora will likely not be accepted unless we get rid of that .c file
20:12:06Araqhey
20:12:15Araqwe did get rid of that file for fedora
20:12:26Araqthere is some -d:option to activate the .c file
20:13:03*nande joined #nimrod
20:13:38Araqpersonally I consider it a feature to not be listed on OSes that care more about some weird notion of "correctness" than about being useful but it's a lost fight
20:14:09dom96Alright.
20:14:31AraqI guess I should blog about it, "programmer's common misconceptions"
20:15:53*nande quit (Remote host closed the connection)
20:16:34*BitPuffin joined #nimrod
20:17:38*Araq wonders if a programmer throws away his phone when he gets a busy signal
20:18:51Araqwhy are the term rewriting macro bugs the easiest to fix for me?
20:19:37Araqwe should use term rewriting for everything
20:29:00*vendethiel quit (Read error: Connection reset by peer)
20:29:27*vendethiel joined #nimrod
20:32:15*Mat3 joined #nimrod
20:32:18Mat3hi all
20:35:17*[2]Endy quit (Ping timeout: 252 seconds)
20:38:58*zahary1 joined #nimrod
20:39:20*noam__ joined #nimrod
20:40:42*Puffin joined #nimrod
20:41:38*nande joined #nimrod
20:42:03*silven_ joined #nimrod
20:42:23NimBotAraq/Nimrod devel 66945f8 Dominik Picheta [+0 ±3 -0]: Selectors module now uses select on operating systems other than Linux.
20:43:22dom96Araq: Seems the crash doesn't happen on Linux.
20:46:52*Puffin quit (Ping timeout: 246 seconds)
20:48:18*fowl quit (*.net *.split)
20:48:19*Raynes quit (*.net *.split)
20:48:19*silven quit (*.net *.split)
20:48:20*BitPuffin quit (*.net *.split)
20:48:22*noam_ quit (*.net *.split)
20:48:23*zahary quit (*.net *.split)
20:48:24*comex quit (*.net *.split)
20:49:30*Raynes joined #nimrod
20:49:34Araqhey ho Mat3
20:49:43Araqwhere are mat1 and mat2?
20:49:45*Raynes quit (Changing host)
20:49:45*Raynes joined #nimrod
20:49:46Mat3hi Araq
20:50:20Mat3some other IRC users use them
20:50:37Mat3I mean the nick names
20:50:57AraqI see
20:55:12*comex joined #nimrod
20:55:55*fowl joined #nimrod
20:57:28Araqping Varriount
20:58:11EXetoCany planned feature that won't make it into the next release?
20:58:42Araqno, but the features we have for 0.9.4 are all buggy
20:58:55EXetoC:>
20:59:44AraqI just hope we get all features for 1.0 by the end of this year and then it will only be 1 year of bugfixes left :P
21:00:12Araqbut then working on new stuff is always MUCH more fun than fixing bugs
21:00:25Araqit's a hard problem and especially for open source
21:01:16Araqalso I think github's bug tracker sucks
21:01:45Araqit shouldn't list RFCs and feature requests as issues
21:01:45Mat3well, then its time for a feature freeze and concentration on bug fixing
21:02:01AraqMat3: that's what we're doing for months already
21:02:24Araqwe're all tired of doing that, we need a new round of adding features
21:03:13Araqwell just to be clear we want to release tonight but Varriount is missing
21:04:14*Puffin joined #nimrod
21:04:22EXetoCPuffin: morning
21:04:52Araqhi Puffin. are you bitpuffin or easy_muffin?
21:05:13EXetoCbitpuffin
21:05:21Mat3hi BitPuffin
21:05:22Araqssshhhtt
21:05:38EXetoCassuming that [email protected] isn't occupied by anyone else
21:05:43NimBotAraq/Nimrod devel 1643e35 Dominik Picheta [+0 ±2 -0]: setLen now used on asyncdispatch.recv's return value on Linux.... 2 more lines
21:06:24Mat3ned some sleep, ciao
21:06:35*Mat3 quit (Quit: Verlassend)
21:07:54Araqfowl: congrats I consider bug #1063 scary enough to make it showstopper
21:11:53*OrionPK joined #nimrod
21:12:26*Puffin quit (Ping timeout: 246 seconds)
21:23:35*foodoo quit (Quit: Lost terminal)
21:55:55OrionPKwhats this on devel (osx) : lib/pure/selectors.nim(17, 14) Error: undeclared identifier: 'TSocketHandle'
21:56:07*Demos joined #nimrod
21:56:35AraqI think selectors lacks a macosx implementation
21:57:11OrionPKlooks like
21:57:33dom96indeed, but the select implementation should work
21:57:41dom96fix it if you can please
21:57:43dom96brb
21:57:54OrionPKdont have time today
21:58:14Araqor maybe we need to finally admit that 3 OSes are 2 too many
21:59:00Araqand that it is religion and not technical reasons that keep all 3 alive
21:59:21OrionPKwhich should we all use?
21:59:33AraqNimOs. Built to resist.
22:05:06EXetoCif we can just get 1-2 devs to work on it full-time for a year
22:06:38*OrionPK quit (Ping timeout: 253 seconds)
22:06:39EXetoCgenerating source code is so fun
22:10:38*Matthias247 quit (Ping timeout: 255 seconds)
22:12:48EXetoCcan importc string patterns do "fooBar" -> "glFooBar"?
22:17:09AraqEXetoC: yes.
22:17:46Araqanother good option is MongoOS which makes you type in JSON instead of paths seperated by /
22:21:22NimBotAraq/Nimrod devel fdabf69 Dominik Picheta [+0 ±1 -0]: Fixes selectors module on Mac OS X.
22:22:26dom96Let's just make an OS where each application communicates with the OS via JSON.
22:22:50Araqthat's called the "internet" and already exists :P
22:27:11EXetoCAraq: ok, how?
22:27:33AraqEXetoC: importc: "prefix_$1"
22:29:43EXetoCI didn't think anything other than $1 would be expanded
22:33:21AraqEXetoC: want to learn how to fix your mongo wrapper?
22:34:23EXetoCwhich it has to since it needs to modify the case of one of the characters, but I'll try it soon
22:34:49EXetoCAraq: By introducing another enumeration?
22:35:08EXetoCone without any holes
22:35:23EXetoCbut then you might as well just use TSet, right? so what did you have in mind?
22:35:57Araq TupdateOpts* = enum
22:35:59Araq UPDATE_UPSERT = 0x00000001,
22:36:00Araq UPDATE_MULTI = 0x00000002,
22:36:02Araq UPDATE_BASIC = 0x00000004
22:36:03Araq-->
22:36:33AraqTUpdateOpt* = enum UpdateUpsert, UpdateMulti, UpdateBasic
22:36:52AraqTUpdateOpts* = set[TUpdateOpt]
22:37:28Araqfor this the binary representation of the set will produce exactly the right values as UPDATE_UPSERT == 1 shl 0
22:37:43Araq TCursorOpts* = enum
22:37:45Araq coTailable = 1 shl 1, ## Create a tailable cursor.
22:37:46Araq coSlaveOk = 1 shl 2, ## Allow queries on a non-primary node.
22:37:48Araq coNoTimeout = 1 shl 4, ## Disable cursor timeouts.
22:37:49Araq coAwaitData = 1 shl 5, ## Momentarily block for more data.
22:37:51Araq coExhaust = 1 shl 6, ## Stream in multiple 'more' packages.
22:37:52Araq coPartial = 1 shl 7 ## Allow reads even if a shard is down.
22:37:54AraqHere is is harder but still solvable:
22:38:11*Matthias247 joined #nimrod
22:38:45AraqTCursorOpt = enum coReserved1, coTailable, coSlaveOk, coReserved2, coNoTimeout, coAwaitData, coExhaust, coPartial
22:38:57AraqTCursorOpts = enum[TCursorOpt]
22:39:05*BitPuffin joined #nimrod
22:39:07Araqnote how I use coReserved
22:39:15Araqto make it binary compatible
22:40:24*io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist)
22:48:02EXetoCok so just treat the set as an integer?
22:48:20Araqthe set is compiled to an integer
22:49:37AraqI made it binary compatible so that no mapping between nim and mongo is necessary
22:50:36*BitPuffin quit (Ping timeout: 255 seconds)
22:50:48EXetoCyeah but you just need to cast it
22:51:30Araqhu?
22:51:42Araqwhere do you need to cast it?
22:51:53Araqyou simply change the original prototypes :P
22:51:59Araqno casting is necessary
22:53:48EXetoCyeah fine
22:58:49*Demos quit (Ping timeout: 246 seconds)
22:59:29EXetoCAraq: so can I modify the first character of $1? I'd have to do that too
22:59:57Araqunfortunately not
23:00:05Araqwe need better subexes
23:01:17Araqgl$(capitalize(1))
23:01:40Araqthere are only a couple of operations we need
23:02:10Araqcaptialize, capitalizeAddUnderscores, ...
23:02:29Araqsomebody needs to come up with a cute syntax for it
23:08:25*darkf joined #nimrod
23:10:32VarriountAraq: You wanted me?
23:10:47Araqah!
23:10:52AraqVarriount: is here, dom96
23:10:57VarriountSorry, I was asleep.
23:11:07Araqexcuses ...
23:12:07dom96well we won't be releasing /now/, surely.
23:12:45Araqwhy not?
23:12:58Araqthe last show stopper bug turns out to be too hard
23:13:34dom96because i'm sleep deprived
23:13:52Araqcome on
23:14:03dom96what about your news.txt changes?
23:14:15AraqI'm drunk but I don't consider that a hindrance
23:15:32dom96another reason to wait :P
23:16:04*Demos joined #nimrod
23:18:25AraqVarriount: we're ready to release when you are
23:19:02VarriountOk. I'd like a chance to test the installers on a vm, but other than that, I should be ready.
23:19:17VarriountWhat branch do you want used for the installers?
23:19:37Araqdevel needs to merged into master, so master
23:19:53dom96what about your news.txt changes?
23:19:57VarriountOk. Tell me when it's merged.
23:20:12Demosso making static[T] work correctly is for 0.9.6 then? (I am fine with that)
23:20:50AraqDemos: yup
23:25:04*Matthias247 quit (Read error: Connection reset by peer)
23:29:49*xenagi joined #nimrod
23:30:13VarriountHm. How would one efficiently create a pipeline of iterators that takes advantage of CPU caches?
23:35:56Demoswell what are the iterators doing? do you mean changeing the order you execute stuff to optimize for cache?
23:36:30VarriountI dunno, I'm just openly wondering.
23:37:46VarriountI keep reading these articles on how important it is to be cache-conscious when programming.
23:39:01xenagi^
23:39:31EXetoCalways depends of course
23:42:19VarriountAraq, dom96: As soon as you give me the ok, I'll generate installers based on the master branch, and test them.
23:43:43dom96hey xenagi
23:44:02xenagihey
23:44:11dom96Varriount: My todo for this release is complete, so you have my OK.
23:44:15Demosanyone know if there is a typeclass for things I can memcpy around?
23:44:28dom96Although would be great if someone could test my async stuff on Mac OS X.
23:44:32Varriountdom96: Yeah, but has master been merged?
23:44:50dom96Varriount: No. Wait until Araq gives you his OK :)
23:50:34*supporters joined #nimrod
23:50:44VarriountHello supporters
23:50:49EXetoChow did I misuse void now? >.< Error: internal error: getTypeDescAux(tyEmpty)
23:55:20EXetoCptr void
23:55:48EXetoCreported? I found one reference in an IRC log
23:56:18VarriountI thought a void pointer in nimrod was just a cast to an int. :/
23:56:30Araquse pointer instead of ptr void
23:56:42dom96Yeah, I think I reported that.
23:56:54Araqhi supporters welcome
23:56:59EXetoCI know
23:57:03EXetoCok good