00:00:55 | BitPuffin | there will be some lociking though, because in the interval on how long you've set a session to expire each substore will go through their sessions and cleanup expired ones |
00:01:36 | BitPuffin | although maybe I should offset that so that so that they are not all locked at the same time |
00:12:39 | reactormonk | flaviu, kewl |
00:18:00 | Varriount | EXetoC: What kind of pragma were you trying to apply to a foreign proc? |
00:18:43 | * | bjz joined #nimrod |
00:20:09 | * | bjz_ quit (Ping timeout: 250 seconds) |
00:25:16 | dom96 | BitPuffin: Let the user create a session per thread. |
00:25:27 | dom96 | i.e. let the user worry about it |
00:26:40 | dom96 | 'night |
00:51:08 | * | brson quit (Ping timeout: 245 seconds) |
00:51:46 | BitPuffin | dom96: I dunno if I wanna do that |
00:52:02 | BitPuffin | dom96: creating lots of threads like that is very expensive |
00:52:10 | BitPuffin | the point of it is to be able to handle massive amounts of sessions |
00:52:14 | BitPuffin | night |
00:53:03 | BitPuffin | and I really want the interface to just be store.genSession() and store[session.id].hasExpired() basically. So that any monkey can use it |
00:53:19 | * | brson joined #nimrod |
00:55:21 | * | q66 quit (Quit: Leaving) |
01:35:18 | flaviu | Does nimrod have green threads? |
01:39:17 | BitPuffin | nimrod doesn't run in a vm |
01:39:23 | BitPuffin | ell |
01:39:30 | BitPuffin | I guess maybe with the vm |
01:40:00 | BitPuffin | not sure why you'd want 'em though, brb |
01:43:46 | EXetoC | ä |
01:43:58 | flaviu | Well, they'd allow for a crap ton of threads like you want, but I guess that 'fiber' would be a better term. |
01:44:39 | * | BitPuffin quit (Ping timeout: 250 seconds) |
02:18:00 | EXetoC | {.importc: "glFoo", .ogl.} gives me this apparently: Pragma StrLit glFoo Ident !"ogl". bug? |
02:20:37 | * | OrionPK quit (Ping timeout: 250 seconds) |
02:22:31 | flaviu | EXetoC: Whats going in `.ogl`? |
02:25:46 | flaviu | I can't get it to compile without removing the dot. |
02:26:38 | EXetoC | disregard the dot |
02:26:42 | EXetoC | flaviu: {.pragma: ogl, header: "<GL/glew.h>".} |
02:30:44 | EXetoC | this node doesn't have a plural name, so I don't know how it works in this case with multiple pragmas |
02:31:35 | * | BitPuffin joined #nimrod |
02:32:32 | BitPuffin | o/ |
02:34:05 | flaviu | BitPuffin: Well, they'd allow for a crap ton of threads like you want, but I guess that 'fiber' would be a better term. |
02:35:11 | BitPuffin | flaviu: ah, then I'm more familiar with what you are saying |
02:35:11 | flaviu | EXetoC: Definitely looks like a bug |
02:35:22 | BitPuffin | flaviu: however aren't they all still on the same thread? |
02:35:33 | BitPuffin | the point of having the many cores in this case is to utilize all the cores |
02:35:39 | flaviu | You'd have a thread pool, so everything would be spread out |
02:35:49 | BitPuffin | hmm |
02:35:56 | BitPuffin | well |
02:36:23 | BitPuffin | I don't really think I can get a lock free thing without doing it this way |
02:36:37 | flaviu | I have no idea what I'm talking about. I've just used then, not implemented them |
02:36:41 | BitPuffin | because each thread will have their own slice of the store in their local heap |
02:36:52 | BitPuffin | yeah well I don't really know either |
02:37:28 | flaviu | Maybe use the actors library? Send them an anon function and have them execute it? |
02:38:05 | flaviu | The goal would be to define everything in terms of functions that don't care where they're executed |
02:38:08 | BitPuffin | well if I did that they would have to lock a big global store instead |
02:38:11 | BitPuffin | which would probably be slower |
02:41:33 | flaviu | EXetoC: Nimrod has a class that renders ASTs back to source code, it outputs something like {."glFoo", ogl.}, which is definitely a bug, if only in the renderer |
02:41:51 | flaviu | But I doubt its only in the renderer |
02:45:37 | flaviu | BitPuffin: Actors seem to be lock-free |
02:47:20 | BitPuffin | flaviu: the actors themself maybe but they can't just magically access data without locks can they? o.O |
02:48:05 | flaviu | Can you structure things so that everything is readonly? |
02:49:07 | BitPuffin | flaviu: not really, the whole thing with a session store is that it is rw intensive |
02:57:11 | flaviu | BitPuffin: http://doc.akka.io/docs/akka/1.3.1/scala/tutorial-chat-server.html#Session_management |
02:57:20 | flaviu | Not nimrod, but I'm sure it could work |
02:57:25 | flaviu | its a start at least |
02:57:38 | BitPuffin | I'll take a looksy |
02:57:51 | BitPuffin | ofc it's not nimrod, otherwise I wouldn't be writing a session store for nimrod :P |
03:00:47 | flaviu | BitPuffin: Well, reading more they go on to say that that approach doesn't work very well |
03:00:57 | BitPuffin | haha |
03:01:01 | BitPuffin | well hrm |
03:01:09 | BitPuffin | I think my design is pretty alright |
03:01:19 | BitPuffin | just need to implement it and try to benchmark it with like a million sessions |
03:02:23 | * | brson quit (Quit: leaving) |
03:18:18 | * | Jesin joined #nimrod |
03:19:27 | flaviu | BitPuffin: Do you have to lock on the entire array? Just lock on each object when it's requested, and unlock when its return. |
03:19:27 | flaviu | You're probably already doing that though and I have no idea what I'm talking about. Night. |
03:19:30 | * | flaviu quit (Quit: Leaving.) |
03:20:41 | Varriount | Hi Jesin |
03:20:52 | Jesin | hi |
03:40:50 | * | Jesin quit (Quit: Leaving) |
04:06:16 | * | xenagi quit (Quit: Leaving) |
04:17:47 | * | OrionPK joined #nimrod |
05:00:59 | * | Varriount quit (Read error: Connection reset by peer) |
05:07:33 | * | Varriount joined #nimrod |
05:26:10 | * | DAddYE joined #nimrod |
05:26:41 | * | bjz_ joined #nimrod |
05:27:44 | * | bjz quit (Ping timeout: 258 seconds) |
05:35:18 | * | DAddYE quit (Ping timeout: 245 seconds) |
06:55:54 | Varriount | fowl: Even after some fixes, I'm getting an "Error: unhandled exception: Unknown operating system." exception when running your allegro test example. |
06:58:46 | Varriount | fowl: Oh, fixed that error, now I get an illegal storage access during the "redraw" call. |
08:22:56 | * | nande quit (Read error: Connection reset by peer) |
09:33:31 | * | omgeewtfbbq joined #nimrod |
09:33:57 | * | omgeewtfbbq left #nimrod (#nimrod) |
09:46:35 | * | seubert quit (Ping timeout: 240 seconds) |
09:46:41 | * | seubert joined #nimrod |
09:47:29 | * | io2 joined #nimrod |
09:53:30 | * | noam_ joined #nimrod |
09:53:49 | * | faassen joined #nimrod |
09:56:36 | * | noam quit (Ping timeout: 252 seconds) |
10:08:45 | * | BitPuffin quit (Ping timeout: 252 seconds) |
10:40:04 | * | |apriori| joined #nimrod |
10:40:15 | |apriori| | Varriount, are you here? |
10:40:32 | dom96 | 'morning |
10:40:38 | |apriori| | hello dom96 |
10:40:44 | dom96 | hello |apriori| |
10:40:49 | |apriori| | it's been a loong time I've been here |
10:41:14 | dom96 | indeed. How have you been? |
10:41:17 | |apriori| | *since I last have been here |
10:41:28 | |apriori| | well, busy with studies.. in the process of finishing them |
10:41:44 | |apriori| | and.. playing with other languages as well.. mainly haskell and idris |
10:42:12 | dom96 | ahh, i'm in the same boat in regards to studies. |
10:42:52 | |apriori| | it was kinda funny to see getting spammed at with tons of mails, regarding nimrod bugs etc. on github |
10:42:59 | |apriori| | I still did not deregister |
10:43:01 | dom96 | I've read about Idris, is it any good? |
10:43:24 | |apriori| | well, it will take time. stability is not exactly that great. currently suffering from "featureritis".. |
10:43:25 | dom96 | You can disable emails if they bother you in Github settings. |
10:43:27 | dom96 | I did that. |
10:43:41 | dom96 | It only then sends emails when you comment on issues, or when the issues are your own. |
10:43:46 | |apriori| | the idea behind is kind of awesome, though |
10:43:54 | |apriori| | yeah, might look into that.. |
10:44:02 | |apriori| | but that's actually not the reason why I'm here |
10:44:19 | |apriori| | Varriount opened an issue on my nimCL (opencl binding for nimrod) |
10:44:22 | dom96 | I recently fixed some things in Nimrod's JS backend and made this: http://build.nimrod-lang.org/docs/lib.html#babel |
10:44:41 | |apriori| | Now I've seen that nimrod itself already includes a more recent version. So I ask, can I get rid of that repository alltogether? |
10:45:01 | |apriori| | yeah, I've read about babel |
10:45:21 | |apriori| | good thing - many language miss something like it. |
10:45:47 | |apriori| | I mean, I see it with cabal on haskell... I really something like that on other languages. Even though it can be (and will be) a bitch sometimes |
10:46:10 | |apriori| | *I really miss |
10:46:24 | dom96 | The package list is dynamically generated with JS generated by Nimrod though :) |
10:46:31 | dom96 | Also, I would keep the repo. |
10:46:46 | dom96 | Araq's opencl binding may not be complete. |
10:47:01 | dom96 | I think he didn't realise that you wrapped it already |
10:47:03 | |apriori| | hm.. mine might not be eitehr, actually. |
10:47:14 | |apriori| | he did.. but I did not longer maintain it |
10:47:18 | |apriori| | that's why he "forked" |
10:47:40 | dom96 | Still. No harm in keeping both. |
10:47:46 | |apriori| | okay |
10:51:31 | |apriori| | anyway, dom96, I wish you guys good luck and all the best (including success with nimrod). I gotta go again. |
10:52:41 | * | |apriori| quit (Quit: Leaving) |
10:55:40 | EXetoC | dom96: do you know how construct a node that contains multiple pragmas, some of which are given arguments? {.p: "x".} outputs "Pragma StrLit "x" |
10:56:29 | EXetoC | this might be a bug, but I don't know if it means that I cannot currently do this |
10:57:10 | EXetoC | A series of argument-less pragmas gives me Pragma Ident !"x" Ident !"y" |
11:18:04 | * | BitPuffin joined #nimrod |
11:20:38 | dom96 | EXetoC: newNimNode(nnkPragma).add(newStrLit("x")) ? |
11:27:06 | * | foodoo joined #nimrod |
11:29:11 | EXetoC | dom96: isn't that {."x".}? |
11:29:35 | dom96 | Probably. I was going by what you said it outputs. |
11:30:01 | dom96 | So dumpTree gives you that? |
11:30:43 | dom96 | You're right. That does seem like a bug. |
11:31:03 | dom96 | probably a bug in treeRepr |
11:31:59 | EXetoC | you think it's actually Pragma followed by a list in reality? I don't know what the structure should be |
11:33:12 | EXetoC | Pragma StmtList .. ? |
11:33:26 | dom96 | I'd say it's probably Pragma, Ident !"x", StrLit "blah" |
11:34:06 | EXetoC | and {.a: "x", .b: "y".}? |
11:34:15 | EXetoC | oops, too many dots once again |
11:34:56 | dom96 | let me try to fix it |
11:36:02 | dom96 | 0_o |
11:36:54 | foodoo | "oops I dots it again" - Britney Spears |
11:37:12 | dom96 | foodoo: hah |
11:37:25 | dom96 | EXetoC: It seems this bug goes much further than treeRepr |
11:41:04 | dom96 | EXetoC: When you dumpTree a 'var x {.importc: "asdf".} = 5' it gives: PragmaExpr (Ident !"x", Pragma(StrLit asdf)) |
11:41:38 | dom96 | in any case: bug report |
12:04:11 | EXetoC | obviously |
12:27:35 | * | foodoo quit (Quit: leaving) |
12:53:54 | * | io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist) |
13:09:01 | * | mwcampbell joined #nimrod |
13:09:55 | mwcampbell | I think fmtmsg() and the associated constants should be removed from lib/posix/posix.nim. It doesn't appear that anything actually uses it, and it's not implemented in musl libc (alternative libc for Linux). |
13:11:08 | Araq | mwcampbell: it's part of posix though. |
13:11:21 | Araq | so why remove it? don't use it if you don't have it |
13:11:46 | Araq | maybe posix.nim is missing a .deadCodeElim:on |
13:13:52 | mwcampbell | Is dead code elimination only done in release mode? |
13:14:21 | mwcampbell | I can't bootstrap Nimrod with musl libc because I don't have fmtmsg.h |
13:14:33 | mwcampbell | even though nothing uses fmtmsg |
13:15:03 | Araq | yeah it's only done in release mode unless you turn it on per module |
13:15:13 | Araq | with {.deadCodeElim:on.} |
13:15:24 | Araq | add that to posix.nim please and see if it helps |
13:20:27 | * | [1]Endy joined #nimrod |
13:31:13 | * | darkf quit (Quit: Leaving) |
13:39:59 | * | [2]Endy joined #nimrod |
13:40:48 | * | mwcampbell quit (Remote host closed the connection) |
13:42:29 | * | [1]Endy quit (Ping timeout: 240 seconds) |
14:00:32 | * | [1]Endy joined #nimrod |
14:03:17 | * | [2]Endy quit (Ping timeout: 240 seconds) |
14:21:04 | * | [2]Endy joined #nimrod |
14:23:57 | * | [1]Endy quit (Ping timeout: 252 seconds) |
14:41:31 | * | [1]Endy joined #nimrod |
14:44:56 | * | [2]Endy quit (Ping timeout: 276 seconds) |
15:00:05 | * | Fernandos joined #nimrod |
15:00:06 | * | Fernandos quit (Changing host) |
15:00:06 | * | Fernandos joined #nimrod |
15:01:41 | * | Fernandos quit (Client Quit) |
15:02:03 | * | [2]Endy joined #nimrod |
15:03:01 | reactormonk | any special stringtables or just use tables? |
15:03:19 | dom96 | strtabs |
15:04:29 | * | [1]Endy quit (Ping timeout: 240 seconds) |
15:05:14 | reactormonk | dom96, nah, from strings to integers |
15:05:19 | reactormonk | I got my sparse word vectors |
15:08:10 | dom96 | use tables then |
15:11:51 | reactormonk | ok |
15:21:54 | * | [1]Endy joined #nimrod |
15:22:26 | fowl | Varriount, what was nil? can you do a PR for the stuff you fixed? |
15:24:49 | reactormonk | fastest way to ditch the first element of a seq? |
15:25:21 | * | [2]Endy quit (Ping timeout: 258 seconds) |
15:25:34 | reactormonk | aka drop(1) |
15:26:05 | fowl | you want to keep the order? |
15:29:37 | reactormonk | yup |
15:29:41 | reactormonk | [1..-1] for now |
15:30:22 | fowl | delete(0) will move every item down one |
15:31:50 | reactormonk | what's the regex module? |
15:31:52 | reactormonk | subex? |
15:32:04 | fowl | re |
15:37:20 | reactormonk | let relevantWords = words.split('|').filter do (word: string) -> bool: match(word[2],re"^(NN|JJ|VB).*") |
15:37:24 | reactormonk | good nimrod? |
15:38:32 | reactormonk | code.nim(10, 6) Warning: 'l' should not be used as an identifier; may look like '1' (one) [SmallLshouldNotBeUsed] |
15:38:34 | reactormonk | lol. |
15:41:17 | reactormonk | btw, how do I iterate over the lines of a file? via readline? |
15:42:15 | fowl | system.lines |
15:42:21 | reactormonk | muh |
15:42:22 | * | [2]Endy joined #nimrod |
15:42:38 | reactormonk | why not system.items(TFile) and make it use system.lines? |
15:42:40 | fowl | who when did the index get updated |
15:43:11 | fowl | reactormonk, someone might argue that the items of a file are bytes, not lines |
15:44:53 | reactormonk | fowl, yup |
15:45:19 | * | [1]Endy quit (Ping timeout: 250 seconds) |
16:01:58 | reactormonk | uhm, no `next` in iterators? |
16:02:13 | * | [1]Endy joined #nimrod |
16:02:28 | reactormonk | ah, continue. |
16:04:09 | * | Matthias247 joined #nimrod |
16:06:11 | * | [2]Endy quit (Ping timeout: 276 seconds) |
16:13:30 | reactormonk | hmm, my nimrod code is slower than the corresponding scala code :-/ |
16:16:27 | reactormonk | let relevantWords = words.filter do (x: string) -> bool: match(x.split('|')[2], re"^(NN|JJ|VB).*").map do (x: string) -> string: x.split(' ')[1] |
16:16:35 | reactormonk | gives me Error: type mismatch: got (bool, proc (string): string) |
16:18:48 | fowl | you need parens or something |
16:19:11 | fowl | you're calling map(match(..), func) |
16:19:53 | * | psquid quit (Ping timeout: 245 seconds) |
16:20:31 | reactormonk | ah sup |
16:20:54 | reactormonk | but which ones? |
16:21:02 | * | psquid joined #nimrod |
16:21:53 | * | [2]Endy joined #nimrod |
16:22:47 | reactormonk | ah, found it |
16:25:32 | * | [1]Endy quit (Ping timeout: 258 seconds) |
16:36:45 | reactormonk | do we have some kind of counter table? |
16:40:19 | EXetoC | in tables I think |
16:40:38 | EXetoC | TCountTable? |
16:40:50 | BitPuffin | I think I may have come up with a workaround for my linagl problem |
16:41:07 | * | io2 joined #nimrod |
16:42:21 | * | [1]Endy joined #nimrod |
16:44:41 | * | JStoker quit (Ping timeout: 255 seconds) |
16:45:07 | * | [2]Endy quit (Ping timeout: 252 seconds) |
16:46:22 | * | JStoker joined #nimrod |
16:54:22 | Araq | reactormonk: it's likely that you simply compare different regex engines. I'm pretty sure Java's regexes gained JIT support by now. There is also a version of pcre with JIT support but still the results can vary vastly |
17:00:51 | * | [2]Endy joined #nimrod |
17:03:52 | * | [1]Endy quit (Ping timeout: 258 seconds) |
17:12:12 | * | q66 joined #nimrod |
17:12:13 | * | q66 quit (Changing host) |
17:12:13 | * | q66 joined #nimrod |
17:13:08 | * | io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist) |
17:14:06 | * | io2 joined #nimrod |
17:20:05 | reactormonk | Araq, that might be possible. I'm using the regexp a lot. |
17:20:31 | * | nande joined #nimrod |
17:20:47 | * | DAddYE joined #nimrod |
17:21:21 | * | [1]Endy joined #nimrod |
17:22:49 | * | DAddYE quit (Read error: Connection reset by peer) |
17:23:09 | * | DAddYE joined #nimrod |
17:24:03 | * | [2]Endy quit (Ping timeout: 245 seconds) |
17:24:04 | * | DAddYE quit (Read error: Connection reset by peer) |
17:24:38 | * | DAddYE joined #nimrod |
17:27:19 | NimBot | nimrod-code/nimbuild master b10ece8 Dominik Picheta [+0 ±1 -0]: Builder: Force PATH change for koch tests execution. |
17:28:12 | Araq | gah, implementing the codegen support for 'spawn' is hard ... |
17:28:52 | dom96 | Araq: Cool. Someone donated some BTC to us. |
17:29:25 | Araq | yummy |
17:30:10 | dom96 | ~$100 worth. |
17:30:24 | Araq | yeah but rising! |
17:31:35 | * | q66 quit (Ping timeout: 252 seconds) |
17:32:04 | dom96 | lol |
17:32:16 | dom96 | It used to be $1000 per 1 BTC |
17:32:53 | Araq | we simply have to wait |
17:33:03 | Araq | next crisis is coming |
17:33:25 | Araq | and then bitcoins will be the new gold |
17:33:45 | dom96 | I think we should transform these bitcoins into dogecoin |
17:35:17 | * | q66 joined #nimrod |
17:35:18 | * | q66 quit (Changing host) |
17:35:18 | * | q66 joined #nimrod |
17:38:05 | * | io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist) |
17:38:56 | BitPuffin | dom96: that's gonna be a warning for you |
17:38:58 | fowl | dom96, doge is worthless |
17:38:59 | BitPuffin | god damn dogecoin |
17:39:46 | * | io2 joined #nimrod |
17:40:03 | dom96 | It was a joke! |
17:40:08 | * | [2]Endy joined #nimrod |
17:43:17 | * | [1]Endy quit (Ping timeout: 240 seconds) |
17:49:03 | BitPuffin | dom96: jokes are not allowed |
17:49:05 | BitPuffin | anyway |
17:49:21 | BitPuffin | I think I have come up with a possible workaround in linagl that will let me at least maybe work on ma gaem |
17:49:33 | Araq | good |
17:49:39 | EXetoC | does anyone know what AST corresponds to this pragma expr: {.a: "x", b: "y".}? I can't figure it out by dumping it because of a bug, which might or might not prevent me from also constructing it |
17:50:53 | Araq | nkPragma(nkExprColonExpr(a, "x"), ...) |
17:50:55 | reactormonk | dom96, 1.2k$ |
17:51:08 | EXetoC | thanks. will try that |
17:55:00 | * | shodan45 joined #nimrod |
17:56:55 | Araq | bbl |
18:00:24 | dom96 | reactormonk: ? |
18:06:22 | BitPuffin | at least if my assumption on why it's erroring in the first place is correct |
18:07:27 | * | vendethiel quit (Ping timeout: 250 seconds) |
18:07:49 | * | vendethiel joined #nimrod |
18:25:04 | * | [1]Endy joined #nimrod |
18:26:11 | * | cark quit (Ping timeout: 246 seconds) |
18:26:39 | reactormonk | dom96, 1.2k$ per bitcoin |
18:26:46 | dom96 | oh |
18:27:59 | * | cark joined #nimrod |
18:28:31 | * | [2]Endy quit (Ping timeout: 252 seconds) |
18:31:01 | * | brson joined #nimrod |
18:45:28 | * | [2]Endy joined #nimrod |
18:48:31 | * | [1]Endy quit (Ping timeout: 258 seconds) |
18:52:41 | * | gXen joined #nimrod |
18:53:09 | EXetoC | Araq: newNimNode(nnkPragma, newNimNode(nnkExprColonExpr).add(newIdentNode(!"...")...? |
18:59:09 | EXetoC | that gives me {..} |
19:05:58 | * | [1]Endy joined #nimrod |
19:08:33 | * | [2]Endy quit (Ping timeout: 250 seconds) |
19:14:14 | * | Mat3 joined #nimrod |
19:14:17 | Mat3 | hi all |
19:23:42 | EXetoC | Mat3: hi |
19:23:48 | EXetoC | what up |
19:26:32 | * | [2]Endy joined #nimrod |
19:27:24 | Mat3 | hi EXetoC |
19:27:29 | fowl | EXetoC, interesting |
19:28:11 | fowl | EXetoC, this is a regression |
19:28:49 | Mat3 | EXetoC: I am currently rewrite my VM in assembler (far more possibilities for optimization) |
19:29:03 | * | [1]Endy quit (Ping timeout: 245 seconds) |
19:32:00 | * | Mat3 is now known as Mat3-bbl |
19:32:10 | EXetoC | Mat3-bbl: neat |
19:32:13 | EXetoC | fowl: oh ok |
19:39:59 | EXetoC | what's the equivalent of dumpTree for PNimrodNode? |
19:41:04 | EXetoC | nevermind |
19:43:59 | fowl | treerepr/lisprepr |
19:44:07 | fowl | what u working on? |
19:46:59 | * | [1]Endy joined #nimrod |
19:49:51 | * | [2]Endy quit (Ping timeout: 258 seconds) |
19:59:58 | * | shodan45 quit (Quit: Konversation terminated!) |
20:07:30 | * | [2]Endy joined #nimrod |
20:10:35 | * | [1]Endy quit (Ping timeout: 276 seconds) |
20:26:41 | * | flaviu joined #nimrod |
20:28:00 | * | [1]Endy joined #nimrod |
20:31:12 | * | [2]Endy quit (Ping timeout: 265 seconds) |
20:31:39 | * | nande quit (Remote host closed the connection) |
20:33:16 | flaviu | fowl: He's found a bug in the pragma AST |
20:34:49 | EXetoC | he noticed |
20:36:05 | flaviu | Oh, I misunderstood the context |
20:36:34 | EXetoC | fowl: I found it is what I meant. I'm working on opengl error checking still |
20:36:49 | EXetoC | I'll just wait until it's fixed. I won't bother with your approach |
20:37:38 | Araq | EXetoC: are you certain it's a bug that matters? |
20:37:58 | Araq | looks to me the compiler rewrites the AST, but after semantic checking, so it might be fine |
20:40:55 | EXetoC | Araq: is that some time after the macro returns? I constructed such a pragma node that I showed you, and I do 'echo result.repr' at the very end |
20:41:46 | EXetoC | I'll keep working on it if it does indeed not matter |
20:42:14 | Araq | try an immediate macro |
20:42:15 | EXetoC | I won't be able to verify that part though, but the code is simple so I should be doing the right thing |
20:42:43 | fowl | Araq, if i call newStringOfCap in system.nim i get Error: system module needs 'rawNewString' |
20:43:04 | fowl | (this is after newStringOfCap is defined) |
20:43:23 | * | [2]Endy joined #nimrod |
20:45:07 | Araq | fowl: that means the compiler doesn't know 'rawNewString' yet |
20:45:21 | Araq | but the code generator asks for it |
20:46:05 | * | [1]Endy quit (Ping timeout: 240 seconds) |
20:47:53 | EXetoC | Araq: I'm sure why but ok. the pragma expr shows up correctly if I do "template t: stmt = {.importc: "1".}; p.pragma = getAst(t())[0]". I get an ICE some time after I print result.repr though |
20:48:24 | EXetoC | "error: expected identifier or ‘(’ before numeric constant N_NIMCALL(void, 1)(NI target, NI s, NI t)..." |
20:48:49 | fowl | Araq, rawNewString is the importc func for newStringOfCap |
20:49:04 | EXetoC | any idea if it might've been reported? it might be difficult to determine that but I'll do a search |
20:49:48 | Araq | EXetoC: has been reported already |
20:49:51 | EXetoC | ok |
20:52:37 | * | [2]Endy quit (Ping timeout: 252 seconds) |
20:53:05 | * | Mat3-bbl is now known as Mat3 |
20:59:50 | * | flaviu quit (Ping timeout: 246 seconds) |
21:15:17 | * | gXen quit () |
21:18:29 | * | flaviu joined #nimrod |
21:34:06 | fowl | hmm why doesnt shallowCopy show up on theindex.html |
21:34:29 | reactormonk | fowl, it's in system |
21:35:30 | fowl | i know |
21:36:58 | dom96 | weird |
21:41:28 | fowl | wtf ijust had an issue with shallow but it disappeared |
21:42:32 | Araq | well I applied a patch wrt shallow which might have produced a regression |
21:42:44 | fowl | ah i see |
21:42:55 | fowl | it works inside a block for some reason |
21:43:09 | Araq | it's broken beyond repair |
21:43:21 | Araq | so we declared it unsafe |
21:43:52 | Araq | the compiler sometimes knows better than you and generates a copy anyway |
21:44:11 | Araq | to keep a bit of memory safety |
21:50:15 | fowl | these are weird bugs https://github.com/Araq/Nimrod/issues/1094 |
21:50:36 | fowl | and Araq the compiler never knows better than me, i am a human |
21:51:31 | * | DAddYE quit (Remote host closed the connection) |
21:51:33 | Araq | that's not weird at all |
21:51:53 | Araq | a seq/sting is a pointer |
21:52:01 | Araq | not a pointer to a pointer |
21:52:07 | * | DAddYE joined #nimrod |
21:52:17 | Araq | you can't mark something as 'shallow' and then resize |
21:52:41 | Araq | 'shallow' is like 'freeze', you shouldn't modify afterwards |
21:53:14 | Araq | I didn't name it 'freeze' as neither the compiler nor the runtime checks for modifications (yet?) |
21:53:22 | fowl | oh |
21:54:02 | Araq | improve the docs of 'shallow' please and then close this bug |
21:54:23 | Araq | on the other hand |
21:54:44 | Araq | a check in 'add' for freezable seqs in debug mode won't kill us ... |
21:56:33 | * | DAddYE quit (Ping timeout: 245 seconds) |
21:57:10 | Araq | and yeah ... it's actually a very useful feature for performance. we should make it safe and advertise its usage. |
22:01:08 | EXetoC | should it be possible to pass a proc declaration (no body) to a macro? I'm using a dummy importc now |
22:01:16 | EXetoC | one can go about this in several ways though |
22:02:18 | EXetoC | tuples for example, but a proc with importc is fine |
22:07:51 | Araq | EXetoC: dunno |
22:10:39 | BitPuffin | flaviu: it's not just a matter of locking the object no because sessions have to be removed from the datastore, which means relinking nodes and stuff |
22:23:45 | fowl | EXetoC, yea |
22:25:12 | * | Mat3 wonders about the linux kernel interface (even MS/DOS was more structured) |
22:25:22 | fowl | Araq, how is this "in the future, shallow strings will be frozen to prevent modification, but for now modifying a shallow string is undefined behavior" |
22:29:28 | * | Matthias247 quit (Read error: Connection reset by peer) |
22:34:03 | * | xenagi joined #nimrod |
22:34:14 | flaviu | Does nimrod provide atomic operations? |
22:35:44 | EXetoC | lib/system/atomics.nim? |
22:35:59 | flaviu | Yes, thanks |
22:36:10 | EXetoC | grep<3 |
22:36:13 | EXetoC | BitPuffin: right? |
22:38:42 | flaviu | Docgen is too clever, it realized it wasn't being run with threading enabled and cut most the atomic operations from the docs |
22:39:23 | * | io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist) |
22:41:48 | EXetoC | uh oh |
22:54:04 | Araq | fowl: sure, that's fine |
23:04:09 | Araq | good night |
23:04:25 | Mat3 | ciao |
23:04:30 | * | Mat3 quit (Quit: Verlassend) |
23:11:25 | * | Trixar_za thinks Mat3 should pass him some of the crack he's smoking |
23:13:00 | EXetoC | ? |
23:13:09 | EXetoC | oh |
23:19:14 | fowl | EXetoC, lets make a game |
23:19:38 | * | darkf joined #nimrod |
23:21:50 | BitPuffin | EXetoC: ack och ve |
23:35:08 | dom96 | Why don't we all make a game? |
23:35:13 | dom96 | Together. |
23:37:27 | flaviu | dom96: Do you have any ideas? |
23:38:30 | dom96 | not really |
23:40:02 | * | DAddYE_ joined #nimrod |
23:41:51 | dom96 | flaviu: do you? |
23:41:53 | EXetoC | fowl: ok |
23:42:29 | EXetoC | I suggested a multiplayer RTS+RPG. should we start with something simple? |
23:43:08 | flaviu | I sort of have an idea, I don't know if it'll be fun |
23:43:23 | EXetoC | there's a lot of generic stuff to be done anyway |
23:44:26 | * | comex quit (Read error: Operation timed out) |
23:44:43 | * | comex joined #nimrod |
23:44:48 | dom96 | Creating an RTS sounds fun |
23:45:16 | flaviu | I've played around with procedural generation a bit |
23:45:20 | dom96 | Maybe we should make an ASCII RTS heh |
23:49:15 | * | Demos joined #nimrod |
23:49:46 | flaviu | http://imgur.com/a/yLW8v I'm particularly happy with how the first image looks |
23:50:31 | Varriount | flaviu: smoothed noise? |
23:51:33 | EXetoC | perlin noise? |
23:52:09 | flaviu | Simplex, I also implemented tiling and that requires higher dimensions which is slow with perlin noise |
23:52:38 | flaviu | I adapted the algorithm from http://www.gamedev.net/blog/33/entry-2138456-seamless-noise/ |
23:52:49 | * | Jesin joined #nimrod |
23:53:20 | EXetoC | didn't know it was one of the use cases |
23:54:22 | Demos | I have rendering code, not sure how good it is though. We would need to write collision code, I have sweep and prune implementation in c++ that I could port, but physics middlewear would be nice to have access to. |
23:55:24 | Varriount | flaviu: I've never been able to find a good explanation on how to implement simplex noise. It's supposed to be better than perlin noise, and yet drastically under-represented. |
23:55:42 | flaviu | Varriount: I took the java source, copy-paste, and translated it to scala |
23:55:46 | Demos | Once finals finish I will actually have time to do stuff. Varriount simplex noise requires less ajacency info right? |
23:56:11 | Varriount | Demos: I think so. |
23:57:15 | Demos | I guess that is good if you really need to generate it on GPU, maybe if you want a big 3D noise texture that you want to generate on the fly |
23:57:49 | flaviu | Simplex uses simplexes, so it uses the shape with the lowest possible number of edges. Perlin uses cubes or something that's less effecent. Simplex is really superior in higher dimensions |
23:59:28 | BitPuffin | dom96: we did have a game we could make but you were too much of a pansy to do it |
23:59:30 | Varriount | flaviu: Do you have any plans to translate the java/scala simplex noise implementation to nimrod? |
23:59:34 | Demos | why the fuck does my mouse driver require me to login to an online account? |
23:59:52 | flaviu | I don't really understand how it works intuitively, but wikipedia says that Perlin is O(2^n), while Simplex is O(n^2) for dimension n |
23:59:54 | * | DAddYE_ quit (Remote host closed the connection) |