<< 01-12-2013 >>

00:00:00ryeguylol that's true
00:00:03ryeguythose are amusing to read
00:00:08filwiti have a good idea: we combined popular things: 4Chan raids + Rails articles
00:00:16eigenlichtI guess they are mad by nature
00:00:26filwitso.. we storm different IRC channels with pro-nimrod supporters
00:00:30ryeguyhire 4chan as a marketing firm for your language. what could go wrong?
00:00:36filwit^ LOL
00:00:42filwitthat would backfire so fast...
00:00:46IrvMGHello, How to create a sha1?
00:01:07AraqIrvMG: that's a good question. BitPuffin knows the details, I think.
00:02:43ryeguyyou guys want some entertainment? read the blogpost when reddit was rewritten in python (from lisp): http://web.archive.org/web/20060206133929/http://reddit.com/blog/2005/12/night-of-living-python.html
00:03:45ryeguythe comments, i meant
00:04:31filwitReddit was once written in Lisp?
00:04:36ryeguyyes originally
00:04:52filwitstill python?
00:04:54ryeguyyes
00:04:59ryeguyhacker news is written in Arc
00:05:12ryeguywhich is pg's never-finished lisp dialect
00:05:16filwitnew goal: get reddit to rewrite to Nimrod
00:05:23eigenlichtryeguy: do you have the link to the article explaining why they chose python?
00:06:21ryeguyeigenlicht: http://www.codinghorror.com/blog/2007/04/reddit-language-vs-platform.html
00:07:09ryeguywait, here's the original post: http://blog.reddit.com/2005/12/on-lisp.html
00:07:21eigenlichtryeguy: thanks
00:07:52IrvMGI need to create a sha1 and "working my websocket" u.u
00:09:45BitPuffinIrvMG: there is a sha1 package in babel
00:09:50dom96IrvMG: OrionPKM can help you
00:10:06dom96He wrote a websocket lib IIRC
00:10:12BitPuffinyep he did :D
00:10:19BitPuffinand I nagged him to put the sha1 implementation in babel
00:10:21BitPuffinand he did
00:13:09BitPuffinboom!! Orthogonalization is IN LINAGL! :D
00:13:41BitPuffinit was kind of tricky to implement
00:15:08OrionPKMI have a web socket implementation but it requires modifications to the stdlib of Nimrod to work
00:15:32fowlwe need more drama: http://antirez.com/news/64
00:15:40OrionPKMso I'm not open sourcing it until sockets and events are fixed
00:16:09BitPuffinOrionPKM: pull requests?
00:16:18AraqOrionPKM: well it would surely help if
00:16:26Araqa) you told us you had *that*
00:16:42OrionPKMI did
00:16:45Araqb) you could make it work without breaking our 'select'
00:16:46BitPuffinHave I become the official crypto guy of nimrod or what :/
00:16:54BitPuffinhaha
00:17:00OrionPKMselect is backwards, remember?
00:17:07Araqoh I do
00:17:34OrionPKMand it does work but with ugly work arounds
00:17:45Araqbut a workaround should be possible, like import fixed_select
00:17:56Araqand then later we can sort it out
00:18:01OrionPKMyeah work around which is why I'm not releasing the source because it has work arounds
00:18:22Araqwell there are ugly workarounds and acceptable workarounds
00:19:02OrionPKMif someone really needs to use it I will give it to them but I will not put it up on babel
00:19:35fowlwtf is websockets
00:19:57OrionPKMit is technically open source right now, it's up on my github repo
00:20:02Araqwell we need to find a solution here. people love websockets, we have them but then not really yet
00:20:25OrionPKMalso
00:20:30OrionPKMthat memory leak was an issue
00:20:33OrionPKMbesides the select issue
00:20:45Araqwell I couldn't reproduce it on linux
00:20:50OrionPKMi know
00:21:11OrionPKMhttps://github.com/onionhammer/onion-nimrod/tree/master/websockets
00:21:59*IrvMG quit (Ping timeout: 260 seconds)
00:23:23ryeguywhy is there a C and an llvm backend?
00:23:29ryeguyis either going away?
00:23:33Araqthere is no llvm backend
00:23:44ryeguywas there?
00:23:48AraqI started an llvm backend once
00:24:00Araqit was never finished
00:24:03fowlryeguy, you can use clang
00:24:16ryeguyoh, ok. Just saw a mention of 'llvm backend' leftover in teh docs.
00:25:47NimBotAraq/Nimrod master 81ba55c Grzegorz Adam Hankiewicz [+0 ±1 -0]: Clarifies wording of newSeq proc docstrings.
00:25:47NimBotAraq/Nimrod master f967520 Andreas Rumpf [+0 ±1 -0]: Merge pull request #684 from gradha/pr_clarifies_docs... 2 more lines
00:27:10BitPuffinI really gotta get this whole notifications thing working
00:27:13BitPuffinor should I
00:27:15BitPuffinhmm
00:27:17BitPuffin:P
00:27:25BitPuffinnope not worth the time atm
00:33:29OrionPKMso I think my next project might be a better nim plugin for sublime text
00:40:11BitPuffinI think I'm gonna go to bed
00:40:16BitPuffinand read some of Real time rendering
00:40:20OrionPKMnight
00:40:37BitPuffinthen tomorrow I'm gonna add all the transformation stuffs to linagl
00:40:45BitPuffinI consider matrices fairly complete right now
00:40:56BitPuffinfor the moment I'm skipping eigenvalues etc
00:42:46Araqer dom96 ... when are we gonna prune the git history again?
00:43:45dom96dunno
00:44:05AraqI don't think this will get easier as time passes
00:44:29dom96Still need to learn about the drawbacks of doing it.
00:44:39dom96Chances are there are many.
00:44:58Araqsure. Git is a git.
00:46:53filwitdoes 'git' mean something in German that it doesn't in english?
00:47:11ryeguyfilwit: http://www.urbandictionary.com/define.php?term=git
00:47:20dom96It's actually a British thing
00:47:37filwitah, okay
00:48:11BitPuffinyeah linagl actually seems to offer more matrix stuff than some of its competitors if you don't count the 3d stuff that will be added tomorrow (glm, gl3n)
00:49:08BitPuffinand truly supports N-Dimensionalness :P
00:49:12BitPuffinanyways goodnight!
00:49:32fowlgn
00:49:33Araqsame here, good night
00:51:24dom96same here too, 'night.
00:52:43OrionPKMeveryone is leaving me alone :'(
00:53:02*BitPuffin quit (Quit: WeeChat 0.4.2)
01:03:51*IrvMG joined #nimrod
01:12:00*EXetoC quit (Quit: WeeChat 0.4.2)
01:16:02*Amrykid quit (Excess Flood)
01:16:19*Amrykid joined #nimrod
01:29:57*brson joined #nimrod
01:33:50*gsp quit (Ping timeout: 264 seconds)
01:48:14*brson quit (Ping timeout: 240 seconds)
01:49:42*Varaway joined #nimrod
01:49:54*Varaway is now known as Varriount
01:50:28*brson joined #nimrod
01:52:39IrvMGNimrod 0.9.3 ?
01:52:54filwitsame as git head
01:53:08IrvMGFrom github or website?
01:53:13IrvMGok :)
01:53:29filwit0.9.3 is just the next version, yet to be released
01:54:15fowlnoo
01:54:25fowl.odd is the working version
01:54:30fowlnext version will be .4
01:54:57filwitahh, okay my bad
01:55:28filwiti thought you went to sleep...
01:55:28filwitlol
01:56:17fowlnah i just woke up
01:57:21IrvMG(:
01:59:02ZuchtoHi, I'm currently reading tutorial 2 and I'm wondering about the template example with the log function and debug const. How come it uses an if instead of when? "template log(msg: string) = if debug: stdout.writeln(msg)"
02:00:54IrvMGBye
02:00:58*IrvMG quit ()
02:01:47fowlZuchto, it should probably be "when"
02:02:11*fuz joined #nimrod
02:02:20*fuz quit (Quit: Leaving)
02:02:28Zuchtooh ok, so if the expression is "const" it really is no benefit of using an if?
02:02:57*fuz joined #nimrod
02:03:33filwitif executes are runtime, when at compile-time. I don't think (but don't fully know) if there's anything special for an if statement using a const value
02:03:49fuzhello, i'm aware of a nimrod target for JS. i was wondering if it were theoretically possible to write enough templates to make it look like javascript but have it transparently optimised away by the compiler through the use of templates?
02:04:09fuzi.e, javascript source as valid nimrod
02:04:13filwithi fuz
02:04:43filwitNimrod is indent-style syntax, and even it's macros/templates rely on this principle
02:05:02filwithowever, you could get something very close
02:05:20Zuchtoeven if disregarding the syntax style js has things like prototypes and this that doesn't really map as far as I know
02:05:48filwityes, but you could recreate prototype inheritance objects
02:06:06filwitso it's possible, though i'm not sure why you would actually want to do that
02:06:08fuzyou could run the 'fake nimrod code' through anchor ( http://anch.org/anchor.html )
02:06:19fuzwhich are then removed for valid nimrod
02:06:36fuzmmmm
02:07:14fuzfilwit, it was more of intellectual curiosity. it would let you write in javascript but get benefits from nimrod?
02:07:48filwitwell, when you translate to JS, you sacrifice many of the benefits of Nimrod, simply because JS is a limited language
02:08:27filwithowever, the benefit of the existing JS backend is that you can right type-checked code, with inheritance objects, etc, and have that execute in the browser through JS
02:08:47filwiti'm a bit confused as to exactly what you want to do, fuz
02:08:57filwitcould you provide an example maybe?
02:09:59fuzi was thinking about writing enough templates to simulate javascript so that it felt like javascript (you could drop into nimrod when you like, perhaps) take advantage of nimrod's compacting etc
02:10:55fuzthink of it as a gentle introduction into nimrod
02:11:20fowlyou cant change the syntax to be based on curly braces and semicolon-ended statements
02:11:32fuzlike how if you were doing scala, you might begin in java style and move toward scala
02:11:44fowlyou can however write a new parser which uses javascript syntax
02:11:48fuzfowl, ahh right. i see
02:13:07fuzi wanted to see how far tempting could go
02:13:13fuztemplating*
02:14:42fuzbasically, i saw this http://nimrod-lang.org/talk01/slides.html#(20) and thought you've just done HAML in nimrod.
02:14:46filwittemplates and macros in Nimrod can do a lot of things, but without a more concrete example of exactly what parts of JS you'd like to emulate, it's hard to judge
02:15:10filwitthe one thing that cannot be done with them, is as fowl said, create curly-bracket syntax
02:15:23fuzyou could use anchor for that
02:15:27filwitalthough even that's possible if you're willing to write the parser
02:15:47fuzi can see that you don't see the benefits or the merits
02:16:28fuzit's more of a 'for the sake of it' kind of thing
02:16:45fowlfuz, that example is within the confines of nimrod's syntax
02:17:00filwitfuz, it's not that i don't see it's merits, it's just i can't judge fully what you're willing to compromise on. I'm not sure Anchor would work, but i don't know anything about that project to comment.
02:17:15fowlfuz, there is a pluggable syntax for adding new syntaxes
02:17:25fowlpluggable parser* thing
02:17:47fuzfowl, i'll have to look into it, i have not even written my first nimrod program yet, i just wanted to see what people thought
02:18:09fuzcan definitely see the power of nimrod, thought this was awesome: http://nimrod-lang.org/talk01/slides.html#(31)
02:18:58fuzthanks!
02:19:45filwitfuz, it's an interesting sounding goal. I would recommend learning a bit of Nimrod and then attempting to make what you want.
02:20:17filwitfuz, there are probably options to accomplish what you want, to one degree or another
02:20:29fuzindeed
02:20:46fuzi must sleep now; i will be back to ask questions
02:20:55filwitg'night
02:21:04*fuz quit (Quit: Leaving)
02:33:31*dymk quit (Ping timeout: 245 seconds)
02:37:47*dymk joined #nimrod
02:42:14*dymk quit (Ping timeout: 264 seconds)
02:47:47*dymk joined #nimrod
03:00:59*mflamer joined #nimrod
03:02:25*TylerE joined #nimrod
03:02:45*TylerE quit (Client Quit)
03:07:48*ryeguy quit ()
03:18:07*ics joined #nimrod
03:21:26*leex quit (Ping timeout: 240 seconds)
03:21:43*C0C0_ quit (Ping timeout: 272 seconds)
03:22:14*C0C0 joined #nimrod
03:22:15*leex joined #nimrod
03:29:22*DAddYE joined #nimrod
03:29:31*DAddYE quit (Remote host closed the connection)
03:29:38*DAddYE joined #nimrod
03:38:14*datura quit (Ping timeout: 240 seconds)
03:55:50*brson quit (Ping timeout: 245 seconds)
04:04:26*dymk quit (Ping timeout: 264 seconds)
04:11:21*dymk joined #nimrod
04:18:14*dymk quit (Ping timeout: 264 seconds)
04:18:50*dymk joined #nimrod
04:20:24*DAddYE quit (Remote host closed the connection)
04:29:58*DAddYE joined #nimrod
04:30:08*DAddYE quit (Remote host closed the connection)
04:30:12*DAddYE_ joined #nimrod
04:49:11*ics quit (Ping timeout: 246 seconds)
04:50:20*ics joined #nimrod
04:58:14*mflamer quit (Ping timeout: 240 seconds)
05:03:00*ryeguy joined #nimrod
05:09:34*DAddYE_ quit (Remote host closed the connection)
05:11:04ryeguywhen vs if - is it basically that a 'when' is evaluated at compile time?
05:12:46fowlyea
05:13:04fowlwhen is for conditional compiliation (#if/#ifdef)
05:13:15ryeguywouldnt the equivalent 'if' just get optimized into that anyway?
05:14:40ryeguyeh i guess not, since it forces const expressions
05:14:57*mflamer joined #nimrod
05:19:29fowlif the if condition (and all the elif conditions) can be evaluated at compiletime it could be optimized away
05:19:36fowli dont think it is currently
05:20:06fowlryeguy, you can also use when inside an object definition
05:20:12fowltype TFoo[T] = object
05:20:25fowl when T is int: more: fields
05:20:43ryeguythats neat
05:20:43filwitryeguy: when doesn't introduce a scope, if does. that's also a difference
05:21:17filwitwhen defined(Something):
05:21:20filwit var x = 0
05:21:23filwitx = 10
05:21:25filwitworks
05:21:32mflamerzahary_: Ping
05:31:53*DAddYE joined #nimrod
05:31:56*DAddYE quit (Remote host closed the connection)
05:32:02*DAddYE joined #nimrod
05:32:48*brson joined #nimrod
05:34:38*mflamer quit (Ping timeout: 240 seconds)
05:49:29*mflamer joined #nimrod
05:59:05*brson quit (Quit: leaving)
05:59:49*OrionPKM quit (Remote host closed the connection)
06:03:57*ryeguy quit ()
06:05:36*mflamer quit (Ping timeout: 245 seconds)
06:08:16*mflamer joined #nimrod
06:15:43*OrionPKM joined #nimrod
06:18:56*mflamer quit (Ping timeout: 245 seconds)
06:21:15*OrionPKM quit (Remote host closed the connection)
06:22:09*OrionPKM joined #nimrod
06:22:30*OrionPKM quit (Remote host closed the connection)
06:40:41*filwit quit (Quit: Leaving)
07:25:52fowlhttp://steved-imaginaryreal.blogspot.com/2013/09/nimrod-return-of-pascal.html
08:16:20brihatthanks fowl
08:16:55brihatIs there any video talk explaining nimrod? I know Araq's slides, but they are too "heavy" for noobs like me'
08:27:37*dirkk0 joined #nimrod
08:28:33fowlbrihat, araq did a talk but its not on the internet yet
08:28:50fowlbrihat, i recommend the tutorials
08:30:20dirkk0Hi, all. I have a couple of newbie questions - is this the right place to ask them?
08:33:10fowlyesh
08:37:08dirkk0cool - thank you. I successfully compiled nimrod and babel and both seem to be working ok. my question is about how to connect the pieces in terms of modules that get imported. If I look on fowls gist here: https://gist.github.com/fowlmouth/4970500 then it imports sdl. If I try to run this, nimrod complains that there is no libSDL-1.2.0.dylib available. I take it that these are the SDL binaries that needed to be installed first?
08:39:55fowlyea
08:40:19fowlhttp://www.libsdl.org/download-1.2.php
09:00:51*gsp joined #nimrod
09:10:48dirkk0ok, I did that (via configure/make/make install). now I have a /usr/local/lib/libSDL-1.2.0.dylib but not libSDL_gfx.dylib, unfortunately. I couldn't find out how to compile libSDL_gfx but found out that you can do 'brew install sdl_gfx' (I am on a Mac). It is still not working though (stack trace here: http://pastebin.com/9pqcyNW8 ) but this looks rather like a Mac vs SDL problem.
09:17:36fowlyou can take sdl_gfx out of the import line, its not used
09:21:11*Jackneill joined #nimrod
09:32:27dirkk0ok, I did. Didn't change much, though: http://pastebin.com/AnJJx0jk
09:38:38fowlit looks like its caused from SDL_SetVideoMode
09:39:59fowlcan you try the binary from libsdl.org
09:45:58dirkk0I can't see binaries there? I took the .dmg first and copied the SDL.framework over to Libraries/Frameworks - this is what needs to be done for Xcode (which I try to avoid). Then I took the .gz file and compiled via configure/make.
09:53:30AraqZuchto: well in most logging frameworks the log level can be changed at runtime, so it can't be a "when" in the real world
09:54:05Araqthe purpose of that example is to show how a template enables lazy evaluation
10:01:48brihatMorning, Araq
10:05:35Araqhi
10:06:30brihatHope you are sane and not in hangover :)
10:08:48Araqha, I drank a single bottle of beer yesterday
10:22:49*datura joined #nimrod
10:22:56*DAddYE quit (Remote host closed the connection)
10:23:04*DAddYE joined #nimrod
10:28:28*DAddYE quit (Remote host closed the connection)
10:32:48dirkk0ok, I successfully compiled a minimal cpp example to check if the SDL installation works in general - it does.
10:36:59*BitPuffin joined #nimrod
10:39:51*datura quit (Ping timeout: 260 seconds)
10:42:43*zielmicha joined #nimrod
10:54:27*datura joined #nimrod
10:54:59BitPuffingood mornin
10:55:00BitPuffinor day
10:55:03BitPuffinor night
11:01:10brihathumenta
11:01:17brihat*huometa, BitPuffin
11:01:31brihatErgh.. HUOMENTA!!
11:02:26dirkk0@fowl from my googling it seems to have to do with the problem that SDL hijacks the main function somehow. this can partly be fixed by setting some flags in the makefile. Do you now where I can influence that in the Nimrod linking process?
11:09:23fowldirkk0, that should only apply to static linking
11:15:55*achim joined #nimrod
11:16:35zielmichaWhy {.noforward: on.} is not default?
11:16:57zielmichaInfering from description in manual it shouldn't be slower than .noforward: off., or is it?
11:17:43dirkk0ok - any ideas on what I can do to get nearer to the problem? can nmrod compile to cpp?
11:19:01dirkk0dumb quesion, sry - it does this already. where can i see the source?
11:20:20dirkk0also a stipid question *sigh* -it's in nimcache.
11:23:16fowldirkk0, the problem is if that if anybody's ever fixed this error, they havent said *how*
11:29:24*DAddYE joined #nimrod
11:34:10*DAddYE quit (Ping timeout: 245 seconds)
11:35:31dirkk0@fowl I see. I don't think my feable c knowledge will be sufficient to solve this, but I can at least try: I copied SDLmain.h and .m into nimcache and it compiles ok. what do I need to link? I get Undefined symbols for architecture x86_64: "_Dl_83205", referenced from: _testInit in ccp0VqPg.o
11:40:35fowlehm
11:40:36fowlidk
11:40:49fowlit will take more than putting the files into nimcache
11:41:00fowlyou'll have to link with SDLmain (library) and include the header
11:41:34fowland probably compile with objc mode instead of c
11:49:50dirkk0@SDLmain and header include - I did that. Yes, I thought it wasn't that easy. :-)
11:50:11dom96zielmicha: The reason it's not default is because it's still experimental.
11:56:37fowldirkk0, try compiling normally and running with the environment variable SDL_VIDEODRIVER=x11
12:00:38fowlif that works, there is a way to do it with SDL_putenv() you can use instead
12:01:25dirkk0holy frag on toast! it works!
12:02:11dirkk0do have a minimal SDL example? I am not sure what this does but I basically see only a pink-ish background.
12:02:53dirkk0Ah - from the source this *is* a minimal SDL example. :-)
12:03:53fowltheres another one in nimrod/examples/sdlex.nim
12:04:06fowldirkk0, now try this see if it works
12:04:16dirkk0will do
12:04:48fowlproc SDL_putenv (var: cstring) {.importc, dynlib: "libSDL-1.2.0.dylib".}
12:05:02fowlSDL_putenv "SDL_VIDEODRIVER=x11"
12:05:29dirkk0this one needs libSDL_image-1.2.0.dylib which I don't seem to have (yet).
12:05:43dirkk0btw is there a reason why we use SDL1.2 over SDL2?
12:06:03fowli have an SDL2 wrapper in the fowltek package
12:06:18fowlhttps://github.com/fowlmouth/nimlibs
12:06:29*zielmicha quit (Quit: Page closed)
12:07:14*zielmicha joined #nimrod
12:07:15dirkk0oh? am I supposed to use this rather?
12:07:52fowli would ;)
12:08:22dirkk0@fowl hehe, ok. :-)
12:09:38dirkk0this brings me to another stupid question: how do I install packages in general? I have babel installed in my Ubuntu test environment, but not yet on my Mac. How do I install without babel?
12:09:52dirkk0How do I install nimlibs?
12:10:21BitPuffindirkk0: babel install fowltek
12:10:34dirkk0(something tells me you are working on a game engine :-) - cool! )
12:10:46dirkk0ok, I install babel first.
12:10:50*achim quit (Quit: Computer has gone to sleep.)
12:10:57BitPuffinfowl or me dirkk0?
12:11:00BitPuffinhaha
12:11:02fowlwithout babel? i guess you could copy the files to ~/.babel/pkgs/fowltek-1.0/
12:12:00BitPuffinbtw, if a module uses another module, shouldn't the only thing that thing has to do is to import that other module to work?
12:12:17BitPuffinWith matrix.nim (which uses vector.nim) I had to export vector to make it work externally
12:12:43dirkk0@bitpuffin I mean fowl but are you, too?
12:13:20AraqBitPuffin: what? o.O do you have any idea of what that would cause for modularity?
12:13:33BitPuffinAraq: yeah it's ridiculous
12:13:42BitPuffinI don't wanna export vector in matrix
12:13:50BitPuffinmakes it pointless to even have vector
12:13:50Araqwhy not?
12:13:56Araqwhat?
12:14:22Araqno idea what you mean. "auto export" is not a feature of any module system I'm aware of
12:15:00BitPuffinAraq: well I mean that matrix*matrix uses vector dot product, and I don't want people importing matrix to also have access to vector dot product
12:15:07dirkk0btw - the documentation says 'However, for unknown reasons the symbolic link method does not work on MacOS X.' This here works on a Mac: sudo ln -s /Users/[USERNAME]/Nimrod/bin/nimrod /usr/bin/nimrod
12:15:22BitPuffinand matrix $ uses vector $
12:15:37Araqdirkk0: it works depending on the phase of the moon or something like that.
12:15:49*achim joined #nimrod
12:15:52BitPuffindirkk0: yeah but currently not anything open sauce
12:16:20Araqer BitPuffin ... sounds you want what the module system already provides ?
12:18:04BitPuffinAraq: yeah now it worked
12:18:05fowlBitPuffin, i think you could export vector.`$` only
12:18:12BitPuffinstrange
12:18:19dirkk0lol @Araq
12:19:03BitPuffinit was a while ago since I discovered the issue
12:19:10BitPuffinso to work around it I exported vector things
12:19:15BitPuffinbut now when removing that it works
12:19:17BitPuffin:s
12:19:53BitPuffinoh well good
12:19:59BitPuffinI am now happy :P
12:20:29dom96OT: RIP Paul Walker :\
12:21:00dirkk0@fowl ok, successfully installed babel and imported fowltek(tm).
12:23:40BitPuffinI guess in order to have the procs row and col work I need to export the type TVector
12:24:07dirkk0@fowl you wouldn't happen to have an example handy by chance?
12:24:32BitPuffinAraq: what is preferred do you think? making it so that it at least compiles when you do mat.row and mat.col but not letting you do vector operations (other than multiplying with matrices etc)
12:24:44BitPuffinor making it not compile unless you import vector
12:25:12fowldirkk0, there are examples in that repository
12:25:17BitPuffindom96: wtf he's dead?
12:25:21BitPuffindom96: he's like 3 years old what the hell
12:25:33dom96BitPuffin: Yep. He ironically died in a car crash.
12:26:40BitPuffincan't make that stuff up
12:26:41fowlSpeed was a factor in the crash, the Los Angeles County Sheriff's Office said.
12:26:52AraqBitPuffin: I'd export vector stuff from matrixes, so that it I only need to import matrix and get all the nice vector ops for free
12:26:56fowlfast? check. furious? still investigating
12:27:54*gsp quit (Ping timeout: 252 seconds)
12:27:55BitPuffinAraq: hmmmmm, I'm not sure. That's kind of strange I think when it comes to modularity
12:28:15AraqBitPuffin: or perhaps do nothing. "import vectors" ain't hard either.
12:28:54BitPuffinAraq: But then isn't export vector.TVector a nice compromise because at least it makes it so that every proc+template in matrix.nim compiles?
12:29:11BitPuffinI mean say you only want to get the translation part of a 4x4 matrix
12:29:17Araqbut don't add when not defined(vectors): {.error: "you need to import vectors".}
12:29:27Araqthat's what would be really strange
12:29:40BitPuffinyou'd do var v = m.row(3)
12:29:48BitPuffinand then maybe you wanna multiply that by some other matrix
12:29:50BitPuffinit would work
12:29:55BitPuffinyou wouldn't need vector ops for that
12:29:57Araqoh and the symbol binding rules for templates will change, mitigate your issue
12:30:19BitPuffinbut if you want vector ops you should import vector
12:30:22BitPuffinseems logical to me
12:30:32BitPuffinAraq: oh in what way?
12:31:04Araqso that template t*(x): expr = x.privateField works
12:31:27BitPuffinactually it already works
12:31:32BitPuffinI just forgot to specify row idx
12:31:34BitPuffinlol
12:32:00Araqwell do what seems logical to you
12:32:01fowlAraq, template safeImport(module):stmt = when not defined(module): import module
12:32:41Araqfowl: that could be confusing
12:32:51*EXetoC joined #nimrod
12:33:02BitPuffinAraq: I don't need to export anything :P
12:33:13*Araq "that could be confusing" is Araq's new "thought-terminating cliché"
12:33:47BitPuffinhttps://gist.github.com/BitPuffin/7733093 works
12:34:12BitPuffinor hang on
12:34:16BitPuffinforgot to babel install
12:35:01BitPuffinhm
12:35:03BitPuffinstill worked!
12:35:48Araqfowl: seriously, the feature request is something like: when exists("mymodule"): import mymodule
12:35:57BitPuffinor ahh here we go
12:36:12BitPuffinsame error as before
12:36:16BitPuffinI think this might be a bug
12:37:36dirkk0@fowl 'could not load: libSDL2.so' ?
12:38:10fowldirkk0, whats the library called that you have
12:38:37BitPuffinAraq: https://gist.github.com/BitPuffin/7733141
12:39:53BitPuffinAraq: isn't that a bug?
12:39:57Araqno
12:40:05BitPuffinwhy
12:40:08Araqit's exactly the behaviour I just explained
12:40:24Araqtry to add a: mixin dot
12:40:33Araqto your proc `*`
12:41:32BitPuffinoh wait
12:41:35BitPuffindot does not exist anymore
12:41:39BitPuffinit's *. now
12:41:39dirkk0fowl: libSDL2.dylib
12:42:15AraqBitPuffin: good. I am wrong anyway. :-)
12:42:44Araqstupid language definition, keeps changing and my brain is not up to date
12:42:46BitPuffinAraq: strange thet the compiler doesn't error on that though
12:42:57BitPuffinuntil it is actually used
12:43:15Araqyeah
12:43:42fowldirkk0, babel install fowltek again i just pushed an update
12:43:44Araqit should error but then dot notation might cause problems, dunno how I solved that issue
12:45:06BitPuffinAraq: you didn't :P
12:47:36*gsp joined #nimrod
12:47:38BitPuffinnow it seems like things work like they should
12:47:48BitPuffinthem refactoringz
12:49:18achimhi there! i just started dabbling in nimrod, and i'm getting a confusing error message (current master on OS X): 'compilation artifact(-992, 645) Error: internal error: expr(196 (invalid data!)); unknown node kind'. has anyone seen this?
12:49:26achimcode is here: https://gist.github.com/achim/7733214
12:51:12Araqwell closure iterators are still broken
12:51:12Araqand yeah they shouldn't make it into 0.9.2, my apologies
12:51:12Araq*have made it
12:52:33dirkk0fowl: complains that something is missing now: Hint: used config file '/Users/dirkk/Nimrod/config/nimrod.cfg' [Conf] Error: unhandled exception: No such file or directory [EOS]
12:56:30dirkk0sry - my bad, one sec
12:56:36achimAraq: ok, thanks. so it's not my build that's broken -- good to know :)
12:57:15fowlAraq, it works for me >_>
12:57:48Araqfowl: oh ...
12:58:31Araqachim: report it please and add your OS/CPU information
12:58:45achimwill do
13:01:17fowli do mean on HEAD, not 0.9.2
13:03:10Araqfowl: are you on mac?
13:03:52fowlno
13:05:03Araqwell it could be the mac-specific bug that keeps aporia from building on mac then
13:05:25dirkk0fowl: I just sent you a pull request
13:10:13fowldirkk0, the other sdl2 modules will need the same
13:11:14Araqbrb
13:11:44NimBotAraq/Nimrod master f6f7cfe Araq [+0 ±2 -0]: better error message for implicitly available modules
13:11:44NimBotAraq/Nimrod master 21c4503 Araq [+0 ±1 -0]: Merge branch 'master' of github.com:Araq/Nimrod
13:15:11BitPuffinAraq: is ^ for what we just discussed?
13:18:19dirkk0fowl: oh, I see - k, that means I have to install them: that's ttf and image, right? btw - how about OpenGL?
13:23:07dirkk0and audio?
13:26:26*Kingcope joined #nimrod
13:26:41*Kingcope quit (Read error: Connection reset by peer)
13:30:57fowli have to write the wrapper for audio, mixer and net
13:32:24*DAddYE joined #nimrod
13:34:49fowlopengl works
13:36:40*DAddYE quit (Ping timeout: 245 seconds)
13:58:14dirkk0fowl: @opengl - cool! @wrappers do you have to do that by hand? wasn't there a c2nimrod converter somewhere?
13:59:37EXetoCyes, c2nim. should be someone in the docs section
13:59:41EXetoC*somewhere
14:02:04AraqBitPuffin: yes
14:27:55*datura_ joined #nimrod
14:31:24*datura quit (Ping timeout: 246 seconds)
14:33:39*DAddYE joined #nimrod
14:38:45*DAddYE quit (Ping timeout: 272 seconds)
14:39:21*BitPuffin quit (Ping timeout: 252 seconds)
14:53:08*OrionPKM joined #nimrod
14:53:56*OrionPKM quit (Remote host closed the connection)
14:57:58*OrionPKM joined #nimrod
14:58:39*OrionPKM quit (Remote host closed the connection)
15:11:57*OrionPKM joined #nimrod
15:13:35*xenagi joined #nimrod
15:22:55*Jackneill quit (Ping timeout: 245 seconds)
15:23:22*Jackneill joined #nimrod
15:34:54*gsp quit (Ping timeout: 252 seconds)
15:35:13*DAddYE joined #nimrod
15:40:11*DAddYE quit (Ping timeout: 272 seconds)
15:46:17*datura_ is now known as datura
16:03:13NimBotAraq/Nimrod master 166f6ea Araq [+0 ±1 -0]: fixes #696
16:09:08*gradha joined #nimrod
16:09:41Araqhey gradha, I think you should fix the ws issue :-)
16:09:47Araq*whitespace
16:09:55gradhayeah
16:10:08Araqok good
16:10:15gradhado I know how?
16:10:48*knz joined #nimrod
16:10:54knzhoi
16:10:57Araqsure. just look at how parsexml skips whitespace
16:10:59Araqhi knz
16:11:26gradhaAraq: ok
16:17:10fowlAraq, im looking at xlib, TXIM is defined as object but in Xlib.h: typedef struct _XIM *XIM;
16:18:41Araqfowl: well that sounds about right? what's wrong with it?
16:19:35gradhaAraq: does c2nim know about C++ templates? I have the vague feeling of trying and failing on that
16:19:51Araqwell it can parse Vector<string>
16:20:01Araqbut apart from that there is no template support
16:20:10AraqI need to go, see you later
16:20:13gradhabye
16:20:24fowlAraq, XIM is a pointer to struct _XIM, right?
16:20:39Araqright?
16:21:00Araqfowl: fix it, you're responsible for the x11 wrapper now
16:21:00fowlthe functions taking XIM in Xlib.h are taking TXIM in xlib.nim
16:21:05Araqbye
16:21:06fowlyay -_-
16:21:08fowlcya
16:21:55gradhafowl: maybe you can coerce exhu to help you with x11? IIRC he was doing patisa, a minimal lib based on win32 and x11
16:24:04gradhano, it was named paulina https://bitbucket.org/exhu/paulina
16:24:42gradhapresumably he had x11 working in september
16:29:36fowlhow should i coerce him
16:30:00gradhaalcohol seems to work, what was the mime type for that...
16:30:16fowlgradha, do you know how to delete files from git? do i just fork the project, delete them on my branch then PR that?
16:30:37gradhapresumably you want to remove them from history? otherwise it's just "git rm"
16:31:30gradhaat https://help.github.com/articles/remove-sensitive-data they walk you through removing files form repo history
16:32:25fowlno i dont want to remove from history, just remove from the file tree
16:32:39gradhathen "git rm" is fine, you first use that, then commit the removal
16:32:50gradhaand just like rm you have "git mv" to rename, though git doesn't really track renames
16:32:58fowlgradha, im talking about opengl, x11, sdl, lua, etc, all the libs that are to be moved out to babel
16:33:32gradhagit rm then
16:33:51fowlhrm i wonder why exhu has new x11 wrappers..
16:35:45*DAddYE joined #nimrod
16:37:48EXetoCimport "../paulina" oh. undocumented, right?
16:38:56fowlEXetoC, highly improper
16:39:11gradhawho reads docs anyway
16:39:49fowlEXetoC, the entry-point is paulina, all other modules should be submodules (paulina uses them, not the other way around)
16:40:14*DAddYE quit (Ping timeout: 240 seconds)
16:40:16fowloh thats from tests/
16:40:50fowlstill pretty improper
16:41:33fowlalso there's no harm in writing a .babel for your project, then you can install it locally with `babel install`, you dont need to publish it (ping OrionPKM )
16:42:14gradhaif only bitbucket had some sort of issue tracker to tell exhu about these things…
16:45:07*Hannibal_Smith joined #nimrod
16:45:17fowlid rather gripe in person
16:45:24fowlhe should come on irc
16:48:45gradhapeople don't even come in person any more, they use bouncers and stuff
16:51:24fowlmy dad introduced me to irc when i was 10
16:51:32fowlhe used it to get software
16:52:20*IrvMG joined #nimrod
16:52:47IrvMGHello
16:53:01OrionPKMwhat's up fowl
16:53:12gradhaHi IrvMG
16:54:17OrionPKMyou're referring to the websockets?
16:55:16IrvMGHow verify that a file exists? Without "proc open"
16:55:35gradhaos.existsFile
16:55:37IrvMGOrionPKM, Yep!
16:55:57gradhaIrvMG: note that the file could disappear after that proc returns true…
16:56:13OrionPKMirvmg i dont want anyone mistaking the library for being in a ready-for-consumption state :p
16:57:00gradhaOrionPKM: isn't that the best strategy to get betatesters?
16:57:35OrionPKMsure, feel free to submit pull requrests and submit bugs :P
16:58:00IrvMGxD
16:59:18fowlOrionPKM, yes
17:00:00fowlOrionPKM, it makes it a lot easier to test locally than cloning into your project dir
17:01:12OrionPKMokay okay, i'll add in a .babel
17:01:55fowli dont know what websockets is, i do know i've seen at least 4 people ask about it
17:05:34IrvMGWebsockets for online games is very important, in my case u.u
17:06:12OrionPKMfowl it basically allows you to upgrade standard HTTP requests and keep the requesting socket open to transmit data in two directions
17:06:59OrionPKMyou have to package discrete messages rather than just raw bytes, but thats the only layer on top of a normal TCP socket after upgrading
17:07:07gradhaaka: web chat through firewalls
17:07:58OrionPKMyou can do webchat through firewalls regardless
17:08:25gradhasure, polling and stuff
17:08:31gradhaajax and friends
17:09:02OrionPKMright, traditional polling, long polling, webRTC
17:09:26OrionPKMwebRTC is the most efficient
17:10:26gradhabefore webRTC most chat servers would use java or something like that which wouldn't work through firewalls, lazy programmers
17:10:47gradhaOrionPKM: can you do http://www.webtoolkit.eu/wt/examples/chat in nimrod?
17:11:07OrionPKMwhat is that
17:11:35gradhait's a c++ web toolkit, maybe it uses websockets, who knows, this http stuff is new for me
17:11:47OrionPKMyeah thats websockets
17:12:29OrionPKMI'll brb, need to restart something
17:12:33*OrionPKM quit (Remote host closed the connection)
17:12:34gradhaanother example of websockets is youtube automatically saving modified description fields during a video upload
17:13:50*OrionPKM joined #nimrod
17:16:47IrvMGWebRTC demo https://apprtc.appspot.com
17:23:43daturagradha: how many proxies support STUN yet?
17:24:00gradhadatura: I don't know what you are talking about
17:27:39daturagradha: i was talking bullshit. the questions should have been hiw many proxies support websockets, and how many firewalls support STUN.
17:28:06daturaat least in my company websocket connections don't seem to work, and i blame the proxy.
17:28:36daturaand webRTC afaik does p2p connections which are difficult behind a NAT without STUN
17:29:15daturaso - long polling still has it's value. if you don't have a direct connection.
17:29:56OrionPKMlongpolling is a good fallback
17:30:52gradhadatura: very brave of you to volunteer writing a nimrod proxy with supporting all the network options
17:30:59daturahaha :)
17:32:00daturafirst io'll need to find out if nimrod's typesystem is powerful enough for me to like it :)
17:32:26gradhais there any other typesystem you like you could compare to?
17:32:43daturawell, scala and haskell for a start, because i know those best.
17:32:53Hannibal_SmithStandard ML
17:33:12gradharumors say there are haskell fugitives among us
17:33:16dirkk0fowl: I see that there are several sdl libs in the standard installation - why not use these? (probably a stupid question again :-/ )
17:34:40daturagradha: first thing that sprang to my eye was the "nullable" thingy where i'd prefer an Option/Maybe type that's compiled to null/non-null where possible.
17:34:40*IrvMG quit (Read error: Connection reset by peer)
17:34:57*IrvMG joined #nimrod
17:34:59fowldirkk0, those are sdl1
17:35:21fowldirkk0, its sdl and its addons
17:35:29gradhadatura: IIRC there's non-null type support planned, Araq has some basic reasoning of this which catches bugs
17:36:00gradhadatura: as for a maybe type, people have submitted gists about that, but I tend to ignore such fancy things
17:36:12daturafancy? really ;?)
17:36:27daturato me it's bread and butter, i use them all the time
17:36:33*gsp joined #nimrod
17:36:38daturaone of the _big_ steps forward from java
17:36:41datura(in scala)
17:37:04gradhaI guess I happen to program on the wrong side of life
17:37:18*DAddYE joined #nimrod
17:37:34daturagradha: why, writing performance-relevant kernel drivers ;?)
17:38:19dirkk0fowl: oh, I see, thx.
17:38:20gradhanow I do native mobile apps
17:38:21datura(i do quite a bit of audio stuff in scala - and that's not exactly a god fit...)
17:38:43fowldatura, you could make nullable types act like option[t]
17:39:07daturafowl: for option[option[t]] too?
17:39:11fowldatura, one way is to defined a converter (some: string): bool = not isNil(some)
17:39:35fowlthen you could do if mystring: echo mystring ; else: echo "mystring is nil"
17:39:48daturabecause with option[option[t]] you can only have the innermost option encoded as nullable, but not the outer ones
17:40:39fowldatura, or use my maybe[t]: https://github.com/fowlmouth/nimlibs/blob/master/fowltek/maybe_t.nim
17:41:57*DAddYE quit (Ping timeout: 252 seconds)
17:45:41*gsp quit (Quit: Leaving)
17:47:44fowldatura, also you can declare a variable like var s: string not nil
17:49:52daturaanother question: is thee type-system turing complete?
17:50:31fowlyes, if you compile to brainfuck
17:51:08daturaso you can have programs where compilations never terminates? probably the price of powerful metaptogramming anyway.
17:52:21fowljoking..not sure how a type system could be turing complete
17:52:36gradhame neither, besides you don't need turing complete systems for infinite loops
17:53:04gradhadatura: I guess you are talking about these lazily evaluated infinite thingies in fancy languages?
17:53:26daturafowl: you can encode SKI calculus in scala's typesystem for example.
17:53:41daturawhich is equivalent to lambda calculus and therefore turing complete
17:54:47daturagradha: it seems the difficult thing in those languages is mostly to make the typeystem as powerful as possible while still making sure compilation terminates
17:55:33gradhadatura: I'm reading stuff in the wikipedia now but its beyond loops, so I don't know what it means
17:55:35daturai guess in scala you'd get a stack overflow quite soon
17:58:04betawaffledoes nimrod do any kind of TCO?
17:58:13daturagood question
17:59:12gradhatotal cost ownership?
17:59:23betawaffletail call optimization
17:59:25daturagradha: what i'm looking for is definitely a "fancy language" - but one where i can take control over low-level details if i have to.
18:00:14daturaif you have a function that calls itself at the end then it can be compiled to a loop. that's TCO.
18:00:43daturaor - if you have a chain of functions where ther last one calls the first at the end. that's a bit more difficult for a compiler.
18:01:28gradhanimrod compiles to C, and C compilers nowadays have TCO
18:01:54betawaffledatura: should be easy to test
18:02:13daturabetawaffle: unless you have OO in the mix, yes.
18:03:29gradhadatura: what kind of software you write to need to take control over low-level details?
18:04:18daturagradha: audio apps - i did a dj tool ala traktor in scala, f.e.
18:04:56daturano way to get decent latency without a realtime VM and there is none that is free
18:05:43daturafor a while i had a second VM running in which i _only_ rendered audio and never allocated any new objects to keep the GC from interrupting...
18:05:59daturabut that's an interesting hack, but not a solution.
18:06:26knzanyone toying wih algebraic datatypes in nimrod?
18:06:28Hannibal_Smithdatura, G1 is not good?
18:06:40gradhadatura: isn't that how low level programs do it anyway? one thread fills buffers in soft-real time, another does rendering in a lower priority thread
18:06:44knzand/or structural pattern matching, maybe using templates
18:06:45daturaHannibal_Smith: much better than everything that came before it
18:09:34daturagradha: threads would be ok, i was talking about processes
18:10:49dom96knz: IIRC mflamer is but he's not around currently.
18:11:06betawaffledatura: answer, it segfaults if i don't do -d:release
18:11:10daturaknz: make that GADTs :)
18:11:35betawaffleso, must be some optimization that is not enabled by default
18:13:41gradhaC compilers don't use TCO unless you are optimizing, for debugging reasons
18:14:57*IrvMG_ joined #nimrod
18:15:32betawaffleso, the point is, you can't count on it as a programming pattern like you can in say, erlang
18:17:20fowlhow are you testing that it segfaults without -d:release o_O
18:17:38*IrvMG quit (Ping timeout: 264 seconds)
18:18:21dom96I wonder if TR macros could be used to perform TCO
18:18:51betawaffledom96: i would think so
18:21:09EXetoCthat seems a lot more advanced than what is demonstrated by the examples
18:25:07betawafflehow can i see the generated C code? and/or the nimrod code after all the nimrod-based optimizations
18:25:09knzTR macros can be used *in theory* to rcognize call patterns that can be optimized, and transform them, but the code would be quite complex
18:25:30gradhabetawaffle: look in the nimcache directory
18:27:49betawafflegradha: thanks
18:28:42gradhabetawaffle: there are nimrod flags to embed nimrod source code for easier debugging, but the default already includes line numbers, so it's not hard to follow
18:29:25*xenagi quit (Quit: Leaving)
18:31:09*knz left #nimrod (#nimrod)
18:32:36betawaffleso, it seems that even a completely nothing program generates some useless C code (which isn't removed with -d:release)
18:32:48betawafflethe program is programResult = 0
18:35:40gradhamaybe that code is the garbage collector
18:36:38betawafflenah, it's initialization code
18:36:53betawaffleseems to be generated whether it is needed or not
18:39:18*IrvMG joined #nimrod
18:39:21*IrvMG_ quit (Ping timeout: 245 seconds)
18:39:31gradhathe hallo example compiled with --gc:none and -d:release gives me a 10KB binary, that's fairly reasonable
18:41:02gradhathe C version compiled with -O3 gives me a 8.3KB. Nimrod sucks, so bloated
18:41:46dom96try --opt:size :P
18:42:04betawafflewhat i don't really understand is what does the C version need those 8.3KB for?
18:42:31gradhabetawaffle: possibly all the stuff you otherwise would have to implement in asm
18:42:49betawafflewhich is what?
18:42:59dom96printf is a pretty complicated function I would say
18:43:16betawaffleok, im more talking about a program that doesn't even use printf
18:43:19betawafflesimple return 0
18:43:52gradhabetawaffle: maybe you should ask the guys who write C compilers
18:46:36dirkk0http://timelessname.com/elfbin/
18:46:59betawafflethank dirkk0
18:47:30dirkk0yw
18:48:34dirkk0the discussion here reminded me of that. I came there because of the asm.js discussion (that asm.js could be the machine language of the future etc).
18:49:00betawafflethanks*
18:55:54EXetoCwon't GCC and what have you get rid of those unused symbols?
18:59:08*IrvMG_ joined #nimrod
18:59:22*IrvMG_ quit (Client Quit)
18:59:35*IrvMG quit (Ping timeout: 245 seconds)
19:02:45EXetoCok so the generated exe is "big". is this an issue?
19:07:43fowlif you think nimrod's hello world demo is a big binary, try it in rust or go
19:08:08EXetoCor D
19:08:27EXetoCunless they've done something about that already
19:08:47fowlcya all
19:09:31gradhabye
19:09:37EXetoCbb
19:10:07dirkk0bye fowl, and thank you very much
19:10:12*DAddYE joined #nimrod
19:10:14*DAddYE quit (Remote host closed the connection)
19:10:20*DAddYE_ joined #nimrod
19:12:18daturaanyone experimented with (functional) reactive programming or incremental computation in nimrod?
19:27:14*IrvMG joined #nimrod
19:34:43Araqfyi you can't implement TCO via a TR macro as there is no "goto" command in Nimrod
19:36:16EXetoCnothing else is missing?
19:37:11Araqnot sure but you can implement CSE with Nimrod's TR macros, so ...
19:37:14*zahary joined #nimrod
19:38:39*zahary1 quit (Ping timeout: 252 seconds)
19:38:59Araqdatura: recent versions of nimrod can enforce non-nullability but it surely is not that easy if you distrust algebraic data types for that like I do
19:42:11EXetoCI wouldn't have a clue how to construct such a pattern, but ok good to know :p
19:42:35Araqoh the pattern is trivial like {x}(x: expr)
19:42:49Araqyou need to perform all the hard work in the macro :P
19:45:22zielmichaI'm trying to create macro defining proc. Is there something obviously wrong with "macro foo(name: expr): expr = newProc(name=name, params=[])"?
19:45:55zielmichabecause it crashes compiler (segsegv in gsub)
19:46:17daturaAraq: why do you distrust them? they are there, if you want them or not. you just might have them hardwired into your implementation.
19:47:37EXetoCAraq: oh -.-
19:48:20Araqzielmicha: due to a bug you need to do:
19:48:24Araq result = newProc(...)
19:49:03Araqthough I'm not sure this solves everything. Wait until I finally merged the vm2 branch which makes the macro system much more stable.
19:50:11Araqdatura: the problem is that then you need to ensure null | pointer is still taking up a single word for C interop/efficiency and even then it doesn't work too well
19:50:15OrionPKMjust added F12 definition lookup for nimrod's sublime plugin :D
19:50:40reactormonkOrionPKM, will happen in emacs next year ;-)
19:51:05Araqdatura: FP is about trees, systems programming is about arrays. Arrays are harder to initialize.
19:51:08gradhareactormonk: come on, you can do it earlier!
19:51:15OrionPKMit's still got a ways to go, but it's working hehe
19:51:34OrionPKMand it's faster than aporia's I think :P
19:51:57Araqvar a: array [3, ref T not nil] # ok ... we enforce explicit initialization here ...
19:52:17daturaAraq: agreed about ensuring the code coming out should use null where possible - but how should that work not well? from the language users perspective i don't see any problem, it might be a bit difficult for the compiler writer of course.
19:52:18Araqfor i in low(a)..high(a): a[i] = notNil() # ok ...
19:52:43Araqfor i in low(a)..high(a): a[i] = notNil(a[i+1]) # uh oh ....
19:52:53daturahm.. need to think about that.
19:53:03Araqit gets complex very quickly if you like expressivity
19:53:14EXetoC"not nil" resulted in an infinite compiler loop at one point. has anyone else encountered this?
19:53:28AraqEXetoC: no, bug report please
19:54:07zielmichaAraq: with "result =" it still doesn't work. I checked out and installed branch vm2 and it doesn't work there either :(
19:57:10Araqalright, still the same segfault?
20:02:32Araqdatura: the only solution that has been attempted is to require array initialization via a single expr like 'var a: array[3, ref T not nil] = [x, y, z]'.
20:03:12AraqI doubt this suffices for systems programming.
20:03:19daturadamn arrays :)
20:05:50Araqzielmicha: ask fowl for help. He knows the bugs of Nimrod's macro system inside out. I'm always to busy working on the compiler, not much time left for meta programming. ;-)
20:26:25betawafflehow do i use c2nim?
20:28:55Araqedit header.h until c2nim likes it
20:29:25Araqin theory it can work without any modifications. In practice I've never seen that happening.
20:30:35betawafflesorry, what i meant was, how do i run c2nim, is it an executable? if so, i can't find it
20:30:45zielmichaWhen it comes to c2nim - what is "correct" way to install it? Not finding anything in docs, I did (cd compiler/c2nim; nimrod c c2nim; ln -s $PWD/c2nom /usr/local/bin)
20:35:56gradhathat should be enough
20:45:36Araqbetawaffle: you need to compile it, nimrod c compiler/c2nim/c2nim should do the trick
20:47:11betawaffleok
20:47:21*mflamer joined #nimrod
20:53:47*achim quit (Quit: Textual IRC Client: http://www.textualapp.com/)
21:01:07IrvMGBye
21:01:07*IrvMG quit ()
21:05:47*zielmicha quit (Ping timeout: 264 seconds)
21:07:17*mflamer quit (Ping timeout: 245 seconds)
21:09:31*ics quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
21:11:41*mflamer joined #nimrod
21:12:26Araqhey mflamer
21:12:48mflamerHey Araq
21:14:46*ics joined #nimrod
21:19:49mflamerreading through the logs, looks like i missed some FP discussion earlier
21:33:23Araqdo you happen to be on macosx?
21:36:46mflamerNo, win
21:37:29Araqalright well then I won't ask you to hunt a bug for me ;-)
21:45:21VarriountMeep.
21:46:16EXetoCI'm the one who says meep
21:46:31VarriountM33p
21:46:31gradhayeah, but what does the fox say?
21:47:42VarriountAnyone here have a regex for nimrod's numeric literals? I'm trying to improve the sublime text nimrod extension.
21:49:04gradhaisn't that like [\d]+[\d_.]* or something similar? oh, you need suffixes and stuff
21:49:45Varriount^ Yeah
21:50:02Araqcheck the manual
21:50:34VarriountAraq, the manual uses PEG (or is it EBNF) notation.
21:51:02Araqwell yeah but translating the PEG to a regex should be straightforward
21:51:31gradhasounds like a mission for the Amazing Nimrod Translator
21:51:57Varriountgradha: PEG to Regex? Sounds interesting.
21:52:10gradhaunfortunately I just made that up
21:52:57OrionPKMaraq I'm querying idetools for a .nim file, and I'm getting an error for a .cfg of the same name
21:53:30OrionPKMi.e. idetools --def of somefile.nim, but nimrod is returning a parse error from somefile.cfg
21:55:28Araqwell nimrod parses the corresponding cfg file for the configuration
21:55:55OrionPKMsettings.cfg(1, 1) Error: identifier expected, but found '['
21:56:10OrionPKMusing the parsecfg format
21:57:58mflamerzahary_: you around today?
22:01:14*Jackneill quit (Remote host closed the connection)
22:12:10*xenagi joined #nimrod
22:12:30AraqOrionPKM: actually "settings.nimrod.cfg" should be processed, "settings.cfg" should not.
22:12:48OrionPKMAraq yeah, suppose that's true
22:13:00Araqsettings.cfg might be processed for reasons of backwards compatibility
22:13:13OrionPKMbut should idetools be processing it anyway?
22:13:32Araqwell idetools processes a nimrod project much like the ordinary compiler does
22:14:03OrionPKMwell could it be a special case to bypass that?
22:14:16*jimmt is now known as jimmjenn
22:14:50AraqOrionPKM: please look at compiler/nimconf.nim:247
22:15:14AraqprojectFile & ".cfg" is still processed but it's deprecated
22:15:20Araqwe can remove it now
22:16:06OrionPKMshould I submit a bug
22:16:15VarriountAraq, is there any specific reason that the TRune type in the unicode module has 'int' s its base, rather than int32?
22:16:28Varriount*as its
22:17:34EXetoCI thought it was int16
22:17:47Araqwell integer literals have the type "int" so I thought that might help somewhat
22:17:55EXetoCnvm
22:18:01Araqthe typing rules changed in the meantime though
22:18:42Varriountirune = int; TRune = distinct irune
22:18:51Araqso ... I don't know. We can easily make it int32 I think but then it's not important either.
22:19:00OrionPKMAraq or I can just submit a patch
22:19:54AraqOrionPKM: is a warning generated?
22:19:54EXetoCit doesn't matter that the size varies?
22:20:05VarriountAraq, congratulations, your repository is now the first url to show up in my quick bar when I type 'git' :P
22:20:14OrionPKMaraq a warning? when
22:20:25Araqif conffile != pd / cfg and existsFile(conffile):
22:20:26Araq readConfigFile(conffile)
22:20:28Araq rawMessage(warnConfigDeprecated, conffile)
22:20:52Araq warnConfigDeprecated: "config file '$1' is deprecated [ConfigDeprecated]",
22:20:56OrionPKMif we do that, we still ahve the error
22:21:09Araqwell do you get this warning or not?
22:21:41OrionPKMglah, let me check, I'm only taking the last line of output and verbosity is 0
22:21:51AraqEXetoC: why should it matter? for serialization any sane person uses utf-8 anyway
22:23:11OrionPKMaraq no warning
22:23:42Araqtry with --warn[ConfigDeprecated]:on
22:23:56VarriountAraq, exception: Microsoft's COM API
22:24:02OrionPKMwhy does it matter if there's a warning or not?
22:24:32AraqVarriount: that uses utf-16 or ucs-16 but not 32 bits
22:24:55Araqor differs COM from the winapi here?
22:25:36AraqOrionPKM: well to ensure that's really your problem here
22:25:37VarriountI don't know. All I know is that, during my failed attempt to wrap disphelper, all the strings were prefixed by L, which I believe means that they are widechar strings.
22:26:02Araqwidechar is 16 bits on win I think
22:26:18Araqalso we have toWideCString somewhere in system/
22:26:52*Varriount opens system.nim . Varriounts computer explodes. :p
22:27:11*Hannibal_Smith quit (Quit: Sto andando via)
22:27:15Araqfeel free to refactor it :P
22:27:22Araqmany tried nobody succeeded
22:28:25VarriountAraq, the main problem with system.nim is it's lack of sections. It wouldn't be so bad if the docs broke the procedures and types into related sections.
22:29:02Araqyeah well, improving the docs is the easy way out
22:30:18OrionPKMAraq it's happening
22:30:31OrionPKMAraq because when I remove the afformentioned lines, it works
22:31:32VarriountAraq, you make that sound like a bad thing. :3
22:32:26OrionPKMIf i remove those lines from nimconf.nim ~246 it works
22:33:03Araqalright hmm
22:33:24Araqdom96: any idea how many babel packages use the old package.cfg file?
22:35:36dom96the what?
22:36:15Araqjester.cfg vs jester.nimrod.cfg
22:36:26Araqjester.cfg is deprecated and bites OrionPKM
22:36:33dom96I have no idea
22:40:24*tylere joined #nimrod
22:40:47tylereI'm tryiing to build master on W64...and it's failing horribly
22:40:53tylereI'm using latest 64 mingw
22:40:53EXetoCI would've checked, had there existed a way to install every package without having to specify them all
22:41:27tylereLots of errors of the form "src\1_2\something.c fatal error: nimbase.h No such file or directory"
22:41:57Araqwell ... that looks like an installation problem
22:45:51tylereI just cloned everything off github
22:45:58tylerefirst the main repo and then the csources repo
22:46:38tylerenimbase.h is present in Nimrod/csources/src
22:46:47*dirkk0 quit (Ping timeout: 250 seconds)
22:47:03Araqhmm does the build64.bat contain any -I directives?
22:47:44tylereJust -Ibuild
22:48:14tyleresample invocation: %CC% %COMP_FLAGS% -Ibuild -c src\1_2\lists.c -o src\1_2\lists.o
22:48:28tylereCOMP_FLAGS is just -w
22:50:32Araqaha ok
22:51:37Araqwell it's not "src" anymore but "nimcache" and the template contains "-Inimcache" now
22:52:09AraqI guess the csources repo is seriously outdated
22:54:38gradhagood night, honey badgers
22:54:44*gradha quit (Quit: bbl, need to watch https://www.youtube.com/watch?v=2IzR_ClTE8Y again)
22:55:59tylereSo the build instructions are no longer accurate?
22:56:09tylereWeird, I built it on my mac fine this afternoon without issue
22:59:07tylereWell, adding -Isrc to COMP_FLAGS seems to have worked
22:59:11tylereat least it's building without complaint
22:59:24Araqthe build instructions are accurate
22:59:39Araqbut we have a template that generates the shell scripts
22:59:47Araqand another for .bat files
23:00:24Araqso it looks like a bug that's gone as soon as we push to csources again
23:00:31*ics quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
23:00:44tylerecool
23:01:27*Varriount_ joined #nimrod
23:01:30Varriount_tylere, I can help you build nimrod for win64
23:01:43tylereI think I have it now, actually
23:01:47tyleregot csources built
23:01:50tylereso it should bootstrap
23:01:53tylerebut thanks
23:02:20*ics joined #nimrod
23:03:52AraqOrionPKM: please rename compiler/nimrod.cfg to compiler/nimrod.nimrod.cfg (gah) and test it a bit before you do the pull request
23:04:20EXetoCAraq: very few packages seem to even have configs. libtcod.cfg seems to be it, if I'm even looking for the right thing here
23:04:51*Varriount quit (Ping timeout: 246 seconds)
23:04:51*Varriount_ is now known as Varriount
23:05:09EXetoChow is the name of the package config decided?
23:05:40EXetoCno wait, that's not a package config
23:06:01Araqyeah it's a compiler config. And thank you EXetoC for the information. :-)
23:09:45VarriountAraq, we should put something like this up on the front page -> http://www.youtube.com/watch?v=nhdvmEYCQgA
23:09:47EXetoCok the window resolution vars confused me
23:17:34AraqVarriount: lol
23:19:41EXetoCput it in the background and loop it
23:22:39VarriountEXetoC, whatcha workin on?
23:33:05VarriountOrionPKM, Araq, A wild Pull Request Suddenly Appeared!
23:38:15AraqOrionPKM: indeed, it's wild. fix it please.
23:45:22EXetoCVarriount: A really bad 2D engine
23:49:43OrionPKMugh
23:53:02OrionPKMhave I mentioned how much I hate git?