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:40 | Araq | hi shodan45 vote for us |
01:06:50 | shodan45 | Araq: vote where/how/what for? |
01:07:06 | Araq | http://www.reddit.com/r/programming/comments/209a2w/consider_the_nimrod_programming_language/ |
01:08:16 | * | io2 quit () |
01:11:06 | Demos | and fight for our honor. Last time we were on reddit everyone was convinced Nimrod lacked first class functions |
01:11:47 | Araq | er ... what? |
01:12:35 | Demos | yeah, 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:36 | Araq | must 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:21 | Demos | heh. 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:07 | Araq | :-) thank you |
01:18:39 | Araq | all 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:53 | Araq | or that the export markers look like pointers |
01:20:35 | * | DAddYE quit (Remote host closed the connection) |
01:21:55 | flaviu | Araq: I also really like the syntax, especially how it can be easily extended by libraries. |
01:21:58 | Demos | well {.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:15 | Araq | he he, I had to learn that too |
01:23:28 | Demos | and 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:39 | Demos | it is kinda like C's typedef |
01:24:03 | Demos | although typedef is worse imo |
01:24:45 | Araq | as I said, we'll get {dynlib} |
01:24:50 | Araq | I think |
01:25:40 | Araq | we really only have to do something |
01:25:53 | Demos | whay is wrong with {dynlib}? |
01:25:59 | Demos | sory with {.dynlib.}? |
01:26:11 | Araq | like Rust changing 'ret' to 'return' and suddenly people stopped complaining about the short keywords |
01:26:32 | Demos | heh |
01:26:35 | Araq | so we change {. .} to {} and get rid of T/P |
01:26:42 | Demos | I like T/P :D |
01:26:55 | Araq | it's not script kiddie compatible |
01:26:58 | Demos | well I like T |
01:27:15 | Demos | I think P is a little pointless(heh) since you can just say ptr TFoo |
01:27:41 | nequitans_ | lol |
01:28:05 | Demos | and P does not tell you if you have a ptr or ref |
01:28:31 | Araq | true but then you almost never have both |
01:29:12 | Araq | and as I said, it's about value vs reference types |
01:29:37 | Araq | took me months to figure out DateTime is a struct in c# ... |
01:30:47 | Demos | and 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:28 | Araq | I do type PFoo = var TFoo sometimes |
01:31:53 | Araq | so it's already 3 |
01:32:04 | Demos | not sure how I feel about that... Can you say Var thing: PFoo then? |
01:32:26 | Araq | nope unless zahary broke that |
01:32:40 | Araq | zahary pushes for a first class 'var T' notion |
01:32:43 | Araq | I'm against it |
01:33:53 | Araq | I 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:15 | Demos | can you assign a var T to a ptr T? |
01:38:34 | Araq | with addr yes |
01:38:35 | * | carum joined #nimrod |
01:38:55 | Demos | it almost remids me of c++'s &&s |
01:39:19 | Demos | how they like to collapse into value types and &s |
01:39:35 | Araq | same problems, same solutions |
01:39:42 | Demos | but lets not copy that feature, the semantics of && are totally insane |
01:40:15 | * | carum quit (Remote host closed the connection) |
01:40:49 | Araq | we have AST based overloading to get move optimizations |
01:40:58 | Araq | which are way easier to comprehend IMHO |
01:41:08 | Araq | they are also more general and powerful |
01:42:46 | * | ruzu joined #nimrod |
01:43:28 | Araq | hi ruzu welcome |
01:43:58 | ruzu | how do you do, fine sir. :] |
01:44:34 | Demos | yeah 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:00 | Araq | true |
01:47:27 | EXetoC | ruzu: ohai |
01:53:41 | Demos_ | me |
01:53:44 | Demos_ | sorry |
01:53:51 | Demos_ | I herpderped in teh formatz |
01:54:21 | Demos_ | thanks for correcting my post though. |
01:56:35 | NimBot | Araq/Nimrod devel 72e9bef Araq [+0 ±4 -0]: should fix the nkExprColonExpr bug in the vm |
01:56:35 | NimBot | Araq/Nimrod devel 674bb4f Araq [+0 ±10 -0]: Merge branch 'devel' of https://github.com/Araq/Nimrod into devel |
01:56:41 | Araq | good night |
01:57:32 | * | carum joined #nimrod |
02:00:52 | nequitans_ | #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:10 | Demos | we 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:45 | flaviu | Library based DSLs seem to be a really important part of a language |
02:45:08 | Demos_ | I dont really like the notion of DSLs, easy to use libraries are indeed important, and really hard |
02:55:26 | runvnc__ | reddit is more full of cows |
03:02:06 | runvnc__ | I believe that marketing is about herd dynamics |
03:02:19 | runvnc__ | and psychology |
03:02:30 | flaviu | That'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:06 | runvnc__ | 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:29 | runvnc__ | 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:57 | runvnc__ | decisions are made by the more primitive brain systems |
03:26:40 | runvnc__ | 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:25 | Demos | well 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:01 | ruzu | ugh. c++ is the devil :3 |
03:52:38 | Demos | eagh it is not great, but it does not do anything totally wrong, except for the syntax |
03:52:48 | Demos | semanticly it is reasonable |
03:53:15 | * | carum joined #nimrod |
03:57:26 | Skrylar | "it does not do anything totally wrong" -> except leave lots of really important things as implementation defined |
03:58:13 | Skrylar | i 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:49 | Skrylar | and when it comes to exception handling you're basically told not to *actually* use it |
04:01:24 | Demos | yeah, dont do that. C++ defineing an ABI would not be a good thing |
04:01:31 | Demos | heck C does not define an ABI |
04:01:57 | Skrylar | well the ability for GCC<->MSVC<->WATCOM<->Intel/etc to interop at the C level is good |
04:02:01 | Demos | trying to do cross language interop with any kind of object model seems not to work well |
04:02:02 | Skrylar | for C++, not good |
04:02:21 | Demos | right, which is not suprising. The sacrifices required to make that work would be too great |
04:03:00 | Demos | although if you link everyone to the same implementation of the c++ standard library and the c standard library you might be OK |
04:03:14 | Skrylar | So wasting programmers time to make a bunch of int do_x(self) { return self->do_x } is better than ...? |
04:04:26 | Demos | actually 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:46 | Skrylar | I 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:50 | runvnc__ | guys I have a noob problem with my bcrypt thing and cstrings https://github.com/ithkuil/bcryptnim/blob/master/bcrypt.nim |
04:04:59 | Skrylar | like Lua has succeeded at |
04:05:00 | * | carum quit (Remote host closed the connection) |
04:05:11 | ruzu | c++/java/c# interpretation of oop is terrible to start with >:] |
04:05:28 | runvnc__ | whats going into redis is this "$2a$10$BXArDtF9j/nr08ph2BSkdO9OBLXyEpTlfGqdRahXrM1LVx5/VRodG\x00 " |
04:05:42 | Demos | that 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:11 | runvnc__ | 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:29 | Skrylar | Demos: a large chunk of nimrod OOP is just functions run against PODs with some sugar |
04:06:45 | Demos | yeah true |
04:06:48 | Demos | and that is quite nice |
04:06:48 | ruzu | alan kay is very disappointed. |
04:06:49 | fowl | runvnc__, you probably need to free the cstrings returned |
04:07:12 | Demos | but c++ struct inheratance is pretty portable, sans mangleing (which I think 'rod has as well) |
04:07:18 | Skrylar | Demos: 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:44 | runvnc__ | fowl ok I will try to figure out how to do that, but I don't think it will solve my problem |
04:08:00 | Skrylar | and i've read about people doing low-overhead exceptions in ANSI C on embedded systems (the ol' setjmp trickery) so.. |
04:08:17 | Demos | setjmp is not low overhead |
04:08:18 | fowl | runvnc__, use encrypted = newstringofcap(xx) and pass encrypted.cstring |
04:08:28 | Skrylar | Demos: significantly lower than a SEH stack |
04:08:37 | Demos | the usual c++ exceptions have NO overhead aside form a increase in COLD code |
04:08:38 | runvnc__ | 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:44 | runvnc__ | ok fowl thanks! |
04:09:51 | Skrylar | Demos: 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:50 | fowl | runvnc__, you dont need to pass encrypted.cstring, just the other thing |
04:11:10 | runvnc__ | what module is newstringofcap in |
04:11:18 | runvnc__ | the arg is max length right |
04:11:19 | fowl | system |
04:11:32 | fowl | yea |
04:12:44 | Skrylar | now GCs do present an awkward problem with two separate compilers interacting in the same system |
04:13:14 | fowl | runvnc__, you should set the len after calling blowfish, it probably returns the str len |
04:13:20 | Skrylar | not 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:53 | runvnc__ | ok |
04:14:08 | Skrylar | though 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:13 | runvnc__ | fowl: for some reason I keep getting back an empty string now |
04:21:25 | runvnc__ | that's why I ended up putting a bunch of spaces in encrypted before |
04:21:31 | runvnc__ | which almost worked |
04:21:47 | Demos | Skrylar, was that testing the speed of normal execution or of exception handleing? |
04:22:41 | fowl | runvnc__, ehm try newstring(len) instead |
04:23:08 | runvnc__ | k thanks I will try that |
04:24:48 | Skrylar | Demos: with and without throwing exceptions |
04:25:01 | Demos | but the difference without is really small |
04:25:21 | Demos | well somewhat small |
04:25:27 | Demos | also, what CPU |
04:25:43 | Skrylar | i was mostly concerned with the exceptionally smaller amount of code it used, and that its actually somewhat portable |
04:25:46 | Demos | and it is c++ builder 4 |
04:25:48 | Demos | so yeah |
04:26:07 | Demos | I thought sjlj was /highly/ platform specific |
04:26:37 | Demos | and we do not know if that extra 30k of code is constant or somehow related to program size or call stack depth |
04:27:39 | Demos | I 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:44 | Skrylar | setjmp/longjmp are part of the posix standard at least IIRC, if not one of the C standards |
04:27:59 | Skrylar | and my argument was never that raises were slow |
04:28:22 | runvnc__ | hm if I use newString(60) it seems to work, otherwise has a weird non-ending or cuts off characters |
04:28:22 | Skrylar | my 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:27 | Skrylar | especially because it CAN be done in a modular way |
04:28:31 | runvnc__ | guess I just needed to specify the size precisely. thanks fowl |
04:28:42 | Skrylar | people 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:31 | Demos | "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:32 | Skrylar | i think the one they used in the link was a custom version of it that worked in a specific way |
04:35:38 | Skrylar | nothing 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:41 | Varriount|Mobile | Araq, 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:15 | runvnc__ | do you guys think dom96 will be mad if I copy his css |
05:15:29 | runvnc__ | or maybe I can buy his design cheap |
05:15:41 | runvnc__ | this ipsum thing is great but |
05:16:11 | runvnc__ | well maybe its not that hard to find a blog template |
05:20:54 | Skrylar | couldn't hurt to ask him |
05:21:03 | Skrylar | unless he has a watermark on the bottom from a pre-done template place |
05:21:33 | * | carum joined #nimrod |
05:21:40 | runvnc__ | 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:43 | Skrylar | i 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:26 | Skrylar | Jeskola 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:37 | Skrylar | e.g. "randomly pick from A or B, lock those" |
05:25:16 | runvnc__ | interesting |
05:25:53 | * | carum is now known as caram |
05:25:57 | Skrylar | you 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:17 | Skrylar | i 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:32 | Skrylar | Yay 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:33 | Araq | HI 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:32 | BitPuffin | Araq: wish there was an as pretty way to implement the once macro in objective c |
11:45:39 | BitPuffin | I may have just found the source of hell |
11:45:57 | Araq | use nimrod instead of objective C |
11:47:42 | BitPuffin | yeah and bind cocoa as I go sounds like great fun |
11:47:56 | BitPuffin | does c2nim even support obj-c? |
11:48:12 | BitPuffin | tbh obj-c should probably be easier to bind to than pure C lol |
11:48:44 | Araq | no it's harder to bind to |
11:48:54 | Araq | and c2nim doesn't support @parserhack |
11:48:58 | BitPuffin | how so? |
11:49:40 | BitPuffin | I 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:59 | BitPuffin | but anyways |
11:50:08 | BitPuffin | you can't really use objective-c without xcode so |
11:50:14 | BitPuffin | I mean you can |
11:50:16 | BitPuffin | if 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:40 | Araq | hi rejuvyesh welcome |
13:05:56 | rejuvyesh | Hello Araq, thanks! |
13:06:12 | rejuvyesh | I was just checkin Nimrod out. |
13:11:27 | * | askatasuna quit (Quit: WeeChat 0.4.2) |
13:11:56 | Araq | feel free to ask questions. The only thing that is not allowed here to criticize c2nim ;-) |
13:12:35 | dom96 | hello |
13:12:42 | * | OrionPK quit (Remote host closed the connection) |
13:12:56 | * | OrionPK joined #nimrod |
13:16:41 | Araq | hey dom96 |
13:16:49 | Araq | asyncio ready for 0.9.4? |
13:16:51 | dom96 | hi Araq |
13:16:57 | dom96 | not quite |
13:17:14 | Araq | you your asyncio test is flipping, right? |
13:17:32 | Araq | someteimes it works sometimes it doesn't |
13:17:40 | dom96 | ehh, no>? |
13:19:44 | Araq | tests/async/C/tasyncawait.nim (reSuccess -> reExitcodesDiffer) |
13:20:09 | dom96 | What platform is that? |
13:20:18 | dom96 | Likely because I am switching OS' |
13:20:26 | dom96 | and making adjustments which break one OS but fix the other |
13:21:33 | Araq | linux-x86 |
13:21:48 | Araq | but it happens on others too, I think |
13:29:31 | nequitans_ | 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:53 | clueless | 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:47 | dom96 | clueless: Are you sure you added it to $PATH correctly? |
13:51:23 | EXetoC | make sure that it has been set in the current context |
13:51:27 | clueless | I followed a guide and 'echo $PATH' showed the directory |
13:51:44 | clueless | But I'm pretty new to terminal commands |
13:51:51 | dom96 | What does 'which nimrod' say? |
13:52:10 | clueless | Just displays the prompt agian |
13:52:13 | clueless | again* |
13:52:48 | EXetoC | is it included in the same terminal that 'nimrod' is executed in? |
13:53:06 | dom96 | Are you sure a Nimrod binary exists inside the directory that you added to your PATH? |
13:55:53 | clueless | I think I have path pointed to the binary itself, should I just point it to bin? |
13:56:26 | EXetoC | yes |
13:56:46 | clueless | Okay, thanks! I'll try that |
13:59:28 | clueless | So 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:11 | clueless | Actually 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:40 | rejuvyesh | Hi, 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:56 | dom96 | rejuvyesh: You need the latest Nimrod compiler from github, 0.9.2 is too old for babel. |
14:58:15 | rejuvyesh | oh, 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:33 | rejuvyesh | So I downloaded nimrod from nimbuild. I just need to copy the files to my path? |
15:15:00 | rejuvyesh | If yes, where would the config directory go? |
15:17:40 | * | Endy joined #nimrod |
15:18:22 | Skrylar | rejuvyesh: i found it far less buggy if you just add nimrod to your path instead of trying to move it |
15:18:40 | rejuvyesh | oh, 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:47 | some | hi |
15:36:55 | dom96 | hello some |
15:37:11 | some | as a utter newbie im a bit struggling heh |
15:37:38 | some | does the object system of nimrod honour Liskov sub principle? |
15:39:53 | * | aftersha_ joined #nimrod |
15:40:03 | dom96 | some: I think so. |
15:41:59 | * | Demos quit (Ping timeout: 240 seconds) |
15:48:04 | some | ok 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:17 | Demos | some 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:33 | Mat3 | hi all |
20:20:55 | Araq | hi |
20:21:04 | Mat3 | hi Araq |
20:22:17 | Araq | uh oh ... |
20:24:27 | Mat3 | I get some more documentation about GPU programming, very interesting |
20:24:35 | fowl | Araq, this is a showstopper for me https://github.com/Araq/Nimrod/issues/993 |
20:25:48 | Araq | fowl: yeah I imagined, working on it |
20:26:11 | Araq | Mat3: GPU programming rules ;-) |
20:26:55 | Araq | all the bullshit programming is not even possible on a GPU |
20:28:31 | Mat3 | it is like programming a VLIW DSP with SIMD ISA at assembler level |
20:28:38 | * | nolan_d left #nimrod (#nimrod) |
20:29:13 | Demos | Araq: Direct3D has OOP with virtual dispatch and everything |
20:29:25 | Demos | well sorta, that is the interface |
20:29:38 | * | flaviu joined #nimrod |
20:29:48 | Araq | Demos: openCL has no function pointers or any kind of dynamic binding and no recursion |
20:29:54 | Araq | --> call graph is a static tree |
20:30:04 | Araq | --> compiler knows *everything* |
20:30:39 | Araq | oh it also no malloc/free ... ;-) |
20:31:13 | Demos | Yeah but you need to allocate memory for stuff, you just do it before running the program |
20:32:13 | Demos | I 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:52 | Mat3 | Araq: 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:26 | flaviu | Couldn't the `when` keyword be replaced with a template? |
20:35:06 | fowl | flaviu, when doesnt do anything yet |
20:35:07 | Mat3 | anyhow; OpenCL is quite restricted |
20:36:04 | Araq | flaviu: what do you mean? |
20:36:25 | * | Demos quit (Ping timeout: 240 seconds) |
20:36:29 | * | io2 joined #nimrod |
20:36:37 | Mat3 | the main bottleneck is access to main memory however |
20:38:04 | flaviu | When could be implemented as something like `template when(expr: bool,body:stmt):stmt{.immediate.} = if expr: body` |
20:38:05 | Araq | Mat3: maybe but for all benchmarks that I looked at the GPU wins over the CPU |
20:38:26 | Araq | flaviu: and now you know why that's not possible |
20:38:36 | Araq | you need a builtin and 'if' doesn't cut it |
20:38:53 | Araq | the scoping rules for 'if' don |
20:38:57 | Araq | *don't fit |
20:39:14 | Araq | plus it doesn't guarantee compile time evaluation of the condition |
20:41:06 | fowl | ah '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:45 | flaviu | Araq: My bad. I checked the scope rules for template, but forgot about if. |
20:48:15 | Araq | hmm I should really review zahary's changes |
20:48:29 | Araq | the compiler now knows about skClosureIterator |
20:48:35 | Araq | but I don't |
20:49:28 | Araq | or maybe it was me who added that |
20:49:36 | Araq | hmm |
20:57:11 | Araq | fowl: in your 2nd example the 'inject' is redundant |
20:57:37 | Araq | if a declaration name is passed to a template it is implicitly 'inject'ed |
20:57:55 | Araq | because everything else makes no sense |
20:59:13 | fowl | whats declaration name? |
20:59:47 | Araq | well what you do, you pass in an expr 'foo' that is used in a declaration context 'let foo = ...' |
21:00:07 | fowl | that doesnt sound hygenic lol |
21:00:34 | Araq | why would pass it via a template parameter if not to expose it? |
21:00:46 | * | Endy joined #nimrod |
21:01:52 | fowl | idk |
21:05:55 | * | Demos joined #nimrod |
21:07:07 | * | brson quit (Ping timeout: 264 seconds) |
21:07:46 | Matthias247 | Mat3: die raspberry pi has actually a quite weird SoC |
21:17:30 | Mat3 | that's true |
21:20:19 | * | OrionPK quit (Ping timeout: 264 seconds) |
21:20:33 | Mat3 | Araq: take a look: http://docs.julialang.org/en/release-0.2/manual/parallel-computing/ |
21:21:40 | Araq | Mat3: looks exactly what I planned for 0.9.6 |
21:21:50 | Araq | *like what |
21:22:58 | Mat3 | seem to work quite well |
21:24:03 | Mat3 | there metaprogramming approach is also somewhat similar: http://docs.julialang.org/en/release-0.2/manual/metaprogramming/ |
21:24:19 | * | brson joined #nimrod |
21:30:41 | Araq | correction: I think it works completely different but the APIs are comparable |
21:31:02 | NimBot | Araq/Nimrod devel 8ffd4cc Araq [+1 ±2 -0]: fixes #993 |
21:31:09 | Araq | fowl: here you go |
21:31:31 | fowl | Araq, ty!! |
21:32:16 | * | io2 quit (Read error: Connection reset by peer) |
21:41:08 | fowl | nnkOpenSymChoice new symbol type |
21:43:06 | zielmicha | type IFoo = generic x |
21:43:06 | zielmicha | let i = foo(x) |
21:43:14 | zielmicha | Should this fail? |
21:43:30 | zielmicha | (because it does "a.nim(3, 6) Error: internal error: transformOuter") |
21:44:46 | Araq | internal error is a bug |
21:45:51 | * | io2 joined #nimrod |
21:46:15 | flaviu | Has the Dr. Dobs article been posted to reddit and hnews? |
21:47:15 | Araq | flaviu: 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:01 | Mat3 | ciao |
21:56:05 | * | Mat3 quit (Quit: Verlassend) |
21:57:56 | * | CARAM quit (Remote host closed the connection) |
21:58:04 | Araq | good night |
21:58:16 | awestroke | flaviu: link pls |
21:58:25 | flaviu | awestroke: http://www.drdobbs.com/open-source/nimrod-a-new-systems-programming-languag/240165321?pgno=1 |
22:05:44 | awestroke | what's the difference between the proc square and the template square in that article? |
22:05:52 | awestroke | what does template do differently |
22:06:37 | * | DAddYE_ joined #nimrod |
22:07:06 | flaviu | awestroke: I'm not clear on what you're asking. Are you asking the difference between procs and templates? |
22:08:01 | awestroke | flaviu: 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:37 | flaviu | Templates 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:38 | flaviu | In 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:38 | flaviu | Templates do not deal in terms of values, they deal with expressions |
22:14:17 | awestroke | flaviu: what's the benefit of making it into a template, as in the article, and doing "let y = x \n x * x" |
22:14:46 | flaviu | No difference at all, I think that was the point they were trying to make |
22:15:27 | awestroke | flaviu: alright, but what would have been the difference without the "let y = x" in the template version? |
22:16:44 | flaviu | lets say that we called the square template as `square(doExpensiveIOForInt())`. Without the `let y = x`, it would be `doExpensiveIOForInt()*doExpensiveIOForInt()` |
22:17:09 | awestroke | aaaah |
22:17:18 | awestroke | thanks |
22:17:26 | flaviu | Sure, 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:41 | awestroke | why is nimrod case insensitive? |
22:30:14 | * | nolan_d joined #nimrod |
22:30:46 | flaviu | To allow for people to use code formatting styles. Very controversial, http://forum.nimrod-lang.org/t/191 |
22:31:02 | flaviu | *different code formatting |
22:38:10 | awestroke | so the language will become case sensitive soon? |
22:38:29 | awestroke | or down the line? |
22:38:54 | * | skyfex joined #nimrod |
22:40:16 | dom96 | awestroke: 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:43 | dom96 | Everybody answer Nimrod: https://docs.google.com/forms/d/1fKVsAFT3nRVvlcJ74p0ZI2uqwDq_qtNvxx8ne6LTI9E/viewform |
22:44:41 | * | DAddYE joined #nimrod |
22:45:50 | skyfex | What's the best way to go from array[0..255, char] to string |
22:45:54 | skyfex | ? |
22:48:24 | dom96 | cast to cstring perhaps |
22:48:27 | * | awestroke quit (Ping timeout: 255 seconds) |
22:51:43 | fowl | skyfex, $ arr |
22:52:34 | skyfex | fowl: Thanks, that worked! |
22:55:11 | * | q66 quit (Ping timeout: 255 seconds) |
22:57:45 | flaviu | hash*(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:35 | nolan_d | Is 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:12 | nolan_d | Looking at the docs, it seems I install packages globally. |
23:19:43 | flaviu | Is there a platform independent way to transform a value into an array of bytes? |
23:19:47 | nolan_d | Something 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:19 | dom96 | hello nolan_d |
23:23:01 | nolan_d | Hello. |
23:23:09 | dom96 | nolan_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:47 | nolan_d | OK, 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:05 | dom96 | You 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:00 | dom96 | Packages can be installed in two ways: as a dependency when installing (or building) a different package or when installing it manually. |
23:25:38 | nolan_d | Ah, OK. |
23:28:29 | nolan_d | Ah, guess the reason I thought that is the README.md file in the repository, which doesn't mention project-specific installation. |
23:28:46 | flaviu | Is 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:50 | EXetoC | most objects are zero-initialized by default |
23:29:50 | * | Demos quit (Ping timeout: 255 seconds) |
23:30:42 | dom96 | nolan_d: Have you read https://github.com/nimrod-code/babel/blob/master/developers.markdown ? |
23:31:17 | dom96 | That document goes a bit more in depth into how babel works. |
23:31:25 | dom96 | The 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:49 | nolan_d | Ah, 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:57 | flaviu | Is anyone working on a better hash function in the stdlib, like MurmurHash3? |
23:34:14 | nolan_d | Maybe 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:28 | nolan_d | So anyhow, guess I read too strictly. :) |
23:36:21 | flaviu | nolan_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:42 | nolan_d | Fair 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:43 | dom96 | hehe, you certainly don't need to submit it to the package repo |
23:38:05 | dom96 | In 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:16 | dom96 | well it's kind of mentioned in the readme |
23:39:29 | dom96 | In any case, PRs for better docs are always welcome ;) |
23:40:37 | * | grumio2_ joined #nimrod |
23:41:06 | dom96 | hello grumio2_ |
23:41:36 | * | skyfex_ joined #nimrod |
23:43:33 | * | CARAM quit (Remote host closed the connection) |
23:44:04 | nolan_d | Cool. |
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:15 | grumio2_ | 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:48 | dom96 | great. Glad you got it sorted. Welcome to #nimrod :) |
23:52:55 | grumio2_ | Thanks, dom96 |
23:53:01 | * | CARAM quit (Remote host closed the connection) |
23:54:43 | grumio2_ | Just started using nimrod yesterday. Like tinkering with new languages. First project will be a gridworld sim.. |
23:58:39 | dom96 | Awesome. |