00:00:01 | Araq | # "emit first or next parameter" |
00:00:31 | Araq | so we get things like #.foo<>() |
00:03:55 | flaviu | Ok, looks good. |
00:04:43 | Araq | well the '.' is special too as Nim is smart and sometimes uses '->' instead of '.' |
00:07:55 | * | sillesta quit (Ping timeout: 256 seconds) |
00:08:04 | * | Boscop_ joined #nim |
00:08:41 | keyle | Araq: where is the source of what you're referring to? Would love to take a look for learning purposes |
00:09:02 | Araq | keyle: just wait for my commit |
00:09:20 | * | flan3002 quit (Ping timeout: 264 seconds) |
00:09:20 | * | flyx quit (Ping timeout: 264 seconds) |
00:09:21 | * | wan quit (Ping timeout: 264 seconds) |
00:09:22 | * | wtw quit (Ping timeout: 264 seconds) |
00:09:22 | * | ldlework quit (Ping timeout: 264 seconds) |
00:09:22 | * | flyx joined #nim |
00:10:20 | * | flan3002 joined #nim |
00:10:53 | * | Boscop quit (Ping timeout: 240 seconds) |
00:12:20 | * | ldlework joined #nim |
00:12:23 | * | wan joined #nim |
00:12:51 | * | wtw joined #nim |
00:16:47 | * | brson quit (Quit: leaving) |
00:17:07 | keyle | Can someone explain in layman's terms why gcc compiles to an older nim.exe than then requires cooking with Koch to be up to date? |
00:19:46 | * | endou______ joined #nim |
00:20:34 | * | Boscop__ joined #nim |
00:21:43 | * | Trustable quit (Remote host closed the connection) |
00:24:02 | * | Boscop_ quit (Ping timeout: 245 seconds) |
00:26:43 | dts|pokeball | just out of curiosity, how come nim-lang.org doesnt have a favicon for the site? |
00:28:57 | keyle | it does <link rel="shortcut icon" href="assets/images/favicon.ico"> |
00:29:28 | * | Boscop_ joined #nim |
00:33:11 | * | Boscop__ quit (Ping timeout: 252 seconds) |
00:35:12 | * | CARAM__ joined #nim |
00:35:50 | dts|pokeball | weird... chrome doesnt show one |
00:36:10 | flaviu | ekarlso-: ping |
00:36:25 | flaviu | I have the header working, but for some reason I can't get consistent results. |
00:36:58 | reactormonk | Is casting to int the correct way to do pointer arithmetics? |
00:37:43 | reactormonk | or are pointers unsigned... |
00:40:05 | keyle | dts|pokeball: does here, maybe try clean cache |
00:40:13 | keyle | or try incognito mode for testing |
00:40:18 | dts|pokeball | sure |
00:40:27 | Araq | reactormonk: nobody knows but I usually use -% and it works |
00:43:56 | Mat4 | ciao |
00:44:00 | * | Mat4 left #nim (#nim) |
00:48:43 | * | Boscop__ joined #nim |
00:50:15 | flaviu | Does https://gist.github.com/863a6c7947e51d1767ec return inconsistent results for anyone else? |
00:52:46 | * | Boscop_ quit (Ping timeout: 255 seconds) |
00:56:32 | * | Guest81214 quit (Ping timeout: 245 seconds) |
00:59:10 | keyle | Araq: what's broken about switch? |
00:59:34 | Araq | keyle: the syntax. |
01:00:00 | Araq | 'break' everywhere or else you get nice fallthrough |
01:04:51 | keyle | ah I see |
01:12:58 | * | z1y joined #nim |
01:19:19 | * | VinceAddons quit (Read error: Connection reset by peer) |
01:24:05 | reactormonk | How do I convert an unsigned integer to a signed one? |
01:24:22 | Araq | int(x) |
01:24:53 | reactormonk | mail is a cstring - is the operation let mailptr = cast[uint](ptr mail) correct? |
01:25:19 | Araq | that's not even correct syntax |
01:25:29 | reactormonk | duh |
01:25:32 | Araq | remove the 'ptr' and then it might work |
01:25:35 | reactormonk | Too much SCala I'd say. |
01:26:22 | reactormonk | Seems to compile in the first pass, afterwards I've got some template problems |
01:30:11 | reactormonk | Fixed. \o/ |
01:30:39 | * | Ether-plays-4fun quit (Ping timeout: 264 seconds) |
01:31:07 | * | Ether-plays-4fun joined #nim |
01:32:56 | * | z1y left #nim (#nim) |
01:33:48 | * | z1y joined #nim |
01:33:51 | * | saml_ joined #nim |
01:37:09 | * | gmpreussner_ joined #nim |
01:41:02 | * | z1y quit (Ping timeout: 244 seconds) |
01:59:42 | reactormonk | Araq, is {.compile.} a toplevel pragma or can I use it in the scope of a proc? |
01:59:54 | Araq | top level |
02:01:07 | reactormonk | Can I combine {.exportc.} and {.closure.}? |
02:01:32 | reactormonk | I'm trying to figure out how to pass the seq that the functions exported to C modify |
02:02:12 | Araq | well nobody hinders you from using .exportc with .closure but it makes no sense I think |
02:02:58 | reactormonk | I could always use a global var, but the thought disgusts me |
02:04:12 | reactormonk | I might need to write some more extended C code. |
02:04:34 | Araq | you need to write *less* C code |
02:04:41 | Araq | you should write Nim instead |
02:04:45 | reactormonk | ragel produces C code. |
02:05:02 | Araq | fix ragel |
02:05:27 | gmpreussner_ | :) |
02:05:30 | gmpreussner_ | howdy all |
02:06:05 | ldlework | sup |
02:08:29 | * | z1y joined #nim |
02:12:51 | reactormonk | Araq, ragel is GPL. The output is not licensed at all. Might that produce problems? |
02:12:59 | Araq | no. |
02:13:54 | * | z1y quit (Remote host closed the connection) |
02:14:58 | * | z1y joined #nim |
02:17:29 | reactormonk | Araq, the ruby codegen is 4.3k LoC. No thanks. |
02:18:23 | Araq | but you don't need to write the backend in C with strcat. you can use Nim instead. :-) |
02:18:31 | * | no_name joined #nim |
02:18:51 | EXetoC | yeah why C |
02:18:55 | reactormonk | It's cpp |
02:19:27 | reactormonk | let's see how well c2nim works on it |
02:19:50 | * | JinShil quit (Quit: Konversation terminated!) |
02:20:31 | reactormonk | not too well. |
02:23:32 | Araq | good night |
02:24:55 | * | jefus_ joined #nim |
02:26:22 | * | jefus quit (Ping timeout: 255 seconds) |
02:29:04 | * | darkf joined #nim |
02:32:18 | * | reactormonk quit (Quit: Leaving) |
02:41:09 | * | JinShil joined #nim |
02:41:29 | * | Demon_Fox quit (Ping timeout: 256 seconds) |
02:41:54 | * | Demon_Fox joined #nim |
02:46:44 | * | Amrykid quit (Changing host) |
02:46:44 | * | Amrykid joined #nim |
02:48:15 | * | iivvoo quit (Ping timeout: 265 seconds) |
02:48:16 | * | EastByte_ quit (Ping timeout: 265 seconds) |
02:48:32 | * | EastByte_ joined #nim |
02:48:45 | * | dymk quit (Ping timeout: 265 seconds) |
02:50:22 | * | dymk joined #nim |
02:53:48 | * | iivvoo joined #nim |
02:56:21 | * | hguux_ quit (Read error: Connection reset by peer) |
02:58:00 | * | hguux_ joined #nim |
03:02:19 | * | BitPuffin quit (Ping timeout: 245 seconds) |
03:13:40 | * | Sergio965 quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
03:24:23 | * | TylerE quit (Ping timeout: 244 seconds) |
03:26:19 | * | TylerE joined #nim |
03:33:09 | * | iivvoo quit (Ping timeout: 244 seconds) |
03:33:30 | dom96 | https://news.ycombinator.com/item?id=8883791 |
03:34:43 | * | nande quit (Remote host closed the connection) |
03:36:35 | flaviu | dom96: It'd go faster if he pulled the try-catch out of the at hot loop. |
03:36:50 | * | Boscop__ is now known as Boscop |
03:37:17 | * | endou______ quit (Ping timeout: 244 seconds) |
03:37:39 | * | Boscop quit (Changing host) |
03:37:40 | * | Boscop joined #nim |
03:38:24 | dom96 | It seems he built the Nim version with --opt:speed |
03:38:26 | dom96 | and no -d:release |
03:38:32 | onionhammer | dom96 spammers |
03:39:02 | dom96 | onionhammer: Yeah, I need to do something about that it seems. |
03:39:15 | onionhammer | :\ |
03:39:21 | onionhammer | that captcha isnt working I gues |
03:39:51 | * | endou______ joined #nim |
03:40:08 | dom96 | onionhammer: it is, that user is doing it manually. |
03:40:29 | onionhammer | seriously...? |
03:40:51 | * | iivvoo joined #nim |
03:41:46 | flaviu | lol, he can't be bothered to read the readme. |
03:42:05 | flaviu | [url=http://spamspam.com]blah blah[/url] |
03:42:33 | dom96 | onionhammer: I think so. |
03:43:02 | onionhammer | i bet it's a bot.. |
03:45:02 | * | z1y1 joined #nim |
03:46:23 | keyle | if it's a bot you'd get hundreds of spam |
03:46:53 | * | z1y quit (Ping timeout: 240 seconds) |
03:46:58 | flaviu | Why not both? Maybe it's a human writing a bot. |
03:49:10 | * | dymk quit (Ping timeout: 244 seconds) |
03:49:28 | * | dymk joined #nim |
03:49:41 | dom96 | I deleted that user. |
03:49:50 | dom96 | And removed his posts. |
03:50:23 | keyle | good point, often they run tests over a few days to see how long the op gets them removed |
03:50:28 | keyle | then they unleash the scripts |
03:51:36 | flaviu | dom96: Have you banned the IP? |
03:51:48 | dom96 | no |
03:52:20 | flaviu | You should probably also ban tor and public proxies from posting too. |
03:53:54 | * | z1y1 quit (Remote host closed the connection) |
03:58:41 | * | z1y joined #nim |
04:03:11 | keyle | Nim has crazy speed, not sure why that guy recommends picking Rust for performance |
04:03:23 | keyle | Besides, developer performance ways more than anything... |
04:04:51 | onionhammer | who? |
04:06:39 | * | saml_ quit (Ping timeout: 264 seconds) |
04:06:51 | * | nande joined #nim |
04:08:17 | * | iivvoo quit (Ping timeout: 244 seconds) |
04:10:22 | * | iivvoo joined #nim |
04:11:19 | * | brson joined #nim |
04:20:41 | * | Boscop_ joined #nim |
04:22:12 | dom96 | keyle: Likely because he compiled with --opt:speed not -d:release |
04:24:33 | * | Boscop quit (Ping timeout: 252 seconds) |
04:30:30 | * | iivvoo quit (Ping timeout: 244 seconds) |
04:32:15 | keyle | onionhammer: was referring to https://news.ycombinator.com/item?id=8883791 |
04:33:22 | * | iivvoo joined #nim |
04:37:06 | * | ARCADIVS joined #nim |
04:40:58 | onionhammer | ah |
04:41:25 | onionhammer | has anyone done the bench w/ -d:release? |
04:49:35 | keyle | no but it'd be sensible to reproduce his claims |
04:57:53 | * | iivvoo quit (Ping timeout: 244 seconds) |
05:01:23 | * | iivvoo joined #nim |
05:03:18 | * | keyle quit (Quit: leaving) |
05:12:51 | * | brson quit (Quit: leaving) |
05:15:01 | * | z1y quit (Quit: Leaving.) |
05:37:38 | ldlework | plz plz plz plz plz plz |
05:37:45 | ldlework | plllllllz, forward type declarations, plz |
05:37:50 | ldlework | kthx. |
05:43:51 | * | gmpreussner__ joined #nim |
05:44:04 | * | gmpreussner_ quit (Ping timeout: 244 seconds) |
05:47:22 | * | BlaXpirit joined #nim |
05:48:22 | * | z1y joined #nim |
05:48:32 | * | z1y quit (Remote host closed the connection) |
05:49:27 | * | z1y joined #nim |
05:56:36 | ldlework | I wonder if anyone can improve the times here: http://arthurtw.github.io/2015/01/12/quick-comparison-nim-vs-rust.html |
05:59:16 | * | BitPuffin joined #nim |
06:03:43 | * | BitPuffin quit (Ping timeout: 255 seconds) |
06:10:19 | fowl | ldlework, yes |
06:12:02 | fowl | write it imperatively |
06:12:23 | ldlework | not sure what that means to you |
06:17:50 | gmpreussner__ | Rust syntax looks like crap. try to improve that :) |
06:18:15 | ldlework | sure, but I am interested in the performance |
06:18:27 | gmpreussner__ | they're probably more advanced wrt optimization |
06:18:27 | ldlework | I've seen benchmarks beating rust, but they were simplier benchmarks |
06:18:46 | fowl | well theres superfluous allocation here |
06:18:49 | gmpreussner__ | i wouldn't worry about it too much. if you're really interested, you should take a look at where exactly the time is spent. |
06:21:02 | gmpreussner__ | it might help to look at the C code too |
06:21:25 | gmpreussner__ | in the game of life test, unrolling some of the inner loops may work wonders |
06:22:05 | ldlework | sure but that's no good, who wants to unroll their own loops |
06:22:20 | fowl | anywhere you see toSeq can be optimized away |
06:22:36 | ldlework | I only count that once |
06:23:02 | fowl | theres a line in the life example that creates 2 seqs to get a longest-line count |
06:23:18 | ldlework | fowl: show him up! |
06:23:36 | ldlework | there's always the guy who comes by and optimizes the original benchmarks |
06:23:41 | Triplefox | in that kind of "match over a 2d grid" situation i like to assume a 1d array so that iteration can be all in one go...however that's a basic data design thing |
06:24:06 | ldlework | Sure but the Rust does the same thing |
06:24:15 | gmpreussner__ | note that the next() loop is pretty close to Rust. most of the extra cost goes into print() |
06:24:16 | ldlework | I think fowl is identifying the right kind of changes |
06:24:25 | ldlework | the kind that come with unfamiliarity with the language |
06:24:29 | ldlework | not algorithm optimizations |
06:24:48 | ldlework | both implementations seem to do roughly the same thing |
06:24:49 | fowl | yes this is written by someone who loves one-liners |
06:24:50 | Triplefox | well, i'm not that familiar with nim :p |
06:24:54 | ldlework | though I can't read Rust very well |
06:25:02 | ldlework | Triplefox: :) |
06:25:05 | Triplefox | i didn't even know the syntax "for y in 0.. <iy:" existed |
06:25:12 | gmpreussner__ | i didn't either |
06:25:16 | BlaXpirit | i didnt |
06:25:27 | gmpreussner__ | i figured it was a formatting error on his blog |
06:25:27 | fowl | `<`(n: int) is just n-1 |
06:25:38 | gmpreussner__ | :) |
06:25:46 | BlaXpirit | waaaat |
06:25:51 | BlaXpirit | hy |
06:25:52 | BlaXpirit | why |
06:25:56 | Triplefox | does it map to high() |
06:26:09 | fowl | for the iterator 0 .. <10 goes from 0 to 9 |
06:26:13 | Triplefox | cause i was using high() |
06:26:45 | * | iivvoo quit (Ping timeout: 244 seconds) |
06:26:58 | ldlework | Triplefox: wait did you write that article? |
06:27:21 | Triplefox | no |
06:27:23 | ldlework | oh |
06:27:26 | * | ldlework rubs eyes |
06:27:39 | ldlework | Also, I wonder if we would ever consider pattern matching |
06:27:57 | ldlework | it is admittedly nice |
06:28:02 | BlaXpirit | meh |
06:28:14 | BlaXpirit | it's only nice when you have a lot of things like Option and whatnot |
06:28:20 | ldlework | we already have do syntax |
06:28:36 | ldlework | mixing that with pattern matching results is a very readable structure is all |
06:28:36 | BlaXpirit | in nim it's needed very rarely |
06:28:54 | ldlework | I don't see why Nim would affect how often you want to match |
06:29:08 | BlaXpirit | well, exactly, it doesn't |
06:29:19 | BlaXpirit | Rust, however, almost enforces it |
06:29:21 | ldlework | right, so its nice to have pattern matching + do syntax |
06:29:34 | ldlework | because it represents the underlying semantics, visually, quite nicely |
06:29:52 | ldlework | one of the first things that made me go "oooh" to Rust's documentation when I first read them |
06:31:02 | ldlework | BlaXpirit: rust enforces it, only in so much that other languages force you to use switch |
06:31:20 | BlaXpirit | ... |
06:31:24 | ldlework | BlaXpirit: except that with pattern matching you can represent certain match semantics much more sucinctly |
06:31:52 | fowl | dont you have to pattern match to extract information from enumerations |
06:32:37 | * | keyle joined #nim |
06:33:11 | fowl | how could you get the value held by Option<T> without it? |
06:33:36 | Triplefox | hmm oh i get it now, i can use high() on a seq or array, but i can use < for an integer variable |
06:34:01 | BlaXpirit | Triplefox, well, you can use < on high as well :p but it's kinda pointless |
06:34:18 | BlaXpirit | <len is a bit more useful |
06:34:20 | ldlework | fowl: well that doesn't seem bad really |
06:34:22 | fowl | high is just len-1 |
06:34:26 | * | iivvoo joined #nim |
06:34:28 | fowl | so you could use < on len() |
06:34:33 | ldlework | I want to add a patch for first and last |
06:34:35 | BlaXpirit | well not really... arrays... |
06:35:07 | fowl | nobody uses that feature |
06:35:13 | BlaXpirit | low..high is a nice idiom, because 0..<len is not always reliable |
06:36:15 | * | BlaXpirit wonders if access to seq.low is optimized to a constant |
06:36:24 | BlaXpirit | probably is, just need to look at C code really |
06:38:08 | BlaXpirit | aand it is |
06:39:20 | Triplefox | i appreciate having options for dealing with the off-by-one iteration problem |
06:39:40 | BlaXpirit | which reminds me |
06:40:33 | BlaXpirit | <s.len compiles to subInt(s_89021->Sup.len, 1) :( |
06:41:05 | ldlework | how could it compile a sequence's length to a const? |
06:41:09 | BlaXpirit | what did i expect though |
06:41:10 | BlaXpirit | yeah |
06:41:12 | BlaXpirit | lol |
06:41:18 | ldlework | oh okay, you were confused |
06:41:19 | * | gmpreussner___ joined #nim |
06:41:24 | ldlework | I thought *I* was super confused |
06:41:25 | * | gmpreussner__ quit (Ping timeout: 244 seconds) |
06:41:29 | BlaXpirit | <5 is 4 yay |
06:41:51 | Triplefox | it should be able to optimize an array that isn't 0..0 |
06:41:58 | ldlework | yeah |
06:42:14 | BlaXpirit | well theoretically it could use <len and actually transform the loop to use < instead of <= |
06:42:15 | BlaXpirit | but yeah |
06:44:18 | * | skyfex_ joined #nim |
06:44:22 | ekarlso- | any of you doign webdev with nim ? |
06:44:55 | ldlework | ekarlso-: seems light a nightmare right now |
06:45:20 | ekarlso- | ldlework: howso ? :p |
06:45:24 | BlaXpirit | i really think it's never going to be anywhere near the best tool for the task |
06:45:42 | BlaXpirit | I'm totally happy with Python in many applications, and I'm gonna keep it that way |
06:45:50 | ldlework | ekarlso-: comapred to the nice ecoystem in Python? |
06:46:03 | ekarlso- | ldlework: by all means :) |
06:46:08 | ekarlso- | yeah, I use mostly python too :| |
06:46:16 | ekarlso- | or dropwizard for that matteR*java* |
06:46:18 | ekarlso- | :D |
06:46:31 | ldlework | I mean I probably wont even consider it until there is something like jinja2 |
06:46:33 | fowl | i decided a long time ago that i dont do web work. now i laugh when my friends complain about working with rails and javascript. suckers. |
06:46:57 | ekarlso- | ldlework: though the whole packages program is written in nim |
06:47:00 | ekarlso- | about 600 ish lines atm |
06:47:02 | ldlework | yeah I'm glad I've shifted away from it too |
06:47:36 | ldlework | ekarlso-: I think writing api's in Nim might eventually be workable |
06:47:54 | ldlework | but like actual web-applications? Its def not there right now. |
06:48:11 | Triplefox | for single components that have to scale vertically nim might be an easy sell to python coders...for the whole stack, yeah, there's other things to worry about |
06:48:35 | ekarlso- | some people got me to code it in nim :p |
06:48:36 | keyle | if jester works as advertise, nim should be a fine web server |
06:48:36 | ldlework | I mean, I'm a Python professional, I'm constantly resisting the urge to reach for Nim in the workplace |
06:48:38 | ldlework | So I dunno |
06:48:44 | ldlework | I mean, I basically do all my system scripting in Nim now |
06:48:51 | ekarlso- | ldlework: +1, I use python for openstack .. |
06:49:13 | ldlework | If Nim had a Fabric equivalent, it'd be curtains for Python on that front |
06:49:59 | keyle | as a python professional, can't you just write your python bottlenecks in nim and keep writing python? |
06:50:10 | keyle | so you get stable + fast |
06:50:55 | Triplefox | nim can also get a more straightforward story for deploying than pretty much any scripting runtime...make static binary, ship it |
06:51:43 | ekarlso- | anyone have suggestions on how I can get JWT into nim ? |
06:52:16 | keyle | java web toolkit ? |
06:52:32 | ekarlso- | json web token |
06:53:28 | * | AMorpork is now known as ZzZMorpork |
06:58:06 | ekarlso- | would be nice to have for tokens :| |
07:01:59 | * | VinceAddons joined #nim |
07:07:21 | * | atomic-hedgehog quit (Ping timeout: 252 seconds) |
07:08:26 | ekarlso- | what's the equiv of char* key = "012345678"; in nim ? |
07:09:08 | * | endou______ quit (Read error: Connection reset by peer) |
07:10:12 | Triplefox | uh, look at cstring. i forget if you need to introduce a pointer with addr() or not for that |
07:10:54 | ldlework | keyle: the thing is, I like /writing/ Nim more than I do Python (theoretically). Having the compiler tell me about errors before I actually try it out, is really really nice. |
07:10:57 | * | endou______ joined #nim |
07:11:19 | ldlework | keyle: I'm only slightly less productive in Nim than Python and that's jsut experience and sharp corners in a growing Nim. |
07:11:27 | keyle | I agree. I prefer static types |
07:11:46 | ldlework | performance is a secondary concern, at least for system scripting |
07:11:50 | keyle | coming from python though you have a huge advantage |
07:11:59 | ldlework | keyle: which advantage is that |
07:12:00 | Triplefox | static types are a little annoying because of the ... typing but otherwise a big help |
07:12:04 | keyle | syntax is very similar |
07:12:12 | ldlework | keyle: ah, a bit |
07:12:26 | keyle | unless you do funky stuff in nim |
07:12:52 | keyle | Triplefox: when you come from Java you can really appreciate the terse type defs :> |
07:12:56 | ldlework | its like pascal and python had a baby |
07:13:03 | keyle | haha |
07:13:18 | keyle | I picture this old man and that young girl |
07:13:43 | keyle | I read that python is adding type defs in the future, I'm guessing that's to help performance |
07:14:04 | keyle | not for the pleasure of typing more |
07:15:16 | Triplefox | i tend to get irritated now by functions and methods that aren't annotated at all |
07:15:21 | ldlework | its 'gradual typing' |
07:15:41 | keyle | Triplefox: can you just define the expectation by using prefix? |
07:15:48 | keyle | str_name |
07:16:00 | keyle | int_ae |
07:16:02 | ldlework | but what happens when you don't follow it on accident |
07:16:04 | keyle | int_age |
07:16:13 | Triplefox | it's unreliable, and now your variables are longer |
07:16:14 | ldlework | or you pass a prefixed var to the wrong function |
07:16:19 | keyle | Well you're using a dynamic language, that's to be expected |
07:16:21 | ldlework | the whole point is the compiler is helpful |
07:16:23 | ldlework | it isn't a burden |
07:16:35 | keyle | I agree |
07:16:42 | ldlework | the amount you have to type is nominal compared to running your program over and over with runtime debugging |
07:16:52 | keyle | but I can appreciated both dynamic and staticly typed languages for what they are |
07:17:05 | ldlework | I agree, I mean I came to Python because of its productivity |
07:17:13 | Triplefox | a big benefit of the dynamic structure is that you can write some very dense things, it's not worth throwing that away for faux-typechecks unless the codebase has gotten into serious trouble |
07:17:15 | ldlework | But I wonder if Nim is competitive... |
07:17:19 | keyle | in a large team though, dynamic languages are a pain in the arse and you end up with strict code conventions |
07:17:20 | ldlework | even being statically typed |
07:17:35 | ldlework | The most amazing thing about PYthon |
07:17:39 | ldlework | is the insane abstractions I can create with it |
07:17:51 | ldlework | using the magic of everything being an object |
07:17:52 | keyle | I did Groovy for a while, I can tell you it's nice, but nim is much nicer. |
07:18:02 | keyle | no fn@#$ JVM to start with |
07:18:04 | ldlework | but with Nim's metaprogramming and operator overloading, I can do a lot of the same stuff |
07:18:09 | ldlework | but with type safety :P |
07:18:26 | keyle | nim is like that tiny gun from star trek |
07:18:39 | * | gour joined #nim |
07:18:49 | keyle | doesn't look like it but it's very powerful |
07:18:59 | ldlework | dunno |
07:19:08 | ldlework | Nim looks like the average of mainstream languages |
07:19:20 | ldlework | Its featureset is a good collection of the feature's we've come to expect |
07:19:33 | ldlework | It gives us good implementations of each, and tries to make them work together well (theoretically) |
07:19:44 | ldlework | and then it adds some small improvements |
07:20:27 | ldlework | declarative type-classes, imperative ast macros, disjoint concurrency proofs, a very nice gc |
07:20:54 | ldlework | So when I look at Nim, and see everything I've come to expect from a fully featured general purpose language, it immediately communicates powerful to me. |
07:21:41 | ekarlso- | what type is "pointer" in nim vs ptr ? |
07:21:57 | ldlework | ekarlso-: ptr is a non-gc managed heap reference |
07:22:06 | ldlework | ref is a gc-managed heap reference |
07:22:24 | Triplefox | "pointer" is equivalent to C void* while "ptr ___" is typed |
07:22:34 | ldlework | oh okay |
07:22:35 | keyle | cool I didn't know |
07:22:48 | keyle | <- 7 days of nim |
07:22:50 | ldlework | no idea what a Nim void ptr is |
07:22:56 | ldlework | keyle: welcome |
07:23:04 | ldlework | keyle: what do you think you'll use Nim for? |
07:23:20 | keyle | small stuff |
07:23:33 | keyle | did this already https://github.com/keyle/hastebin/ |
07:23:40 | keyle | for funsies & learning |
07:23:45 | Triplefox | ah, i like hastebin |
07:23:49 | Triplefox | if only because of the name |
07:23:55 | * | joecodes joined #nim |
07:24:58 | keyle | it was a great way to touch http post, json parsing, exec, parseopts... |
07:25:17 | keyle | And no JVM / CLR / crap to have pre-installed |
07:25:47 | Triplefox | i'm going to write a spritesheet packing tool soon and need to figure out my cli parser story soon |
07:26:02 | keyle | I work in a world of bloated monolithic software so, nim is like a fresh orange juice break |
07:26:37 | keyle | I'd love to do a text editor like joe/nano but the terminal support is ehm |
07:26:45 | keyle | not quite portable |
07:26:56 | keyle | ehm I shouldn't say that. |
07:27:08 | keyle | let's just say it'd take a lot more than I'd want to commit to |
07:27:43 | Triplefox | i think someone brought that up the other day...well, full control over terminals seems to be a pain no matter what |
07:28:07 | keyle | yeah Windows particularly |
07:28:15 | Triplefox | maybe one like "ed" or "debug" would be an easier starting point |
07:28:49 | * | nande quit (Remote host closed the connection) |
07:28:53 | keyle | i don't even know how to poll for a shortcut key on windows CMD |
07:29:03 | keyle | might not even be possible or deep down in winapi |
07:29:47 | * | iivvoo quit (Ping timeout: 244 seconds) |
07:30:20 | keyle | also would love to do a _modern_ alpine style email client |
07:31:15 | Triplefox | i liked pine, elm, etc. |
07:31:24 | Triplefox | maybe nostalgia |
07:31:31 | keyle | same here :) |
07:34:29 | ekarlso- | how the crap you create a pointer then ;) |
07:35:55 | Triplefox | .eval var a = [1,2,3]; var p = addr(a[0]); echo(p[]) |
07:35:59 | Mimbus | Triplefox: 1 |
07:36:16 | Triplefox | p is the pointer to index 0 of a |
07:36:23 | Triplefox | then i dereference it with [] |
07:37:26 | * | iivvoo joined #nim |
07:37:53 | ekarlso- | Triplefox: what would be the equiv of char* key = "012345678"; then ? |
07:38:10 | Triplefox | hmm let's try a thing |
07:38:26 | Triplefox | .eval echo(cstring("012345678")) |
07:38:29 | Mimbus | Triplefox: 012345678 |
07:39:08 | Triplefox | yeah, cstring coerces to char* |
07:39:38 | Triplefox | http://nim-lang.org/manual.html#cstring-type |
07:45:10 | ekarlso- | this ssl hmac ptr stuff is driving my head crazy |
07:45:10 | Triplefox | want me to gaze at the api |
07:45:10 | ekarlso- | https://gist.github.com/flaviut/38001b3b71d4c42e414f < flaviu left this for me yesterday ;P |
07:45:36 | Triplefox | oh boy |
07:45:46 | ekarlso- | ;P |
07:46:05 | Triplefox | i wonder what a "d: cstring" is |
07:47:11 | Triplefox | okay http://www.openssl.org/docs/crypto/hmac.html |
07:47:20 | ekarlso- | :) |
07:48:47 | Triplefox | what is EVP_MD |
07:49:06 | * | gmpreussner___ quit (Ping timeout: 244 seconds) |
07:50:18 | ekarlso- | good q .. |
07:50:24 | ekarlso- | I'm fairly fresh on crypto stuff |
07:50:50 | ekarlso- | evp_md can be EVP_sha1(), EVP_ripemd160() etc. |
07:51:01 | Triplefox | there is example code here, this deserves study http://www.openssl.org/docs/crypto/EVP_DigestInit.html |
07:52:18 | Triplefox | it looks like here the pointer "md" is initialized by EVP_get_digestbyname...i.e. we aren't setting an address in our own code |
07:52:54 | Triplefox | likewise mdctx |
07:56:19 | ekarlso- | Triplefox: how we solve that ? sorry but when it comes to pointers etc I really am lost |
07:56:41 | Triplefox | we're calling API functions which allocate memory and return pointers |
07:56:58 | Triplefox | in that example: md = EVP_get_digestbyname(argv[1]); |
07:57:11 | Triplefox | and then: mdctx = EVP_MD_CTX_create(); |
07:57:23 | Triplefox | for HMAC, there are also init functions it looks like |
07:58:18 | Triplefox | the nim bindings don't look complete enough to do all of this yet |
07:58:48 | Triplefox | (or i'm missing something about how bindings work in nim which is entirely possible) |
07:59:30 | ekarlso- | think i'll wait for flaviu to come around ;P |
07:59:36 | Triplefox | probably a good idea |
08:00:49 | Triplefox | grokking nim pointers, also worth it. you'll feel like a Real Systems Programmer |
08:01:36 | ekarlso- | Triplefox: how you mean ? :) |
08:02:22 | Triplefox | cause then you see the relationship between the flat memory layout and all the fancy indirection in data structures |
08:04:02 | ekarlso- | Triplefox: i thought c wrappers was easy ;P |
08:06:29 | Triplefox | when you deal with c you have to deal with low-level memory stuff, nim makes this easy by passing the problem on to you...which is good cause then there's no mismatch |
08:13:55 | * | Demon_Fox quit (Quit: Leaving) |
08:17:43 | ekarlso- | so Triplefox the "d" is the data you're gonna encrypt |
08:19:12 | ekarlso- | or so .. |
08:19:43 | * | HakanD joined #nim |
08:20:08 | ekarlso- | Triplefox: but theb there's the key pointer thing. how the stuffs do you create a pointer. |
08:21:10 | Triplefox | i've said everything that needs to be said on the topic. |
08:22:03 | ekarlso- | fair enough.. |
08:25:39 | * | sdw quit (Read error: Connection reset by peer) |
08:40:06 | * | HakanD quit (Quit: Be back later ...) |
08:40:52 | ekarlso- | Triplefox: how you deref a pointer type then vs a ptr ? |
08:43:01 | Triplefox | .eval var mypointer : pointer; var a = 100; mypointer = addr(a); echo(cast[ptr int](mypointer)[]) |
08:43:04 | Mimbus | Triplefox: 100 |
08:44:04 | Triplefox | the only difference between pointer and ptr is what the compiler thinks they represent, so you cast from one to the other to tell it what to expect |
08:45:20 | * | Sphax joined #nim |
08:45:25 | * | Trustable joined #nim |
08:48:46 | * | Trustable quit (Remote host closed the connection) |
08:49:17 | * | JinShil quit (Quit: Konversation terminated!) |
08:50:54 | * | Trustable joined #nim |
08:54:32 | ekarlso- | Triplefox: but is the pointer type more low level then ptr ? |
08:55:25 | * | z1y left #nim (#nim) |
08:55:32 | Triplefox | it's "less typed". it just says that some kind of memory address is there, but not what it's supposed to mean when it's dereferenced |
08:55:53 | Triplefox | a ptr int means that when i dereference, i am getting an int back from that |
08:56:07 | ekarlso- | cause the compiler knows that it's a int... |
08:56:10 | ekarlso- | ok I get it |
08:56:31 | ekarlso- | and to convert from a "pointer" u need to cast[ptr foo] = somePointer |
08:56:43 | Triplefox | yeah |
09:04:18 | Triplefox | hmm freeimage is complaining it can't import FreeImage_Initialize |
09:08:16 | Triplefox | maybe binding is just out of date |
09:10:32 | * | dymk quit (Ping timeout: 244 seconds) |
09:12:10 | ekarlso- | so, what's csize then ? |
09:12:32 | * | dymk joined #nim |
09:12:36 | * | SplinterOfChaos quit (Ping timeout: 244 seconds) |
09:13:01 | Triplefox | i've never seen it |
09:13:28 | EXetoC | size_t |
09:13:34 | EXetoC | csize* {.importc: "size_t", nodecl.} = int |
09:14:17 | Triplefox | someday i'll have to bother learning how to do my own bindings...i'd like to get the stb libs in there |
09:16:38 | * | gokr joined #nim |
09:21:51 | * | sillesta joined #nim |
09:22:17 | ekarlso- | well Triplefox one step forward -,,- |
09:24:54 | ekarlso- | https://bpaste.net/show/0476a85f4005 < hmac.nim https://bpaste.net/show/ddbf0c39247b < result of nim c -r hmac.nim |
09:25:07 | ekarlso- | does procs need to have a diff name maybe ? |
09:25:31 | * | dymk quit (Ping timeout: 244 seconds) |
09:27:03 | * | dymk joined #nim |
09:29:30 | Triplefox | those errors are new to me |
09:29:34 | Triplefox | i don't know |
09:30:15 | ekarlso- | Triplefox: ok :) |
09:31:07 | * | Jehan_ joined #nim |
09:39:59 | * | dymk quit (Ping timeout: 244 seconds) |
09:44:07 | * | dymk joined #nim |
09:57:51 | EXetoC | why are you emitting includes? isn't that the source of the collision? |
10:01:48 | ekarlso- | EXetoC: tbh I dont know :) it's based off of what flaviu gist'd |
10:05:06 | EXetoC | you're essentially defining your own declarations here. omit those and see what happens |
10:16:55 | ekarlso- | ah ok |
10:21:08 | ekarlso- | EXetoC: you mean the importc stuff ? |
10:23:36 | EXetoC | ekarlso-: the includes |
10:27:18 | ekarlso- | dang EXetoC, that worked! |
10:27:49 | EXetoC | great |
10:27:54 | EXetoC | he probably just tested something |
10:36:46 | * | MajorTennis joined #nim |
10:37:04 | * | MajorTennis quit (Changing host) |
10:37:05 | * | MajorTennis joined #nim |
10:40:57 | * | dymk quit (Ping timeout: 244 seconds) |
10:42:11 | * | dymk joined #nim |
10:42:49 | * | HakanD joined #nim |
10:51:23 | * | JinShil joined #nim |
11:06:59 | * | HakanD quit (Ping timeout: 244 seconds) |
11:07:27 | * | HakanD joined #nim |
11:07:28 | * | lesshaste joined #nim |
11:07:29 | lesshaste | hi all |
11:07:39 | Araq | hi lesshaste welcome |
11:07:48 | lesshaste | hi Araq |
11:17:03 | EXetoC | hola |
11:18:00 | * | gour_ joined #nim |
11:20:56 | * | gour quit (Ping timeout: 244 seconds) |
11:21:09 | * | dumbrun joined #nim |
11:28:42 | * | gour_ is now known as gour |
11:36:08 | flaviu | ekarlso-: oops |
11:36:14 | flaviu | I gisted the wrong file |
11:36:33 | flaviu | https://gist.github.com/3e0b5a52fe9395fcf5c5 |
11:36:35 | * | ARCADIVS quit (Quit: ARCADIVS) |
11:38:30 | * | skyfex_ quit (Ping timeout: 244 seconds) |
11:39:28 | * | yonson joined #nim |
11:40:10 | * | dumbrun quit (Ping timeout: 246 seconds) |
11:40:37 | * | VinceAddons quit (Read error: Connection reset by peer) |
11:41:28 | sillesta | good morning |
11:48:21 | * | dude joined #nim |
11:48:45 | * | dude is now known as Guest41089 |
11:49:18 | * | Guest41089 is now known as someDude |
11:51:02 | * | someDude left #nim (#nim) |
11:51:37 | * | [dude] joined #nim |
11:53:01 | * | edsc joined #nim |
11:53:17 | * | endou______ quit (Ping timeout: 244 seconds) |
11:53:54 | * | endou______ joined #nim |
11:55:50 | [dude] | Hi everybody! |
11:56:06 | Araq | hi [dude] |
11:56:19 | [dude] | quick questions... I was trying to install c2nim through nimble just now... |
11:56:30 | edsc | Hi |
11:56:34 | Araq | yes, it's broken. we know |
11:56:48 | Araq | [dude]: it's hard to fix unfortunately |
11:57:12 | Araq | c2nim uses large parts of the compiler |
11:57:39 | [dude] | alrighty! |
11:58:41 | [dude] | was just trying to see if I can generate a libuv wrapper. I think found one someone created/generated for 0.11.x |
11:58:45 | [dude] | I'll give that a go... |
11:58:47 | Araq | [dude]: http://forum.nim-lang.org/t/738 |
11:58:56 | Araq | describes how to setup c2nim |
11:59:37 | edsc | I have a question as well. i iterate over a string to parse every char in it but parseInt take a string in parameter. I would like to know what is the best way to cast it. thanks. it |
12:00:16 | Araq | edsc: just use parsutils.parseInt instead. that one fits a parser. |
12:01:17 | * | matkuki joined #nim |
12:03:32 | [dude] | Araq: I'm not sure if the post mentions how to compile c2nim ATM. I'm having trouble with 1. grabbing c2nim from nimble and 2. compiling c2nim via source. =( |
12:04:18 | Araq | [dude]: you need c2nim and nim in the same directory. nim should be 'devel' from github |
12:04:33 | Araq | and then you do: |
12:04:44 | Araq | cd c2nim |
12:04:47 | Araq | nim c c2nim |
12:05:01 | * | nercury joined #nim |
12:06:05 | Araq | if 'nim' is in /usr/bin where do nim's sources usually end up? |
12:09:34 | * | Sphax quit (Quit: ZZZZZzzzzz) |
12:10:42 | BlaXpirit | Araq, possibly nowhere |
12:11:17 | Araq | BlaXpirit: yeah sure but *if* it exists |
12:11:29 | BlaXpirit | could be anywhere :s |
12:11:56 | Araq | so the compiler has no chance to setup '$nim' properly |
12:12:21 | BlaXpirit | the structure of the project is quite weird |
12:12:31 | BlaXpirit | no wonder package maintainers don't know what to do |
12:13:13 | EXetoC | so, do we introduce /usr/lib/nim/compiler? |
12:13:23 | BlaXpirit | that would be best, I think |
12:13:46 | Araq | nah, I'll make the compiler's source a pseudo Nimble package |
12:14:01 | Araq | but I dunno how lol |
12:14:22 | BlaXpirit | Araq, here's one package if you care to look inside it https://www.archlinux.org/packages/community/x86_64/nim/download/ |
12:15:46 | edsc | Araq, I was trying to know how to convert a char because each character need to be pase individualy and when I iterate I get a char and not a string which result in a missmatch. |
12:15:59 | lesshaste | how large is the development team these days? |
12:16:46 | lesshaste | I mean for nimrod |
12:17:04 | Araq | lesshaste: hard to say. for the compiler itself 3 people, but I still do most of the work :P |
12:17:13 | lesshaste | Araq, oh! |
12:17:21 | lesshaste | Araq, well in that case... a double hello :) |
12:17:44 | lesshaste | do you have a feeling for how many people program in nimrod? |
12:17:47 | Araq | for the stdlib there are a couple of contributors |
12:17:55 | lesshaste | it really sounds like very few |
12:18:12 | lesshaste | unless you work 18 hours a day on it :) |
12:18:45 | lesshaste | or 180 hours a day |
12:18:57 | MyMind | Araq: nim is a full time job for you ? |
12:19:53 | lesshaste | we need more nimrod codes on codegolf.se :) E,g, http://codegolf.stackexchange.com/questions/42215/program-a-racing-car |
12:20:08 | Araq | MyMind: no, I have a real job too. :-) |
12:21:11 | MyMind | unless you get sponsored :) |
12:21:41 | Araq | well depending on how you look at it, this already happened. |
12:22:14 | lesshaste | actually a nimrod answer for http://codegolf.stackexchange.com/questions/44278/debunking-stroustrups-debunking-of-the-myth-c-is-for-large-complicated-pro would be very nice |
12:22:38 | dom96 | ekarlso-: What are you using hmac for? |
12:22:39 | MyMind | by whom Araq ? |
12:24:41 | Araq | MyMind: I'll announce it officially in some weeks. then I will also have to show you guys exciting new stuff. |
12:24:55 | MyMind | wow |
12:25:04 | edsc | I found my mistake, i forgot to use the stringify operator '$' :/ . |
12:25:07 | MyMind | that's exicting |
12:25:48 | MyMind | Araq: for the 1.0 release ? |
12:26:09 | Araq | MyMind: mostly orthogonal to 1.0. |
12:26:38 | MyMind | what means orthogonal besides a geometric form? |
12:27:08 | Araq | BlaXpirit: ok, so no compiler sources in packages, got it. |
12:27:24 | BlaXpirit | Araq, my test sample consists of 1 distro though :| |
12:27:45 | Araq | well technically that *is* the proper way to do it |
12:28:00 | sillesta | how does the "parallel:" on the nim-lang.org site work? |
12:28:51 | Araq | sillesta: at runtime it produces a barrier |
12:29:16 | sillesta | is it in a specific module? |
12:29:49 | Araq | at compiletime it tells the compiler "DSL with special rules". it's builtin but pretend to be in threadpool |
12:30:03 | EXetoC | can the compiler be turned into a package with the current package system? |
12:31:22 | BlaXpirit | EXetoC, what do you mean |
12:31:35 | BlaXpirit | can a folder with .nim files be turned into a package? |
12:31:38 | BlaXpirit | sure it can |
12:32:34 | * | yonson quit (Quit: Leaving) |
12:33:58 | EXetoC | I meant, using the current directory structure, but maybe the compiler interface should be separated from everything else |
12:34:25 | BlaXpirit | there is no logical place to put it in, except lib |
12:34:41 | BlaXpirit | and yes, i'm pretty sure you can do it as a separate package |
12:34:48 | BlaXpirit | but it would be an unpopular decision |
12:34:59 | BlaXpirit | it shouldn't be difficult to just copy a folder |
12:35:00 | EXetoC | that's what he wanted, but ok |
12:35:19 | EXetoC | I don't know what's wrong with installing it along with everything else though |
12:35:41 | BlaXpirit | it's not "wrong", it's just that it is not specified anywhere |
12:35:55 | BlaXpirit | package maintainers simply can't know that the compiler files may be needed at all |
12:36:10 | keyle | Araq: very excited at this prospect, 1.0 stuff |
12:36:32 | keyle | night |
12:36:33 | EXetoC | it's just a simple modification then |
12:36:41 | * | keyle quit (Quit: Morbo: Chitchat achieved!) |
12:36:52 | BlaXpirit | EXetoC, why don't you try |
12:36:52 | Araq | BlaXpirit: well this really only affects c2nim. the compiler is not a library yet. |
12:37:17 | Araq | so package maintainers do the right thing |
12:37:19 | BlaXpirit | in nim-git just adding cp -r compiler pkgdir/usr/lib/nim/compiler blah blah |
12:37:37 | BlaXpirit | piece of cake, really |
12:40:26 | EXetoC | that might do |
12:40:30 | * | yonson joined #nim |
12:41:24 | BlaXpirit | EXetoC, it's a very good PKGBUILD, but I did realize only recently that I need it to be devel branch |
12:41:42 | BlaXpirit | so i add a line git checkout devel , no problem |
12:41:44 | * | HakanD quit (Quit: Be back later ...) |
12:42:36 | EXetoC | if you say so |
12:43:07 | BlaXpirit | I don't think PKGBUILD should be devel, though, it's good. |
12:43:37 | BlaXpirit | but a problem is, the repository is too huge :o |
12:44:57 | EXetoC | the size was reduced at some point |
12:45:34 | * | Sphax joined #nim |
12:48:25 | * | edsc quit (Ping timeout: 246 seconds) |
12:50:11 | * | HakanD joined #nim |
12:50:26 | sillesta | github repo link to aporia IDE on nim-lang.org links to the old https://github.com/nimrod-code/Aporia |
12:50:43 | EXetoC | because csources was put in a separate repo, but it has to be included |
12:51:12 | BlaXpirit | EXetoC, there is probably a huge history of some binary file in that repo |
12:51:55 | BlaXpirit | i'm sure there have been investigations on this topic, no point in me guesing here |
12:52:01 | yonson | Hi, I´m trying to compile greetings.nim (from the nim tutorial) on my windows machine but I´m getting the following error https://gist.github.com/psychotropic/ab8e38ae7faf539b6e32 |
12:52:12 | BlaXpirit | sillesta, but it's ok, because redirects :p |
12:52:13 | yonson | i´ve checked and nim is correctly added to my path |
12:52:29 | sillesta | yeah, just noticed it for some reason ;) |
12:53:02 | BlaXpirit | yonson, it may be because of spaces in directory name |
12:53:08 | BlaXpirit | :s |
12:53:10 | BlaXpirit | try to have no spaces in the path |
12:53:13 | BlaXpirit | and i'm out |
12:53:17 | yonson | hmm i´ll try |
12:53:18 | yonson | just a sec |
12:53:51 | yonson | oh well |
12:53:56 | yonson | that fixed it |
12:54:04 | yonson | thanks |
12:54:19 | EXetoC | BlaXpirit: there are several directories in csources that are similar |
12:54:22 | EXetoC | are all those needed? |
12:54:22 | Araq | yonson: er... that should be fixed for years now :-/ |
12:54:33 | BlaXpirit | EXetoC, no idea |
12:54:57 | yonson | it does seem kind of a silly bug |
12:54:57 | BlaXpirit | you know a lot more than me, both about nim and pkgbuilds |
12:57:10 | Araq | yonson: report it please |
12:59:16 | EXetoC | Araq: are all 16 directories in csources needed? |
12:59:56 | Araq | EXetoC: of course. think of our poor solaris users. |
13:00:08 | EXetoC | -.- |
13:01:31 | Jehan_ | EXetoC: You can make gzip/bzip2/xz pack them better by sorting the tar file so that equally named files are next to each other. |
13:01:48 | Jehan_ | With xz, that becomes actually pretty small. |
13:03:32 | lesshaste | what do nimrod people think of rust? I am not really clear on the significant differences |
13:03:52 | EXetoC | *nim :) |
13:04:09 | yonson | Araq, i now see that my computer is using gcc 4.7.3 (old installation), maybe the bug is now fixed? |
13:04:43 | lesshaste | I suppose rust has lower level semantics? |
13:05:28 | EXetoC | Jehan_: and on windows? |
13:05:47 | Jehan_ | lesshaste: Both languages really target different application domains. |
13:05:53 | EXetoC | we'd need a portable solution I think |
13:06:02 | lesshaste | Jehan_, could you tell me more about that please? |
13:06:06 | lesshaste | which domains? :) |
13:06:17 | Jehan_ | EXetoC: On Windows, you can just package the Windows-only code in zip file. |
13:07:06 | lesshaste | I am a slightly odd user as I only ever write smallish scientific applications (for example simulations) that need to be fast |
13:07:07 | Jehan_ | lesshaste: The primary difference is that Rust tries to avoid automatic memory management, while Nim's default is automatic memory management. |
13:07:35 | lesshaste | Jehan_, that's very interesting. I have no interest in managing memory myself :) |
13:07:40 | EXetoC | Jehan_: we need two repos then |
13:08:48 | Araq | yonson: please try the GCC that we ship with the installer (optional component) |
13:08:54 | Jehan_ | lesshaste: Well, there are application domains where automatic memory management is an issue (e.g., much of embedded programming) or where you want to have complete control over it. |
13:09:12 | yonson | will do and report the results |
13:09:26 | lesshaste | Jehan_, right I can see that. I am being very selfish and just trying to work out what is most useful for me |
13:09:48 | lesshaste | Jehan_, I don't think I ever need to allocate memory. Although it would be nice to be able to use all my cores easily |
13:09:56 | Jehan_ | EXetoC: Hmm, I would think that the repo size doesn't matter much. I was thinking more in terms of .tar.xxx or .zip files. |
13:10:35 | Jehan_ | lesshaste: "Using all my cores" and "easily" usually don't go together in one sentence except for embarallel problems. :) |
13:10:52 | lesshaste | Jehan_, my problems are embarrassingly parallel in the main :) |
13:11:13 | lesshaste | Jehan_, mostly, run the simulation for a thousand different values of n and choose the maximum |
13:11:26 | Araq | Jehan_: I will argue that Nim provides more control over memory management than C++, but it's worth a blog post. |
13:11:44 | EXetoC | Jehan_: the repo would just be a single archive then, and it's around 300mb now |
13:11:48 | Jehan_ | lesshaste: Ah, I see. But that should be easy in any language. |
13:11:56 | [dude] | Araq: Sorry, stepped away fro a second. I got c2nim to compile now. Thanks for the help. =) |
13:12:05 | lesshaste | Jehan_, it's a pain in C because everything is a pain in C |
13:12:06 | Jehan_ | Araq: That'd be shooting fish in a barrel. :) |
13:12:26 | lesshaste | Jehan_, and python doesn't by default even allow you to run things in parallel |
13:12:40 | Jehan_ | lesshaste: True. :) But it's not really something that would differentiate Nim and Rust. |
13:12:47 | lesshaste | Jehan_, ok :) |
13:13:03 | EXetoC | Araq: what do these poor solaris users need it for? |
13:13:23 | lesshaste | I basically want the highest level language possible with the largest set of scientific libraries possible that will let me write code that runs at the speed of C :) |
13:13:27 | lesshaste | too much to ask? :) |
13:13:31 | yonson | Araq, nope, I still get the same error with nim´s gcc (4.9.1 according to my computer). Should i fill an issue on github? |
13:13:43 | Araq | yonson: of course. |
13:13:50 | Jehan_ | lesshaste: The reason I'm not using Rust is that I have no need for fine-grained control over memory management, basically, but that the memory management techniques of Rust leave a footprint on my code that I can avoid in NIm. |
13:14:13 | lesshaste | Jehan_, I am reading http://pcwalton.github.io/blog/2013/03/18/an-overview-of-memory-management-in-rust/ |
13:14:19 | lesshaste | seems a lot of new stuff to learn |
13:14:32 | Jehan_ | lesshaste: Libraries are still an issue for both, I think, especially scientific libraries; there it comes down to how easy it is to create bindings. |
13:14:33 | EXetoC | how about a csources_solaris for those few people. not that I know what the purpose is |
13:15:15 | lesshaste | Jehan_, right..sadly there is http://scikit-learn.org/stable/ and I don't know if other languages can bind to it |
13:15:50 | lesshaste | scala gets round this by letting you use java libraries I think |
13:15:59 | Jehan_ | lesshaste: Not familiar with it; I'm currently working on computer algebra systems, which are basically their own niche. |
13:16:12 | * | matkuki quit (Read error: Connection reset by peer) |
13:16:14 | EXetoC | well, python has an C API |
13:16:37 | lesshaste | Jehan_, interesting... which computer algebra systems ? |
13:16:37 | * | matkuki joined #nim |
13:16:41 | Jehan_ | lesshaste: Yeah, Java interoperability is Scala's great strength (and JVM dependency similarly probably its greatest weakness). |
13:16:48 | Jehan_ | lesshaste: GAP, Singular. |
13:16:52 | lesshaste | Jehan_, nice :) |
13:17:17 | lesshaste | it's really stupid how all these impressive libraries are tied to one language |
13:17:27 | EXetoC | and we have nimborg, but it seems like yet another stale lib. there's a low level binding though I think |
13:17:28 | lesshaste | you feel that with some thought they could have made them interoperable from the start |
13:17:50 | Jehan_ | lesshaste: That'd be nice, but it's harder than you think. |
13:17:51 | EXetoC | lesshaste: if indeed the libs are unique, yes |
13:18:37 | lesshaste | EXetoC, I think scikit learn is more or less unique. I mean there is a competing set of libraries called weka for java but there are thousands (millions?) of man hours in these projects |
13:18:43 | Jehan_ | Araq: I actually think memory management in C++ is a big issue, but that ties into my usual argument how I believe that RAII is fundamentally broken (except for rare use cases). |
13:18:46 | lesshaste | it's madness to reimplement them for each language |
13:19:00 | lesshaste | Jehan_, I can imagine but it seems worth it |
13:19:12 | EXetoC | in which case I agree. too bad C is what it is though |
13:19:30 | Jehan_ | lesshaste: A major problem is data representation. |
13:20:18 | lesshaste | Jehan_, a flat array to pass data in and out would seem to cover most languages wouldn't it? |
13:20:44 | Jehan_ | You could work around that by making every type completely opaque, but then you need automatic memory management/GC and that means all libraries and the language need to agree on using the same GC. |
13:20:54 | EXetoC | lesshaste: I've wanted to write an interface that would allow one to easily write C libs in nim, but that might take some time |
13:20:55 | Jehan_ | lesshaste: But would be totally inefficient. |
13:21:04 | EXetoC | not that it solves your particular problem |
13:21:07 | lesshaste | EXetoC, nice :) |
13:21:07 | Araq | Jehan_: I don't think you ever explained how RAII is broken. :-) |
13:21:21 | Araq | I think it's completely broken too, but I like to hear your thoughts |
13:21:26 | Jehan_ | Assume that you want to represent elements of F[x,y,z] (i.e. polynomials over three variables and the field F). |
13:22:04 | Jehan_ | Araq: Would be lengthy, I was thinking about posting it in the RAII thread, then I thought better than to stir up unnecessary trouble. :) |
13:22:17 | EXetoC | I have so many ideas, but I keep coming back to that one |
13:22:17 | lesshaste | Jehan_, ok |
13:22:47 | lesshaste | maybe nim could have a way of calling python code :) |
13:22:48 | Jehan_ | lesshaste: There are a number of ways you can represent them. You may require them to have a reference to F, too, or F be implicit. |
13:22:59 | Jehan_ | lesshaste: I think there already is a module for that? |
13:23:04 | lesshaste | oh ok ! |
13:23:13 | * | valberg is now known as keyvalberg |
13:23:16 | Araq | Jehan_: IMO it's because there is no escape analysis whatsoever involved and c++ only has 'const' and not 'lent' |
13:23:26 | lesshaste | I suppose that works round this particular problem then? |
13:24:05 | Jehan_ | Araq: Number of problems, short list: |
13:24:18 | Jehan_ | (1) RAII does not have sane semantics for variables with static scope. |
13:24:21 | lesshaste | Jehan_, I suppose I have a very crude way of thinking about these things. I am imagine a library that takes in some data and returns something |
13:24:44 | lesshaste | Jehan_, in that case the API specifies the format it wants and it is your job to provide it |
13:24:46 | Jehan_ | (2) RAII does not have sane semantics for concurrency (also why shared pointers in C++ essentially have the performance of a small glacier). |
13:24:57 | lesshaste | Jehan_, but your only problem is making sure the data you pass is in the right format |
13:25:11 | lesshaste | Jehan_, I think you are talking about something much more sophisticated... ? |
13:25:45 | Jehan_ | (3) Main use case #1 for RAII is reference counting, which is slow if done using RAII. |
13:26:10 | Jehan_ | lesshaste: Hmm, talking about two different things at the moment. |
13:26:17 | lesshaste | Jehan_, :) |
13:26:18 | Araq | the unique_ptr fraction would disagree ;-) |
13:26:48 | lesshaste | Jehan_, imagine I want to compute the inverse of a matrix. I pass the matrix and get the inverse. My only problem is to pass the matrix in the right format isn't it? |
13:26:50 | Jehan_ | Araq: unique_ptr is too weak for a lot of important stuff. |
13:26:58 | EXetoC | time to look into it. I'd need a way to fail as soon as something wants the GC though |
13:27:22 | * | Demos joined #nim |
13:27:39 | Demos | Triplefox, ping |
13:28:03 | Jehan_ | (4) RAII is used for open/close scenarios with local scope, which can be done as well and often better if you have higher order functions or clean macros. |
13:28:36 | * | keyvalberg is now known as valberg |
13:29:08 | Jehan_ | More importantly, there are tons of other resource management scenarios that RAII does not have any real applicability for (such as an LRU pool). |
13:29:40 | Jehan_ | (5) If you use it for resource handling, it leaves a significant footprint on your code (see, e.g., the Rule of Three, now actually the Rule of Five). |
13:30:47 | Araq | many disagree with (4) as well. :-) i don't though. I think this whole constructor/destructor business is blown out of proportion. You need to learn the API for the type anyway, even everything uses the precious 'new T' syntax |
13:31:02 | Araq | *even when |
13:31:11 | Jehan_ | lesshaste: Well, yeah. And do you pass the matrix as a list of row or column vectors, for staters? |
13:31:46 | Jehan_ | Araq: Constructors are a totally different story. I may actually post something in that thread, that can be done without inciting a flame war. |
13:32:02 | EXetoC | let's not forget to bash the name |
13:32:04 | Demos | I think (4) is more or less valid, it depends on what resource you are using, like I don't really like using RAII for files |
13:32:10 | lesshaste | Jehan_, ok but that's in the specs. I mean in my dream world that only thing the interface has to do is to code in nimrod to pass the data in the format the specs demand |
13:32:26 | lesshaste | Jehan_, he/she never has to do any other low level coding or coding in a foreign language |
13:32:38 | Jehan_ | lesshaste: In my dream world, too. :) |
13:32:50 | lesshaste | Jehan_, :) |
13:34:04 | Jehan_ | Demos: A major problem with using RAII for resource handling can be that hidden pointers keep a resource alive longer than you think. |
13:34:17 | lesshaste | Jehan_, I wonder why our dream worlds don't exist :) |
13:34:17 | lesshaste | ? |
13:34:23 | Jehan_ | This is particularly true in languages with closures. |
13:34:30 | Demos | Jehan_, this is true. For memory I think it is OK |
13:34:41 | * | leavengood joined #nim |
13:34:44 | Demos | for something like files not so much |
13:34:46 | Jehan_ | Store a closure as a callback somewhere, and suddenly all of its environment is being kept alive. |
13:35:04 | Demos | and then there are things like sockets that do have open/close semantics but you really need to understand when to close them |
13:35:09 | * | leavengood is now known as Guest48178 |
13:35:12 | Jehan_ | That's actually #6: RAII and closures do not mix well, and closures are an important concept. |
13:36:19 | Jehan_ | Demos: Also, importantly, sometimes closing a resource is non-trivial. RAII assumes that no error handling is needed for that. |
13:36:26 | EXetoC | though I can't use sequtils for example because of my requirements. oh well |
13:37:38 | * | JinShil quit (Quit: Konversation terminated!) |
13:37:57 | Demos | Jehan_, sure. But the resources that do require error handling don't really work in any kind of automatic system. I agree though |
13:39:29 | * | JinShil joined #nim |
13:47:23 | * | Guest48178 quit (Quit: leaving) |
13:50:40 | * | nercury quit (Quit: nercury) |
13:51:21 | Demos | well I gotta go, but Triplefox, I am the maintainer of the FreeImage library and would like to know if you got it working. It is totally possible that there is a missing dynlib directive or your OS may be having trouble finding the library. I use it on windows (usually static linked) and on RHEL |
13:51:35 | * | nerijus joined #nim |
13:52:38 | ekarlso- | dom96: JWT tokens |
13:56:20 | ekarlso- | flaviu: u around ? :) |
14:00:07 | * | nerijus left #nim (#nim) |
14:17:44 | * | Jehan_ quit (Quit: Leaving) |
14:19:10 | * | Demos quit (Ping timeout: 255 seconds) |
14:24:16 | * | seemsindie joined #nim |
14:25:09 | * | jefus__ joined #nim |
14:27:04 | * | gmpreussner___ joined #nim |
14:29:11 | * | jefus_ quit (Ping timeout: 252 seconds) |
14:29:33 | gmpreussner___ | i have a C library with structs that hold function pointers for callbacks that users can register. how would i best model this in nim? is it possible? |
14:29:56 | * | gmpreussner___ is now known as gmpreussner |
14:33:17 | * | jefus__ is now known as jefus |
14:37:53 | jpoirier_ | gmpreussner: yes. E.g. just mirror the C callback typedef in your nim wrapper, e.g. type readAsyncCbProc* = proc (buf: ptr uint8; len: uint32; userCtx: UserCtxPtr) {.fastcall.} |
14:38:11 | * | JinShil quit (Quit: Konversation terminated!) |
14:46:00 | BlaXpirit | gmpreussner, i made an example recently |
14:46:00 | * | ivan_ joined #nim |
14:46:17 | * | ivan_ quit (Client Quit) |
14:46:52 | BlaXpirit | sec |
14:46:56 | * | Demos joined #nim |
14:47:18 | * | ivan_ joined #nim |
14:47:33 | * | ivan_ quit (Client Quit) |
14:47:50 | BlaXpirit | gmpreussner, https://github.com/LaurentGomila/CSFML/blob/fdf58188caf49684fbeb5e951c61e92a0a6c3e82/include/SFML/Graphics/Shape.h#L39 https://github.com/BlaXpirit/nim-csfml/blob/254aecd3d1c68ba1febbafc950f1fa7f78872706/examples/shapes.nim#L43 https://github.com/BlaXpirit/nim-csfml/blob/254aecd3d1c68ba1febbafc950f1fa7f78872706/src/csfml_graphics_gen.nim#L2753 |
14:47:56 | BlaXpirit | that's 3 huge links D: |
14:48:19 | * | ivan_ joined #nim |
14:48:21 | * | ivan_ quit (Client Quit) |
14:48:47 | * | seemsind1e joined #nim |
14:48:55 | BlaXpirit | still better than blob/master links because they rot :p |
14:49:50 | * | seemsind1e quit (Client Quit) |
14:49:56 | * | seemsindie quit (Quit: Page closed) |
14:50:23 | Demos | well irc is hardly a bullet proof archive |
14:50:24 | * | seemsindie joined #nim |
14:50:39 | BlaXpirit | it sure is, what with IRC logs available |
14:50:59 | * | HakanD quit (Quit: Be back later ...) |
14:51:46 | seemsindie | y |
14:52:42 | jpoirier_ | BlaXpirit: Is {.cdecl.} okay for callbacks? I'm using {.fastcall.} for reasons I don't remember :/ |
14:52:57 | BlaXpirit | jpoirier_, it must be consistent with what actually is in the library |
14:53:10 | BlaXpirit | if it's just a normal C library with normal C functions, it must be cdecl |
14:53:27 | BlaXpirit | and if there is actually __fastcall present in C code, then it's fastcall |
14:53:32 | BlaXpirit | i may be mistaken though |
14:53:51 | jpoirier_ | BlaXpirit: k, that sounds right, thanks |
14:56:23 | * | darkf quit (Ping timeout: 240 seconds) |
14:56:25 | * | HakanD joined #nim |
15:00:10 | * | atomic-hedgehog joined #nim |
15:00:42 | gmpreussner | jpoirier_, BlaXpirit: thanks guys! |
15:01:43 | * | Varriount|Busy joined #nim |
15:01:50 | EXetoC | jpoirier_: it might've worked just because of luck |
15:02:09 | EXetoC | BlaXpirit: you could write a minimal example in C and then run c2nim over it, just to see what is being generated |
15:02:28 | BlaXpirit | lol i made half of c2nim myself already |
15:03:10 | BlaXpirit | i actually went as far as generating function type signatures from c code |
15:03:57 | BlaXpirit | that last link is autogenerated code btw |
15:03:58 | EXetoC | jpoirier_: or was __fastcall indeed in the code? |
15:04:33 | EXetoC | BlaXpirit: well it looks like correctly generated callbacks |
15:04:53 | BlaXpirit | sure is, cuz it even works :p |
15:04:58 | atomic-hedgehog | hi, I'm working with the httpclient library on the devel branch, and my program failed to compile. The issue is with the net.nim library requiring uint16 in some places. There's a cast to uint16 for one part of an expression, but the rest of it is outside the cast and getting coereced to int |
15:05:03 | atomic-hedgehog | https://github.com/Araq/Nim/blob/devel/lib/pure/net.nim#L1039 |
15:05:39 | atomic-hedgehog | I've fixed it locally by wrapping the cast aroudn the entire expression and everything seems to be working. |
15:05:48 | atomic-hedgehog | Since I'm very new to nim, I' |
15:05:56 | EXetoC | BlaXpirit: ok you figured it out |
15:06:00 | atomic-hedgehog | m not sure if this is the right way to fix it. |
15:06:07 | atomic-hedgehog | Shoudl I do a pull request? |
15:06:09 | BlaXpirit | EXetoC, uhm it wasn't me who needed help |
15:06:24 | EXetoC | nvm then |
15:06:38 | BlaXpirit | atomic-hedgehog, this problem was brought up recently, i'm pretty sure |
15:06:48 | BlaXpirit | and fixes are probably being worked on |
15:06:48 | * | HakanD quit (Quit: Be back later ...) |
15:07:13 | BlaXpirit | hm i'm not sure though |
15:07:43 | BlaXpirit | atomic-hedgehog, yeah, look https://github.com/Araq/Nim/commit/f7ef00aa3be1b31ad2781f21852c41f55c5de1e0#diff-df7c4ae903eab01bc8c4f64f425b48c3 |
15:08:05 | BlaXpirit | seems to have been fixed a day ago, maybe you're not up to date |
15:08:11 | EXetoC | people and their ancient builds :p |
15:08:16 | * | gmpreussner quit (Ping timeout: 244 seconds) |
15:08:49 | atomic-hedgehog | ha, nope, I found this two days ago. I have a small child so my time to work on stuff is really limited. |
15:09:08 | BlaXpirit | atomic-hedgehog, i don't understand what you mean |
15:09:17 | BlaXpirit | you mean you have devel from 2 days ago? |
15:09:24 | BlaXpirit | then update is your solution |
15:09:29 | atomic-hedgehog | Right, so it should be fixed in latest. |
15:09:34 | BlaXpirit | ok |
15:09:40 | atomic-hedgehog | I'll do a pull |
15:09:45 | BlaXpirit | good |
15:12:36 | * | BitPuffin joined #nim |
15:16:47 | * | nercury joined #nim |
15:17:43 | * | nodrygo_ joined #nim |
15:17:55 | * | gunn joined #nim |
15:22:36 | onionhammer | araq it would be nice to be able to just say {.compile with cpp.} at the top of a module |
15:23:46 | onionhammer | it works if I do something hacky like this at the top: proc CPP {.importcpp.} |
15:23:48 | onionhammer | :) |
15:24:15 | BlaXpirit | it's hard for me to imagine how one can compile different parts of a project with different compilers |
15:24:33 | onionhammer | because they're ABI compatible |
15:24:44 | onionhammer | and distinct .o files are generated per module |
15:27:04 | BlaXpirit | cool stuff |
15:28:08 | * | nodrygo joined #nim |
15:28:23 | * | nodrygo_ quit (Quit: Page closed) |
15:29:13 | * | nodrygo left #nim (#nim) |
15:31:10 | * | Varriount|Busy quit (Ping timeout: 246 seconds) |
15:32:59 | * | Demos quit (Ping timeout: 252 seconds) |
15:36:50 | dts|pokeball | does the nim compiler generate .o files? i thought all of that was handed to the compiler? |
15:36:57 | dts|pokeball | does the nim compiler generate .o files? i thought all of that was handed to the c compiler? ** |
15:37:01 | dom96 | THe C compiler does. |
15:37:45 | dts|pokeball | yeah, so ABI compatability doesnt matter in this case |
15:40:05 | onionhammer | why wouldnt it matter |
15:41:16 | onionhammer | oh, i thought .o files were binary |
15:41:24 | dts|pokeball | because its compiling down to c/c++/js/etc and then the system compiler generates the ABI compatibile file |
15:41:53 | onionhammer | i'm talking about compiling a C++ and a C file together into a final exe |
15:43:06 | onionhammer | well, linking them together i guess.. |
15:43:17 | onionhammer | if that makes sense |
15:43:34 | * | nodrygo joined #nim |
15:43:55 | onionhammer | re http://en.wikipedia.org/wiki/Application_binary_interface |
15:44:21 | onionhammer | "ABIs cover details such as ... in the case of a complete operating system ABI, the binary format of object files, program libraries and so on." |
15:47:16 | * | [dude] quit (Ping timeout: 246 seconds) |
15:51:41 | * | johnsoft quit (Ping timeout: 252 seconds) |
15:52:18 | * | johnsoft joined #nim |
15:54:31 | ekarlso- | anyone interested in making a JWS library ? |
15:56:07 | dom96 | what is JWS? |
15:56:20 | * | SplinterOfChaos joined #nim |
15:57:55 | ekarlso- | dom96: javascript object signing |
15:58:01 | ekarlso- | and encryption (jose) |
15:58:02 | ekarlso- | :D |
15:58:04 | ekarlso- | https://datatracker.ietf.org/wg/jose/documents/ |
15:58:19 | dom96 | Why do you need that? |
15:58:33 | ekarlso- | dom96: more libraries = more reasons to use nim :) |
16:02:11 | * | nercury quit (Quit: nercury) |
16:03:49 | * | ZzZMorpork is now known as AMorpork |
16:07:59 | * | VinceAddons joined #nim |
16:08:46 | * | brson joined #nim |
16:09:45 | ekarlso- | I love nim |
16:18:12 | * | gokr quit (Quit: Leaving.) |
16:27:16 | * | Demos joined #nim |
16:37:35 | * | nercury joined #nim |
16:40:32 | sillesta | don't we all :) |
16:40:45 | * | Demos quit (Ping timeout: 244 seconds) |
16:44:47 | * | seemsindie quit (Ping timeout: 264 seconds) |
16:56:36 | * | BlaXpirit_ joined #nim |
16:58:47 | * | BlaXpirit quit (Ping timeout: 252 seconds) |
17:00:21 | * | nercury quit (Quit: nercury) |
17:04:09 | * | gokr joined #nim |
17:05:24 | * | jokr joined #nim |
17:10:37 | * | yonson quit (Ping timeout: 255 seconds) |
17:15:48 | * | jokr quit (Quit: WeeChat 1.0.1) |
17:16:05 | * | jokra joined #nim |
17:16:40 | * | Demos joined #nim |
17:22:16 | * | jokra quit (Quit: WeeChat 1.0.1) |
17:22:31 | * | jokra joined #nim |
17:24:20 | * | jpoirier_ quit (Quit: Leaving) |
17:24:29 | * | nodrygo left #nim (#nim) |
17:36:21 | * | skyfex joined #nim |
17:42:01 | * | Sphax quit (Quit: CYA!!) |
17:46:42 | * | jpoirier joined #nim |
17:47:22 | * | gokr quit (Quit: Leaving.) |
17:48:35 | * | jokra quit (Quit: WeeChat 1.0.1) |
17:49:38 | * | adam_s joined #nim |
17:50:35 | * | jokra joined #nim |
18:01:04 | * | jefus_ joined #nim |
18:04:15 | * | jefus quit (Ping timeout: 264 seconds) |
18:07:34 | ldlework | If I have a library with BaseType, and in my application I have a Subtype, and a Foo and a Bar, and Foo creates a Subtype and uses library code (which takes BaseType) to pass the Subtype from Foo to the Bar, how I can I do this so that bar gets a Subtype, not a Basetype? |
18:08:27 | * | UberLambda joined #nim |
18:08:53 | ldlework | Passing the Subtype to the library seems to cause a downcasting |
18:09:28 | ldlework | I understand that I can upcast back to the Subtype in Bar when it recieves the BaseType from the library, but how should Bar know which Subtype to upcast to? |
18:09:37 | ldlework | It might be a SubtypeA or a SubtypeB, etc |
18:30:48 | * | Demos quit (Ping timeout: 245 seconds) |
18:48:37 | Araq | ldlework: usually people end up with init(x: var Base) procs, I think |
18:55:23 | * | rpag joined #nim |
19:10:21 | * | pjc joined #nim |
19:13:14 | joecodes | speaking of more libraries, after reading: http://blog.gopheracademy.com/go-and-ssh/ I wonder if there is an ssh library for nim. |
19:13:51 | def- | joecodes: haven't seen one yet |
19:18:26 | * | jefus_ is now known as jefus |
19:30:18 | * | yonson joined #nim |
19:30:19 | dom96 | Araq: How can I catch DeadThreadError? |
19:30:43 | Araq | er .. you shouldn't |
19:31:09 | dom96 | Meh. Looks like raises: [] on a {.thread.} doesn't work well. |
19:31:35 | Araq | ah I see |
19:31:54 | Araq | so we should hide this somehow like we do for AssertionError, perhaps |
19:32:21 | Araq | in fact |
19:32:24 | dom96 | Maybe. |
19:32:33 | Araq | I can make it use assert instead of raise. |
19:32:36 | dom96 | I put everything in the thread in a try catch and it still thinks that Exception is raised. |
19:32:48 | * | atomic-hedgehog quit (Ping timeout: 244 seconds) |
19:33:29 | Araq | the compiler is usually right. gradha had a similar problem and it was all his fault :P |
19:34:34 | * | atomic-hedgehog joined #nim |
19:44:08 | onionhammer | araq thoughts on specifying compiler with a bare pragma |
19:44:29 | * | rpag quit (Quit: zZz) |
19:44:38 | onionhammer | i mean.. besides your initial reaction of hating everything I say :P |
19:45:37 | Araq | ach quatsch, ich liebe jeden Menschen auf Gottes grüner Erde... |
19:45:58 | Araq | onionhammer: well ... as you noted |
19:46:12 | Araq | there is already a "simple" way to do that |
19:46:25 | Araq | which breaks with --deadCodeElim:on I think |
19:46:56 | Araq | but. the "mixed" mode has been designed so that you don't have to care about that |
19:48:14 | onionhammer | say I"m using a lot of try/catches or something and know that this module will perform much better compiled to cpp? |
19:49:58 | Araq | you document then that people should compile it with 'cpp' instead of 'c'? |
19:50:04 | dom96 | Any ideas how to check if a stream has something in it? |
19:50:25 | Araq | or somehow specify it in your nake file, I dunno if that's possible |
19:50:40 | Araq | onionhammer: I think you can also do: |
19:50:46 | Araq | when not defined(cpp): |
19:50:58 | Araq | {.error: "compile as C++ you fool!".} |
19:51:00 | onionhammer | I suppose... just think it would be nicer to have a {.exportcpp.} pragma |
19:51:11 | onionhammer | or {.export:cpp.} or something |
19:51:32 | onionhammer | afk |
19:51:33 | Araq | yes, lots of things would be nice. we have ~400 open issues. |
19:52:23 | dom96 | Argh. The only way would be to check asynchronously I guess. |
19:54:05 | Araq | dom96: posix hates that. afaict you can only 'read' |
19:55:25 | onionhammer | that's fair |
19:58:45 | dom96 | Araq: Any chance I could hack something together with spawn? |
19:59:02 | Araq | to do what? |
19:59:43 | dom96 | To attempt to read from a process' errorStream |
20:00:00 | dom96 | I don't suppose that will work. |
20:00:02 | * | adam_s quit (Quit: Leaving) |
20:00:20 | EXetoC | onionhammer: then what? you compile as C and possibly get an empty program? |
20:00:42 | onionhammer | no if you do nim c cppmodule.nim it will use cpp anyway |
20:00:47 | onionhammer | (currently) |
20:00:59 | * | Sergio965 joined #nim |
20:02:26 | Araq | dom96: no, cannot work |
20:02:36 | dom96 | oh well |
20:02:43 | dom96 | No fancy highlighting of stderr then |
20:03:00 | dom96 | maybe I can just match the errors with pegs |
20:03:04 | * | gunn quit (Ping timeout: 265 seconds) |
20:03:25 | Araq | dom96: json output for the compiler's error messages is in the works |
20:03:35 | ldlework | What's the thing in Nim where I can constrain generic type discriminators? |
20:04:16 | onionhammer | as part of idetools araq? |
20:04:35 | onionhammer | capital-I ide tools or lower-case |
20:04:42 | Araq | onionhammer: it'll be a general switch, not part of idetools |
20:04:56 | dom96 | Araq: cool |
20:05:00 | dom96 | What about idetools? |
20:05:01 | Araq | onionhammer: we still do cs:none for all command line things |
20:05:19 | ldlework | found it |
20:05:21 | Araq | and will keep this way |
20:06:19 | * | gunn joined #nim |
20:06:58 | * | pjc quit (Ping timeout: 246 seconds) |
20:07:15 | ldlework | If you have a type which is generic, do you have to also make all of its method's generic too? |
20:07:20 | ldlework | wait no |
20:07:31 | ldlework | well yeah |
20:07:59 | * | Sergio965 quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
20:08:23 | onionhammer | ldlework http://nim-lang.org/manual.html#type-classes |
20:08:41 | * | enquora joined #nim |
20:08:54 | ldlework | I'm starting to feel my brain melt |
20:09:56 | * | yonson quit (Quit: Leaving) |
20:10:39 | Araq | ldlework: there are implicit generics in Nim. so when you do: |
20:10:46 | Araq | type Foo[T] = object |
20:11:04 | Araq | proc p(f: Foo) # p is implicitly generic with parameter T |
20:12:02 | ldlework | interesting |
20:12:20 | onionhammer | is that true of objects too? |
20:12:23 | * | t4nk680 joined #nim |
20:13:15 | t4nk680 | Hello, I am currently trying to use sfml with nimrod. I have installed bindings with nimble. |
20:13:45 | t4nk680 | It compiles fine, but when I try and run it can't seem to find it 'could not load: libcsfml-window.so' |
20:14:22 | t4nk680 | I have installed csfml and sfml |
20:15:13 | def- | t4nk680: is the libcsfml-window.so in /usr/lib, /usr/local/lib or somewhere? |
20:15:15 | t4nk680 | and usr/lib/libcsfml-window.so exits in /usr/lib |
20:15:21 | t4nk680 | Yes |
20:16:05 | def- | that's strange. does it work if you copy the libcsfml-window.so to your current directory? |
20:16:27 | t4nk680 | Let me just try |
20:16:42 | def- | ah,and is the libcsfml-window for the right architecture? might be a 32bit/64bit problem |
20:17:14 | t4nk680 | Still does not work when 64bit version into dir |
20:17:46 | matkuki | t4nk680: BlaXpirit_ can probably help, he's the SFML bindings creator. |
20:17:56 | t4nk680 | Am I compiling the nimrod program with the wrong arch? |
20:17:56 | BlaXpirit_ | hi |
20:17:59 | t4nk680 | Hey |
20:18:31 | def- | t4nk680: you can check with the "file" program |
20:18:37 | BlaXpirit_ | t4nk680, what is your distro? |
20:18:46 | t4nk680 | Arch linux |
20:18:48 | BlaXpirit_ | ok |
20:18:53 | BlaXpirit_ | csfml is broken on arch linux |
20:19:00 | t4nk680 | Ahh ok |
20:19:19 | BlaXpirit_ | i wrote to package maintainer today |
20:19:24 | BlaXpirit_ | he doesnt wanna take action |
20:19:28 | t4nk680 | Maybe using aur package |
20:19:34 | t4nk680 | Build from source? |
20:19:38 | BlaXpirit_ | let's go to private message |
20:19:47 | t4nk680 | OK |
20:24:45 | BlaXpirit_ | but damn, sure is a ton of people using arch linux |
20:25:48 | t4nk680 | Yeah, its kinda grown recently. |
20:26:29 | t4nk680 | People moving away from bloated distros |
20:32:59 | dom96 | Araq: What about idetools? How's work on them coming along? |
20:33:32 | Araq | dom96: as usual there is more pressing work tbd |
20:33:36 | Araq | :-( |
20:33:45 | Araq | but maybe next week |
20:33:46 | dom96 | :\ |
20:37:59 | * | matkuki quit (Quit: ChatZilla 0.9.91.1 [Firefox 34.0.5/20141126041045]) |
20:38:59 | UberLambda | I'm on Arch after a lot of time on Linux Mint |
20:39:20 | UberLambda | Too much bloat, updates could kill the system and rolling release is really nice |
20:39:24 | Varriount | Araq: What is Nim's behavior with regard to 'undefined behavior' in the C/C++ backend? |
20:40:28 | Araq | UberLambda: I'm on Linux Mint with RR and I'm still waiting for the update that makes my X-window system from crashing hard |
20:40:43 | Araq | *makes it stop |
20:41:04 | Araq | Varriount: we try to avoid it, but currently not too hard. |
20:42:15 | UberLambda | Araq: try installing Arch on a VM, I think you'd like it |
20:42:36 | UberLambda | Setting it up requires some time but afterwards it doesn't take any long manteinance |
20:42:52 | Araq | yeah, been there, tried it, took too much time |
20:43:03 | UberLambda | I found that I had spent more time fixing Mint's update issues than setting up Arch |
20:43:18 | BlaXpirit_ | yup |
20:43:22 | UberLambda | In the end, you can make a nice, fully-configured system in ~3 hours |
20:43:28 | Araq | I don't fix my linux setups anymore |
20:43:39 | UberLambda | You wipe & reinstall? |
20:43:48 | t4nk680 | Think Arch's setup is complicated? try gentoo :) |
20:44:01 | Araq | I live with the bugs until it becomes too hard |
20:44:08 | Araq | then I wipe & reinstall |
20:44:12 | BlaXpirit_ | since i've installed arch, i haven't reinstalled. enough said. |
20:44:18 | UberLambda | Araq: I think this way you lose a lot of productivity |
20:44:24 | joecodes | is there a website like npmjs.com for searching for nim packages? currently looking for a dns lib... want to be able to async send dns questions to particular servers for each question (each question to different server). |
20:44:32 | UberLambda | I've been running the same install for 3 years now |
20:44:51 | BlaXpirit_ | joecodes, i think it's in the works |
20:44:52 | def- | joecodes: the packages should be in http://nim-lang.org/lib.html |
20:45:03 | BlaXpirit_ | that's for now, i suppose |
20:45:25 | BlaXpirit_ | search for DNS returns nothing |
20:45:34 | BlaXpirit_ | this is your time to shine, make bindings xD |
20:45:40 | dom96 | joecodes: You can search using Nimble: nimble search dns |
20:46:33 | joecodes | thanks. yeah no dns. I will install nimble. |
20:46:35 | def- | joecodes: for DNS I used this: http://nim-lang.org/rawsockets.html#getHostByName,string |
20:46:39 | * | Sphax joined #nim |
20:46:40 | Araq | UberLambda: most of the time I'm on windows so no, I don't lose a lot of productivity ;-) |
20:48:05 | joecodes | thanks def- I need to send the query to the authoritative nameserver for each query, so getHostByName won't work |
20:48:52 | UberLambda | Araq: I just couldn't move from a UNIX-like environment once having tried it |
20:49:10 | UberLambda | Also, Valve pushing a lot of games to Steam for Linux made my switch almost complete |
20:49:15 | Araq | I hate unix with a passion :-) |
20:49:28 | UberLambda | Araq: I hate Windows with a passion :P |
20:49:52 | joecodes | I use ubuntu and rarely have probs. chose it because there are so many answers to common problems out there. |
20:50:35 | * | gour quit (Quit: Leaving) |
20:51:41 | * | t4nk048 joined #nim |
20:54:13 | * | t4nk680 quit (Ping timeout: 246 seconds) |
20:56:11 | * | BlaXpirit_ was gonna write something, but rethought |
21:00:49 | joecodes | alrighty, am now nimble enabled :-). Someone needs to write a golang -> nim transpiler to get all those sweet sweet libraries :-) |
21:02:10 | Varriount | Meep. |
21:02:29 | Varriount | Araq: Apparently the testers are fixed, even without my patch. |
21:15:38 | Varriount | Araq: And I just made a change to the 32 bit portion of the registry that should prevent the WER dialogue from stalling the tester. |
21:16:13 | * | Sergio965 joined #nim |
21:18:06 | Varriount | Hello Sergio965 |
21:18:12 | Sergio965 | Hi! |
21:19:03 | * | Mat4 joined #nim |
21:19:17 | Varriount | Hey Mat4 |
21:19:30 | Mat4 | hi Varriount and all |
21:21:52 | * | t4nk048 quit (Ping timeout: 246 seconds) |
21:22:05 | * | gokr_ joined #nim |
21:22:34 | * | irrequietus joined #nim |
21:24:03 | * | jokra quit (Ping timeout: 256 seconds) |
21:39:03 | * | adam_s joined #nim |
21:40:17 | * | jokra joined #nim |
21:45:07 | * | gokr joined #nim |
21:47:19 | * | gokr_ quit (Ping timeout: 245 seconds) |
21:48:18 | * | irrequietus quit () |
21:48:34 | * | irrequietus joined #nim |
21:54:34 | * | t4nk988 joined #nim |
22:01:03 | t4nk988 | What is an ideal way to store loaded game levels from csv in nimrod? |
22:01:49 | t4nk988 | seq[seq[]] as in y[x] ? |
22:02:37 | ekarlso- | t4nk988: is ti key value ? |
22:02:58 | t4nk988 | Represents tile type |
22:03:06 | * | UberLambda quit (Quit: Leaving the Matrix) |
22:03:17 | t4nk988 | for example 1 = solid |
22:03:30 | * | gokr1 joined #nim |
22:03:34 | EXetoC | yes. y[x] will yield a seq[] |
22:03:50 | dom96 | use an enum for your tile types |
22:04:07 | t4nk988 | dom96: Already done that :p |
22:05:06 | dom96 | good |
22:10:58 | * | Demon_Fox joined #nim |
22:11:58 | * | Sergio965 quit (Remote host closed the connection) |
22:12:15 | flaviu | t4nk988: btw, seq[seq[...]] might not be ideal, you might want to use a single seq instead. Less indirection, and you can make a wrapper so that the syntax is similar. |
22:12:37 | def- | flaviu: if it's fixed size at least |
22:12:42 | t4nk988 | How would I use a single seq flaviu ? |
22:13:27 | t4nk988 | Ahh I understand |
22:13:34 | flaviu | t4nk988: A single seq of size x * y, with access to idx (x, y) being (y * width + x) |
22:14:01 | def- | like this: https://github.com/def-/nim-unsorted/blob/master/bitmap.nim#L39-L40 |
22:14:06 | EXetoC | I don't think it will matter, but I don't bother with 2d arrays in such cases |
22:14:23 | t4nk988 | What do you mean EXetoC? |
22:14:54 | flaviu | def-: You should put a licence file in that repo. |
22:15:13 | def- | flaviu: i don't care about licenses, do what you want with the code |
22:15:13 | flaviu | Otherwise, no one can use that code. |
22:15:28 | def- | flaviu: isn't it public domain without a license? |
22:15:45 | flaviu | def-: Just the opposite. If you don't have a licence, no one is allowed to touch it. |
22:16:32 | * | Sergio965 joined #nim |
22:16:33 | * | Sergio965 quit (Client Quit) |
22:16:37 | t4nk988 | http://schep.me/license-checker/ def- flaviu |
22:17:29 | def- | i don't even want to read about licenses |
22:18:01 | def- | the code is mostly from rosetta code, so it's their license |
22:18:23 | t4nk988 | def-: Its not, you enter your username and it checks to see if licenses are present in your repos |
22:19:17 | ekarlso- | is there like a DateTime equiv in nim ? |
22:19:41 | def- | ekarlso-: times? |
22:19:49 | ekarlso- | kewl :D |
22:20:07 | BlaXpirit_ | def-, http://choosealicense.com/no-license/ |
22:20:38 | t4nk988 | Haven't seen that before, BlaXpirit_ thanks. |
22:20:51 | flaviu | def-: If you wrote the code, you decide the license. Rosetta code requires you license it under the GNU Free Documentation License 1.2, but the terms of that are too complicated for my tastes. |
22:21:29 | flaviu | def-: If you want something permissive, http://choosealicense.com/licenses/mit/ is a good choice. |
22:22:53 | ekarlso- | oh well, part 1 of JWx stuf done |
22:22:56 | ekarlso- | tmrw more ! :D |
22:23:44 | flaviu | ekarlso-: were you able to figure out why the C and nim code weren't matching up? |
22:24:29 | ekarlso- | flaviu: ya, what EXetoC said :) |
22:24:52 | * | t4nk988 quit (Ping timeout: 246 seconds) |
22:25:28 | flaviu | ekarlso-: No, I accidentally gisted the wrong file. |
22:25:32 | flaviu | https://gist.github.com/3e0b5a52fe9395fcf5c5 is the correct one |
22:25:51 | * | jokra quit (Ping timeout: 264 seconds) |
22:26:02 | ekarlso- | flaviu: yeah, but I managed to make it work before that too ;) |
22:26:36 | flaviu | ekarlso-: My problem is this: https://gist.github.com/flaviut/8e3464016063ea83f622 |
22:26:53 | flaviu | The code seems identical, but the output is different. |
22:27:04 | ekarlso- | :/ |
22:27:24 | ekarlso- | i guess the hash should be identical ? |
22:27:50 | flaviu | yep |
22:28:01 | BlaXpirit_ | ekarlso-, but what if it uses gcc? |
22:28:18 | BlaXpirit_ | nvm |
22:28:19 | ekarlso- | BlaXpirit_: ? |
22:28:23 | flaviu | exactly the same output |
22:28:38 | ekarlso- | flaviu: ping when u find the reason ;p' |
22:29:11 | ekarlso- | what's the equiv of atomic stuff in nim ? |
22:29:14 | ekarlso- | or locks |
22:29:47 | def- | http://nim-lang.org/locks.html |
22:29:56 | ekarlso- | kewl |
22:30:16 | * | Boscop__ joined #nim |
22:30:17 | ekarlso- | was gonna start a metrics library also a'la go-metrics or coda hale style to be exact |
22:30:36 | EXetoC | units? |
22:30:52 | ekarlso- | EXetoC: ? :Å |
22:30:56 | * | nande joined #nim |
22:31:41 | EXetoC | nvm |
22:32:49 | ekarlso- | EXetoC: like u have a registry ish thing where you can register diff types of metrics.. |
22:33:27 | * | Boscop joined #nim |
22:33:27 | * | Boscop quit (Changing host) |
22:33:27 | * | Boscop joined #nim |
22:33:39 | * | adam_s quit (Ping timeout: 264 seconds) |
22:33:59 | * | Boscop_ quit (Ping timeout: 245 seconds) |
22:35:15 | flaviu | ekarlso-: a database? |
22:36:26 | ekarlso- | flaviu: https://github.com/rcrowley/go-metrics < like that |
22:36:31 | * | Boscop__ quit (Ping timeout: 272 seconds) |
22:37:02 | * | BlaXpirit_ quit (Quit: Quit Konversation) |
22:39:19 | * | yonson joined #nim |
22:41:11 | * | mwbrown joined #nim |
22:41:49 | mwbrown | Anyone here to answer a quick question regarding reference types? |
22:42:44 | dom96 | mwbrown: There is lot's of people here. You should just ask your question instead of asking to ask. |
22:42:46 | def- | mwbrown: hi. a few are here, what's the question? |
22:43:20 | mwbrown | So on the tutorial (it's been a while since I touched Nim) here: http://nim-lang.org/tut1.html#reference-and-pointer-types |
22:43:35 | mwbrown | It declares both Node and NodeObj, NodeObj being "ref Node" |
22:43:47 | * | jokra joined #nim |
22:44:00 | mwbrown | it's easy to go from a NodeObj to a Node via new() and then accessing it normally, but is there a way to create a tracked reference from one that was NOT allocated via new? |
22:44:12 | mwbrown | i.e. you have a function that takes NodeObj but you only have a Node |
22:44:44 | mwbrown | I am assuming that any non-reference types are allocated either on the stack or in the .bss section |
22:45:51 | joecodes | dom96 how to set port for jester? argument to runForever? |
22:45:53 | ekarlso- | dom96: hirr would u be interested in jwt ? |
22:45:55 | mwbrown | I tried using addr but it complained about getting a "ptr" instead of a "ref" |
22:46:31 | dom96 | joecodes: var settings = newSettings(port = Port(1234)) |
22:46:59 | dom96 | mwbrown: There is not. |
22:47:04 | dom96 | ekarlso-: No, sorry. |
22:47:17 | ekarlso- | dom96: darn |
22:47:21 | mwbrown | dom96: in that case should I just use ptr types for those use cases? |
22:47:30 | joecodes | dom96: thanks! |
22:47:43 | * | Sphax quit (Quit: ZZZZZzzzzz) |
22:48:12 | dom96 | mwbrown: what is your use case? |
22:48:39 | mwbrown | dom96: I want to statically allocate a structure (this is aimed for embedded) and want to pass it around by reference in the safest manner possible provided by Nim |
22:48:41 | * | Sphax joined #nim |
22:48:44 | dom96 | joecodes: That will soon become: settings:\n port = TPort(1234). |
22:48:49 | dom96 | or something similar. |
22:48:52 | ekarlso- | dom96: u not interested in web stuffs ? |
22:49:04 | dom96 | ekarlso-: I'm not interested in JWT. |
22:49:08 | flaviu | ekarlso-: Just write the thing, if people are interested, they'll use it. |
22:49:18 | ekarlso- | okok :P |
22:49:54 | dom96 | mwbrown: You want to allocate it on the stack? |
22:50:08 | joecodes | dom96: ok. will keep an eye out for it. |
22:50:14 | mwbrown | dom96: Either that or in the .bss like you would a static in C |
22:50:21 | ekarlso- | that's the sad thing though, if I create something that people dont wanna use then doh |
22:50:58 | dom96 | mwbrown: You should use 'var Type' I think: http://nim-lang.org/tut1.html#parameters |
22:51:01 | dom96 | Second example. |
22:51:30 | dom96 | ekarlso-: What happened to you creating the packages site? |
22:51:37 | ekarlso- | dom96: still going |
22:51:43 | ekarlso- | dom96: need a token mechanism.. |
22:51:44 | flaviu | ekarlso-: don't think that way, you're just setting yourself up to be disappointed. |
22:52:06 | Araq | mwbrown: use 'ptr' or 'var' it doesn't really matter. 'var' is a bit safer though. |
22:52:06 | dom96 | If you're going to use it then that's enough reason to create a library for it. |
22:52:13 | onionhammer | build something *you* want to use ekarlso- |
22:52:23 | mwbrown | dom96, Araq: Thanks a lot! |
22:52:33 | flaviu | Exactly. If others find it useful then great! |
22:55:03 | * | Sphax quit (Quit: ZZZZZzzzzz) |
22:55:38 | mwbrown | yup, just confirmed that a top-level var is in the bss and a var inside a proc is stack-allocated |
22:55:51 | mwbrown | by printing the addresses. That works for me! |
22:56:54 | joecodes | dom96: so each route block is not async by default? so tried something like: await resp intToStr(fib(45)) but compile error. |
22:57:23 | dom96 | joecodes: it is, you don't need 'await' in that case. |
22:57:51 | Araq | mwbrown: you can write C-like code very easily in Nim. |
22:58:37 | joecodes | hmmm. i tried and when long request (fib(45)) runs, it seems to block all other requests. this is from jester installed with nimble install jester |
22:59:23 | Araq | joecodes: because it's blocks your *cpu*. |
22:59:41 | Araq | this is not multi-threaded, async only helps with *io* |
23:00:02 | Araq | use spawn when you block your cpu |
23:00:18 | joecodes | ok thanks. |
23:00:47 | ekarlso- | Araq: how would you go about calling a proc every x seconds ? |
23:01:07 | ekarlso- | without blocking |
23:01:27 | dom96 | while true + await sleepAsync |
23:01:59 | ekarlso- | does the proc you're calling then need to be async ? |
23:02:17 | dom96 | yes |
23:02:29 | dom96 | 'await' needs to be in an async proc |
23:03:15 | * | matkuki joined #nim |
23:03:21 | EXetoC | can one make sure that no GC allocations are made? a simple hack perhaps |
23:03:43 | * | BitPuffin quit (Ping timeout: 245 seconds) |
23:05:12 | ldlework | ekarlso-: can you paste a simple example if you get that working |
23:05:14 | * | atomic-hedgehog quit (Ping timeout: 245 seconds) |
23:05:28 | ekarlso- | ldlework: hah, testing me or ? :p |
23:06:00 | ldlework | ekarlso-: I'm just curious |
23:06:03 | ekarlso- | ;p |
23:06:58 | ekarlso- | ldlework: lemme see |
23:07:10 | Araq | EXetoC: you can use --gc:none and the compiler tells you |
23:08:10 | EXetoC | yeah I did something wrong |
23:11:03 | * | matkuki quit (Quit: ChatZilla 0.9.91.1 [Firefox 34.0.5/20141126041045]) |
23:12:46 | * | Sphax joined #nim |
23:13:05 | * | Sphax quit (Client Quit) |
23:15:36 | * | Hakaslak joined #nim |
23:16:34 | ekarlso- | dom96: I was wondering if we could have nimble at a point have a register package call ? |
23:16:44 | dom96 | sure |
23:17:23 | ekarlso- | and a release also (version etc) |
23:20:51 | * | mwbrown quit (Ping timeout: 252 seconds) |
23:21:04 | * | irrequietus quit () |
23:21:43 | * | Demon_Fox quit (Quit: Leaving) |
23:21:54 | * | adam_s joined #nim |
23:24:11 | * | sillesta quit (Ping timeout: 256 seconds) |
23:24:43 | Varriount | Hm.. Should I put in the "Common Conventions and Practices" guide to use something like koch for complicated make-like configurations? |
23:25:05 | Varriount | I mean, the compiler does it, and it works fairly well... |
23:26:40 | fowl | koch should be a nakefile |
23:31:56 | onionhammer | you should work on nimlime :p |
23:35:11 | Varriount | onionhammer: A) What should I do, B) I would, if you can do my math homework for me. |
23:37:47 | EXetoC | seems like a fair tradeoff |
23:37:49 | flaviu | Varriount: pfft, math. |
23:38:32 | flaviu | who needs that? |
23:39:26 | * | adam_s left #nim ("Leaving") |
23:45:24 | onionhammer | Varriount semi-kidding. The main thing that needs to happen is idetools |
23:51:07 | EXetoC | flaviu: noobs |