00:03:40 | dom96 | hello SchalaZeal |
00:04:09 | dom96 | SchalaZeal: What do you mean? |
00:05:23 | dom96 | filwit: Haha. Nice. |
00:05:33 | filwit | not really... |
00:05:35 | dom96 | Better protect your gmail more. |
00:05:46 | filwit | luckly it actually blocked their login |
00:05:58 | filwit | cause it was so far out of my usual login locations |
00:06:01 | filwit | so I should be fine |
00:06:16 | filwit | my previous password was crap anyways |
00:06:44 | dom96 | I have both a password and a code which can only be generated by my phone :D |
00:08:00 | SchalaZeal | oops |
00:08:06 | SchalaZeal | thought you were all in bed |
00:08:55 | SchalaZeal | anyway, what I mean is that the compiler could simply delegate the generated code to a cross compiler toolchain like..... arm-wince-gcc |
00:09:46 | SchalaZeal | But instead it stops at the generated code and makes the developer take it to a computer with the targetted system |
00:10:30 | SchalaZeal | In the case of say, iPhone or Android, that isn't an option really. |
00:10:40 | dom96 | Well ARM support was quite trivial to implement. |
00:10:52 | SchalaZeal | so I've seen |
00:11:08 | dom96 | Cross compilation should be possible though quite easily. |
00:11:18 | dom96 | IIRC nimrod already supports it |
00:11:51 | dom96 | Maybe you could improve it? |
00:12:13 | SchalaZeal | I wish I could directly but I suck at understanding internals |
00:12:31 | SchalaZeal | currently coding a helper program |
00:13:24 | dom96 | That's fine too. |
00:14:20 | SchalaZeal | My biggest peeve about Nimrod has to be the cross compiler system that's not really cross compiling anything as much as it is processing defines and leaving it at that. |
00:15:06 | dom96 | Submit a bug report on github perhaps |
00:15:15 | dom96 | or create a new thread on the forum |
00:15:21 | dom96 | Araq has gone to sleep unfortunately. |
00:15:29 | SchalaZeal | hmm |
00:16:45 | dom96 | Araq: oh, btw when you get back. Nimrod does bootstrap with -d:release on ARM :) |
00:17:15 | SchalaZeal | woah... looking at internal docs and....... "ref object" syntax is implemented?? |
00:17:48 | SchalaZeal | like pfoo = ref object x, y, z: int? |
00:18:22 | dom96 | it is? 0_O |
00:19:05 | SchalaZeal | uses it as an example of compiler hacking |
00:19:28 | SchalaZeal | http://nimrod-code.org/intern.html#code-generation-for-closures |
00:19:41 | SchalaZeal | look at the example code |
00:21:23 | dom96 | Maybe its been there all along but I never realised. |
00:21:34 | dom96 | Those docs are quite old though. |
00:21:58 | SchalaZeal | build.nimrod-code.org/docs are the new ones? |
00:22:08 | dom96 | yes |
00:23:35 | SchalaZeal | k |
00:24:57 | SchalaZeal | ah no... got an error... guess it doesn't |
00:30:19 | SchalaZeal | pull requests sync my fork with the original, yes? |
00:30:46 | dom96 | hrm, i'm not sure. |
00:39:21 | SchalaZeal | well, here's my first commit anyway: https://github.com/Schala/Nimrod |
00:42:15 | SchalaZeal | added unsigned C types and switched cint to int and clong to int32, they were reversed |
00:43:36 | dom96 | I think Araq is implementing something to do with that so your changes will clash with his. |
00:46:42 | SchalaZeal | ........oh |
00:46:55 | SchalaZeal | *junks my fork* |
00:47:25 | Trixar_za | No, forking is fun |
00:47:28 | Trixar_za | I do it all the time |
00:47:45 | dom96 | I prefer sporking |
00:48:18 | SchalaZeal | sporking = forking and deleting original for lolz? |
00:49:12 | dom96 | I have no clue what sporking means, I don't think it means anything :P |
00:49:44 | SchalaZeal | heh I know |
00:50:14 | SchalaZeal | The lineage of sporking goes back several eons, in fact predating the dinosaurs! |
00:59:00 | SchalaZeal | Almost done with my StormLib and JPEG wrapperS. Which means after a bit of testing Nimrod code can soon deal with .jpg and .mpq files |
00:59:34 | dom96 | nice |
01:00:45 | SchalaZeal | MPQ files are a propritary archive format used by Blizzard in their games |
01:02:46 | SchalaZeal | and I have an implementation of Minecraft's map API in the works. It won't be easy though because Java's API has stuff Nimrod lacks somewhat. |
01:03:18 | dom96 | Now that would be cool :) |
01:03:55 | SchalaZeal | the source code in Java is on the wiki, so I'm trying to rewrite that in Nimrod |
01:05:26 | SchalaZeal | my work so far: https://github.com/Schala/nimrod-modules/blob/master/lib/pure/minecraft.nim |
01:07:35 | fowl | SchalaZeal, cool work on the png/jpeg wrappers |
01:07:53 | fowl | i tried to wrap freeimage but gave up pretty quickly >_< |
01:08:12 | SchalaZeal | C++ wrapper? |
01:09:02 | SchalaZeal | I do have a PNG wrapper in the works but doing all the structs is tedious |
01:09:36 | * | dom96 shall follow you :) |
01:18:55 | * | SchalaZeal quit () |
01:48:34 | * | Trixar_za is now known as Trix[a]r_za |
02:45:37 | * | filwit quit (Quit: Leaving) |
05:27:09 | * | SchalaZeal joined #nimrod |
05:27:28 | SchalaZeal | Well, an even better undertaking came to mind. |
05:29:41 | SchalaZeal | Terraria's developer was answering a Q/A about the cease of development. When someone asked about open sourcing, they replied "There's a reason we didn't obfuscate the code ;)" ..... which gives me the idea of rewriting it in Nimrod |
08:38:33 | Araq | hi SchalaZeal |
08:38:54 | Araq | I'm working on the unsigned stuff, so please be patient ;-) |
08:40:08 | Araq | I also have a much better system for integer promotion rules in the works |
08:40:41 | Araq | and 'ref object' is in the internal documentation as pseudo code ;-) |
08:40:49 | Araq | the compiler still does not support it |
08:56:46 | Araq | I have to go; answered about the cross compilation in the forum |
08:56:48 | Araq | bye |
09:07:22 | SchalaZeal | ah ok |
09:07:30 | SchalaZeal | I was busy heh |
09:24:23 | SchalaZeal | by the way, in regards to calling a compiler with a name like "arm.linux.gcc", having some of these myself they are known to have hyphens instead of dots, like arm-linux-gcc, and some vendors have different names to the executable name (ie. Ubuntu's MinGW is i586-mingw32msvc-gcc while Arch's is i486-mingw32-gcc) So there might need to be some flexibility regarding the toolchain's prefix, like |
09:24:23 | SchalaZeal | the option to explicitly specify it, like FPC does with binutils |
09:24:44 | SchalaZeal | with its -XP switch |
09:48:52 | * | Trix[a]r_za is now known as Trixar_za |
09:52:12 | * | mal`` quit (Quit: ERC Version 5.3 (IRC client for Emacs)) |
09:56:28 | * | mal`` joined #nimrod |
10:12:36 | Araq | back |
10:13:13 | Araq | SchalaZeal: the config system takes care of the details of the naming of the exes |
10:13:48 | Araq | the name arm.linux.gcc is the name for the config system |
10:14:00 | Araq | it will be mapped to some exe like so: |
10:14:13 | Araq | arm.linux.gcc = "arm-linx-gcc" |
10:15:08 | SchalaZeal | ah |
10:15:19 | SchalaZeal | that sounds awesome |
10:15:57 | SchalaZeal | man my arm is tired |
10:16:15 | Araq | try a powerpc then ;-) |
10:16:23 | Araq | sorry, couldn't resist ... |
10:17:35 | SchalaZeal | trying to get banned from Warcraft since despite removing my payment info I'm still getting charged because of that stupid agreement, and the company behind it are dinks, so I sort of hit a milestone |
10:18:27 | Araq | ha you should have lots of time for nimrod now :D |
10:18:27 | SchalaZeal | been flooding its chat channel at a fast rate by manually hammering my macro button |
10:18:39 | SchalaZeal | got autobanned |
10:18:55 | Araq | WOW is quite time consuming I heard ... |
10:19:38 | SchalaZeal | and to try to make it seem like I'm up to even more bad, I just googled "wow gold" and spammed the description of the first result on the list |
10:21:23 | fowl | lol |
10:21:35 | fowl | i've lost many friends to WOW :( |
10:22:16 | SchalaZeal | on top of that I've been attempting to quote-unquote "scam" people by sending obviously suspicious letters complete with "cash on delivery" price for 10000g each........only really dumb people fall for these and I'm hoping at least one of the 12 people I sent that stuff to actually reports me for scamming them in the game |
10:22:47 | SchalaZeal | some people tend to simply disregard them |
10:22:55 | Araq | SchalaZeal: sounds you have lots of fun these days :P |
10:23:24 | fowl | SchalaZeal, why would you agree to continue to be charged |
10:23:35 | SchalaZeal | well I tried using Cheat Engine to modify my stats and cheat but the game is virtually unhackable |
10:23:47 | SchalaZeal | that was before I hated the game |
10:24:00 | SchalaZeal | the "annual pass" feature |
10:24:26 | SchalaZeal | if I'm not barred from WOW, the charges end in January |
10:24:50 | SchalaZeal | hopefully though the account won't survive to see a July 9th payment :D |
10:25:43 | SchalaZeal | trying to annoy customer service did no good though... |
10:27:17 | SchalaZeal | even tried trolling them by asking really bad questions such as "What was your favorite part of 9/11?" .... now 9/11 did upset me, make no mistake... but I was willing to say anything to get them to consider banning me |
10:28:28 | SchalaZeal | the most humorous result was this one rep who replied "You sound grumpy. Let me read you one of my favorite poems" and he actually did post a poem in the reply |
10:28:36 | Araq | brb |
10:28:39 | SchalaZeal | anyway, rant's over |
10:29:00 | SchalaZeal | TLDR: I had a fulfilling night |
10:31:00 | Trixar_za | Traceback (most recent call last) tazpanel_inc.nim(124) tazpanel_inc tazpanel_inc.nim(90) cat Error: unhandled exception: index out of bounds [EInvalidIndex] |
10:34:01 | SchalaZeal | btw, yeah I'll have more time for Nimrod, but I've been into 3D modelling too..... hard to choose what I wanted to do more so I do both |
10:34:27 | SchalaZeal | though honestly, modelling gets my attention much more |
10:34:48 | SchalaZeal | coding I need a break from after an hour |
10:35:16 | SchalaZeal | modelling I can do up to a full 8 hours with possible restroom breaks/drink |
10:40:28 | SchalaZeal | OFF TEH BED |
10:40:30 | SchalaZeal | oops |
10:40:33 | SchalaZeal | off to bed |
10:40:40 | * | SchalaZeal quit () |
10:42:38 | Araq | Trixar_za: what's wrong with an "EInvalidIndex" exception? :P |
10:43:06 | Trixar_za | I don't know how to make it go away |
10:43:52 | Trixar_za | http://forum.slitaz.org/topic/nimrod-the-great |
10:43:54 | Trixar_za | :P |
10:45:04 | Trixar_za | Ah, looks like a bug in the package management |
10:45:05 | Trixar_za | lol |
11:04:08 | * | zahary_ joined #nimrod |
11:20:15 | dom96 | good morning, er, I mean afternoon! |
11:21:25 | Trixar_za | Good afternoon dom96 |
11:21:57 | dom96 | hey Trixar_za! |
11:23:35 | dom96 | A package manager in Nimrod :O |
11:23:37 | dom96 | COOL |
11:24:04 | Trixar_za | Well, part of it |
11:26:49 | dom96 | Tell him to put the source of that on github ;P |
11:32:09 | Trixar_za | lol, you want everything to be on github |
11:35:19 | dom96 | yes! |
11:35:44 | Trixar_za | http://forum.slitaz.org/topic/nimrod-the-great#post-11974 |
11:36:19 | dom96 | hehe, thanks. |
11:55:47 | fowl | if i have type Foo = object; bar: proc() is there a way to get the object (caller) from (Foo instance).bar() ? |
11:58:25 | fowl | other than defining it as Foo = object; bar: proc(f: Foo) and calling with f.bar(f) |
12:13:12 | dom96 | No. But you should call it like so: f.bar() |
12:13:21 | dom96 | f.bar() is the same as bar(f) |
12:19:26 | fowl | dom96, not when bar is a field on f |
12:19:46 | dom96 | oh that's what you mean |
12:20:04 | dom96 | No, that's the only way. |
12:20:17 | dom96 | Actually you might want to tell Araq about that. |
12:20:18 | fowl | :( |
12:20:28 | dom96 | It seems like it should just work like f.bar() |
12:20:36 | fowl | f.bar() does work |
12:20:47 | fowl | but how can i know about f from inside f.bar() |
12:21:03 | dom96 | Yeah, in that case you have to pass it. |
12:21:14 | dom96 | The compiler should perhaps infer this |
12:21:36 | dom96 | I'm not sure how complicated implementing this would be. |
12:21:53 | dom96 | But yeah, submit a feature request to github. Or ask Araq when he's around. |
12:22:08 | fowl | ok |
12:22:13 | dom96 | The only way to do it in this situation right now is to do: f.bar(f) |
12:22:22 | dom96 | or, I guess: |
12:22:31 | dom96 | var barFunc = f.bar |
12:22:37 | dom96 | f.barFunc() |
12:23:03 | * | Trixar_za is now known as Trix[a]r_za |
13:13:28 | Araq | fowl: you need to do f.bar(f) in this case |
13:13:35 | Araq | or you use a method ;-) |
13:13:45 | Araq | or a closure |
13:22:01 | Araq | ping zahary_ |
13:27:42 | fowl | i cant see how a method is different, and i need more info about this hidden implicit parameter ._. |
13:38:09 | Araq | well |
13:38:20 | Araq | if you use a proc var, you need dynamic binding |
13:38:32 | Araq | you can get dynamic binding with methods too |
13:38:59 | Araq | I had the same problem as you for the streams module |
13:39:02 | Araq | I used: |
13:39:27 | Araq | oo = object; barImpl: proc(f: Foo) |
13:39:45 | Araq | proc bar(f: Foo) = f.barImpl(f) |
13:40:01 | Araq | and was done with it :P |
15:56:21 | * | SchalaZeal joined #nimrod |
17:51:20 | * | SchalaZeal quit () |
18:23:02 | Araq | ping zahary_ |
18:26:57 | dom96 | Araq: So, tell us about these integer promotion rules :P |
18:27:37 | Araq | the compiler is now smart ;-) |
18:28:00 | Araq | some built-in operators produce an implicit 'range' type, for instance 'mod' and 'and' |
18:28:23 | Araq | so the compiler now knows that |
18:28:27 | Araq | case x mod 3 |
18:28:38 | Araq | of 0, 1, 2: echo "true" |
18:28:46 | Araq | covers all cases |
18:29:23 | dom96 | Very nice. |
18:29:28 | Araq | and 'range' is convertible to a smaller int type, so: |
18:29:39 | Araq | myByte = myInt and 0xff |
18:29:42 | Araq | is valid code now |
18:30:11 | Araq | basically if the compiler can prove it safe at compile time, it is valid |
18:30:16 | Araq | otherwise it's invalid |
18:30:30 | Araq | this means that 'int' is not convertible to 'int32' implicitely anymore |
18:30:34 | Araq | which breaks lots of code |
18:30:43 | fowl | do you have objections to &(), |(), ~() for ints |
18:30:44 | Araq | but IMHO it improves code quality |
18:31:21 | Araq | fowl: yeah because & | and ~ are nicer for more common operations |
18:31:37 | Araq | but you can easily define them for your own code |
18:32:06 | fowl | i did, and felt powerful when it "just worked" :p |
18:32:16 | Araq | bitwise ops are less common in Nimrod code since Nimrod has proper bitsets |
18:32:33 | Araq | flags are supposed to be done with set[T] |
18:33:39 | Araq | oh and yes, the new rules make the compiler slower ... 0.1s for bootstrapping on my machine |
18:36:09 | dom96 | That's not super bad. |
18:37:02 | Araq | yeah it's acceptable |
18:37:20 | Araq | oh and I broke bootstrapping :P |
19:08:00 | * | SchalaZeal joined #nimrod |
19:32:13 | Araq | so SchalaZeal, I'm impementing the cross-compilation stuff now |
19:32:20 | Araq | will you test it? :P |
19:32:45 | SchalaZeal | oops |
19:32:54 | SchalaZeal | yeah I definately will |
19:33:10 | SchalaZeal | mIRC has no alerts >.< |
19:37:27 | Araq | well change that |
19:38:18 | SchalaZeal | I don't develop it.... some ignoramus does |
19:39:26 | Araq | I meant "change it in the settings" ... |
19:40:18 | SchalaZeal | hang on |
19:41:10 | SchalaZeal | nope... I see nothing...heh |
19:41:39 | Araq | use another application then :P |
19:42:29 | * | fowl starts writing "string".echo() >_> |
19:45:28 | Araq | fowl: write "string".echo instead |
19:45:35 | Araq | I dislike trailing empty () |
19:46:06 | Araq | er what? |
19:46:11 | Araq | that doesn't work? o.O |
19:47:41 | fowl | nope <_< |
19:48:31 | * | Araq is fixing it |
19:49:38 | fowl | i assume x.someproc wont call someproc if its a procvar |
19:51:16 | Araq | yeah but 'echo' is hardly a procvar |
19:52:50 | dom96 | Araq: You broke quite a few tests :P |
19:53:09 | Araq | yeah and I bet aporia too :P |
19:54:26 | dom96 | Now it's personal :P |
19:56:21 | Araq | yummy 96.07% |
19:56:27 | Araq | worst result since a long time |
19:59:38 | Araq | dom96: please try to recompile aporia the next days; should it be too painful I'll add the implicit conversion from int to int32 back ... |
20:00:00 | dom96 | will do |
20:17:44 | SchalaZeal | pas2nim is apparently broken, heh |
20:18:04 | SchalaZeal | as is c2nim |
20:19:42 | SchalaZeal | should I rebuild from C sources? |
20:21:32 | SchalaZeal | cause it seems even the compiler itself is failing |
20:22:26 | Araq | well when I say "I broke bootstrapping" |
20:22:40 | Araq | I really mean it and you need to recompile from C sources first :P |
20:23:06 | SchalaZeal | ah |
20:23:07 | Araq | and yeah I know I broke lots of tests as well ... working on it |
20:23:28 | SchalaZeal | is there a way to configure which C compiler to use for bootstrapping? |
20:23:42 | Araq | you can edit the build.sh script |
20:23:57 | Araq | it's quite edit-friendly even though it's generated code |
20:26:37 | Araq | dom96: does docgen still work? |
20:27:55 | SchalaZeal | Well, other than making the compiler 'cl', I don't know about flags... heh |
20:28:05 | dom96 | Araq: Looked at Nimbuild? |
20:28:25 | dom96 | Araq: When the "Documentation" button is green it means the latest commit has built docs successfully |
20:28:34 | Araq | oh I see :-) |
20:42:09 | Araq | ok a minor detail |
20:42:24 | Araq | how should the compiler output "int literal of value X"? |
20:42:38 | Araq | right now it uses "int(X)" |
20:42:56 | Araq | for instance the type "int(6)" is produced for the literal 6 |
20:43:08 | Araq | however, this could be confusing I guess |
20:43:14 | Araq | so how should it be done? |
20:54:20 | dom96 | Can't really think of a better way |
20:54:22 | SchalaZeal | nim_dat.c isn't being outputted, keep getting "no such file or directory" |
20:55:08 | SchalaZeal | bootstrapped the new compiler but that happens when I try to use it |
20:55:21 | Araq | strange |
20:55:31 | Araq | what did you do exactly? |
20:56:54 | SchalaZeal | well I set up MinGW, ran the bootstrap which reported a success, then moved the new compiler binary to my install folder and ran it with no config changes other than what I had before which was setting the compiler to vcc |
20:58:17 | Araq | well the compiler obviously produces nim__dat.c otherwise it wouldn't bootstrap on 4 machines |
20:58:39 | Araq | try to compile with -f |
20:58:53 | SchalaZeal | oh, wait... running it with MinGW helps a bit, but now it's saying koch.res doesn't exist |
21:00:31 | SchalaZeal | this is nuts |
21:00:45 | SchalaZeal | -f doesn't make a difference either |
21:03:07 | SchalaZeal | oh wait |
21:03:14 | SchalaZeal | well got VC build fixed |
21:03:31 | SchalaZeal | GCC still chokes on koch.res not being around though |
21:03:54 | Araq | btw you can't just replace the nimrod.exe |
21:04:02 | Araq | you need to update the stdlib too |
21:05:56 | SchalaZeal | well running the script I made to automate the build does that and.... that won't work |
21:08:06 | SchalaZeal | it compiles koch.nim and nimrtl.nim fine but the new koch gives an unknown exception and nothing else builds |
21:08:48 | Araq | what's an "unknown exception"? |
21:09:21 | SchalaZeal | Error: unhandled exception: unknown OS error [EOS] |
21:09:34 | SchalaZeal | that's all koch will do is output that |
21:10:39 | Araq | compile koch in debug mode then |
21:11:01 | SchalaZeal | k |
21:12:18 | SchalaZeal | http://pastebin.com/SHkzkLrN |
21:13:07 | SchalaZeal | oh! |
21:13:16 | SchalaZeal | it needs bin\nimrod.exe |
21:13:34 | SchalaZeal | won't use the one in install folder or %PATH% |
21:14:55 | SchalaZeal | there we go |
21:15:39 | SchalaZeal | GCC is still broken because <appname>.res won't be found |
21:16:48 | Araq | well does <appname>.res exist or not? |
21:17:47 | SchalaZeal | no, but GCC is supposed to use windres to generate it from <appname>.rc |
21:18:00 | SchalaZeal | which does exist |
21:20:36 | Araq | well you could do without a nice icon for now ... |
21:26:40 | SchalaZeal | I would but it seems mandatory in the build process, but the VC build works so I'm ok for now |
21:27:41 | Araq | you need to edit 'koch.nim' to get rid of it |
21:30:13 | SchalaZeal | ah ok |
21:34:17 | Araq | there you go, SchalaZeal, I even documented it :P |
21:34:50 | dom96 | So, should I sacrifice my precious time to set up nimbuild on my RPI? :P |
21:36:07 | Araq | hrm yes |
21:37:07 | SchalaZeal | oops |
21:37:10 | SchalaZeal | thanks! |
21:55:02 | * | Trix[a]r_za is now known as Trixar_za |
23:00:15 | SchalaZeal | hmm... complains about the times module missing now |
23:03:57 | SchalaZeal | I think one of the paths in nimrod.cfg was accidentally removed |
23:04:05 | SchalaZeal | in the cross commit |
23:04:28 | SchalaZeal | hmm |
23:05:02 | SchalaZeal | oh |
23:05:04 | SchalaZeal | my bad |
23:05:19 | SchalaZeal | must've moved the new cfg rather than copying it... doy! |
23:05:53 | SchalaZeal | ah yes, fixed |
23:14:52 | * | SchalaZeal quit () |
23:23:49 | * | SchalaZeal joined #nimrod |
23:31:37 | SchalaZeal | Hmm... I have a question about babel. |
23:43:48 | SchalaZeal | aw nuts... cross compilation's a bit off |
23:44:34 | SchalaZeal | tries to call i486-mingw32-gcc.exe instead of just i486-mingw32-gcc, my Linux-to-Win32 cross compiler |
23:48:16 | SchalaZeal | To be honest though, the '.exe' suffix, when calling from command prompt in Windows, is optional. I think it would be better just to omit the explicit '.exe' suffix in the Win32 C compiler calls |