| 00:00:09 | flaviu | nimnoob: profile later, you're probably fine. | 
| 00:00:20 | nimnoob | :) | 
| 00:00:26 | * | Demos quit (Ping timeout: 258 seconds) | 
| 00:03:26 | * | Demos joined #nim | 
| 00:06:23 | Stefan_Salewski | I guess something like one {.push cdecl.} in wrappers to save many cdecl pragmas are not a good idea or does not work at all? Just to be sure. | 
| 00:06:51 | flaviu | Stefan_Salewski: It does work. | 
| 00:07:26 | flaviu | Don't get any type declarations mixed up with your functions though, that causes errors. | 
| 00:08:51 | willwillson | flaviu: for your nimlets page, would it be wise to make clear what license the snippets are under? | 
| 00:09:20 | flaviu | willwillson: I do in the github repo, but excellent point. I'll do that. | 
| 00:10:54 | willwillson | sounds good, nice work by the way! | 
| 00:11:45 | flaviu | Thanks! | 
| 00:13:37 | * | brson joined #nim | 
| 00:14:38 | Araq | Stefan_Salewski, flaviu   it's {.callConv: cdecl.},  {.push: cdecl.} only affects proc and not proc types iirc | 
| 00:15:00 | Araq | as I said, .push has its gotchas | 
| 00:16:01 | * | onionhammer joined #nim | 
| 00:27:27 | * | cir0x joined #nim | 
| 00:27:30 | Stefan_Salewski | Thanks Araq. I was not aware of callConv pragma. But I will provide each proc with its own cdecl pragma, to be on the save side. It is some work... | 
| 00:28:08 | flaviu | Stefan_Salewski: use sed or perl? | 
| 00:28:12 | Araq | Stefan_Salewski: no, just wait until I fixed c2nim | 
| 00:31:01 | Stefan_Salewski | Yes, sed or perl, or ruby. But the patterns to match is not very simple, maybe multiple () levels may be involved? I am not absolutely sure. | 
| 00:33:03 | Stefan_Salewski | Araq: Indeed a fixed c2nim may generate more trouble for me now, because all automatic processing after c2nim call may not work when output of c2nim is different... | 
| 00:33:22 | * | nimnoob quit (Ping timeout: 246 seconds) | 
| 00:33:23 | Stefan_Salewski | But of course It would be grat if you can fix c2nim! | 
| 00:34:31 | Araq | well ... you should have started with patching c2nim :P | 
| 00:35:24 | * | Trustable quit (Quit: Leaving) | 
| 00:35:25 | fowl | write it by hand | 
| 00:35:30 | flaviu | Stefan_Salewski: Piece of cake! | 
| 00:35:31 | flaviu | perl -p -i -e 's/(proc[\s\S]*)=\s*$/\1 {.cdecl.} =/g' ./test.nim | 
| 00:35:38 | * | Trustable joined #nim | 
| 00:36:01 | Stefan_Salewski | My current wrappers are at https://github.com/stefansalewski -- and locally I have gdk3 and gtk3. All will need some work still... | 
| 00:37:25 | fowl | cairo and glib wrappers already exist | 
| 00:38:16 | Stefan_Salewski | Fowl: I did gtk3 in summer and noticed that a lot is missing from glib, cairo and others... | 
| 00:39:04 | * | Demos_ joined #nim | 
| 00:39:18 | flaviu | Stefan_Salewski: How does that perl command work? | 
| 00:39:38 | Stefan_Salewski | But of course the old existing wrappers are helpful... | 
| 00:39:55 | flaviu | Opps, I messed up slightly. `perl -p -i -e 's/(proc[\s\S]*?)=\s*$/\1 {.cdecl.} =/g' ./test.nim` | 
| 00:39:57 | willwillson | what does c2nim miss with the --cdecl switch by the way? | 
| 00:40:29 | Araq | willwillson: apparently proc type definitions | 
| 00:41:49 | Stefan_Salewski | Thanks flaviu, I will test it. | 
| 00:42:22 | flaviu | Stefan_Salewski: I misunderstood, I need to modify it for proc types | 
| 00:42:25 | * | Demos quit (Ping timeout: 255 seconds) | 
| 00:43:19 | Stefan_Salewski | flaviu: Dont worry, I will fix it myself... | 
| 00:43:58 | Araq | Stefan_Salewski: hrm, --cdecl for me also affects proc types | 
| 00:44:11 | willwillson | yeah, I just tested that as well | 
| 00:44:15 | willwillson | and seems to work | 
| 00:45:39 | willwillson | I also can see stefan using the --cdecl switch or the #cdecl directive in his scripts ;-) | 
| 00:45:53 | willwillson | can't* | 
| 00:48:24 | * | bjz joined #nim | 
| 00:48:46 | Araq | willwillson: we simply need MOAR docs that people then happily ignore ;-) | 
| 00:50:16 | Stefan_Salewski | Oh, I guess I did indeed miss the --cdecl parameter for c2nim. Sorry :-( | 
| 00:50:27 | flaviu | Araq: Sounds like we need docs that are harder to ignore | 
| 00:50:46 | flaviu | perhaps if they were more pleasant to use... | 
| 00:51:17 | Araq | flaviu: yeah I guess your point is valid | 
| 00:52:48 | Araq | Stefan_Salewski: however,  callConv:cdecl  does work reliably and reduces the noise | 
| 00:52:49 | Stefan_Salewski | I did define my own pragma in the module like {.pragma: libgobj, cdecl, dynlib: LIB_GOBJ.} but forgot the --cdecl parameter to c2nim then... | 
| 00:53:19 | Stefan_Salewski | That is nice. | 
| 00:53:33 | willwillson | at least you scripted it all :D | 
| 00:54:19 | Stefan_Salewski | But what will happen when the wrapper file contains same small Nim procs also? Maybe to simulate C define macros? | 
| 00:54:27 | flaviu | Stefan_Salewski: Sorry, I couldn't resist. `perl -p -i -e 's/(proc\s*(?:(?!\)\s*:\s*[a-zA-Z0-9_{}.]+$|\)\s*$)[\S\s])*?\)\s*:?\s*[a-zA-Z0-9_]*\s*?)$/\1 {.cdecl.}/gm' ./test.nim` should work on proc types. | 
| 00:54:53 | Stefan_Salewski | Thanks flaviu. | 
| 00:55:20 | Araq | Stefan_Salewski: so they will be cdecl then, but that does no harm | 
| 00:55:59 | Stefan_Salewski | Fine. | 
| 01:00:55 | Araq | guys I updated the website again, please give some feedback | 
| 01:02:47 | flaviu | Araq: The transition speed on `.headlinks a` is different from that on `.headlinks .active` | 
| 01:03:29 | Araq | no idea what that means | 
| 01:03:56 | flaviu | Araq: mouse over the header links | 
| 01:04:16 | Araq | yes, afaict that's a feature | 
| 01:04:28 | Araq | there is some special-casing in the javascript | 
| 01:04:42 | Araq | no idea why it is here, it's filwit's code | 
| 01:04:47 | EXetoC | the snippets sometimes go below that blue line | 
| 01:04:49 | flaviu | Javascript shouldn't be necessary for that anyway, but ok. | 
| 01:04:56 | willwillson | http://nimrod-lang.org/community.html still has too many links at the top | 
| 01:05:41 | flaviu | A templating library for nim is sorely needed. | 
| 01:07:00 | willwillson | also, your gittip link seems to be cut off (on the same page) | 
| 01:07:22 | willwillson | granted, most people don;t make it down that far ;-) | 
| 01:07:41 | flaviu | Also, the gittip link makes noscript think that I'm being clickjacked | 
| 01:07:44 | Araq | willwillson: the "hidden tabs" are a feature ... | 
| 01:07:58 | Araq | EXetoC: they don't for me | 
| 01:08:31 | willwillson | Araq: you mean the home link that gets hidden behind the logo? :D | 
| 01:08:48 | Stefan_Salewski | Sorry, on more question: Is it {.push callconv: cdecl.} as used in https://github.com/fowlmouth/nimrod-sfml/blob/master/csfml.nim | 
| 01:09:02 | Araq | willwillson: doesn't for me, but I guess font size can fuck up everything | 
| 01:10:47 | EXetoC | behind the logo? | 
| 01:11:04 | EXetoC | maybe if the font size is like 128 | 
| 01:11:23 | willwillson | on http://nim-lang.org/community.html ? | 
| 01:12:09 | EXetoC | almost for me | 
| 01:12:15 | Araq | nope, always renders nicely on FF at least | 
| 01:12:15 | EXetoC | but it is closer than on the main page | 
| 01:12:30 | Araq | EXetoC: yes because there is one tab more | 
| 01:12:41 | EXetoC | yeah | 
| 01:12:51 | willwillson | overlaps on chromium and firefox for me | 
| 01:13:04 | Araq | well if anybody has a better idea, I'm all ears | 
| 01:13:07 | willwillson | default font size (as far as I know) | 
| 01:13:10 | Araq | we have too many tabs | 
| 01:13:28 | EXetoC | and not for me on firefox | 
| 01:14:59 | EXetoC | do you not let the page use any font? | 
| 01:15:30 | * | repax quit (Quit: repax) | 
| 01:15:50 | willwillson | as far as I know I haven't changed any settings | 
| 01:16:21 | willwillson | you could get rid of the community tab as it is also in "more links"? | 
| 01:19:37 | Stefan_Salewski | Araq wrote:  it's {.callConv: cdecl.},   -- or {.push callconv: cdecl.} as used in https://github.com/fowlmouth/nimrod-sfml/blob/master/csfml.nim | 
| 01:20:01 | Stefan_Salewski | Sorry can not test. | 
| 01:20:15 | Araq | willwillson: it's not in the list of tabs | 
| 01:20:23 | Araq | unless you are on that very page | 
| 01:20:37 | Araq | because I considered "no active tab at all" more confusing | 
| 01:20:48 | willwillson | I see | 
| 01:20:59 | EXetoC | it's odd | 
| 01:22:01 | * | flaviu quit (Ping timeout: 265 seconds) | 
| 01:24:09 | * | flaviu joined #nim | 
| 01:26:14 | Araq | Stefan_Salewski: use the .push version | 
| 01:26:33 | Stefan_Salewski | Thanks. | 
| 01:30:31 | Varriount | It's too bad we can't give the method machinery the option to use vtables | 
| 01:31:28 | Varriount | Araq: What's the benefit of the current method mechanism, besides not requiring a vtable pointer in the target type? | 
| 01:31:41 | Demos_ | Varriount, multiple dispatch | 
| 01:31:46 | Araq | ease of implementation | 
| 01:31:52 | Demos_ | so it dispatches on the "real" dynamic type of each object | 
| 01:32:08 | Demos_ | without requiring insane visitor stuff | 
| 01:32:33 | Varriount | Demos_: Yes, but can't vtables do that as well? | 
| 01:32:49 | Varriount | Also, 'visitor stuff'? | 
| 01:32:50 | Demos_ | Varriount, not as far as I know, at least not without the visitor pattern | 
| 01:33:03 | Demos_ | visitor gets you multiple dispatch from single dispatch | 
| 01:33:08 | Araq | meh, vtables can do it, but's quite tricky | 
| 01:33:23 | Demos_ | but it is a nonlinear growth in code for each additional type to dispatch on | 
| 01:33:36 | Demos_ | Araq, does any language do it? | 
| 01:33:47 | Varriount | What about dispatch tables? | 
| 01:34:13 | Araq | what's your difference between vtable and dispatch table? | 
| 01:34:40 | Varriount | Nothing, I thought, from what demos said, that they were different things. | 
| 01:35:00 | Araq | Demos_: some impls of common lisp perhaps | 
| 01:36:39 | Varriount | Hm. I don't see what's so insane about dispatch tables. | 
| 01:39:13 | * | Trustable quit (Quit: Leaving) | 
| 01:40:33 | Araq | well I'll improve the website if you tell me how | 
| 01:40:36 | Araq | good night | 
| 01:40:43 | * | cir0x quit (Ping timeout: 244 seconds) | 
| 01:42:45 | Varriount | Hm. Is it possible to modify enums while maintaining backwards compatibility? | 
| 01:46:25 | * | elvispresley- quit (Ping timeout: 250 seconds) | 
| 01:56:32 | * | cyraxjoe joined #nim | 
| 01:57:40 | Varriount | Hello cyraxjoe | 
| 01:57:51 | cyraxjoe | Hi! | 
| 02:16:26 | * | elvispresley- joined #nim | 
| 02:18:55 | * | ARCADIVS quit (Quit: ARCADIVS) | 
| 02:19:32 | * | cir0x joined #nim | 
| 02:22:16 | * | Stefan_Salewski quit () | 
| 02:22:42 | * | darkf joined #nim | 
| 02:32:40 | onionhammer | varriount you ready to get back on nimlime again and get a new release out yet? | 
| 02:46:48 | * | cir0x quit (Ping timeout: 258 seconds) | 
| 02:56:30 | Demos_ | I should work on VisualNimrod over break | 
| 03:17:38 | ldlework |  | 
| 03:29:10 | * | bjz quit (Read error: Connection reset by peer) | 
| 03:29:32 | * | bjz joined #nim | 
| 03:39:11 | * | Varriount_ joined #nim | 
| 03:39:33 | * | Varriount quit (Ping timeout: 244 seconds) | 
| 03:41:41 | * | vegai joined #nim | 
| 04:01:26 | * | quasinoxen joined #nim | 
| 04:03:38 | onionhammer | Demos_ yes you should ;0 | 
| 04:17:31 | * | saml_ joined #nim | 
| 04:20:16 | * | dts|pokeball joined #nim | 
| 04:20:23 | * | willwillson quit (Ping timeout: 265 seconds) | 
| 04:21:06 | dts|pokeball | so does nim have a subreddit? | 
| 04:32:22 | Demos_ | yes, but it is not that active, the fora are where people tend to go | 
| 04:37:52 | dts|pokeball | hmmm | 
| 04:37:58 | dts|pokeball | my bot isnt working :/ | 
| 04:39:22 | dts|pokeball | if anyone whos familiar with the db_sqlite module could look at my http://paste.ubuntu.com/9510958/ when i do ,credit nothing happens | 
| 04:39:25 | dts|pokeball | for example: | 
| 04:39:36 | * | BillsPC joined #nim | 
| 04:39:44 | dts|pokeball | ,credit dts|pokeball | 
| 04:42:23 | dts|pokeball | ,join #cplusplus.com | 
| 04:43:34 | flaviu | dts|pokeball: Try using a debugger or a bunch of print statements | 
| 04:43:50 | dts|pokeball | hmmm... alright | 
| 04:44:15 | dts|pokeball | ,join #learnmath | 
| 04:59:26 | * | flaviu quit (Ping timeout: 258 seconds) | 
| 05:01:52 | dts|pokeball | ,part #nim | 
| 05:01:53 | * | BillsPC left #nim (#nim) | 
| 05:20:48 | * | alphawaffle joined #nim | 
| 05:21:30 | * | AMorpork quit (Quit: ZNC - http://znc.in) | 
| 05:21:59 | * | AMorpork joined #nim | 
| 05:32:13 | * | saml_ quit (*.net *.split) | 
| 05:32:14 | * | Varriount_ quit (*.net *.split) | 
| 05:32:14 | * | darkf quit (*.net *.split) | 
| 05:32:15 | * | dts|pokeball quit (*.net *.split) | 
| 05:32:15 | * | Sembei quit (*.net *.split) | 
| 05:32:17 | * | Demos_ quit (*.net *.split) | 
| 05:32:18 | * | Triplefox quit (*.net *.split) | 
| 05:32:41 | * | alphawaffle is now known as betawaffle | 
| 05:34:53 | * | saml_ joined #nim | 
| 05:39:13 | * | shodan45_ joined #nim | 
| 05:39:13 | * | Demos_ joined #nim | 
| 05:39:13 | * | Triplefox joined #nim | 
| 05:41:16 | * | voldern1 joined #nim | 
| 05:41:34 | * | shodan45_ quit (Remote host closed the connection) | 
| 05:42:04 | * | shodan45_ joined #nim | 
| 05:43:11 | * | cir0x joined #nim | 
| 05:48:21 | * | dts|pokeball joined #nim | 
| 05:48:21 | * | Varriount_ joined #nim | 
| 05:48:21 | * | darkf joined #nim | 
| 05:48:21 | * | Sembei joined #nim | 
| 05:48:23 | * | cir0x quit (Ping timeout: 272 seconds) | 
| 05:49:42 | * | Sembei quit (Max SendQ exceeded) | 
| 05:51:47 | * | Sembei joined #nim | 
| 05:53:55 | ldlework | guys, why am I getting qix.nim(52, 26) Error: ambiguous identifier: 'TRect' -- use a qualifier | 
| 05:53:59 | ldlework | https://gist.github.com/dustinlacewell/187458538f284d1afb53 | 
| 05:54:03 | ldlework | how is it ambiguous? | 
| 05:58:18 | * | comex joined #nim | 
| 05:59:28 | * | comex quit (*.net *.split) | 
| 05:59:29 | * | Varriount_ quit (*.net *.split) | 
| 05:59:29 | * | darkf quit (*.net *.split) | 
| 05:59:29 | * | dts|pokeball quit (*.net *.split) | 
| 06:00:09 | * | saml_ quit (Quit: Leaving) | 
| 06:00:38 | * | comex joined #nim | 
| 06:00:38 | * | dts|pokeball joined #nim | 
| 06:00:38 | * | Varriount_ joined #nim | 
| 06:00:38 | * | darkf joined #nim | 
| 06:12:27 | * | brson quit (Quit: leaving) | 
| 06:51:54 | fowl | sdl has a trect also | 
| 06:55:01 | fowl | oh idk | 
| 06:58:28 | * | shodan45_ quit (Quit: Konversation terminated!) | 
| 07:03:36 | * | gour joined #nim | 
| 07:08:30 | * | flaviu joined #nim | 
| 07:08:31 | * | RayoGundead joined #nim | 
| 07:09:49 | * | RayoGundead quit (Client Quit) | 
| 07:17:17 | * | starless joined #nim | 
| 07:52:08 | * | Demos_ quit (Read error: Connection reset by peer) | 
| 08:10:42 | ldlework | When you have a type it says you cannot call that type what does it mean? | 
| 08:10:43 | ldlework | Error: expression 'Line' cannot be called | 
| 08:10:53 | ldlework | how else do you create an instance of your type? | 
| 08:18:38 | ldlework | ah you have to specify each field name explicitly | 
| 08:19:24 | * | milosn joined #nim | 
| 08:25:57 | * | EastByte joined #nim | 
| 09:37:31 | * | yeye123 joined #nim | 
| 09:40:06 | ldlework | you use addr() to get a ptr | 
| 09:40:09 | ldlework | how do you get a ref | 
| 09:40:14 | ldlework | oh right | 
| 09:40:20 | * | starless quit (Quit: WeeChat 0.4.2) | 
| 09:40:35 | * | Matthias247 joined #nim | 
| 09:52:37 | Araq | ldlework: you can't. you 'new' a ref. there is no other way to get a 'ref'. This way the compiler/GC always knows a 'ref' is on the heap | 
| 09:53:07 | Araq | and it also cannot be an interior pointer | 
| 10:05:34 | * | BlaXpirit joined #nim | 
| 10:13:10 | yeye123 | moin | 
| 10:13:28 | Araq | servus | 
| 10:53:46 | dts|pokeball | does nim not have a regex module? | 
| 10:54:16 | * | milosn quit (Read error: Connection reset by peer) | 
| 10:55:09 | * | milosn joined #nim | 
| 10:58:35 | * | Boscop joined #nim | 
| 11:03:18 | ldlework | dts|pokeball: there is peg | 
| 11:03:53 | dts|pokeball | hmmm... can i use it for basic string parsing? | 
| 11:20:20 | Varriount_ | dts|pokeball: Yep | 
| 11:20:39 | ldlework | welll | 
| 11:20:45 | ldlework | you can use it for basic string matching | 
| 11:20:45 | Varriount_ | dts|pokeball: Nim has two regex modules, though only one is majorly used. | 
| 11:20:47 | ldlework | not parsing | 
| 11:21:05 | Varriount_ | Both are wrappers around C regex libraries. | 
| 11:21:12 | * | Varriount_ is now known as Varriount | 
| 11:22:28 | dts|pokeball | ok, let me tell you what im trying to do and you guys can suggest which would be better. i wrote an irc bot, but i want to handle the registering and all of that in a seperate loop, and the final statement of it registering is something like: "your new host is bla bla". which should i do for that? | 
| 11:29:49 | Varriount | 'registering'? | 
| 11:30:15 | dts|pokeball | register your nick | 
| 11:30:22 | dts|pokeball | oops | 
| 11:30:25 | dts|pokeball | wrong term | 
| 11:30:43 | dts|pokeball | basically authenticate your bot with the server or whatever its called | 
| 11:30:48 | dts|pokeball | my brain is fried atm | 
| 11:31:11 | Varriount | dts|pokeball: Well, if you want to pick out a term from a string, use pegs or regex | 
| 11:31:32 | dts|pokeball | hmmm alright | 
| 11:31:34 | dts|pokeball | thanks guys | 
| 11:33:34 | * | Trustable joined #nim | 
| 11:38:27 | darkf | bleh, uname -m on mingw/msys is giving me i686 even on an amd64 system | 
| 11:38:41 | * | BlaXpirit quit (Quit: Quit Konversation) | 
| 11:40:53 | * | gokr_ joined #nim | 
| 11:41:35 | gokr_ | cool, new channel! | 
| 11:42:17 | * | Varriount does the new-channel dance | 
| 11:42:29 | * | yeye123 quit (Quit: Leaving) | 
| 11:48:58 | * | gokr_ quit (Ping timeout: 264 seconds) | 
| 11:50:20 | * | gokr_ joined #nim | 
| 11:53:16 | * | enurlyx joined #nim | 
| 11:53:33 | ldlework | how do I avoid this duplication? https://gist.github.com/dustinlacewell/5d83c2f81f0cc7d1a420 | 
| 11:54:32 | ldlework | wtf it says, /home/dlacewell/dev/nim/nimple/src/controller.nim(13, 0) Error: redefinition of 'pressed' | 
| 11:54:43 | ldlework | how is it a duplication if it has different type parameters? | 
| 11:57:32 | Varriount | ldlework: Looks like a bug. | 
| 11:58:10 | ldlework | Its like it ocnsiders them equivalent types | 
| 12:04:09 | gokr_ | and TKey TMod are distinct? | 
| 12:05:53 | gokr_ | or are they just aliases for same type? | 
| 12:08:35 | darkf | is there a way to make C FFI procs accept an integer for a char, or is there a 'cchar' type, or should i just write a wrapper using chr()? | 
| 12:09:17 | darkf | or maybe int8 is fine | 
| 12:13:38 | Araq | darkf: well C's char is char or int8 or byte in Nim | 
| 12:14:22 | darkf | Araq: int8 works fine (is byte an alias?) -- char would be fine for chars but you can't use integer literals :) | 
| 12:14:38 | Araq | byte is an alias for uint8 | 
| 12:14:42 | darkf | cool | 
| 12:14:52 | darkf | it's very easy to wrap DLLs, thanks for that :) | 
| 12:15:41 | Araq | thanks, usually I get the blame that some irrelevant tool doesn't detect the dependencies | 
| 12:15:59 | Araq | because it uses dlopen instead of staticlib.a linking dances | 
| 12:16:44 | darkf | heh | 
| 12:16:46 | Araq | strangely these people never blame Python for doing the same thing | 
| 12:17:12 | darkf | they have to take out their frustration somewhere i suppose | 
| 12:18:03 | Araq | the existence of "devel linking packages" on Linux is absurd IMO | 
| 12:24:51 | ldlework | can I return nil where a value is expected? | 
| 12:25:11 | Araq | depends on the value | 
| 12:25:31 | ldlework | has to be ref or ptr? | 
| 12:25:54 | Araq | or cstring or pointer or proc | 
| 12:26:04 | Araq | or string or seq | 
| 12:26:37 | Araq | when compiles(isNil(x)) # check if 'nil' is valid | 
| 12:26:59 | Araq | that said, we will eventually replace 'compiles' by a saner mechanism | 
| 12:27:18 | Araq | like  'supportsOp' | 
| 12:29:35 | ldlework | what's the idomatic way to return 'n/a' | 
| 12:29:42 | ldlework | like an option type? | 
| 12:30:10 | Araq | depends | 
| 12:30:33 | Araq | I don't like option types so Option[T] is not in system.nim | 
| 12:30:37 | darkf | hm | 
| 12:30:44 | darkf | Error: cannot open 'os' | 
| 12:30:54 | darkf | this is on a freshly compiled build | 
| 12:31:01 | ldlework | Araq: what if you have a function that can return a float or some 'invalid' result? | 
| 12:31:15 | Araq | ldlework: NaN ? | 
| 12:31:21 | ldlework | Araq: yeah | 
| 12:31:24 | ldlework | something like that | 
| 12:31:35 | Araq | well NaN has been designed for that | 
| 12:31:43 | Araq | so I'd use that | 
| 12:32:04 | ldlework | is that described anywhere? | 
| 12:32:10 | Araq | or raise an exception | 
| 12:32:24 | Araq | why should it be? we don't document how you should write your programs | 
| 12:32:31 | ldlework | what? | 
| 12:32:39 | ldlework | is NaN a thing in the language? | 
| 12:32:44 | Araq | yes. | 
| 12:32:50 | Araq | it is in the manual | 
| 12:33:04 | ldlework | I see it referred to three times and none of them explain it much | 
| 12:33:16 | Araq | system.NaN | 
| 12:33:29 | Araq | NaN* {.magic: "NaN".} = 0.0 / 0.0 | 
| 12:33:30 | Araq | ## contains an IEEE floating point value of *Not A Number*. Note | 
| 12:33:32 | Araq | ## that you cannot compare a floating point value to this value | 
| 12:33:33 | Araq | ## and expect a reasonable result - use the `classify` procedure | 
| 12:33:35 | Araq | ## in the module ``math`` for checking for NaN. | 
| 12:33:45 | darkf | does the os module not ship with the compiler or do i need to compile it separately or is my build broken? :) | 
| 12:33:58 | Araq | darkf: your build is broken | 
| 12:34:04 | Araq | gotta go, see you later | 
| 12:34:05 | darkf | great | 
| 12:34:07 | darkf | cya | 
| 12:36:26 | * | flaviu1 joined #nim | 
| 12:37:01 | * | flaviu quit (Remote host closed the connection) | 
| 12:38:47 | darkf | ah i misread the readme, all good now | 
| 12:43:42 | * | bitcrusher joined #nim | 
| 12:44:25 | bitcrusher | does nim have a selenium library or some kind of web automation? | 
| 12:44:39 | bitcrusher | trying to smash my items into gems in for steam | 
| 12:44:52 | bitcrusher | tried to do it with clojure but gave up ;0 | 
| 12:51:42 | * | gokr_ quit (Ping timeout: 258 seconds) | 
| 12:52:58 | * | gokr_ joined #nim | 
| 12:57:18 | ldlework | if you have a ref to a float, how can you create a new float and set its value? | 
| 12:58:01 | ldlework | got it | 
| 12:58:23 | EXetoC | create a new one? you mean dereference? with [] | 
| 13:02:58 | flaviu1 | The forum <title> still needs updating. | 
| 13:23:35 | * | flaviu1 is now known as flaviu | 
| 13:29:14 | * | flaviu quit (Quit: Leaving.) | 
| 13:35:37 | * | flaviu joined #nim | 
| 13:36:48 | * | gokr joined #nim | 
| 13:37:11 | Varriount | bitcrusher: No, nim doesn't have any web automation... yet. | 
| 13:40:19 | * | vendethiel left #nim (#nim) | 
| 13:43:13 | dom96 | We lost half our users :( | 
| 13:44:56 | gokr | But... they may come back on monday when they get back to their work machines | 
| 13:45:21 | flaviu | I wouldn't really count those people as users if they don't participate. | 
| 13:45:24 | ldlework | Has anyone here ever played the old arcade game Qix? | 
| 13:50:44 | * | milosn quit (Ping timeout: 256 seconds) | 
| 13:56:29 | * | enurlyx quit (Ping timeout: 245 seconds) | 
| 13:57:22 | * | enurlyx joined #nim | 
| 13:59:04 | * | flaviu1 joined #nim | 
| 13:59:41 | * | flaviu1 quit (Client Quit) | 
| 14:06:48 | * | flaviu quit (Read error: Connection reset by peer) | 
| 14:12:03 | EXetoC | ldlework: nice sound effects | 
| 14:12:19 | ldlework | EXetoC: I'm remaking that in Nim right now | 
| 14:12:32 | * | nimnoob joined #nim | 
| 14:13:10 | ldlework | far more challening than I imagined | 
| 14:18:08 | EXetoC | yeah? | 
| 14:19:37 | * | pafmaf_ joined #nim | 
| 14:23:03 | ldlework | yeah, polygon partitioning and and so on | 
| 14:23:58 | * | pafmaf_ quit (Client Quit) | 
| 14:24:08 | * | pafmaf joined #nim | 
| 14:33:27 | * | pafmaf quit (Quit: Verlassend) | 
| 14:35:42 | ldlework | damn precision errors | 
| 14:38:19 | * | gour_ joined #nim | 
| 14:40:03 | ldlework | ah fixed | 
| 14:40:50 | * | flaviu_ joined #nim | 
| 14:42:17 | * | gour quit (Ping timeout: 272 seconds) | 
| 14:43:10 | * | cir0x joined #nim | 
| 14:47:55 | * | gour_ is now known as gour | 
| 14:52:20 | Araq | bitcrusher: please wrap some selenium library. shouldn't be hard. | 
| 14:54:42 | * | flaviu_ is now known as flaviu | 
| 15:05:28 | * | cir0x quit (Ping timeout: 244 seconds) | 
| 15:07:27 | Araq | dom96: I count 2 show stopper bugs assigned to you, 1 to me | 
| 15:07:46 | dom96 | Araq: I count 1 exam tomorrow. | 
| 15:07:59 | Araq | lol? it's almost christmas | 
| 15:08:17 | Araq | how come you still have exams? | 
| 15:08:20 | flaviu | Araq: That means finals | 
| 15:08:45 | EXetoC | but that's less important, right? | 
| 15:09:36 | flaviu | dom96: Studying is for plebs :P | 
| 15:09:41 | EXetoC | 5 seconds to build and run a vibe.d project. how annoying | 
| 15:13:26 | * | willwillson joined #nim | 
| 15:14:10 | EXetoC | speaking of which, we should advertise the compilation speed too | 
| 15:14:56 | * | cir0x joined #nim | 
| 15:16:54 | * | quasinoxen quit (Ping timeout: 245 seconds) | 
| 15:18:31 | * | nimnoob quit (Ping timeout: 246 seconds) | 
| 15:18:31 | * | quasinoxen joined #nim | 
| 15:40:17 | * | cir0x quit (Ping timeout: 245 seconds) | 
| 15:45:44 | * | dts|pokeball quit (Ping timeout: 258 seconds) | 
| 15:50:19 | * | bjz quit (Read error: Connection reset by peer) | 
| 15:50:20 | * | dts|pokeball joined #nim | 
| 15:50:35 | * | bjz joined #nim | 
| 15:52:31 | * | flaviu quit (Read error: Connection reset by peer) | 
| 15:52:50 | * | flaviu joined #nim | 
| 16:01:17 | * | darkf quit (Quit: Leaving) | 
| 16:05:53 | * | dts|pokeball quit (Ping timeout: 272 seconds) | 
| 16:22:09 | * | gokr_ quit (Ping timeout: 258 seconds) | 
| 16:27:20 | * | johnsoft joined #nim | 
| 16:34:42 | * | nimnoob joined #nim | 
| 16:38:46 | * | irrequietus joined #nim | 
| 17:14:39 | * | repax joined #nim | 
| 17:34:22 | * | gour_ joined #nim | 
| 17:37:40 | * | gour quit (Ping timeout: 250 seconds) | 
| 17:52:20 | flaviu | / | 
| 17:52:52 | flaviu | oops | 
| 17:55:00 | flaviu | Btw, the topic is a bit out of date - it still has a couple "nimrod"s | 
| 17:56:35 | flaviu | Also, url shorteners are frequently viewed with suspicion - perhaps the bit.ly address should be replaced with a git.io address so people know it goes to github | 
| 17:56:37 | flaviu | http://git.io/gHZGCg | 
| 17:58:28 | * | milosn joined #nim | 
| 18:06:51 | * | milosn quit (Read error: Connection reset by peer) | 
| 18:07:50 | * | milosn joined #nim | 
| 18:16:21 | dom96 | flaviu: That URL is for my own use so *shrug* | 
| 18:17:14 | Varriount | Araq: Uploading tests works, however I need some input. | 
| 18:18:03 | Varriount | Araq: Do you want test results to be named by commit, or by build number (or both) | 
| 18:18:04 | flaviu | dom96: Btw, build farm is at http://nim-lang.org:8010/waterfall | 
| 18:18:44 | dom96 | Nope, the buildbot is at http://buildbot.nim-lang.org/ ;) | 
| 18:19:02 | dom96 | That port shouldn't be allowed. | 
| 18:19:30 | flaviu | Btw, the bitly address got chopped off. | 
| 18:19:39 | dom96 | shit | 
| 18:19:52 | flaviu | You could get rid of all the `http://` and make some space | 
| 18:20:08 | dom96 | Now I can't remember what it was... | 
| 18:20:19 | flaviu | bit.ly/1aEJ2xj | 
| 18:20:40 | flaviu | git.io/gHZGCg is also an option, but do what you want. | 
| 18:21:16 | Varriount | dom96: Well thanks for telling me. :P | 
| 18:21:24 | dom96 | Varriount: I did tell you. | 
| 18:22:52 | repax | bitly supports https | 
| 18:23:56 | flaviu | repax: Yeah, but people often use it to get around filters for malicious links. That's where it's insecure reputation comes from. | 
| 18:29:53 | repax | if that's what worries you then, yes, git.io seems better | 
| 18:36:23 | * | cir0x joined #nim | 
| 18:39:34 | * | flaviu quit (Read error: Connection reset by peer) | 
| 18:40:15 | Varriount | Huh, you can go to http://buildbot.nim-lang.org/build_tests/ to view all the build tests. I'll have to modify the build page to display a link to that. | 
| 18:40:16 | * | flaviu joined #nim | 
| 18:41:04 | * | cir0x quit (Ping timeout: 255 seconds) | 
| 18:41:26 | flaviu | Sorry about popping in and out, but wouldn't it be a better idea to expose the test sqlite database as the artifact instead? | 
| 18:42:11 | flaviu | That way someone who wants access to the data can access it programaticlly without scraping html. | 
| 18:44:37 | Varriount | flaviu: Good idea. I'll do that too. | 
| 18:45:17 | Varriount | I wonder though, should the naming scheme for tests change? Right now, they are associated with the build number, not with a commit hash | 
| 18:52:53 | * | yeye123 joined #nim | 
| 18:55:21 | * | flaviu quit (Remote host closed the connection) | 
| 19:02:56 | * | BlaXpirit joined #nim | 
| 19:03:43 | * | elvispresley- quit (Remote host closed the connection) | 
| 19:05:38 | nimnoob | could i ask a syntax question here? | 
| 19:06:00 | Varriount | nimnoob: Of course. | 
| 19:06:08 | nimnoob | Thanks | 
| 19:07:00 | EXetoC | that's allowed now? | 
| 19:07:39 | Varriount | EXetoC: It's always allowed for everyone (except you ;3) | 
| 19:07:52 | EXetoC | oh | 
| 19:08:32 | nimnoob | http://pastebin.com/mHmw4wzg | 
| 19:08:44 | * | flaviu joined #nim | 
| 19:08:48 | nimnoob | i am trying to add a method to a generic type | 
| 19:09:00 | nimnoob | getting a ')' expected error | 
| 19:10:38 | EXetoC | notice the difference between those two parameters | 
| 19:10:49 | EXetoC | you got the order wrong and missed a colon | 
| 19:11:06 | nimnoob | omg | 
| 19:11:27 | nimnoob | thanks. i am sorry for that | 
| 19:11:48 | nimnoob | sleeping baby on my chest is cutting off my air supply | 
| 19:12:13 | EXetoC | no need to blame that. it's hard to get used to it :p | 
| 19:12:21 | Varriount | That's happened to me before. | 
| 19:13:15 | nimnoob | half c# half nim | 
| 19:18:35 | * | starless joined #nim | 
| 19:19:39 | * | flaviu quit (Remote host closed the connection) | 
| 19:20:03 | * | flaviu joined #nim | 
| 19:23:20 | * | flaviu quit (Read error: Connection reset by peer) | 
| 19:36:12 | Varriount | dom96: So, has your semester ended yet? | 
| 19:36:28 | dom96 | Varriount: nope | 
| 19:39:11 | Varriount | :< | 
| 19:40:40 | * | nimnoob quit (Ping timeout: 246 seconds) | 
| 19:42:31 | * | cir0x joined #nim | 
| 19:48:10 | * | dts|pokeball joined #nim | 
| 20:08:30 | * | ciony joined #nim | 
| 20:17:48 | * | dts|pokeball quit (Read error: Connection reset by peer) | 
| 20:18:50 | * | dts|pokeball joined #nim | 
| 20:20:53 | * | rpag joined #nim | 
| 20:37:54 | * | ciony quit (Ping timeout: 245 seconds) | 
| 20:44:06 | * | ARCADIVS joined #nim | 
| 21:04:56 | * | ciony joined #nim | 
| 21:05:11 | * | milosn quit (Ping timeout: 264 seconds) | 
| 21:05:35 | * | bjz quit (Ping timeout: 244 seconds) | 
| 21:15:14 | * | dts|pokeball quit (Ping timeout: 245 seconds) | 
| 21:26:45 | * | ciony2 joined #nim | 
| 21:28:38 | * | ciony quit (Ping timeout: 250 seconds) | 
| 21:33:57 | * | ciony2 quit (Quit: Nettalk6 - www.ntalk.de) | 
| 21:34:15 | * | gour__ joined #nim | 
| 21:35:34 | * | ciony joined #nim | 
| 21:37:08 | * | milosn joined #nim | 
| 21:37:28 | * | gour_ quit (Ping timeout: 255 seconds) | 
| 21:41:59 | * | yeye123 quit (Quit: Leaving) | 
| 22:00:26 | * | dts|pokeball joined #nim | 
| 22:11:06 | * | dts|pokeball quit (Ping timeout: 250 seconds) | 
| 22:12:08 | * | flaviu joined #nim | 
| 22:18:13 | * | dts|pokeball joined #nim | 
| 22:21:08 | * | flaviu quit (Remote host closed the connection) | 
| 22:22:43 | * | flaviu joined #nim | 
| 22:23:53 | * | flaviu quit (Remote host closed the connection) | 
| 22:26:18 | * | gour__ quit (Quit: Konversation terminated!) | 
| 22:41:05 | * | BlaXpirit quit (Quit: Quit Konversation) | 
| 22:56:01 | Araq | ah Varriount thanks! | 
| 22:56:12 | Araq | finally I can look at the test results | 
| 23:03:26 | * | starless quit (Quit: WeeChat 0.4.2) | 
| 23:05:35 | Varriount | Araq: Well, I'm still sorting out teething troubles. | 
| 23:06:02 | Varriount | It's hard to debug when 'testing' means completing an entire build cycle, which can take over 45 minutes. | 
| 23:06:16 | Araq | lol | 
| 23:06:39 | Araq | you know there at least 3 methods to cut the build times | 
| 23:06:42 | * | StefanSalewski joined #nim | 
| 23:07:38 | Varriount | Araq: ? | 
| 23:07:54 | Araq | 1. simply run the tester for a single 'category' like so:  tester c templates | 
| 23:08:19 | Araq | 2. move several test dirs to something else so the tester doesn't find them | 
| 23:08:52 | Araq | 3. mark long running tests with  'disabled: true' in the  discard """ ... """ section | 
| 23:09:46 | Varriount | Araq: #1  would work, if I didn't rely on 'koch test'. I might be able to do #2 though. #3 is hard to do. | 
| 23:10:15 | Varriount | Are you sure moving test dirs won't cause errors? | 
| 23:10:49 | Araq | you shouldn't invoke 'koch test', it's just calls the tester anyway with 'all' or similar | 
| 23:11:59 | Araq | Varriount: well yeah, some dirs get special treatment | 
| 23:13:08 | StefanSalewski | Warnings for deprecated proc names are given twice -- seems to be a minor bug? See this 4 lines program: | 
| 23:13:14 | StefanSalewski | proc te(i: int): int = | 
| 23:13:31 | StefanSalewski | 0 | 
| 23:13:48 | StefanSalewski | {.deprecated: [test: te].} | 
| 23:14:04 | StefanSalewski | discard test(1) | 
| 23:14:27 | StefanSalewski | t67.nim(7, 8) Warning: use te instead; test is deprecated [Deprecated] | 
| 23:14:30 | StefanSalewski | t67.nim(7, 8) Warning: use te instead; test is deprecated [Deprecated] | 
| 23:14:41 | StefanSalewski | Bye... | 
| 23:14:46 | * | StefanSalewski quit () | 
| 23:14:54 | Araq | but only a few and they are listed in https://github.com/Araq/Nimrod/blob/devel/tests/testament/categories.nim | 
| 23:16:37 | Araq | hrm I didn't know that you can just shit a bug report to IRC and call it a day. I thought we have a bug tracker for these things... | 
| 23:19:26 | Varriount | Uhm... What was that? | 
| 23:19:55 | Varriount | Araq: But koch makes things so easy. I just have to invoke 'koch boot', 'koch test', etc to have things work. No fiddling around with working directories and stuff. | 
| 23:20:28 | Varriount | Plus, if the boot or testing process has to change, I don't have to edit the build steps | 
| 23:21:02 | Araq | well you only have to tell me to keep it backwards compatible and then I do that | 
| 23:23:05 | Varriount | Araq: Speaking of which, is there a way to make enums that can be edited without breaking backwards compatibility? | 
| 23:23:35 | Araq | you can make it a 'distinct int' instead | 
| 23:23:40 | Araq | and then have consts | 
| 23:23:48 | Araq | works when you didn't use .pure enums | 
| 23:23:59 | Araq | but hrm, no | 
| 23:24:14 | Araq | 'case' demands exhaustiveness either way | 
| 23:25:20 | Araq | so. nope, there is no way. | 
| 23:25:22 | * | ARCADIVS quit (Quit: ARCADIVS) | 
| 23:25:54 | * | dts|pokeball quit (Quit: Leaving) | 
| 23:26:06 | Varriount | Too bad you can't mark an enum with ranges of exhaustiveness. Like "either this range of values must be completely checked, or this range, etc" | 
| 23:26:13 | * | dts|pokeball joined #nim | 
| 23:27:09 | Varriount | Araq: Oh yeah, I read about this hot-patching technique, and wondered if it could be used in nimrod | 
| 23:28:15 | Varriount | Apparently, in Windows, certain internal procedures have 8 no-op instructions right after the function start point | 
| 23:29:01 | Varriount | When these functions need to be updated, and the system can't afford to be rebooted (like for servers) the OS instead writes over these no-op instructions to jump to another function instead. | 
| 23:29:46 | Varriount | I thought it was quite clever. | 
| 23:33:06 | * | irrequietus quit () | 
| 23:33:06 | Araq | yup, but iirc Linux does similiar stuff | 
| 23:33:55 | EXetoC | how often is that doable? | 
| 23:36:40 | Varriount | EXetoC: What do you mean? | 
| 23:37:02 | enurlyx | I think the os can override the jump again and again? | 
| 23:37:26 | Varriount | enurlyx: Yes, it can just write over the same area | 
| 23:42:15 | * | repax quit (Quit: repax) | 
| 23:44:37 | enurlyx | Varriount: But is not the code like static data in a read only section? How to override then, if not beeing the os? | 
| 23:45:51 | Varriount | enurlyx: Well, the only thing that prevents writing to that section is memory page settings. | 
| 23:46:17 | Varriount | enurlyx: The code is loaded into memory pages, and then the pages are marked as read only. | 
| 23:46:51 | Varriount | Thing is, the OS usually provides ways of marking pages as writeable again. | 
| 23:49:16 | enurlyx | Varriount: Ah, ok that makes sense then. | 
| 23:53:09 | Varriount | enurlyx: I'm trying to find the windows API that allows it. I't may only be available to driver-level programs though. | 
| 23:53:59 | Varriount | enurlyx: As you can imagine, arbitrarily writing to executable memory is something that the OS usually wants to *prevent*, so it's not done very often. | 
| 23:55:12 | Varriount | Actually, going through some of the various API procedures that windows provides can be quite interesting. Look at this one - http://msdn.microsoft.com/en-us/library/windows/desktop/aa366561(v=vs.85).aspx | 
| 23:57:45 | Varriount | Ah, here we go. The procedure is named VirtualProtect - http://msdn.microsoft.com/en-us/library/windows/desktop/aa366898(v=vs.85).aspx |