<< 13-03-2014 >>

00:00:02*carum_ joined #nimrod
00:00:03*carum quit (Read error: Connection reset by peer)
00:01:04*Demos joined #nimrod
00:04:28*carum joined #nimrod
00:04:28*carum_ quit (Read error: Connection reset by peer)
00:04:49*_rvd quit (Ping timeout: 240 seconds)
00:06:17*carum quit (Remote host closed the connection)
00:28:35*Araq quit (Ping timeout: 265 seconds)
00:28:45*Araq_bnc joined #nimrod
00:28:47*Araq_bnc is now known as Araq
00:30:02*Amrykid quit (Ping timeout: 265 seconds)
00:30:31*dom96 quit (Ping timeout: 265 seconds)
00:31:38*nequitans_ joined #nimrod
00:31:54*Amrykid joined #nimrod
00:38:59*dom96 joined #nimrod
00:38:59*dom96 quit (Changing host)
00:38:59*dom96 joined #nimrod
00:40:33*icebattle quit (Quit: leaving)
00:42:28*q66 quit (Quit: Leaving)
00:52:18*carum joined #nimrod
00:55:51*shodan45 joined #nimrod
01:05:40Araqhi shodan45 vote for us
01:06:50shodan45Araq: vote where/how/what for?
01:07:06Araqhttp://www.reddit.com/r/programming/comments/209a2w/consider_the_nimrod_programming_language/
01:08:16*io2 quit ()
01:11:06Demosand fight for our honor. Last time we were on reddit everyone was convinced Nimrod lacked first class functions
01:11:47Araqer ... what?
01:12:35Demosyeah, someone saw the "command" syntax and was convinced that it meant that you could not pass functions around. I was went through and linked everyone to that section of the manual and showed off do notation
01:12:53*carum quit (Remote host closed the connection)
01:13:36Araqmust suck to not be able to learn a new language and so all you can do is to pull out shit out of ass as lame excuses so you don't have to take a closer look
01:13:55*carum joined #nimrod
01:14:23*carum quit (Remote host closed the connection)
01:14:58*carum joined #nimrod
01:16:21Demosheh. I found nimrod really easy to learn. low friction. A whole lot of stuff was just "well obviously! that is the only sane way to do it"
01:17:07Araq:-) thank you
01:18:39Araqall I hear all day is that nimrod is as hard to learn as Haskell or that the syntactical position of pragmas is "inconsistent" and so nobody will ever use nimrod
01:19:53Araqor that the export markers look like pointers
01:20:35*DAddYE quit (Remote host closed the connection)
01:21:55flaviuAraq: I also really like the syntax, especially how it can be easily extended by libraries.
01:21:58Demoswell {.dynlib.} compared to __attribute__((dllexport)) is an improvement. I do seem to foget which side of [T...] the * goes on, but that is a minor issue
01:23:15Araqhe he, I had to learn that too
01:23:28Demosand the simple stuff like being able to use when instead of #ifdef and having a syntax that is not out to kill tools
01:23:39Demosit is kinda like C's typedef
01:24:03Demosalthough typedef is worse imo
01:24:45Araqas I said, we'll get {dynlib}
01:24:50AraqI think
01:25:40Araqwe really only have to do something
01:25:53Demoswhay is wrong with {dynlib}?
01:25:59Demossory with {.dynlib.}?
01:26:11Araqlike Rust changing 'ret' to 'return' and suddenly people stopped complaining about the short keywords
01:26:32Demosheh
01:26:35Araqso we change {. .} to {} and get rid of T/P
01:26:42DemosI like T/P :D
01:26:55Araqit's not script kiddie compatible
01:26:58Demoswell I like T
01:27:15DemosI think P is a little pointless(heh) since you can just say ptr TFoo
01:27:41nequitans_lol
01:28:05Demosand P does not tell you if you have a ptr or ref
01:28:31Araqtrue but then you almost never have both
01:29:12Araqand as I said, it's about value vs reference types
01:29:37Araqtook me months to figure out DateTime is a struct in c# ...
01:30:47Demosand when we get var vars (that name may need work) we will have three things P can mean. And yeah I get that it is about refness, but I think ptr TFoo or even better var TFoo is better. I dont really care that much though
01:31:28AraqI do type PFoo = var TFoo sometimes
01:31:53Araqso it's already 3
01:32:04Demosnot sure how I feel about that... Can you say Var thing: PFoo then?
01:32:26Araqnope unless zahary broke that
01:32:40Araqzahary pushes for a first class 'var T' notion
01:32:43AraqI'm against it
01:33:53AraqI think you should use ptr and addr instead for locals, 'var' is really about getting rid of 'addr' at the callsite plus some safety rules
01:37:27*carum quit (Remote host closed the connection)
01:38:15Demoscan you assign a var T to a ptr T?
01:38:34Araqwith addr yes
01:38:35*carum joined #nimrod
01:38:55Demosit almost remids me of c++'s &&s
01:39:19Demoshow they like to collapse into value types and &s
01:39:35Araqsame problems, same solutions
01:39:42Demosbut lets not copy that feature, the semantics of && are totally insane
01:40:15*carum quit (Remote host closed the connection)
01:40:49Araqwe have AST based overloading to get move optimizations
01:40:58Araqwhich are way easier to comprehend IMHO
01:41:08Araqthey are also more general and powerful
01:42:46*ruzu joined #nimrod
01:43:28Araqhi ruzu welcome
01:43:58ruzuhow do you do, fine sir. :]
01:44:34Demosyeah I agree. although right now move optimizations are not that great since we don't have `=` operator overloading
01:46:43*Demos_ joined #nimrod
01:47:00Araqtrue
01:47:27EXetoCruzu: ohai
01:53:41Demos_me
01:53:44Demos_sorry
01:53:51Demos_I herpderped in teh formatz
01:54:21Demos_thanks for correcting my post though.
01:56:35NimBotAraq/Nimrod devel 72e9bef Araq [+0 ±4 -0]: should fix the nkExprColonExpr bug in the vm
01:56:35NimBotAraq/Nimrod devel 674bb4f Araq [+0 ±10 -0]: Merge branch 'devel' of https://github.com/Araq/Nimrod into devel
01:56:41Araqgood night
01:57:32*carum joined #nimrod
02:00:52nequitans_#10 on HN
02:06:46*XAMPP joined #nimrod
02:14:04*soc left #nimrod ("PING 1394676843")
02:20:55*Demos_ quit (Ping timeout: 264 seconds)
02:26:25*brson quit (Ping timeout: 240 seconds)
02:29:10Demoswe are doing better on HN than reddit for some reason :D
02:30:16*carum quit (Remote host closed the connection)
02:37:12*Demos_ joined #nimrod
02:41:45flaviuLibrary based DSLs seem to be a really important part of a language
02:45:08Demos_I dont really like the notion of DSLs, easy to use libraries are indeed important, and really hard
02:55:26runvnc__reddit is more full of cows
03:02:06runvnc__I believe that marketing is about herd dynamics
03:02:19runvnc__and psychology
03:02:30flaviuThat's harsh, I think a more fair assessment is a short attention span
03:04:34*nolan_d joined #nimrod
03:12:21*xenagi joined #nimrod
03:12:35*DAddYE joined #nimrod
03:16:29*flaviu quit (Quit: Leaving.)
03:24:06runvnc__I don't mean to be harsh, and I know they sound like flippant comments, but I believe I have read some references to scientific studies backing that up
03:25:29runvnc__certainly decision making is not a logical process, and that includes choosing a product, and it has been proven that other people factor into those types of choices as much, or more, than anything, especially more than any logical argument
03:25:57runvnc__decisions are made by the more primitive brain systems
03:26:40runvnc__this is not meant mainly as a criticism but rather to inform marketing efforts
03:27:06*vt3 joined #nimrod
03:28:28*xenagi quit (Quit: Leaving)
03:29:57*brson joined #nimrod
03:48:10*vt3 quit (Quit: Conversation terminated!)
03:50:25Demoswell nimrod does not actually offer much over c++ /right now/ for a real project, we are just not stable enough. I came to nimrod because I realized that nimrod essentailly was c++57, most of the things I like about nimrod have been suggested by bjarne stroustrup for c++, but there is little chance they will ever be added
03:50:49*Demos_ quit (Ping timeout: 240 seconds)
03:51:01ruzuugh. c++ is the devil :3
03:52:38Demoseagh it is not great, but it does not do anything totally wrong, except for the syntax
03:52:48Demossemanticly it is reasonable
03:53:15*carum joined #nimrod
03:57:26Skrylar"it does not do anything totally wrong" -> except leave lots of really important things as implementation defined
03:58:13Skrylari remember reading about the recommendations for cross-compiler C++ libs, and their solution was to call constructors through cdecl functions because "new X" wasn't guaranteed to work yet the ANSI C ABI was
03:59:49Skrylarand when it comes to exception handling you're basically told not to *actually* use it
04:01:24Demosyeah, dont do that. C++ defineing an ABI would not be a good thing
04:01:31Demosheck C does not define an ABI
04:01:57Skrylarwell the ability for GCC<->MSVC<->WATCOM<->Intel/etc to interop at the C level is good
04:02:01Demostrying to do cross language interop with any kind of object model seems not to work well
04:02:02Skrylarfor C++, not good
04:02:21Demosright, which is not suprising. The sacrifices required to make that work would be too great
04:03:00Demosalthough if you link everyone to the same implementation of the c++ standard library and the c standard library you might be OK
04:03:14SkrylarSo wasting programmers time to make a bunch of int do_x(self) { return self->do_x } is better than ...?
04:04:26Demosactually doing c++ "stuff" across module bundries is a bad idea. It is better than forcing an ABI that would SERIOUSLY restrict both hardware and software changes. For example not all platforms can do zero overhead exceptions and not everyone would want them anyway.
04:04:46SkrylarI tend to like a lisp-ish approach, where the compiler is a syntax microkernel and anything "too high level to be compatible" is a library/macro issue
04:04:50runvnc__guys I have a noob problem with my bcrypt thing and cstrings https://github.com/ithkuil/bcryptnim/blob/master/bcrypt.nim
04:04:59Skrylarlike Lua has succeeded at
04:05:00*carum quit (Remote host closed the connection)
04:05:11ruzuc++/java/c# interpretation of oop is terrible to start with >:]
04:05:28runvnc__whats going into redis is this "$2a$10$BXArDtF9j/nr08ph2BSkdO9OBLXyEpTlfGqdRahXrM1LVx5/VRodG\x00 "
04:05:42Demosthat kind of interop requires you to keep metadata in the library, which is not something C++ does. I dont think Nimrod's oop would be any less problematic over module bounderies
04:06:11runvnc__so in my hash function I just need to create a nimrod string, pass it to the bcrypt/blowfish hash as a cstring, then have that return
04:06:29SkrylarDemos: a large chunk of nimrod OOP is just functions run against PODs with some sugar
04:06:45Demosyeah true
04:06:48Demosand that is quite nice
04:06:48ruzualan kay is very disappointed.
04:06:49fowlrunvnc__, you probably need to free the cstrings returned
04:07:12Demosbut c++ struct inheratance is pretty portable, sans mangleing (which I think 'rod has as well)
04:07:18SkrylarDemos: the dispatch trees, that might be a little more weird; all though Araq has mentioned he wants those to be a macro problem anyway
04:07:44runvnc__fowl ok I will try to figure out how to do that, but I don't think it will solve my problem
04:08:00Skrylarand i've read about people doing low-overhead exceptions in ANSI C on embedded systems (the ol' setjmp trickery) so..
04:08:17Demossetjmp is not low overhead
04:08:18fowlrunvnc__, use encrypted = newstringofcap(xx) and pass encrypted.cstring
04:08:28SkrylarDemos: significantly lower than a SEH stack
04:08:37Demosthe usual c++ exceptions have NO overhead aside form a increase in COLD code
04:08:38runvnc__my problem is that my return value doesn't look like a regular string, instead it seems to have the original padding even after the null char
04:08:44runvnc__ok fowl thanks!
04:09:51SkrylarDemos: http://www.on-time.com/ddj0011.htm they tested both and found a simple setjmp system is significantly faster even when throwing exceptions, and uses 13% as much code size
04:10:50fowlrunvnc__, you dont need to pass encrypted.cstring, just the other thing
04:11:10runvnc__what module is newstringofcap in
04:11:18runvnc__the arg is max length right
04:11:19fowlsystem
04:11:32fowlyea
04:12:44Skrylarnow GCs do present an awkward problem with two separate compilers interacting in the same system
04:13:14fowlrunvnc__, you should set the len after calling blowfish, it probably returns the str len
04:13:20Skrylarnot as much if GCs are confined to threads and your externally loaded code is also confined to threads, but exception and object calling is doable through a shared ABI
04:13:53runvnc__ok
04:14:08Skrylarthough delphi (and currently nimrod it seems) have all the DLLs produced to the same compiler/runtime at the moment, so we really don't have any cross support :\
04:21:13runvnc__fowl: for some reason I keep getting back an empty string now
04:21:25runvnc__that's why I ended up putting a bunch of spaces in encrypted before
04:21:31runvnc__which almost worked
04:21:47DemosSkrylar, was that testing the speed of normal execution or of exception handleing?
04:22:41fowlrunvnc__, ehm try newstring(len) instead
04:23:08runvnc__k thanks I will try that
04:24:48SkrylarDemos: with and without throwing exceptions
04:25:01Demosbut the difference without is really small
04:25:21Demoswell somewhat small
04:25:27Demosalso, what CPU
04:25:43Skrylari was mostly concerned with the exceptionally smaller amount of code it used, and that its actually somewhat portable
04:25:46Demosand it is c++ builder 4
04:25:48Demosso yeah
04:26:07DemosI thought sjlj was /highly/ platform specific
04:26:37Demosand we do not know if that extra 30k of code is constant or somehow related to program size or call stack depth
04:27:39DemosI accept that in some cases just calling abort() is better/faster than exceptions but I do not think that exceptions are somehow "too slow" for regular use.
04:27:44Skrylarsetjmp/longjmp are part of the posix standard at least IIRC, if not one of the C standards
04:27:59Skrylarand my argument was never that raises were slow
04:28:22runvnc__hm if I use newString(60) it seems to work, otherwise has a weird non-ending or cuts off characters
04:28:22Skrylarmy argument was that "you shouldn't throw exceptions across boundaries because of implementation differences" is silly and should be properly thought out instead of discarded out of hand
04:28:27Skrylarespecially because it CAN be done in a modular way
04:28:31runvnc__guess I just needed to specify the size precisely. thanks fowl
04:28:42Skrylarpeople are just more interested in going "well that would be hard" and throwing out a new CXX version
04:30:15*carum joined #nimrod
04:32:21*carum_ joined #nimrod
04:32:22*carum quit (Read error: Connection reset by peer)
04:32:31Demos"the type declared is jmp_buf which is an array type suitable for holding the infomation needed to restore a calling environment. The environment of a call to the setjmp macro consists of information sufficent for a call to the longjmp function to return execution to the correct block and invocation of that block. Hardly an ABI. And I think (feel free to prove me wrong) that different libcs define it in different ways
04:34:32Skrylari think the one they used in the link was a custom version of it that worked in a specific way
04:35:38Skrylarnothing really prevents you from defining a portable setjmp specification
04:38:06*Varriount|Mobile joined #nimrod
04:38:59*darkf quit (Ping timeout: 255 seconds)
04:39:41Varriount|MobileAraq, dom96: Power is currently out in my area
04:42:28*carum_ quit (Remote host closed the connection)
04:50:02*darkf joined #nimrod
04:56:53*shodan45 quit (Remote host closed the connection)
05:00:13*Varriount|Mobile quit (Quit: AndroIRC - Android IRC Client ( http://www.androirc.com ))
05:11:17*brson quit (Ping timeout: 246 seconds)
05:12:41*nequitans_ quit (Ping timeout: 246 seconds)
05:15:15runvnc__do you guys think dom96 will be mad if I copy his css
05:15:29runvnc__or maybe I can buy his design cheap
05:15:41runvnc__this ipsum thing is great but
05:16:11runvnc__well maybe its not that hard to find a blog template
05:20:54Skrylarcouldn't hurt to ask him
05:21:03Skrylarunless he has a watermark on the bottom from a pre-done template place
05:21:33*carum joined #nimrod
05:21:40runvnc__well I like the way he did it but I don't really need to copy him. I found jekyllthemes.org I am pretty sure I can adapt any of these
05:23:43Skrylari feel sad sometimes because i explore a lot of software for fun, and sometimes i see these kickass features stuck on the most annoying programs
05:24:26SkrylarJeskola Buzz has this set of buttons on it so you can take two slider presets for a data node, and tell it to mutate between the two
05:24:37Skrylare.g. "randomly pick from A or B, lock those"
05:25:16runvnc__interesting
05:25:53*carum is now known as caram
05:25:57Skrylaryou can tell it to morph with no preset and it just randomizes the dials (this is kind of dangerous if done carelessly because you can make earpiercing audio but it doesn't happen often), or pick from like 6 randomizer styles
05:26:14*caram is now known as CARAM
05:26:17Skrylari was looking at a virtual tabletop thinking "hey i remember this morphing feature from buzz, why doesn't a D&D tool have that for making NPCs?"
05:26:32SkrylarYay multi-disciplines. <_<
05:27:22*Demos quit (Read error: Connection reset by peer)
05:34:18*Demos joined #nimrod
05:54:41*BitPuffin quit (Ping timeout: 246 seconds)
05:57:06*CARAM_ joined #nimrod
05:57:06*CARAM quit (Read error: Connection reset by peer)
06:52:30*CARAM_ quit (Read error: Connection reset by peer)
06:52:33*CARAM joined #nimrod
06:55:47*CARAM quit (Read error: Connection reset by peer)
06:55:59*CARAM joined #nimrod
07:26:26*CARAM quit (Read error: Connection reset by peer)
07:26:46*CARAM joined #nimrod
07:43:01*CARAM quit (Read error: Connection reset by peer)
07:43:23*CARAM joined #nimrod
07:52:07*Demos quit (Ping timeout: 264 seconds)
07:52:15*BitPuffin joined #nimrod
07:53:19*CARAM quit (Read error: Connection reset by peer)
07:53:28*CARAM joined #nimrod
07:56:50*BitPuffin quit (Ping timeout: 246 seconds)
08:09:29*CARAM quit (Read error: Connection reset by peer)
08:09:49*CARAM joined #nimrod
08:13:07*CARAM quit (Read error: Connection reset by peer)
08:13:26*CARAM joined #nimrod
08:38:33AraqHI CARAM welcome
08:50:42*CARAM quit (Remote host closed the connection)
09:00:54*CARAM joined #nimrod
09:13:00*DAddYE quit (Remote host closed the connection)
09:13:27*DAddYE joined #nimrod
09:17:37*DAddYE quit (Ping timeout: 240 seconds)
09:38:15*easy_muffin joined #nimrod
10:23:17*eigenlicht joined #nimrod
10:23:51*DAddYE joined #nimrod
10:28:01*DAddYE quit (Ping timeout: 240 seconds)
11:05:08*easy_muffin quit (Read error: Connection reset by peer)
11:05:58*reloc0 quit (Ping timeout: 240 seconds)
11:20:39*BitPuffin joined #nimrod
11:45:32BitPuffinAraq: wish there was an as pretty way to implement the once macro in objective c
11:45:39BitPuffinI may have just found the source of hell
11:45:57Araquse nimrod instead of objective C
11:47:42BitPuffinyeah and bind cocoa as I go sounds like great fun
11:47:56BitPuffindoes c2nim even support obj-c?
11:48:12BitPuffintbh obj-c should probably be easier to bind to than pure C lol
11:48:44Araqno it's harder to bind to
11:48:54Araqand c2nim doesn't support @parserhack
11:48:58BitPuffinhow so?
11:49:40BitPuffinI dunno I just see a lot of similarities. Seems like it would be easy to do a clean translation of most of the code
11:49:59BitPuffinbut anyways
11:50:08BitPuffinyou can't really use objective-c without xcode so
11:50:14BitPuffinI mean you can
11:50:16BitPuffinif you hate life
11:51:40*nequitans_ joined #nimrod
11:57:38*rejuvyesh joined #nimrod
12:12:49*nequitans_ quit (Ping timeout: 240 seconds)
12:29:20*ruzu quit (Read error: Connection reset by peer)
12:31:41*Varriount|Mobile joined #nimrod
12:37:46*nequitans_ joined #nimrod
12:43:14*darkf quit (Quit: Leaving)
13:00:29*CARAM quit (Remote host closed the connection)
13:05:40Araqhi rejuvyesh welcome
13:05:56rejuvyeshHello Araq, thanks!
13:06:12rejuvyeshI was just checkin Nimrod out.
13:11:27*askatasuna quit (Quit: WeeChat 0.4.2)
13:11:56Araqfeel free to ask questions. The only thing that is not allowed here to criticize c2nim ;-)
13:12:35dom96hello
13:12:42*OrionPK quit (Remote host closed the connection)
13:12:56*OrionPK joined #nimrod
13:16:41Araqhey dom96
13:16:49Araqasyncio ready for 0.9.4?
13:16:51dom96hi Araq
13:16:57dom96not quite
13:17:14Araqyou your asyncio test is flipping, right?
13:17:32Araqsometeimes it works sometimes it doesn't
13:17:40dom96ehh, no>?
13:19:44Araqtests/async/C/tasyncawait.nim (reSuccess -> reExitcodesDiffer)
13:20:09dom96What platform is that?
13:20:18dom96Likely because I am switching OS'
13:20:26dom96and making adjustments which break one OS but fix the other
13:21:33Araqlinux-x86
13:21:48Araqbut it happens on others too, I think
13:29:31nequitans_hi all, quick (potentially dumb) question: i have a data structure that i'm manually managing the memory of. If i want to optionally give it to the garbage collector when initializing it rather than manually managing it, is it possible to use something like GC_ref? Ideally, i'd have a per-instance {.manual.} pragma, which makes management manual if specified, otherwise it's default garbage collected
13:47:29*clueless joined #nimrod
13:48:53clueless Can anyone explain to me why I can't use the nimrod terminal commands on my mac? I ran the build.sh and it was successful. I also tried adding my nimrod/bin directory to the $PATH variable, and 'nimrod doc' still gives 'command not found.'
13:50:47dom96clueless: Are you sure you added it to $PATH correctly?
13:51:23EXetoCmake sure that it has been set in the current context
13:51:27cluelessI followed a guide and 'echo $PATH' showed the directory
13:51:44cluelessBut I'm pretty new to terminal commands
13:51:51dom96What does 'which nimrod' say?
13:52:10cluelessJust displays the prompt agian
13:52:13cluelessagain*
13:52:48EXetoCis it included in the same terminal that 'nimrod' is executed in?
13:53:06dom96Are you sure a Nimrod binary exists inside the directory that you added to your PATH?
13:55:53cluelessI think I have path pointed to the binary itself, should I just point it to bin?
13:56:26EXetoCyes
13:56:46cluelessOkay, thanks! I'll try that
13:59:28cluelessSo that was problem one, and problem two was a slight misspelling in the path to that directory. Thanks! Is there a way to clean up my path variable and get rid of the wrong directories?
14:00:58*CARAM joined #nimrod
14:01:11cluelessActually I'll just google that. Thanks agaiN!
14:01:24*clueless quit (Quit: Page closed)
14:05:37*CARAM quit (Ping timeout: 240 seconds)
14:14:53*CARAM joined #nimrod
14:18:59*CARAM quit (Ping timeout: 240 seconds)
14:25:43*nequitans_ quit (Ping timeout: 264 seconds)
14:35:08*askatasuna joined #nimrod
14:56:40rejuvyeshHi, I installed nimrod via pacman on my arch machine. But when I clone bable and try to install it I get: http://lpaste.net/101137
14:57:56dom96rejuvyesh: You need the latest Nimrod compiler from github, 0.9.2 is too old for babel.
14:58:15rejuvyeshoh, thanks for the heads up!
15:03:38*XAMPP quit (Excess Flood)
15:04:04*XAMPP joined #nimrod
15:04:05*XAMPP quit (Changing host)
15:04:05*XAMPP joined #nimrod
15:14:33rejuvyeshSo I downloaded nimrod from nimbuild. I just need to copy the files to my path?
15:15:00rejuvyeshIf yes, where would the config directory go?
15:17:40*Endy joined #nimrod
15:18:22Skrylarrejuvyesh: i found it far less buggy if you just add nimrod to your path instead of trying to move it
15:18:40rejuvyeshoh, thanks Skrylar
15:18:53*psquid quit (Quit: work)
15:23:36*Demos joined #nimrod
15:34:07*Varriount|Mobile quit (Read error: Connection reset by peer)
15:36:40*some joined #nimrod
15:36:47somehi
15:36:55dom96hello some
15:37:11someas a utter newbie im a bit struggling heh
15:37:38somedoes the object system of nimrod honour Liskov sub principle?
15:39:53*aftersha_ joined #nimrod
15:40:03dom96some: I think so.
15:41:59*Demos quit (Ping timeout: 240 seconds)
15:48:04someok thnx
15:57:28*aftersha_ quit (Quit: Computer has gone to sleep.)
16:12:18*some quit (Quit: Leaving)
16:22:59*nequitans_ joined #nimrod
16:27:13*nequitans_ quit (Ping timeout: 240 seconds)
16:27:53*Demos joined #nimrod
16:36:17Demossome the liskov sub priniciple is not really something that a language can "do", nimrod's object system does support casting to base types and, if you derive from a class and make a method that method can do wahtever you want...
16:49:53*DAddYE joined #nimrod
16:50:42*[1]Endy joined #nimrod
16:53:37*Endy quit (Ping timeout: 240 seconds)
16:53:37*[1]Endy is now known as Endy
16:59:38*awestroke joined #nimrod
17:00:08*Endy quit (Ping timeout: 255 seconds)
17:01:55*aftersha_ joined #nimrod
17:06:41*dekroshaz joined #nimrod
17:10:59*Kooda quit (Quit: leaving)
17:11:49*Kooda joined #nimrod
17:12:37*Kooda quit (Client Quit)
17:14:42*rveach_ joined #nimrod
17:16:39*CARAM joined #nimrod
17:21:45*CARAM quit (Ping timeout: 255 seconds)
17:29:25*Raynes left #nimrod ("Textual IRC Client: www.textualapp.com")
17:39:52*dekroshaz quit (K-Lined)
17:42:20*mikehummer quit (K-Lined)
17:43:39*manicflower joined #nimrod
17:44:19*manicflower quit (K-Lined)
17:48:03*Demos_ joined #nimrod
17:53:32*Demos quit (Write error: Broken pipe)
17:54:02*aftersha_ quit (Quit: Computer has gone to sleep.)
18:05:05*q66 joined #nimrod
18:05:39*CARAM joined #nimrod
18:10:46*CARAM quit (Remote host closed the connection)
18:20:44*CARAM joined #nimrod
18:38:32*aftershave left #nimrod ("Textual IRC Client: www.textualapp.com")
18:44:09*nequitans quit (Read error: Connection reset by peer)
18:45:18*nequitans joined #nimrod
18:50:23*Demos_ quit (Ping timeout: 255 seconds)
18:51:37*BitPuffin quit (Ping timeout: 240 seconds)
19:01:44*rejuvyesh is now known as rejuvyesh[away]
19:08:24*Demos joined #nimrod
19:11:36*OrionPK quit (Read error: Connection reset by peer)
19:13:21*CARAM quit (Remote host closed the connection)
19:17:51*Trixar_za quit (Ping timeout: 252 seconds)
19:18:20*Trixar_za joined #nimrod
19:18:24*nequitans_ joined #nimrod
19:22:25*nequitans_ quit (Ping timeout: 240 seconds)
19:41:22*CARAM joined #nimrod
19:46:55*BitPuffin joined #nimrod
19:54:44*askatasuna quit (Quit: WeeChat 0.4.3)
20:03:19*brson joined #nimrod
20:08:25*brson quit (Ping timeout: 240 seconds)
20:09:59*brson joined #nimrod
20:10:06*OrionPK joined #nimrod
20:10:06*brson quit (Client Quit)
20:10:21*brson joined #nimrod
20:11:44*rveach_ quit (Ping timeout: 246 seconds)
20:20:30*Mat3 joined #nimrod
20:20:33Mat3hi all
20:20:55Araqhi
20:21:04Mat3hi Araq
20:22:17Araquh oh ...
20:24:27Mat3I get some more documentation about GPU programming, very interesting
20:24:35fowlAraq, this is a showstopper for me https://github.com/Araq/Nimrod/issues/993
20:25:48Araqfowl: yeah I imagined, working on it
20:26:11AraqMat3: GPU programming rules ;-)
20:26:55Araqall the bullshit programming is not even possible on a GPU
20:28:31Mat3it is like programming a VLIW DSP with SIMD ISA at assembler level
20:28:38*nolan_d left #nimrod (#nimrod)
20:29:13DemosAraq: Direct3D has OOP with virtual dispatch and everything
20:29:25Demoswell sorta, that is the interface
20:29:38*flaviu joined #nimrod
20:29:48AraqDemos: openCL has no function pointers or any kind of dynamic binding and no recursion
20:29:54Araq--> call graph is a static tree
20:30:04Araq--> compiler knows *everything*
20:30:39Araqoh it also no malloc/free ... ;-)
20:31:13DemosYeah but you need to allocate memory for stuff, you just do it before running the program
20:32:13DemosI gotta go eat something. but yeah GPU programming is pretty rad. You also get to debug like a real programmer
20:33:19*Matthias247 joined #nimrod
20:33:52Mat3Araq: The chips from AMD and Broadcom are quite generic (as such, one can see the GPU *as* main processing unit in case of Raspberry Pi)
20:34:26flaviuCouldn't the `when` keyword be replaced with a template?
20:35:06fowlflaviu, when doesnt do anything yet
20:35:07Mat3anyhow; OpenCL is quite restricted
20:36:04Araqflaviu: what do you mean?
20:36:25*Demos quit (Ping timeout: 240 seconds)
20:36:29*io2 joined #nimrod
20:36:37Mat3the main bottleneck is access to main memory however
20:38:04flaviuWhen could be implemented as something like `template when(expr: bool,body:stmt):stmt{.immediate.} = if expr: body`
20:38:05AraqMat3: maybe but for all benchmarks that I looked at the GPU wins over the CPU
20:38:26Araqflaviu: and now you know why that's not possible
20:38:36Araqyou need a builtin and 'if' doesn't cut it
20:38:53Araqthe scoping rules for 'if' don
20:38:57Araq*don't fit
20:39:14Araqplus it doesn't guarantee compile time evaluation of the condition
20:41:06fowlah 'when' i thought he said 'where' or something
20:41:38*vendethiel quit (Ping timeout: 240 seconds)
20:41:53*vendethiel joined #nimrod
20:43:45flaviuAraq: My bad. I checked the scope rules for template, but forgot about if.
20:48:15Araqhmm I should really review zahary's changes
20:48:29Araqthe compiler now knows about skClosureIterator
20:48:35Araqbut I don't
20:49:28Araqor maybe it was me who added that
20:49:36Araqhmm
20:57:11Araqfowl: in your 2nd example the 'inject' is redundant
20:57:37Araqif a declaration name is passed to a template it is implicitly 'inject'ed
20:57:55Araqbecause everything else makes no sense
20:59:13fowlwhats declaration name?
20:59:47Araqwell what you do, you pass in an expr 'foo' that is used in a declaration context 'let foo = ...'
21:00:07fowlthat doesnt sound hygenic lol
21:00:34Araqwhy would pass it via a template parameter if not to expose it?
21:00:46*Endy joined #nimrod
21:01:52fowlidk
21:05:55*Demos joined #nimrod
21:07:07*brson quit (Ping timeout: 264 seconds)
21:07:46Matthias247Mat3: die raspberry pi has actually a quite weird SoC
21:17:30Mat3that's true
21:20:19*OrionPK quit (Ping timeout: 264 seconds)
21:20:33Mat3Araq: take a look: http://docs.julialang.org/en/release-0.2/manual/parallel-computing/
21:21:40AraqMat3: looks exactly what I planned for 0.9.6
21:21:50Araq*like what
21:22:58Mat3seem to work quite well
21:24:03Mat3there metaprogramming approach is also somewhat similar: http://docs.julialang.org/en/release-0.2/manual/metaprogramming/
21:24:19*brson joined #nimrod
21:30:41Araqcorrection: I think it works completely different but the APIs are comparable
21:31:02NimBotAraq/Nimrod devel 8ffd4cc Araq [+1 ±2 -0]: fixes #993
21:31:09Araqfowl: here you go
21:31:31fowlAraq, ty!!
21:32:16*io2 quit (Read error: Connection reset by peer)
21:41:08fowlnnkOpenSymChoice new symbol type
21:43:06zielmichatype IFoo = generic x
21:43:06zielmicha let i = foo(x)
21:43:14zielmichaShould this fail?
21:43:30zielmicha(because it does "a.nim(3, 6) Error: internal error: transformOuter")
21:44:46Araqinternal error is a bug
21:45:51*io2 joined #nimrod
21:46:15flaviuHas the Dr. Dobs article been posted to reddit and hnews?
21:47:15Araqflaviu: yeah a while ago
21:48:01*Endy quit (Ping timeout: 240 seconds)
21:53:03*Amrykid quit (Changing host)
21:53:04*Amrykid joined #nimrod
21:56:01Mat3ciao
21:56:05*Mat3 quit (Quit: Verlassend)
21:57:56*CARAM quit (Remote host closed the connection)
21:58:04Araqgood night
21:58:16awestrokeflaviu: link pls
21:58:25flaviuawestroke: http://www.drdobbs.com/open-source/nimrod-a-new-systems-programming-languag/240165321?pgno=1
22:05:44awestrokewhat's the difference between the proc square and the template square in that article?
22:05:52awestrokewhat does template do differently
22:06:37*DAddYE_ joined #nimrod
22:07:06flaviuawestroke: I'm not clear on what you're asking. Are you asking the difference between procs and templates?
22:08:01awestrokeflaviu: yes. also what is the difference between the two specific routines
22:08:09*CARAM joined #nimrod
22:10:01*DAddYE quit (Ping timeout: 240 seconds)
22:12:37flaviuTemplates are basically find-replace with some nice tricks to make them more flexible. So when you call the `!=` template, the compiler literally substitutes in your a and b.
22:12:38flaviuIn the square template, x is not an actual value, it is just an expression that returns an int. So the proc and the template are exactly the same, whatever expression returns int is evaluated only once to get x.
22:13:38flaviuTemplates do not deal in terms of values, they deal with expressions
22:14:17awestrokeflaviu: what's the benefit of making it into a template, as in the article, and doing "let y = x \n x * x"
22:14:46flaviuNo difference at all, I think that was the point they were trying to make
22:15:27awestrokeflaviu: alright, but what would have been the difference without the "let y = x" in the template version?
22:16:44flaviulets say that we called the square template as `square(doExpensiveIOForInt())`. Without the `let y = x`, it would be `doExpensiveIOForInt()*doExpensiveIOForInt()`
22:17:09awestrokeaaaah
22:17:18awestrokethanks
22:17:26flaviuSure, no problem
22:19:13*Demos quit (Ping timeout: 240 seconds)
22:20:27*nequitans_ joined #nimrod
22:25:07*nequitans_ quit (Ping timeout: 264 seconds)
22:27:41awestrokewhy is nimrod case insensitive?
22:30:14*nolan_d joined #nimrod
22:30:46flaviuTo allow for people to use code formatting styles. Very controversial, http://forum.nimrod-lang.org/t/191
22:31:02flaviu*different code formatting
22:38:10awestrokeso the language will become case sensitive soon?
22:38:29awestrokeor down the line?
22:38:54*skyfex joined #nimrod
22:40:16dom96awestroke: Current plan is to have partial case sensitivity (i.e. just the first letter) to get rid of the type prefixes.
22:41:41*DAddYE_ quit (Remote host closed the connection)
22:42:43dom96Everybody answer Nimrod: https://docs.google.com/forms/d/1fKVsAFT3nRVvlcJ74p0ZI2uqwDq_qtNvxx8ne6LTI9E/viewform
22:44:41*DAddYE joined #nimrod
22:45:50skyfexWhat's the best way to go from array[0..255, char] to string
22:45:54skyfex?
22:48:24dom96cast to cstring perhaps
22:48:27*awestroke quit (Ping timeout: 255 seconds)
22:51:43fowlskyfex, $ arr
22:52:34skyfexfowl: Thanks, that worked!
22:55:11*q66 quit (Ping timeout: 255 seconds)
22:57:45flaviuhash*(x: int64) is really bad, it just takes the bottom 32 bits
23:02:01*Demos joined #nimrod
23:02:56*psquid joined #nimrod
23:03:37*eigenlicht quit (Ping timeout: 240 seconds)
23:08:17*q66 joined #nimrod
23:08:18*q66 quit (Changing host)
23:08:18*q66 joined #nimrod
23:09:13*brson quit (Ping timeout: 240 seconds)
23:11:09*Matthias247 quit (Read error: Connection reset by peer)
23:11:16*brson joined #nimrod
23:17:35nolan_dIs there any support to scope babel packages to a project, or are they global? I'm used to Java/Maven-style dependency management, Ruby Bundler, etc. where a project's dependencies are defined relative to that project.
23:18:12nolan_dLooking at the docs, it seems I install packages globally.
23:19:43flaviuIs there a platform independent way to transform a value into an array of bytes?
23:19:47nolan_dSomething like Golang's import statement might be nice, only with less magic and more explicit support for things (I.e. authentication, checking out individual revisions, etc.) Guessing that could be a macro.
23:22:19dom96hello nolan_d
23:23:01nolan_dHello.
23:23:09dom96nolan_d: I'm not entirely sure I understand what you're asking. But you define the dependencies in your project's .babel file.
23:23:23*grumio2 joined #nimrod
23:23:47nolan_dOK, maybe I didn't get that. I thought there were distinct babel install commands that installed libraries globally. Not sure where I got that.
23:23:51*nolan_d checks.
23:24:05dom96You can also install packages globally, yes.
23:24:27*XAMPP quit (Read error: Connection reset by peer)
23:24:59*XAMPP joined #nimrod
23:25:00dom96Packages can be installed in two ways: as a dependency when installing (or building) a different package or when installing it manually.
23:25:38nolan_dAh, OK.
23:28:29nolan_dAh, guess the reason I thought that is the README.md file in the repository, which doesn't mention project-specific installation.
23:28:46flaviuIs there a way to make a array of a certain size with all elements as 0s? I can't find it in the docs
23:29:50EXetoCmost objects are zero-initialized by default
23:29:50*Demos quit (Ping timeout: 255 seconds)
23:30:42dom96nolan_d: Have you read https://github.com/nimrod-code/babel/blob/master/developers.markdown ?
23:31:17dom96That document goes a bit more in depth into how babel works.
23:31:25dom96The readme really only talks about how to use babel.
23:32:52*CARAM quit (Read error: Connection reset by peer)
23:33:06*CARAM joined #nimrod
23:33:24*darkf joined #nimrod
23:33:49nolan_dAh, I guess what confused me about that was the bit about producing packages and submitting them to the repository.
23:33:52*io2 quit ()
23:33:57flaviuIs anyone working on a better hash function in the stdlib, like MurmurHash3?
23:34:14nolan_dMaybe I'm just working on a standalone app that I don't want to submit, and just want to depend on existing packages.
23:34:28nolan_dSo anyhow, guess I read too strictly. :)
23:36:21flaviunolan_d: If you don't want your app submitted, try to avoid accidental pull requests to nimrod-code/packages ;)
23:36:47*noam_ joined #nimrod
23:37:42nolan_dFair enough, just explaining what made me stop reading the doc. :) I didn't get that the same mechanisms I'd use to write a babel library were the ones I'd use to develop something that depends on it.
23:37:43dom96hehe, you certainly don't need to submit it to the package repo
23:38:05dom96In the dependency list you can specify git urls just like in Go.
23:38:39*dom96 may have forgotten to mention that in the docs
23:39:16dom96well it's kind of mentioned in the readme
23:39:29dom96In any case, PRs for better docs are always welcome ;)
23:40:37*grumio2_ joined #nimrod
23:41:06dom96hello grumio2_
23:41:36*skyfex_ joined #nimrod
23:43:33*CARAM quit (Remote host closed the connection)
23:44:04nolan_dCool.
23:44:33*CARAM joined #nimrod
23:45:37*skyfex quit (Write error: Broken pipe)
23:45:37*grumio2 quit (Write error: Connection reset by peer)
23:45:42*cark quit (Write error: Connection reset by peer)
23:45:45*noam quit (Ping timeout: 321 seconds)
23:45:45*cark joined #nimrod
23:47:13*XAMPP quit (Ping timeout: 240 seconds)
23:47:41*XAMPP joined #nimrod
23:47:41*XAMPP quit (Changing host)
23:47:41*XAMPP joined #nimrod
23:52:15grumio2_Haha. Joined this channel to ask a question, while cleaning up my code I ended up reading the manual and fixing my bugs on my own. Thanks for being here, peeps.
23:52:48dom96great. Glad you got it sorted. Welcome to #nimrod :)
23:52:55grumio2_Thanks, dom96
23:53:01*CARAM quit (Remote host closed the connection)
23:54:43grumio2_Just started using nimrod yesterday. Like tinkering with new languages. First project will be a gridworld sim..
23:58:39dom96Awesome.