00:00:17 | BitPuffin | Araq: ohh |
00:00:36 | EXetoC | Varriount: will they be "container"-agnostic? |
00:00:59 | EXetoC | we have one or two of those functions in sequtils, but they're tied to sequences obviously |
00:01:27 | Varriount | EXetoC, I'll try my best |
00:02:04 | Varriount | Personally, python's itertools module is one of my favorites - it's usefull in so many situations |
00:02:42 | BitPuffin | Araq: I'll work around it then |
00:04:59 | BitPuffin | Araq: Well I tried changing the API to take a dimension intead of a range but suddenly got this http://ix.io/8R8 |
00:06:19 | Varriount | Anyone know if there is currently a bug ticket for the compiler crashing when using high(int) in an enum? |
00:06:37 | Araq | Varriount: no |
00:17:15 | BitPuffin | matrix.nim(129, 10) Error: internal error: ReplaceTypeVarsT: tyGenericBody |
00:17:17 | BitPuffin | No stack traceback available |
00:28:37 | BitPuffin | http://ix.io/8R9 |
00:28:39 | BitPuffin | http://ix.io/8Ra |
00:29:15 | BitPuffin | Araq: should I do a bug report on that? (see pastes) |
00:29:56 | BitPuffin | there might be some idiotic logic because I just refactored everything into row major |
00:30:00 | filwit | how do i get float.max? |
00:30:01 | BitPuffin | and removed aliases |
00:30:06 | filwit | whoops |
00:30:09 | filwit | didn't mean to post that |
00:30:32 | Araq | what's float.max and why is it important? |
00:30:38 | Araq | is that +INF ? |
00:31:01 | BitPuffin | ah see some left overs there from aliases |
00:33:03 | BitPuffin | sub will now stand for submatrix |
00:40:04 | Araq | BitPuffin: yes bug report please |
00:44:00 | BitPuffin | Araq: sorry guess that site didn't support line numbers |
00:45:01 | BitPuffin | here's a version from gist |
00:46:18 | BitPuffin | just so that you know which line the error is about |
00:51:38 | BitPuffin | Araq: Can I just do the bug report with the source code or do I have to create a simpler example, it's turning out to be a bit difficult to slim it down |
00:53:57 | EXetoC | he has said before that it's fine |
00:54:02 | Araq | I told you you don't have to create simpler examples for compiler bugs |
00:54:19 | Araq | good night |
00:54:25 | EXetoC | bye |
00:55:47 | BitPuffin | Araq: ah, well I just thought you appreciated (like most others) a minimal base test. But cool, saves time I guess |
00:56:25 | BitPuffin | sleep well |
01:06:31 | BitPuffin | alright since this bug is a show stopper for linagl I'll go to bed and work on the website tomorrow |
01:07:08 | EXetoC | may you dream of ponies |
01:07:18 | BitPuffin | I hope not |
01:07:39 | EXetoC | oh well. peace |
01:07:50 | BitPuffin | cheers! |
01:12:21 | * | mflamer quit (Ping timeout: 272 seconds) |
01:12:59 | * | BitPuffin quit (Ping timeout: 272 seconds) |
01:17:21 | * | mflamer joined #nimrod |
01:31:32 | * | EXetoC quit (Quit: WeeChat 0.4.2) |
02:18:25 | * | freezerburnv joined #nimrod |
02:27:27 | filwit | why don't number convert to strings correctly? |
02:27:35 | filwit | sorry, floats |
02:28:16 | filwit | var x = 123.324 |
02:28:16 | filwit | echo x # writs 1.2332400000000+02 |
02:29:08 | Varriount | filwit, floating point accuracy, remember? |
02:30:43 | filwit | well i guess there's a formatFloat proc i'm suppose to use |
02:41:06 | filwit | what's the best way to write raw binary to a file? |
02:57:18 | Varriount | Open it in binary mode, and write to it? |
02:57:39 | * | Associat0r joined #nimrod |
02:57:39 | * | Associat0r quit (Changing host) |
02:57:39 | * | Associat0r joined #nimrod |
02:58:54 | * | Associat0r quit (Client Quit) |
03:11:07 | * | freezerburnv quit (Quit: freezerburnv) |
03:14:06 | * | freezerburnv joined #nimrod |
03:16:45 | * | freezerburnv quit (Client Quit) |
03:32:59 | * | brson joined #nimrod |
03:36:22 | * | brson_ joined #nimrod |
03:40:26 | * | brson quit (Ping timeout: 245 seconds) |
04:17:55 | * | mflamer quit (Ping timeout: 272 seconds) |
04:24:30 | * | zezba9000 joined #nimrod |
04:39:36 | * | Associat0r joined #nimrod |
04:39:36 | * | Associat0r quit (Changing host) |
04:39:36 | * | Associat0r joined #nimrod |
04:59:18 | * | filwit quit (Quit: Leaving) |
05:04:32 | * | Scramblejams left #nimrod (#nimrod) |
05:07:51 | * | OrionPK quit (Read error: Connection reset by peer) |
05:16:27 | * | brson_ quit (Ping timeout: 260 seconds) |
05:18:13 | * | brson joined #nimrod |
05:19:01 | * | Boscop quit (Read error: Connection reset by peer) |
05:36:33 | * | Boscop joined #nimrod |
06:09:16 | * | brson quit (Quit: leaving) |
06:25:19 | * | gour joined #nimrod |
06:32:57 | * | mflamer joined #nimrod |
06:51:57 | * | Demos quit (Quit: Leaving) |
07:22:45 | * | ics quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
07:23:18 | * | zezba9000 left #nimrod (#nimrod) |
07:25:04 | * | ics joined #nimrod |
07:25:16 | * | ics quit (Client Quit) |
07:49:46 | * | Endy joined #nimrod |
08:02:14 | * | Associat0r quit (Quit: Associat0r) |
08:58:05 | * | Jackneill joined #nimrod |
09:27:40 | * | io2 joined #nimrod |
09:54:41 | * | EXetoC joined #nimrod |
10:41:08 | * | delian2 quit (Remote host closed the connection) |
10:44:31 | * | delian2 joined #nimrod |
10:45:59 | * | BitPuffin joined #nimrod |
10:47:15 | BitPuffin | hey goys! |
10:54:50 | * | dyu joined #nimrod |
10:57:29 | BitPuffin | hey dyu, welcome! |
10:57:56 | dyu | hey hey |
10:58:44 | BitPuffin | dyu: are you new? |
10:59:10 | dyu | BitBuffin: nope. I guess you had'nt seen me idlin here |
10:59:34 | BitPuffin | dyu: ah nope :D carry on then :P |
11:01:11 | dyu | alrighty then |
11:11:44 | BitPuffin | dom96: didn't someone just implement sha hashes? |
11:14:40 | BitPuffin | or Araq even. I believe whever did it asked if it could be in the stdlib |
11:24:04 | dom96 | BitPuffin: OrionPK did |
11:25:53 | BitPuffin | dom96: why isn't it in babel? |
11:26:06 | dom96 | BitPuffin: It's in his websockets pkg |
11:26:14 | dom96 | I think |
11:27:24 | BitPuffin | eh |
11:27:29 | BitPuffin | why would it be in websockets |
11:27:31 | BitPuffin | it's a hash xD |
11:27:38 | dom96 | don't ask me |
11:28:32 | BitPuffin | dom96: anyways it would be nice to have it in jester |
11:28:46 | dom96 | for what? |
11:28:58 | BitPuffin | dom96: for hmac cookies |
11:29:03 | dom96 | ahh, true. |
11:29:40 | BitPuffin | dom96: and since scrypt.nim will force you to link to libtarsnap.a it's not very practical to use scrypt hashes |
11:29:56 | EXetoC | BitPuffin: any reason why your `+` doesn't return an expr anymore? |
11:30:17 | BitPuffin | EXetoC: woot? |
11:30:19 | EXetoC | the one in your bug report |
11:30:23 | BitPuffin | in linagl? |
11:30:25 | BitPuffin | ah |
11:30:31 | BitPuffin | link? xD |
11:30:43 | EXetoC | bad memory? |
11:30:46 | BitPuffin | yes |
11:30:46 | EXetoC | j/k |
11:30:58 | BitPuffin | I refactored everything without paying much attention |
11:31:25 | BitPuffin | EXetoC: is it in vector or matrix? |
11:31:36 | EXetoC | I think programmers should be required to have photographic memory |
11:31:44 | EXetoC | https://gist.github.com/BitPuffin/7285266#file-gistfile1-nim-L38 |
11:32:32 | BitPuffin | EXetoC: are you sure that returned expr before? |
11:35:18 | EXetoC | I think so, and I don't know why it's a template now that it doesn't |
11:35:30 | BitPuffin | EXetoC: older commit https://bitbucket.org/BitPuffin/linagl/src/c0315f2199e5bf514af2245be402f8f374093a37/src/linagl/matrix.nim?at=default#cl-45 |
11:36:06 | BitPuffin | doesn't look like it ever was expr |
11:36:10 | BitPuffin | but I can change it to expr |
11:38:10 | EXetoC | does borrow work here? |
11:38:51 | BitPuffin | EXetoC: that fixed the error lol |
11:39:10 | EXetoC | nevermind. a proc will also do. the generated code should be the same |
11:39:12 | EXetoC | ok |
11:39:57 | BitPuffin | EXetoC: https://bitbucket.org/BitPuffin/linagl/commits/eca93a97689984f97383a037c670438e695f839e |
11:40:17 | dom96 | It's almost as if Mr. Rossum did all the research for me: https://www.youtube.com/watch?v=1coLC-MUCJc :P |
11:44:56 | BitPuffin | dom96: nice! |
11:46:16 | EXetoC | and it works if 'm' is not a constant or a literal? I'd use a proc, but maybe the compiler is sufficiently clever in this case |
11:49:12 | BitPuffin | EXetoC: I've got no idea |
11:49:19 | BitPuffin | I'm just following orders |
11:49:24 | BitPuffin | it doesn't seem to error on it though |
11:53:46 | dom96 | It took them a year to create tulip... gah. |
11:54:31 | dom96 | But oh well. We don't need to be as feature complete as tulip. |
11:54:33 | BitPuffin | why am I doing matrix multiplication in my head reading code |
11:54:40 | BitPuffin | because I'm a genius that's why |
11:55:22 | EXetoC | sure |
12:07:18 | BitPuffin | seems like I am going to need pen and paper |
12:07:30 | BitPuffin | dun dun dun bom psch bka bka pmm psch |
12:07:38 | BitPuffin | (kill bill) |
12:10:00 | * | CarpNet joined #nimrod |
12:17:09 | * | Endy quit (Ping timeout: 248 seconds) |
12:24:05 | BitPuffin | okay it works |
12:24:07 | BitPuffin | yayayayay |
12:24:16 | BitPuffin | linagl is now row major |
12:24:34 | * | Associat0r joined #nimrod |
12:24:34 | * | Associat0r quit (Changing host) |
12:24:34 | * | Associat0r joined #nimrod |
12:25:42 | EXetoC | are you going to use something like bullet in Nimrod? |
12:25:59 | EXetoC | or maybe you didn't like when you said you were a genius, in which case I expect you to roll your own physics engine |
12:26:08 | BitPuffin | EXetoC: probably either newton or ode |
12:26:13 | BitPuffin | EXetoC: but yeah I'll roll my own |
12:26:19 | BitPuffin | but not for my first projects |
12:27:03 | EXetoC | what do they do better? |
12:27:43 | BitPuffin | EXetoC: than? |
12:28:14 | EXetoC | bullet |
12:28:26 | EXetoC | maybe the C api isn't up to par, and I've heard that the code base is a mess |
12:28:27 | BitPuffin | EXetoC: bullet is fast but not as accurate |
12:28:35 | BitPuffin | EXetoC: but mostly it is because C api |
12:30:14 | BitPuffin | wtf |
12:30:24 | EXetoC | you could compile to C++ though |
12:30:39 | EXetoC | but that doesn't even work atm. I need to file a bug report |
12:30:50 | EXetoC | pure_pegs.cpp:8024:42: error: ‘abs’ was not declared in this scope |
12:31:01 | BitPuffin | https://gist.github.com/BitPuffin/7289782 |
12:31:47 | BitPuffin | EXetoC: meh I probably won't do that |
12:32:03 | EXetoC | it's not there? or the path is wrong? try moving the exe around |
12:32:33 | BitPuffin | yeah it doesn't produce an exe |
12:32:35 | BitPuffin | wtf |
12:32:41 | BitPuffin | why does nimrod keep doing this to me |
12:32:56 | BitPuffin | parallelBuild:1 time |
12:33:15 | EXetoC | keep a debug build of nimrod around |
12:33:59 | BitPuffin | hell ye |
12:34:04 | BitPuffin | okay I'll do it |
12:40:01 | BitPuffin | EXetoC: okay how will dbnimrod help me now |
12:40:14 | BitPuffin | doesn't say more than the release build xD |
12:42:18 | EXetoC | I guess it doesn't always have more to say :p |
12:43:15 | BitPuffin | EXetoC: do you think more or less all templates in here should return expr? |
12:51:24 | EXetoC | I don't think I use templates myself unless I need to inject stuff or return expr/stmt |
13:02:20 | EXetoC | but you're basically just creating aliases, so I don't think it really matters |
13:04:04 | EXetoC | `+` is an alias, but `-` actually does something |
13:08:21 | EXetoC | "proc f: int = result" -> "Error: value returned by statement has to be discarded" should be allowed, right? |
13:12:00 | EXetoC | this is a slightly better example, in case you're wondering why I might want to do this: "proc f: int = if true: result elif 42: 0 else: 1" |
13:13:28 | EXetoC | which is a convenient way to use "statements" as expressions, while making it clear that the value remains the same in some cases |
13:24:27 | * | Endy joined #nimrod |
13:25:15 | * | freezerburnv joined #nimrod |
13:31:05 | EXetoC | I should just file a bug report either way, so don't bother answering here |
13:33:03 | * | fredmorcos joined #nimrod |
13:47:02 | * | io2 quit () |
14:20:28 | BitPuffin | EXetoC: well the reason I have + as an alias for just the same thing is that it should work mathematically |
14:20:30 | BitPuffin | +a = a |
14:20:46 | BitPuffin | and why waste a proc call on that |
14:21:20 | BitPuffin | so template |
14:22:05 | freezerburnv | So what's the difference between a bare object, (e.g.: TFoo = object ...) and a tuple? (e.g.: TFoo2 = tuple ...) filwit helped me out yesterday with a recursive type where I had to use an object instead of a tuple for an FFI thing I'm writing. Also I've been using ptrs in tuples for the FFI, should I be using refs instead? I'm assuming, based on documentation, that a ref will be tracked under the GC, while |
14:22:05 | freezerburnv | a ptr will not? Will the GC interfere with the native code in any way when I hand it off, or will it end up being ok all the time? |
14:28:54 | BitPuffin | freezerburnv: a tuple is used to specify a type that can have the vaules you specify |
14:29:15 | BitPuffin | freezerburnv: a bare object will have fields that can have any value that is valid for the fields type |
14:29:26 | BitPuffin | freezerburnv: refs are traced by GC and ptrs are not |
14:29:50 | BitPuffin | freezerburnv: I'm not sure what you mean by the last questio |
14:30:08 | BitPuffin | what exactly do you mean interfere |
14:30:52 | freezerburnv | BitPuffin: Will the GC move the object, so that the library will try to access an object that doesn'T exist? Or free the object when the library isn't expecting it? Etc. Or does the GC not do any of that when a function in a library is using an object? |
14:30:57 | BitPuffin | when doing FFI stuff, the GC cannot GC other libraries code if that's what you mean. So if you know that an FFI function will store the memory and not just passed by reference by performance it should be a ptr |
14:32:54 | BitPuffin | freezerburnv: if you don't know that what you are passing to an FFI proc becomes a part of that librarys state, then it should be ptr |
14:33:04 | freezerburnv | For example, in SDL, if I create a surface, which I currently have defined with a "ref TPixelFormat" in it, will the GC track that TPixelFormat and deallocate it or move it when I do something to that surface via an SDL call? |
14:33:33 | freezerburnv | Rather, I have it as a "ptr TPixelFormat", sorry |
14:33:43 | BitPuffin | freezerburnv: are you wrapping SDL? because that is already wrapped in the stdlib and SDL2 is wrapped by fowl |
14:34:23 | BitPuffin | freezerburnv: you might be able to make things GCd by marking destructors with destructor pragma |
14:35:26 | freezerburnv | BitPuffin: Currently yeah, I am. I think std lib only wraps version 1 though? And fowl declares his library as requiring 0.9.3, when 0.9.2 is the latest binary release. So I'm kinda wrapping SDL2 for fun, to learn the FFI, and Nimrod in general. (I find it relaxing to be writing the wrapper, for some reason) |
14:36:07 | BitPuffin | freezerburnv: it's probably a good idea to upgrade to 0.9.3 though |
14:38:07 | freezerburnv | BitPuffin: I suppose that's true enough. I'll work on that at some point |
14:38:30 | freezerburnv | Either way, writing the FFI is kinda fun/relaxing for me, and it's helping me learn things like the distinction between ptrs and refs :P |
14:39:36 | freezerburnv | Why isn't 0.9.3 an official binary that's been released, anyway? |
14:40:22 | BitPuffin | freezerburnv: 0.9.1 0.9.3 0.9.5 etc are development versions |
14:41:27 | BitPuffin | any point release where the number mod 2 is not 0 is development versions :P |
14:41:46 | freezerburnv | Ah ha |
14:42:07 | BitPuffin | I believe the linux kernel or some similar project follows that kind of scheme |
14:42:57 | BitPuffin | I can't remember if Araq said that the compiler not outputting binaries was a known issue |
14:42:59 | BitPuffin | gonna check the logs |
14:43:53 | freezerburnv | So just to get my initial question straight: in general, I should be marking stuff that comes from an FFI as ptrs? Such as the pixel format struct inside of a surface coming from SDL |
14:44:20 | freezerburnv | Unless I do some other wizardry to make it able to be tracked by the GC? |
14:44:57 | BitPuffin | freezerburnv: well it depends |
14:45:31 | BitPuffin | freezerburnv: if you know that the procedure doesn't store the reference somehow after returning it is safe to mark it as ref |
14:46:42 | BitPuffin | can't find anything in the logs |
14:46:45 | freezerburnv | Fair enough. I'd have to check source files for that, or ask devs. So most times, I'd probably want to just mark is as a ptr, and use the FFI functions to manage lifetimes (SDL_DestroySurface, or something like that) |
14:46:47 | BitPuffin | I'm looking through bug reports |
14:47:51 | BitPuffin | freezerburnv: sure, or wrap them in a way that let's you leverage GC :D |
14:48:16 | freezerburnv | BitPuffin: :D I'd have to learn how to do that though. Still a novice! If you want to point me in the right direction for learning that, I'd appreciate it |
14:49:08 | * | dyu quit (Ping timeout: 240 seconds) |
14:49:23 | * | q66_ joined #nimrod |
14:49:50 | * | q66 quit (Disconnected by services) |
14:49:52 | * | q66_ is now known as q66 |
14:50:03 | BitPuffin | freezerburnv: here is a good place to start :) http://nimrod-code.org/manual.html#destructor-pragma |
14:50:35 | * | OrionPK joined #nimrod |
14:50:53 | freezerburnv | BitPuffin: Awesome, thanks! I'll look into that as soon as I have time. For now though, seems I have some things to do. Thanks for the help! |
14:51:26 | * | fredmorcos quit (Quit: Leaving) |
14:52:01 | BitPuffin | good luck :) |
14:52:09 | * | freezerburnv quit (Quit: freezerburnv) |
15:02:14 | * | dyu_ joined #nimrod |
15:09:15 | EXetoC | BitPuffin: I'll be damned if GCC or whatever won't inline that |
15:09:40 | EXetoC | but either way works |
15:22:55 | EXetoC | maybe there should be an implicit `+` when only `-` is defined :p |
15:29:54 | * | mwcampbell joined #nimrod |
15:30:42 | mwcampbell | Is the ecmas backend still being maintained? |
15:33:55 | * | gour quit (Disconnected by services) |
15:34:00 | * | gour_ joined #nimrod |
15:39:24 | mwcampbell | OK, my mistake. Looks like the JavaScript backend is now called jsgen. |
15:41:55 | mwcampbell | I figured JavaScript wouldn't be a good target for Nimrod, though, since Nimrod is more of a system-level language, with an explicit distinction between value types and pointers. |
16:00:26 | EXetoC | there's no need to care about that when using the DOM module for example, but maybe the biggest issue would be third-party libs |
16:08:21 | * | filwit joined #nimrod |
16:11:56 | * | freezerburnv joined #nimrod |
16:14:33 | * | freezerburnv quit (Client Quit) |
16:17:30 | filwit | Araq, dom96: so we (my brother an I) did performance tests comparing Nimrod to C# (Mono & .NET) using a cleaned up version of that ray tracer posted on the Nimrod forums (we managed to speed it up by ~40ms on my machine) |
16:17:46 | filwit | Araq, dom96: needless to say, Nimrod killed it |
16:18:52 | dom96 | filwit: Is your brother impressed? :P |
16:18:55 | filwit | Araq, dom96: on Linux (my AMD Phenom II X4), Nimrod takes ~320ms while Mono takes ~2.2sec |
16:19:10 | filwit | dom96: i think he was more frustrated, at least right now |
16:19:38 | filwit | Araq, dom96: on the Rasberri Pi, Nimrod completed in 6.2secs while Mono completed in ~35secs |
16:20:47 | filwit | Araq, dom96: MS .NET completed in ~1sec on my Windows boot (which was the closest).. but yeah, Nimrod is _fast_ :D |
16:21:02 | EXetoC | dom96: Wouldn't it be a good idea to use the JS target for the website? |
16:21:36 | filwit | Araq, dom96: didn't even mess with the GC, and I'll be using the test to try SIMD in the future (see if we can't get even more speed out of it) |
16:22:02 | filwit | EXetoC: to what end? the website already works |
16:22:32 | filwit | EXetoC: although it could use more regular blog updates |
16:22:55 | EXetoC | fair enough. hopefully I'll have time to use it myself then, because no one responded before when I asked if it was used in practice |
16:23:41 | filwit | ahh, i see.. eat your own dog-food is why you're suggesting that |
16:23:47 | filwit | not a bad idea |
16:26:55 | filwit | anyways, dom96, Araq. Just wanted to let you guys know about the results of our performance tests. |
16:28:03 | dom96 | filwit: Did Nimrod also take 320ms on Windows? |
16:28:26 | filwit | dom96: about that.. couldn't get Nimrod to build on Windows |
16:28:37 | filwit | dom96: build64.bat failed |
16:29:18 | filwit | dom96: not sure why, didn't care to waist a ton of time there.. it was kinda at the end that we tested on my Windows boot |
16:29:50 | filwit | dom96: i'm on Window 8 if that makes any difference (will be on 8.1 soon), and i'll report the issues later |
16:29:55 | Varriount | dom96, I made a reddit post in /r/nimrod |
16:30:07 | dom96 | filwit: I think I know what the issue is |
16:30:08 | EXetoC | waste |
16:30:09 | filwit | Varriount: link? |
16:30:17 | Varriount | filwit, if you need to build nimrod on windows, I can help |
16:30:58 | Varriount | http://www.reddit.com/r/nimrod/comments/1pt8u8/ideas_on_how_to_implement_partial_functions/ |
16:30:58 | filwit | Varriount: thanks, but mostly it was my lack of caring which prevented me from building it :) I'll spend more time trying to build it later |
16:32:47 | EXetoC | Varriount: https://gist.github.com/AdrianV/5397444 |
16:33:06 | EXetoC | maybe we need something like that. I don't know if there are issues with iterators per se |
16:34:03 | Varriount | EXetoC, those are all sequence-dependant |
16:34:15 | Varriount | I'm aiming for something more... generaic |
16:34:19 | Varriount | *generic |
16:34:38 | EXetoC | I don't think they are. let me check |
16:36:16 | Varriount | EXetoC, you're right, they aren't. My mistak. |
16:36:28 | EXetoC | it seems to be almost exactly like in D, where a range ... ok nm :p |
16:37:26 | Varriount | I guess my problem is that I'm used to iterators being essentially functions with state. |
16:40:03 | * | dyu_ quit (Quit: Leaving) |
16:40:09 | EXetoC | but some issues will disappear just by adding code that determines if items and/or pairs are present, right? |
16:40:18 | EXetoC | which are defined by convention |
16:46:31 | * | ics joined #nimrod |
16:49:42 | BitPuffin | EXetoC: it is probably inlined but I don't trust GCC |
16:54:12 | filwit | dom96: so i've been thinking about making a couple of new .lang files for Aporia/Gedit which are like my Kate language scheme |
16:54:30 | filwit | dom96: but i have a couple of questions on what you'll accept |
16:55:15 | filwit | dom96: you've seen my screenshot already: http://reign-studios.net/philipwitte/screenshots/arch-win-mac2.png |
16:56:17 | filwit | dom96: basically, what I'm doing to get all those colors (which i really, really like to separate the code) is just adding a couple of Regex lines to the lang file (it's different for Kate, but basically the same thing) |
16:56:42 | filwit | dom96: i have one that colors anything followed by a '(' a function |
16:57:19 | filwit | dom96: anything that begins with a capital is colored as a type |
16:58:07 | filwit | dom96: and anything followed by a '.' is colored slightly different as well (to distinguish important data) |
16:59:28 | filwit | dom96: i was thinking it would be nice if Nimrod had a couple of IDE specific Pragmas ({.keyword, property, etc..}) which would instruct the color formatting |
17:02:05 | dom96 | I think that belongs to the IDE config. |
17:02:24 | dom96 | Colors should not be different per .nim file. |
17:03:04 | filwit | well the idea is to allow lib writes to "suggest" to coders how their symbols are supposed to be used (and that has to be defines on the code itself) |
17:03:16 | BitPuffin | EXetoC: no waist obviously :P |
17:03:59 | filwit | dom96: for instance, I want my "part" macro to looks like a keyword |
17:04:24 | filwit | dom96: which means i have to modify any Nimrod language schemes |
17:04:45 | EXetoC | filwit: I don't get it. Is the developer of said lib supposed to put those everywhere? |
17:05:13 | filwit | EXetoC: no.. only if they want something out of the ordinary |
17:05:23 | filwit | EXetoC: like my example with 'part' |
17:05:49 | filwit | the reason is Nimrod's symbols are so powerful |
17:06:36 | filwit | you can essentially define your own keywords or at least key API macros |
17:06:47 | filwit | but they don't look like that in color |
17:07:03 | filwit | which makes them feel out of place (to mean, who is a very visual person) |
17:07:07 | filwit | to me** |
17:07:33 | filwit | i'm kinda OCD when it comes to colors.. lol |
17:08:27 | BitPuffin | filwit: would be nice to have something like that for vim |
17:08:28 | filwit | dom96: it's okay if you don't want these changes ;-) just thought i'd offer |
17:08:59 | * | Jackneilll joined #nimrod |
17:09:11 | * | Jackneill quit (Ping timeout: 245 seconds) |
17:09:17 | filwit | BitPuffin: yeah, i'm not sure exactly what text-editor/IDE would be best to allow that sort of dynamic scheme editing. I use (and love) Kate right now |
17:09:58 | BitPuffin | filwit: not sure. Vim would probably be able to handle it considering how scriptable it is. Same goes for emacs |
17:10:31 | filwit | BitPuffin: problem is i hate Vim, haha |
17:10:48 | filwit | BitPuffin: jk, but i never really learned how to use it (or saw the point) |
17:10:49 | EXetoC | :( |
17:10:50 | BitPuffin | filwit: everybody has their preferences :P |
17:11:01 | filwit | yeah |
17:11:15 | BitPuffin | there is definitely a point |
17:11:16 | filwit | i just really like Kate, KDevelop, and MonoDevelop |
17:11:21 | BitPuffin | and you see it once you start to learn it |
17:11:26 | filwit | Visual Studios is good too |
17:11:29 | BitPuffin | but it seems like you are in to simple editors |
17:11:34 | BitPuffin | and that's totally fine |
17:11:52 | EXetoC | my biggest priority is being able to read the text *and* not have my eyes pwned by bright backgrounds. interesting concept though. you could start by implementing it yourself |
17:12:25 | BitPuffin | EXetoC: amen to bright backgrounds. They can go fuck themselves |
17:12:30 | filwit | yeah, BitPuffin, i can see how having a completely Keyboard navigated system would speed things up, but I just don't care to tackle that learning curve right now (especially when i do so many other, non-coding related things) |
17:12:39 | EXetoC | BitPuffin: I just had to read what a few people had to say about it, to know what it was all about |
17:13:06 | BitPuffin | filwit: you decide when/if you are ready |
17:13:14 | filwit | EXetoC: but all editors have dark color schemes. I prefer bright ones, though. |
17:13:23 | BitPuffin | EXetoC: about what? |
17:13:33 | EXetoC | vim |
17:14:25 | EXetoC | yes it's pretty steep at first, but I did alright after plowing through vimtutor |
17:15:25 | filwit | i started to try it once |
17:15:41 | EXetoC | it helps when you suffer from RSI at the very least |
17:15:56 | filwit | i know the basics out of practicality (when a Arch log pops up, gotta know how to quit it) |
17:16:07 | filwit | RSI? |
17:16:29 | EXetoC | repetitive strain injury |
17:17:21 | filwit | i see |
17:18:43 | EXetoC | arch log? |
17:19:16 | filwit | yeah, i guess i've never thought about that. I imagine using a keyboard-only system would be more attractive if it was painful to move your elbows and stuff |
17:20:15 | filwit | eh, arch log meaning those files that open with vim by default sometimes in the terminal.. it happens on my system even thought the editor is technically nano |
17:20:23 | filwit | dunno why |
17:21:43 | filwit | you know, i was very impressed with PCLinuxOS recently |
17:22:19 | filwit | didn't know there was another rolling-release distro that was really stable, easy to install, and came with nice bios tools and stuff |
17:22:54 | filwit | was tempted to switch from Arch to it.. and that's saying something cause i love my Arch system |
17:23:08 | * | io2 joined #nimrod |
17:23:59 | EXetoC | echo $EDITOR. you can set it in .bashrc for example. export EDITOR=xjriweo |
17:24:13 | filwit | but they can run Chrome, which helps with some video playbacks (youtube) i think (it was the only system that self-setup correctly on my brother's PC).. |
17:25:02 | filwit | yeah i know EXetoC, that's why i'm saying.. it's set to nano, but still vim opens sometimes |
17:25:17 | filwit | ahh.. probably cause root user's set to vim.. |
17:25:29 | filwit | so when i'm low level and something opens.. it's vim |
17:25:31 | filwit | that makes sense |
17:25:46 | BitPuffin | EXetoC: you suffer from RSI? |
17:25:54 | filwit | cause it only really happens when linux crashes or i open some xorg crash log |
17:26:42 | * | mwcampbell quit (Quit: ircII EPIC5-1.1.2 -- Are we there yet?) |
17:31:30 | BitPuffin | this compiler bug is killing me ._. |
17:32:07 | EXetoC | filwit: using sudo? if so, then passing -E to it should do the trick |
17:32:10 | EXetoC | BitPuffin: yes |
17:32:55 | BitPuffin | EXetoC: I see, I feel it too sometimes, I've made some ergonomic adjustments to my workflow for this |
17:32:57 | BitPuffin | like vim and i3 |
17:33:08 | BitPuffin | and other things as well with desk etc |
17:37:47 | EXetoC | that should help |
18:11:07 | * | fredmorcos joined #nimrod |
18:11:22 | fredmorcos | I have a question about tutorial 1, case statements |
18:11:38 | filwit | what's you question? |
18:11:57 | fredmorcos | it basically says, you cannot cover all cases (due to not being able to enumerate all possible integer values), so an else clause is needed to cover the remaining cases |
18:12:22 | fredmorcos | then it says the exact opposite about all possible string valyues |
18:12:24 | fredmorcos | *values |
18:12:45 | fredmorcos | Note that it is impossible to cover all possible string values: that is why there is no such check for string cases. |
18:13:15 | Varriount | Araq, how does a closure iterator work exactly? Can you "instanciate" like an object, and then pass it around? or iterate over only a section of it? |
18:13:23 | fredmorcos | sure you still need that check (and it would be nice actually for the compiler to do that check) |
18:13:52 | filwit | fredmorcos: i'm not sure what you are asking |
18:14:16 | fredmorcos | filwit, either i don't understand that section in the tutorial, or its contradictory |
18:14:25 | fredmorcos | here are two statements from the tutorial: |
18:14:42 | filwit | fredmorcos: strings present and infinite number of combinations (in theory) |
18:15:01 | fredmorcos | filwit, same for integers |
18:15:06 | fredmorcos | they're an infinite set |
18:15:12 | filwit | fredmorcos: but you still want to require an else statement for your finite types for security and sanity |
18:15:24 | fredmorcos | filwit, sure |
18:15:31 | fredmorcos | for both, finite and infinite types |
18:16:16 | filwit | fredmorcos: maybe, i'm not sure. I was never actually a fan of that anyways |
18:16:21 | fredmorcos | strings are an infinite set |
18:16:26 | fredmorcos | integers are an infinite set |
18:16:42 | fredmorcos | ints require an else clause in a switch, strings don't |
18:16:47 | fredmorcos | i don't see why |
18:16:49 | filwit | fredmorcos: integers are not an invinite set |
18:17:07 | fredmorcos | in theory, they are, no? |
18:17:22 | filwit | fredmorcos: i guess, but maybe it's about what's realistic? |
18:17:35 | filwit | idk, but what are you asking for? |
18:17:56 | fredmorcos | i personally think this logic is mistaken |
18:17:56 | filwit | that strings case statements always require a trailing "else: discard" block? |
18:18:04 | fredmorcos | yes |
18:18:11 | fredmorcos | else: nil |
18:18:18 | EXetoC | forgot a word there? |
18:18:58 | fredmorcos | EXetoC, ? |
18:18:58 | filwit | idk, i don't like the idea really, fredmorcos |
18:19:06 | fredmorcos | filwit, why not? |
18:19:19 | filwit | sure it's an inconsistency, but i'd rather not have to type something pointless |
18:19:35 | filwit | in fact, i'd almost rather not have to type the "else: nil" in general |
18:19:36 | fredmorcos | filwit, well you have to do it when using integers, so why not strings too? |
18:19:37 | filwit | but that's just me |
18:19:53 | fredmorcos | yea sure, but that's not what i'm concerned about it |
18:20:20 | fredmorcos | you either type else: nil for strings AND integers, or not type else: nil for strings AND integers, that's what i'm asking about |
18:20:52 | EXetoC | I vote for required in all cases |
18:20:59 | filwit | fredmorcos: well anyways, you'll have to take this up with Araq or others. I don't really care either way, lol |
18:21:07 | fredmorcos | EXetoC, me too actually, to remind the programmer |
18:21:11 | EXetoC | file a bug report if you want |
18:21:19 | EXetoC | right |
18:21:39 | fredmorcos | is it worth a bug report? i mean, would such a thing be up for discussion? |
18:22:09 | filwit | i never truly saw the point of the "else: nil" statement... people just end up throwing that on there to satisfy the compile error, and it becomes just the same as if the compiler didn't check. |
18:22:29 | fredmorcos | filwit, explicit is better than implicit ;) |
18:22:42 | filwit | fredmorcos: that's not always true |
18:23:07 | filwit | fredmorcos: in general i agree though |
18:23:19 | filwit | fredmorcos: and i do agree, consistency is very important |
18:23:34 | fredmorcos | i will file a bug report later today |
18:23:46 | fredmorcos | but i have to bounce now unfortunately... thanks filwit, EXetoC! |
18:23:59 | filwit | fredmorcos: bye! |
18:24:02 | EXetoC | np. peace out |
18:25:05 | filwit | btw, is there a difference between "else: nil" and "else: discard" ?? |
18:25:25 | EXetoC | there's no value to discard in this case |
18:25:44 | filwit | is that a benefit for any reason ? (performance?) |
18:26:14 | filwit | to use discard over nil i mean |
18:26:36 | * | fredmorcos quit (Quit: Leaving) |
18:28:52 | EXetoC | they have different uses. nil can be used as a placeholder, because a block must contain at least one statemment. discard is for discarding values returned from functions for example |
18:29:49 | EXetoC | proc f(): int = 0; discard f(); let x = f(); |
18:30:08 | EXetoC | just f() won't be allowed, because then the value is implicitly discarded (ignored) |
18:30:21 | filwit | right, okay that makes sense |
18:32:08 | BitPuffin | can anyone see a reason why this apparently fails in secret with the compilation? https://gist.github.com/BitPuffin/7293252 |
18:36:46 | EXetoC | case branches can take ranges actually. it doesn't seem terribly useful as a way of covering all cases rather than just specifying an else clause though, but it's possible |
18:56:55 | Araq | what? I use case ranges all the time ... |
18:57:59 | filwit | Araq, do you have any plans to allow overloading by return-type in the future? |
18:58:59 | Araq | yeah but don't wait for it |
18:59:20 | filwit | Araq, okay great, so you're not apposed to it? |
18:59:35 | Araq | the language is complex enough already to keep us busy for years until everything is stable, I'm afraid |
18:59:55 | Araq | not opposed to it, but as I said, after 1.0 is out |
19:00:05 | Varriount | Hm.. Anyone have any idea how I would do something similar to pythons expansion of function arguments from a list/dict? |
19:00:26 | Araq | Varriount: that's what macros allow |
19:01:03 | filwit | Araq: hmm... so it would take a lot to do? (if not, i might like to try to implement at some point) |
19:01:21 | Varriount | Araq, trying to make an iterator/procedure wrapper for partials. I was hoping not to have to resort to macros. |
19:01:46 | EXetoC | Araq: I mean adding a case statement for the sole purpose of replacing 'else' |
19:01:47 | BitPuffin | Varriount: macros would give you nicer syntax options |
19:02:13 | BitPuffin | Araq: you did say that the compiler saying success but not giving output was an known issue right? |
19:02:24 | Araq | BitPuffin: nope |
19:02:40 | Araq | never happens to anybody except you |
19:02:58 | BitPuffin | Araq: weird, wanna see if it happens for you? |
19:02:59 | Varriount | BitPuffin, https://gist.github.com/Varriount/7293614 |
19:03:17 | BitPuffin | Araq: or should I just bug report |
19:04:03 | BitPuffin | because it is kind of show stopping |
19:04:07 | filwit | Araq: i'm interested, because as I was going through some code, I realized I may agree with a certain part of your functional design, and even prefer it, if i was able to do this logically: var m:Model = load('...') |
19:04:23 | OrionPK | Araq i'm running into that GC issue again I think; but only with the asyncio enabled :\ |
19:04:55 | Araq | OrionPK: yay |
19:05:18 | OrionPK | i let it sit there w/ my websocket client app while I did some errands, came back to 50mb of ram |
19:05:25 | BitPuffin | I have 96% space left on my /home so it can't be that |
19:05:36 | OrionPK | (50 mb of ram used by the app, not remaining) |
19:06:06 | Araq | filwit: it doesn't really matter how complex it is to implement; I'm trying feature freeze |
19:06:32 | Araq | BitPuffin: I'm quite sure I can't reproduce it. why should I? |
19:06:42 | OrionPK | if anyone wants to look this over and try it out, I'd appreciate a 2nd pair of eyes to track down the leakhttps://github.com/onionhammer/onion-nimrod/blob/master/websockets/websockets.nim |
19:06:49 | OrionPK | oop: https://github.com/onionhammer/onion-nimrod/blob/master/websockets/websockets.nim |
19:06:53 | filwit | Araq: okay i see, so what are your launch windows looking like? |
19:07:36 | filwit | Araq: nevermind, nevermind i understand |
19:07:47 | Araq | filwit: when everything goes smoothly I'll be dead by the end of the year. Then I'll have plenty of time. |
19:07:47 | filwit | Araq: feature freeze until bugs are fixed, got it |
19:07:56 | OrionPK | Araq if you see anything in there that screams memory leak.. |
19:08:56 | BitPuffin | Araq: how can you be sure if you haven't tried? |
19:09:10 | BitPuffin | Araq: https://gist.github.com/BitPuffin/7293653 here is code and terminal output |
19:09:18 | Araq | OrionPK: var TWebSocketServer where TWebSocketServer* = ref TWebSocketServerImpl screams "sigh, I wish people would understand pointers" |
19:09:59 | OrionPK | I've been just desparatenly changing shit to try to fix the leak |
19:10:02 | BitPuffin | Araq: since you use LMDE we use more or less identical systems so |
19:10:17 | OrionPK | that is one of the desparate changes |
19:11:23 | Araq | BitPuffin: how does that compile? 'linagl-vector' is not a valid module name |
19:11:33 | BitPuffin | Araq: it's because gist doesn't allow / in the name |
19:11:52 | BitPuffin | Araq: replace the - with / (it is in the subdir linagl) |
19:12:55 | * | Amrykid quit (Changing host) |
19:12:55 | * | Amrykid joined #nimrod |
19:14:10 | Araq | BitPuffin: /home/andreas/projects/linagl/nimcache/linagl_vector.o: In function `vectorInit': |
19:14:11 | Araq | linagl_vector.c:(.text+0x109b): undefined reference to `swizzleimpl_90828' |
19:14:12 | Araq | linagl_vector.c:(.text+0x12fc): undefined reference to `swizzleimpl_91628' |
19:14:14 | Araq | linagl_vector.c:(.text+0x15a5): undefined reference to `swizzleimpl_92428' |
19:14:16 | Araq | linagl_vector.c:(.text+0x1806): undefined reference to `swizzleimpl_90828' |
19:14:17 | Araq | linagl_vector.c:(.text+0x1a67): undefined reference to `swizzleimpl_91628' |
19:14:19 | Araq | collect2: error: ld returned 1 exit status |
19:14:27 | Araq | so ... it's clearly some bug but compilation doesn't succeed |
19:14:34 | Araq | for me |
19:14:45 | BitPuffin | Araq: but why doesn't it tell me that? |
19:15:43 | EXetoC | with neither compiler config? |
19:15:55 | EXetoC | same bug as before when I asked? |
19:16:48 | Araq | EXetoC: I can't follow. are you BitPuffin? |
19:16:49 | BitPuffin | Araq: I remember seeing a similar error to that once I couldn't get it again |
19:17:04 | BitPuffin | Araq: No EXetoC is Erik, I am Isak |
19:17:55 | Araq | that was a rhetorical question |
19:18:12 | EXetoC | forgot to higlight BitPuffin |
19:18:54 | BitPuffin | Araq: did you use different compiler options than me? (removing paralellBuild and not using --path doesn't make a difference) |
19:19:05 | BitPuffin | EXetoC: what do you mean by "with neither compiler config?" |
19:19:22 | Araq | BitPuffin: I used your compiler options |
19:19:26 | EXetoC | *build. debug/release |
19:19:29 | BitPuffin | there isn't any nimrod.cfg in this project if that is what you are wondering |
19:19:37 | BitPuffin | Araq: weird |
19:19:41 | BitPuffin | sinister bug :P |
19:19:48 | BitPuffin | I'm writing a bug report |
19:23:46 | Araq | OrionPK: Nimrod's sections have the point to make comments like '##Types' superfluous ... |
19:24:45 | OrionPK | sections? |
19:25:03 | Araq | ##Types |
19:25:04 | Araq | type |
19:25:06 | Araq | ... |
19:25:09 | OrionPK | right |
19:25:10 | BitPuffin | Araq: is this good enough? https://github.com/Araq/Nimrod/issues/660 |
19:26:01 | Araq | BitPuffin: aha! can reproduce it :P |
19:26:12 | OrionPK | Araq preferably I'd have code folding over that entire thing |
19:26:13 | Araq | the compiler doesn't re-run the linker if nothing changed |
19:26:29 | filwit | woah.. wait.. guess i don't need overload by return types.. |
19:26:33 | BitPuffin | Araq: aaaaahhh, so that's why I only saw that error once |
19:26:35 | filwit | neverminds. |
19:26:46 | Araq | BitPuffin: yeah :-/ |
19:27:00 | Araq | the compiler should always invoke the linker IMHO |
19:27:01 | BitPuffin | Araq: yep so when removing nimcache I get the error message |
19:27:53 | BitPuffin | Araq: added a comment on the bug with our new discovery |
19:28:12 | BitPuffin | (this is to document the process I guess) |
19:28:18 | OrionPK | It would be nice if asyncio used generics |
19:28:23 | BitPuffin | Araq: so two bugs in one |
19:28:26 | BitPuffin | isn't that lovely |
19:28:36 | OrionPK | so I could attach arbitrary data to the socket |
19:29:10 | Araq | OrionPK: yeah and then everything that uses sockets needs to be generic too. great idea. generics are viral |
19:29:17 | OrionPK | :P |
19:29:28 | OrionPK | only as an option |
19:29:43 | OrionPK | and only libraries would need it |
19:29:47 | BitPuffin | Araq: the linker bug is probably a bit less sinister than the other bug I assume |
19:30:16 | EXetoC | system.nim doesn't count, right? :p |
19:30:31 | Araq | BitPuffin: both bugs are easy to fix |
19:30:55 | Varriount | Is there any way for a macro to get a node, or information, associated with an identifier? |
19:31:36 | Varriount | Like, say I have a macro that is passed the name of a procedure - Can I look up the procedure's ast somehow? |
19:32:22 | BitPuffin | Araq: that's good then :P |
19:33:07 | EXetoC | so passing a T that the function could treat as a series of bytes wouldn't be good? operator to the rescue then! |
19:33:30 | BitPuffin | Araq: are generic parameters other than ranges supposed to work because I had issues with that |
19:35:21 | Araq | no idea. I don't even know what are regressions and what never worked with generics. creeping featurism is bad. |
19:35:44 | Araq | but hey, lets have MOAR features. |
19:36:04 | Varriount | I prefer to have bugs fixed first, then features. |
19:36:40 | Varriount | Unfortunately, I don't know where to start in regards to fixing nimrod compiler bugs. |
19:36:47 | BitPuffin | Araq: well I think in that case it's more about completeness of a feature (generic parameters) rather than new features |
19:36:58 | BitPuffin | Varriount: I know where to start |
19:37:10 | BitPuffin | Varriount: https://github.com/Araq/Nimrod/issues |
19:38:04 | Varriount | BitPuffin, well, yeah, but how would I fix those bugs? Even if I find what I *think* is the problem site, I wouldn't know how to correct it. |
19:39:07 | BitPuffin | Varriount: mess with it until it works I guess, version control makes it easy |
19:39:32 | BitPuffin | but yeah |
19:39:38 | BitPuffin | maybe we should all sit down and fix bugs |
19:40:12 | BitPuffin | ah this is what Araq said was a known issue https://github.com/Araq/Nimrod/issues/618 |
19:40:53 | EXetoC | fix what bugs? I don't have the energy to mess about with the compiler |
19:41:02 | BitPuffin | EXetoC: all the bugs |
19:41:31 | BitPuffin | would be nice to have some sort of overview document of the compiler |
19:41:39 | BitPuffin | just so that you have a sort of reference |
19:41:48 | Varriount | BitPuffin, there's the internals document |
19:41:53 | EXetoC | like the one covering quite a few modules? |
19:41:59 | BitPuffin | oh |
19:42:00 | BitPuffin | links? |
19:42:18 | Varriount | BitPuffin, http://nimrod-code.org/documentation.html |
19:42:27 | Varriount | Lokk at the very bottom |
19:42:31 | Varriount | *Look |
19:42:39 | * | io2 quit () |
19:42:45 | Varriount | "Internal Documentation" |
19:43:03 | BitPuffin | seriously though guys |
19:43:09 | BitPuffin | if we spent a full weekend collectively |
19:43:15 | BitPuffin | maybe we could fix like 40 bugs |
19:43:20 | BitPuffin | and introduce 583 new ones |
19:44:08 | Varriount | BitPuffin, ok, how about this one - https://github.com/Araq/Nimrod/issues/618 |
19:44:27 | BitPuffin | Varriount: that's the one I'm looking at too |
19:44:39 | EXetoC | it's a cakewalk innit |
19:45:10 | BitPuffin | yeah I might try it after dinner |
19:45:20 | BitPuffin | and read the compiler docs during dinner :P |
19:47:24 | EXetoC | enjoy |
19:47:40 | * | Demos joined #nimrod |
19:47:56 | Araq | "'result' cannot be the last statement of a proc, either directly or indirectly (inside another "expression-statement")" |
19:48:26 | Araq | yes and that's in accordance with the (unwritten parts of the) spec. |
19:50:09 | Varriount | Araq, who was that directed at? |
19:50:13 | EXetoC | me |
19:50:28 | Araq | proc h: int = |
19:50:29 | Araq | let x = if true: result else: 0 # This works |
19:50:32 | Araq | argh |
19:50:46 | EXetoC | I had self-documentation in mind, when the last expression in a branch is result. but it's minor. alright, onto the next minor issue |
19:50:52 | EXetoC | whatever that is :> |
19:51:22 | Varriount | I'm working on 641, since it actually has a traceback/error |
19:52:12 | Varriount | if isNil(n.sons): result = 0 <- Why would this cause a segfault? |
19:52:21 | BitPuffin | Araq: what exactly is the issue with the undefined reference to swizzleimpl etc, maybe I'll be able to fix it |
19:52:24 | Araq | n is nil? |
19:53:05 | Araq | BitPuffin: try to run it with --implicitStatic:on |
19:53:13 | EXetoC | since it's a clear indication that no change has been made, but there are about three ways to remedy that |
19:53:15 | Araq | that's about to become the default anyway |
19:53:43 | EXetoC | let noChange = result |
19:53:52 | EXetoC | alright, good to know |
19:54:11 | Araq | EXetoC: I was referring to --implicitStatic:on |
19:54:23 | BitPuffin | Araq: that doesn't seem to make any difference? |
19:54:32 | Araq | BitPuffin: too bad :P |
19:54:46 | BitPuffin | lol |
19:54:54 | BitPuffin | them hintz |
19:55:27 | NimBot | Araq/Nimrod master f8d6545 Mark Henderson [+0 ±1 -0]: a few typos |
19:55:27 | NimBot | Araq/Nimrod master 70af5f7 Andreas Rumpf [+0 ±1 -0]: Merge pull request #659 from markhend/master... 2 more lines |
19:55:29 | BitPuffin | still says undefined reference etc |
19:56:19 | Varriount | What is 'auto'? I see it in the docs, but it has no description.. |
19:56:55 | BitPuffin | Varriount: proc foo(a, b): auto = a + b |
19:57:32 | Varriount | BitPuffin, you left out the param types? |
19:57:44 | BitPuffin | Varriount: yes I did sir |
19:58:00 | EXetoC | the type is implicitly expr I believe |
19:58:14 | Demos | does that make the function implicitly generic or does the compiler solve for the types? |
19:58:24 | Araq | implicitly generic |
19:58:27 | Varriount | Demos, currently, the compiler just crashes. |
19:58:33 | BitPuffin | works for me |
19:58:36 | BitPuffin | in nimrod repl |
19:58:41 | BitPuffin | lol |
19:58:46 | Varriount | BitPuffin, var s = proc (x, y): auto = x+5 |
19:58:50 | Demos | the rpel crashes if you sneeze at it though |
19:59:27 | BitPuffin | Demos: like the plane you'll be on your next trip |
19:59:57 | Demos | erm OK |
20:00:06 | BitPuffin | http://youtu.be/CXRMCzmbcdw |
20:00:18 | BitPuffin | brb shower |
20:14:42 | * | Endy quit (Ping timeout: 246 seconds) |
20:18:40 | * | freezerburnv joined #nimrod |
20:28:40 | Varriount | Araq, is there any option to make nimrod explicitly check for nil arguments? |
20:28:54 | Araq | no. |
20:39:24 | * | Jackneilll quit (Remote host closed the connection) |
20:55:20 | * | zezba9000 joined #nimrod |
20:55:58 | BitPuffin | alright |
20:56:04 | BitPuffin | time to cook and read compiler docs |
20:57:30 | Araq | hi zezba9000 welcome |
20:58:07 | filwit | you're not welcome here, zezba9000 |
20:58:17 | zezba9000 | lol |
20:58:40 | filwit | ;) |
21:00:15 | zezba9000 | Araq: Tnx |
21:00:20 | BitPuffin | dom96, Araq: maybe we should be present in the live chatroom on jupiterbroadcasting if my email about nimrod gets read on coder radio |
21:00:25 | BitPuffin | think it is tomorrow |
21:01:25 | zezba9000 | Got on cuz I did some benchmarks of C# last night. Going to add Nimrod tests to compare in a sec. |
21:01:41 | zezba9000 | How hard would it be to build Nimrod for iOS or Android? |
21:02:02 | Araq | we have an iOS example in the repo |
21:02:16 | Araq | and perhaps an Android too lol |
21:02:40 | zezba9000 | The results so far are: https://github.com/zezba9000/RayTraceBenchmark |
21:03:56 | filwit | i'm adding the Nimrod results right now |
21:04:23 | zezba9000 | **But they are only from one PC so far. |
21:05:28 | Demos | unhless nimrod decided to copy out the ass I predict large fasterness |
21:05:52 | zezba9000 | yes it is much faster then C# on x86-x64 |
21:06:04 | zezba9000 | but I rly want to test on ARMv6 and ARMv7 |
21:06:27 | Demos | is ARMv7 the ARM64 one? |
21:06:48 | zezba9000 | If you look at the "LG VM670 600MHz": It took "359.878 sec" |
21:06:58 | zezba9000 | with Mono |
21:07:31 | zezba9000 | Would be cool to see how much faster Nimrod is on that device as its by far the slowest. |
21:07:53 | zezba9000 | No not ARM64 |
21:08:16 | zezba9000 | Only new iPhones have that... and that new iPad |
21:11:33 | zezba9000 | Nirmod on the RaspberryPi only takes 6 sec, where Mono 2.11.4 HardFloat takes 35 sec... So that gives a good idea at how much faster it is. |
21:12:00 | Varriount | Araq, do you know why semstmts.semLambda, line 883, passes nil to semParamList? |
21:12:09 | OrionPK | 6 seconds vs 35 seconds sounds like an algorithm problem |
21:12:51 | Varriount | It seems that line is part of the root of the problem with "var s = proc (x, y): auto = x+5" |
21:13:08 | filwit | OrionPK: i don't think it is. We will be posting code to show you in a sec. Can double check in a sec |
21:13:11 | zezba9000 | No they are using the same algorithm |
21:14:55 | Demos | is it real-time on x86_64? |
21:15:21 | Araq | Varriount: quite possible. what do other procs pass to semParamList? |
21:16:46 | zezba9000 | No it renders the image once in system memory. Then after the test is done, is save to a raw image file |
21:17:10 | zezba9000 | The resolution of the image is 1280x720 |
21:17:14 | dom96 | BitPuffin: What time is it on? |
21:17:34 | dom96 | oh cool, welcome filwit's brother. :P |
21:17:57 | filwit | ;) |
21:18:07 | BitPuffin | dom96: 6pm Berlin time |
21:18:08 | zezba9000 | dom96: Tnx |
21:18:15 | BitPuffin | http://www.jupiterbroadcasting.com/release-calendar/ |
21:18:51 | dom96 | BitPuffin: hrm, remind me tomorrow :P |
21:19:17 | BitPuffin | dom96: will dew! |
21:19:23 | * | freezerburnv quit (Quit: freezerburnv) |
21:20:09 | BitPuffin | dom96: you could also just have jblive.tv open in a tab and check it once an hour for the countdown :P |
21:20:40 | dom96 | BitPuffin: I will probably forget to check :P |
21:21:11 | Varriount | Araq, assuming it isn't aliased anywhere else under a different name, semParamList is only passed a nil genericParams on that one line. Elsewhere, it is either passed a genericParams node from what I can only guess is the actual syntax tree, or a genericParams node is created is created and passed. |
21:21:14 | * | Associat0r quit (Quit: Associat0r) |
21:22:09 | BitPuffin | btw filwit and zezba9000, how was the code size relative to each other in your ray tracers? |
21:22:25 | filwit | BitPuffin: just pushed the Nimrod code up |
21:22:37 | BitPuffin | filwit: link? |
21:22:46 | filwit | https://github.com/zezba9000/RayTraceBenchmark |
21:22:56 | dom96 | Compiler bug fixing weekend is a good idea btw. I'm sure if we all work together we can at least fix a couple of bugs, if we all support each other it will be much easier :) |
21:23:49 | Varriount | Hm. Even if I can't fix certain bugs, I can at least help narrow them down. |
21:24:04 | zezba9000 | .NET is 10k Nimrod 94k |
21:24:05 | Araq | Varriount: ok then change it to something that seems appropriate to you |
21:24:10 | BitPuffin | filwit: looks like nimrod was around 3/5ths ! |
21:24:35 | BitPuffin | but that wasn't even looking at sloc |
21:24:38 | filwit | BitPuffin: yep! pretty impressive for Nimrod |
21:25:00 | BitPuffin | when looking at sloc it was around half lol |
21:25:01 | Varriount | Also, consider the fact that nimrod doesn't have a big shiny standard library. |
21:25:05 | BitPuffin | or even less than half |
21:25:18 | BitPuffin | or no |
21:25:18 | filwit | BitPuffin: i wasn't concerned with LOC, plus i think being a little more verbose isn't bad |
21:25:19 | BitPuffin | about half |
21:25:55 | BitPuffin | filwit: sure, but when it's half the size you gotta admit it's really attractive language wise |
21:26:04 | BitPuffin | especialy considering that nimrod is pretty pretty |
21:26:38 | filwit | BitPuffin: lol, true it's quite a bit less |
21:27:06 | BitPuffin | dom96: yep, so let's get on Araq's butt to have him encourage the damn thing :P |
21:27:25 | BitPuffin | filwit: but yeah who cares about a few line here and there |
21:27:53 | dom96 | filwit: 'makefile'; what is this blasphemy doing in Nimrod's directory?! :P |
21:28:05 | filwit | dom96: LOL.. |
21:28:08 | BitPuffin | that should be a nakefile!!! |
21:28:12 | * | filwit kinda likes makefiles |
21:28:23 | * | Varriount hates autoconfig |
21:28:46 | filwit | dom96: just in case someone doesn't know how to compile with -d:release |
21:29:36 | dom96 | BitPuffin: I'm sure he encourages it, just in a silent way :P |
21:30:51 | OrionPK | websockets with asyncio seems to have stabilized at 15,868k memory :P |
21:31:06 | OrionPK | would prefer it stabilized at 900k though, like the non-asyncio version |
21:31:40 | BitPuffin | dom96: no he despises the very idea, he wants all bugs for himself :P |
21:32:08 | zezba9000 | Added C# results for "AMD Phenom II X4 920 2.8Ghz" CPU to compare with Nimrod. |
21:32:18 | filwit | (that's my CPU) |
21:32:30 | filwit | and the CPU which we ran Nimrod on |
21:32:52 | * | Hannibal_Smith joined #nimrod |
21:32:53 | OrionPK | dom when you have a minute, I'd like your take on where you think the leak might be happening. |
21:32:57 | OrionPK | https://github.com/onionhammer/onion-nimrod/blob/master/websockets/websockets.nim |
21:34:14 | OrionPK | afk |
21:34:54 | * | dom96 needs to take a shower first |
21:34:55 | dom96 | bbl |
21:34:59 | filwit | bye |
21:36:54 | * | VarriountPhone joined #nimrod |
21:44:38 | * | fredmorcos joined #nimrod |
21:47:54 | VarriountPhone | Araq, I passed the semParamList function a new node, and it gave me an invalid type error |
21:49:35 | VarriountPhone | Also, I feel like I'm going to throw up |
21:50:08 | BitPuffin | VarriountPhone: did you lose your taste for nimrod? |
21:50:48 | VarriountPhone | No, my people in my family have been getting sick |
21:51:30 | BitPuffin | haha your people |
21:51:38 | BitPuffin | no but get well you guys |
21:51:40 | BitPuffin | I mean it |
21:53:27 | BitPuffin | Araq: why isn't pragmas.nim called sempragmas? |
22:00:03 | zezba9000 | I know Nimrod has a Nimrod to javaScript component correct? How hard do you think it would be if say I wanted to make a Nimrod to C# component. The reason for this is portability to Indie C# only platforms like PSVita(via PSM), Xbox360(Indie), WP7 and Silverlight plugins? |
22:00:35 | BitPuffin | zezba9000: not harder than the others I would think |
22:01:27 | zezba9000 | How does Nimrod limit itself when it compiles to javaScript? As javaScript doesn't have pointer access ect? |
22:02:22 | zezba9000 | Does it just give compile errors when trying to use unsuported features |
22:02:39 | BitPuffin | zezba9000: it doesn't limit itself |
22:02:46 | Araq | zezba9000: nimrod supports 'ref' but not 'ptr' for JS, there are lots of other limitations as JS lacks unsigned ints for instance |
22:02:56 | BitPuffin | zezba9000: currently javascript nimrod semantics are different than nimrod semantics |
22:03:08 | Araq | BitPuffin: now that's not fair |
22:03:10 | * | DAddYE joined #nimrod |
22:03:21 | Araq | the semantics are the same except for corner cases in closures |
22:04:21 | BitPuffin | Araq: you aren't always fair either :D but okay I could have elaborated |
22:04:56 | zezba9000 | So you could say I could use most of the same code to write a Native Phone App and WebGL version? |
22:05:06 | BitPuffin | Araq: what is your stance on a bugfixing weekend |
22:05:08 | zezba9000 | ...of a game |
22:05:08 | BitPuffin | zezba9000: absolutely |
22:05:20 | BitPuffin | zezba9000: in fact that's what I'm slowly doing |
22:05:29 | zezba9000 | So if I made a Nimrod to C# component this should work as well |
22:05:55 | BitPuffin | yes |
22:06:51 | BitPuffin | zezba9000: you could make a simple test if you want to check |
22:08:10 | Araq | BitPuffin: that suggests that I'm not spending as much time as possible on nimrod but I do |
22:08:13 | zezba9000 | I am not familiar with Nimrod at all so would have to learn a little more first. Before that though I would like to test it on WinRT frameworks for Win8 and WP8. |
22:09:13 | BitPuffin | Araq: that's the synical way to look at it |
22:09:16 | BitPuffin | cynical* |
22:09:28 | zezba9000 | Has anyone ever tested on WinRT frameworks? Or even NaCl? These platforms don't have all the normal stuff in them. |
22:10:00 | BitPuffin | Araq: but that is not a fair way to look at it |
22:10:11 | Araq | I don't think NaCl works, zezba9000 |
22:10:29 | Araq | nimrod uses mmap etc which are not supported on nacl afaik |
22:10:33 | zezba9000 | Araq: Is this because the standard libraries don't work? |
22:10:45 | BitPuffin | Araq: it just says that writing a compiler for a language is a lot of work and that the community wants to let you focus on the last features you need before the freeze without worrying too much about bugs |
22:15:00 | * | io2 joined #nimrod |
22:15:29 | * | DAddYE quit (Remote host closed the connection) |
22:15:30 | zezba9000 | So does Nimrod currently not have async IO frameworks? Javascript using the async model? So could this be changed to support the async models on WinRT and NaCl? Or am I missing something |
22:16:03 | fredmorcos | Araq, there was a discussion earlier about case statements, on ints and on strings |
22:16:16 | Araq | fredmorcos: well? |
22:16:46 | fredmorcos | where not covering all cases for ints gets the compiler to spit out: Error: not all cases are covered |
22:16:56 | fredmorcos | while not covering all cases for strings is ok |
22:17:08 | fredmorcos | may I ask what the reasoning about this difference is? |
22:17:51 | fredmorcos | Tutorial 1 says that you can't possibly cover all cases for strings |
22:18:10 | fredmorcos | which is strange, because the same is true for ints, theoretically speaking |
22:18:27 | fredmorcos | practically speaking, the int set is finite, but so is the strings set |
22:18:43 | Araq | no, that's wrong |
22:19:02 | Araq | practically speaking the int set is finite but the strings set is not |
22:19:09 | fredmorcos | how so? |
22:19:11 | filwit | that's what i said |
22:19:18 | Araq | "a", "aa", "aaa", ... |
22:19:32 | fredmorcos | Araq, what about the length of the string, isn't that an int? |
22:19:54 | Araq | hmm a fair point I guess |
22:19:58 | Araq | :D |
22:20:06 | fredmorcos | so the longest string you can have is probably of length MAX_UINT |
22:20:27 | BitPuffin | wtf is RTL |
22:20:30 | EXetoC | try to write a case range for that :p |
22:20:45 | fredmorcos | EXetoC, else: nil :) |
22:20:50 | Araq | well in any case you can do low(int)..high(int) and cover every case but you can't do the same for strings |
22:20:53 | filwit | i would like to know about zezba9000's question as well though. What exactly would it take to make Nimrod compile a binary for Win8/WP8 & Nacl? |
22:21:03 | Araq | I don't know |
22:21:04 | dom96 | VarriountPhone: strange that your r/nimrod post is only visible in /new |
22:21:33 | EXetoC | fredmorcos: not a range, but I also think that the requirements should be the same |
22:21:39 | Araq | filwit: when I try these things I do what needs to be done to make it work :P |
22:22:15 | filwit | Araq: i understand. just want to know where my boundaries are ;) |
22:23:36 | zezba9000 | Maybe a fake "mmap" could be used on NaCl. So just write a dumby mmap of the features you need to use on the platforms that don't support it. |
22:23:54 | fredmorcos | Araq, what about adding an enforcement in the compiler to have an explicit else: <something> in switches on strings? |
22:24:28 | Araq | why? what's the point? everybody can see that a string case without else can't cover every case |
22:25:04 | BitPuffin | and what the hell is a ROD file |
22:25:12 | fredmorcos | Araq, 1. will be consistent with switches on ints, 2. programmer will be aware that they need to explicitly handle the remainder of cases (which is usually a good thing) --> no gotchas in their code |
22:26:28 | Araq | so every string case requires an 'else'? |
22:26:42 | fredmorcos | yes |
22:26:45 | EXetoC | I don't know if it matters, since "case x of 0'u32: 1 else 1'u32..uint32.max: 2" isn't that useful anyway. it's just more verbose than else |
22:27:18 | EXetoC | but maybe being explicit isn't the goal |
22:27:46 | Araq | fredmorcos: you've a point. I'll consider changing it |
22:28:25 | fredmorcos | Araq, alright... i would be interested in providing a patch if 1. you'll accept it, 2. it's simple enough |
22:28:38 | BitPuffin | time to walk the dog and sleep |
22:28:43 | BitPuffin | I read enough to perhaps fix a bug or so |
22:28:55 | BitPuffin | or at least know a little bit where I might start looking |
22:29:01 | BitPuffin | goodnight y'all! |
22:29:11 | EXetoC | buy buy |
22:29:27 | fredmorcos | good night! |
22:29:40 | BitPuffin | EXetoC: purchase purchase |
22:29:57 | * | brson joined #nimrod |
22:30:12 | dom96 | BitPuffin: sweet dreams! |
22:33:12 | Araq | fredmorcos: 2. it's simple enough but a bit tedious as it requires a deprecation path |
22:33:53 | * | BitPuffin quit (Ping timeout: 245 seconds) |
22:34:23 | * | freezerburnv joined #nimrod |
22:37:11 | freezerburnv | Evening all |
22:40:07 | VarriountPhone | I just threw up 2 glasses of water, 4 taquitos, and a pineapple pop |
22:40:14 | VarriountPhone | blargh |
22:40:19 | freezerburnv | Also: that benchmark zezba9000 posted is awesome |
22:40:38 | freezerburnv | VarriountPhone: Owch. Sounds like you got something nasty going on there :( |
22:41:09 | VarriountPhone | :< |
22:41:17 | freezerburnv | Hope you feel better soon! |
22:42:48 | EXetoC | that wasn't very wise |
22:51:35 | filwit | freezerburnv: the test zezba9000 posted was originally adapted from code found in this Nimrod forums post: http://forum.nimrod-code.org/t/167 |
22:52:06 | filwit | freezerburnv: he haven't updated the repo to give appropriate credit yet |
22:52:10 | filwit | we** |
23:04:23 | * | Hannibal_Smith quit (Quit: Sto andando via) |
23:07:06 | freezerburnv | I was mostly just saying it was awesome :) |
23:10:39 | zezba9000 | freezerburnv: Well I would agree with you on that ;) |
23:16:48 | fredmorcos | freezerburnv, what benchmark? |
23:18:02 | zezba9000 | fredmorcos: https://github.com/zezba9000/RayTraceBenchmark |
23:21:42 | * | Ricky_Ricardo joined #nimrod |
23:21:46 | * | CarpNet quit (Quit: Leaving) |
23:27:02 | * | gour_ quit (Quit: WeeChat 0.4.1) |
23:35:11 | * | Ricky_Ricardo quit (Quit: Ricky_Ricardo) |
23:36:13 | fredmorcos | I used to work for a professor who commented out LaTeX with some \newcommand he defined in every file, called PUNT, that replaces its parameters with nothing... made me angry, because the first time I ran after the bug where some pieces of the document wouldn't get rendered despite being in the LaTeX file. |
23:36:34 | fredmorcos | Spent hours |
23:37:03 | fredmorcos | And what pissed me off more was that he used emacs, and couldn't just M-; a marked block |
23:37:27 | * | io2 quit () |
23:37:34 | fredmorcos | same for #if 0 |
23:37:52 | fredmorcos | and when false: :( |
23:38:46 | fredmorcos | because the code stays highlighted, and unless you notice this \PUNT, #if 0, and when false:... you're going to have a really bad time |
23:39:15 | fredmorcos | on the other hand, most reasonable highlighting text editors, change text color when something is commented out |
23:40:22 | fredmorcos | which makes it trivially visible that it won't be part of the output |
23:40:41 | fredmorcos | what I'm getting to is, in tutorial 1, I think it is not a good idea to have something like the following: Note: To comment out a large piece of code, it is often better to use a when false: statement than to use real comments. This way nesting is possible. |
23:53:41 | freezerburnv | A truly good editor will notice which when block is valid and make the others less visible :P |
23:54:52 | freezerburnv | I wonder if that kind of thing is in the idetools command line stuff? |