00:01:44 | * | boydgreenfield quit (Quit: boydgreenfield) |
00:01:53 | * | flaviu quit (Read error: Connection reset by peer) |
00:04:55 | * | flaviu joined #nimrod |
00:08:54 | * | kniteli joined #nimrod |
00:09:26 | * | untitaker quit (Ping timeout: 264 seconds) |
00:16:27 | * | untitaker joined #nimrod |
00:22:00 | * | kniteli quit (Ping timeout: 265 seconds) |
00:23:27 | * | boydgreenfield joined #nimrod |
00:33:17 | * | kniteli joined #nimrod |
00:40:19 | * | johnsoft quit (Ping timeout: 250 seconds) |
00:40:40 | * | johnsoft joined #nimrod |
00:42:39 | * | superfunc quit (Quit: Connection closed for inactivity) |
00:51:36 | * | uku joined #nimrod |
00:53:45 | * | bjz quit (Ping timeout: 250 seconds) |
01:17:28 | boydgreenfield | Is there going to be a v0.10.0 or just a v0.10.1? (Asking bc current nim -v gives me the latter and just broke a test for v0.10 version string on my end) |
01:18:13 | Araq | boydgreenfield: once released it will be 0.10.2 |
01:18:20 | boydgreenfield | Araq: Got it. |
01:18:23 | boydgreenfield | Thx. |
01:18:27 | Araq | bigbreak reported for too long 0.10.0 |
01:18:45 | Araq | so to avoid confusions we skip this |
01:19:22 | * | darkf joined #nimrod |
01:21:32 | darrell_ | Is there a way to run all the Nimrod/tests in a single command? |
01:22:03 | Araq | darrell_: sure: tests/testament/tester cat all |
01:22:08 | Araq | iirc |
01:23:11 | Araq | but note we never have 100% green tests |
01:23:43 | darrell_ | Humm, don't see testament? |
01:23:49 | darrell_ | In tests |
01:24:19 | Araq | well you need to build it |
01:24:32 | Araq | nim c tests/testament/tester |
01:27:46 | darrell_ | Oh, sorry didn't see tests/testament directory |
01:32:30 | * | q66 quit (Quit: Leaving) |
01:37:31 | NimBot | Araq/Nimrod devel b2f577d Araq [+1 ±8 -0]: fixes #1473 |
01:46:29 | NimBot | Araq/Nimrod devel 29b1709 Araq [+0 ±1 -0]: fixes a regression that made 'system.compiles' output the produced error messages |
01:48:54 | * | boydgreenfield quit (Quit: boydgreenfield) |
01:55:45 | * | boydgreenfield joined #nimrod |
01:56:40 | NimBot | Araq/Nimrod devel 77353b8 Araq [+0 ±1 -0]: fixes #1127 |
01:58:02 | * | brson quit (Quit: leaving) |
01:58:25 | * | uku quit (Ping timeout: 272 seconds) |
01:59:32 | * | Demos joined #nimrod |
02:02:32 | * | johnsoft quit (Ping timeout: 265 seconds) |
02:03:10 | * | johnsoft joined #nimrod |
02:08:12 | * | mko quit (Ping timeout: 245 seconds) |
02:21:52 | * | kniteli quit (Ping timeout: 265 seconds) |
03:11:07 | * | silven quit (Quit: No Ping reply in 180 seconds.) |
03:12:31 | * | silven joined #nimrod |
03:12:42 | * | boydgreenfield quit (Quit: boydgreenfield) |
03:20:19 | * | superfunc joined #nimrod |
03:20:42 | superfunc | yo everyone |
03:24:55 | * | superfunc quit (Ping timeout: 246 seconds) |
03:30:02 | * | superfunc joined #nimrod |
03:38:20 | * | saml_ joined #nimrod |
03:48:10 | * | saml_ quit (Ping timeout: 244 seconds) |
04:00:46 | * | saml_ joined #nimrod |
04:02:53 | * | flaviu quit (Ping timeout: 265 seconds) |
04:07:33 | * | saml_ quit (Ping timeout: 250 seconds) |
04:17:17 | * | darkf quit (Ping timeout: 240 seconds) |
04:19:50 | * | saml_ joined #nimrod |
04:19:56 | * | saml_ quit (Remote host closed the connection) |
04:38:48 | * | fowlmouth joined #nimrod |
04:42:31 | * | fowl quit (Ping timeout: 265 seconds) |
04:52:24 | * | Demos quit (Read error: Connection reset by peer) |
04:53:24 | * | darkf joined #nimrod |
05:07:33 | * | BlaXpirit joined #nimrod |
05:09:02 | kokozedman | hey guys, anyone? I need to know a bit more about RootObj |
05:15:13 | * | mko joined #nimrod |
05:42:59 | * | Sembei quit (Read error: Connection reset by peer) |
05:43:51 | * | kemet joined #nimrod |
05:44:54 | * | untitaker quit (Ping timeout: 256 seconds) |
05:49:37 | * | khmm joined #nimrod |
05:52:21 | * | untitaker joined #nimrod |
05:55:00 | * | kemet quit (Quit: Instantbird 1.5 -- http://www.instantbird.com) |
06:05:49 | * | mko quit (Ping timeout: 244 seconds) |
06:30:49 | * | khmm quit (Remote host closed the connection) |
06:42:39 | * | superfunc quit (Quit: Connection closed for inactivity) |
06:43:01 | * | darrell_ quit (Ping timeout: 246 seconds) |
06:43:24 | kokozedman | quote: Asynchronous message passing is used between threads, so no "stop the world" mechanism is necessary |
06:43:50 | kokozedman | how and where is this feature documented? |
06:48:22 | * | johnsoft quit (Ping timeout: 240 seconds) |
06:49:51 | * | johnsoft joined #nimrod |
07:00:37 | * | BlaXpirit quit (Quit: Quit Konversation) |
07:22:25 | * | ftuvbgyrftr quit (Quit: Page closed) |
07:29:00 | * | kniteli joined #nimrod |
07:45:29 | * | kniteli quit (Ping timeout: 272 seconds) |
07:54:13 | gokr | hey |
07:56:19 | * | kniteli joined #nimrod |
08:02:21 | gokr | kokozedman: I haven't used it yet, but I would look at the channels module. Can't seem to find much examples, but the API is very small. |
08:12:09 | * | [CBR]Unspoken joined #nimrod |
08:17:35 | * | uku joined #nimrod |
08:28:49 | * | sdw_ quit (Read error: Connection reset by peer) |
08:32:13 | * | Sembei joined #nimrod |
08:35:03 | * | khmm joined #nimrod |
08:35:33 | * | kniteli quit (Ping timeout: 265 seconds) |
08:39:50 | * | johnsoft quit (Read error: Connection reset by peer) |
08:56:50 | * | johnsoft joined #nimrod |
09:28:25 | * | wan quit (Ping timeout: 260 seconds) |
09:48:11 | * | jlebrech joined #nimrod |
09:48:30 | * | uku quit (Ping timeout: 244 seconds) |
09:49:05 | jlebrech | i'm looking to write client/server webbased code but i'd like know if there's a better way to have them communicate than ajax |
09:49:48 | jlebrech | for example i want to use a library that can associate what will be compiled into js with what will be compiled into binary |
09:50:17 | jlebrech | and they i can made a call between client and server code, and maybe vice versa seamlessly |
09:50:20 | jlebrech | then* |
09:58:02 | gokr | A quick search finds: https://github.com/onionhammer/onion-nimrod |
09:58:20 | gokr | See websockets there for example. Not sure if there is other work too |
09:58:29 | gokr | onionhammer: ? |
10:16:52 | jlebrech | cool |
10:27:57 | * | dirkk0 joined #nimrod |
10:30:11 | * | uku joined #nimrod |
10:35:25 | * | iamanewbie quit (Ping timeout: 246 seconds) |
10:39:42 | jlebrech | what i'd like is a server that sets up clientside to code to communicate to it, and I can use a clientside library that'll message the server side without configuring the client side. so basically setting the baseurl address and a key etc.. |
10:40:54 | jlebrech | hope that kinda makes sense |
10:54:19 | * | bjz joined #nimrod |
11:19:32 | * | kemet joined #nimrod |
11:19:44 | * | Trixar_za quit (Ping timeout: 244 seconds) |
11:20:13 | * | Trixar_za joined #nimrod |
11:35:15 | * | dirkk0 quit (Ping timeout: 264 seconds) |
11:41:56 | * | dirkk0 joined #nimrod |
11:56:03 | * | ponce__ joined #nimrod |
11:56:10 | ponce__ | why has nimrod unsigned types now ? |
11:56:19 | ponce__ | s/Nimrod/Nim |
11:58:18 | * | khmm quit (Remote host closed the connection) |
12:02:50 | jlebrech | why the name change :( |
12:15:45 | * | uku quit (Ping timeout: 244 seconds) |
12:16:14 | * | Araq0 joined #nimrod |
12:17:27 | Araq0 | hi ponce__ unsigned has been added long ago, there are still bugs left though |
12:17:44 | Araq0 | too many people complained that's why they were added |
12:18:03 | Araq0 | however 'len' still returns int and unsigned artihmetic is discouraged |
12:20:57 | * | jlebrech quit (Remote host closed the connection) |
12:31:12 | * | Varriount_ joined #nimrod |
12:34:21 | * | Varriount quit (Ping timeout: 258 seconds) |
12:44:07 | * | dirkk0 quit (Quit: This computer has gone to sleep) |
12:48:02 | * | uku joined #nimrod |
12:56:14 | gokr | Ported Lapp to latest Nim. Steve Donovan made the original port from Lua. Its neat, but... could use some improvements. |
12:57:26 | * | BlaXpirit joined #nimrod |
12:58:36 | * | q66[lap] quit (Read error: Connection reset by peer) |
13:00:59 | * | q66[lap] joined #nimrod |
13:01:42 | * | BitPuffin joined #nimrod |
13:06:20 | * | darkf quit (Ping timeout: 255 seconds) |
13:06:54 | kokozedman | I'm accepting proc(o: RootRef, output: string) as parameter, how can I have o not a RootRef but any object so that I don't have to pass this exact proc signature but instead use a proc(o: MyObjectType, output: string)? kind of template or something if it's at all making sense |
13:07:36 | gokr | kokozedman: Read my OO article series. |
13:07:58 | gokr | http://goran.krampe.se/category/nim/ |
13:08:54 | kokozedman | gokr: ok, thanks... it's hard to sink in all these Nim info until it's relevant |
13:08:58 | gokr | And... I am not sure what you are asking - you can have "o: MyObjectType" and that proc will then bind to any call with such an argument. |
13:09:25 | gokr | My article series explores both procs and methods, and how to do inheritance and the "super" call etc. |
13:14:03 | * | darkf joined #nimrod |
13:15:40 | kokozedman | gokr: basically, I'm looking to creating a kind of callback that is called when something has been done... and this callback is of the format proc(MyObjectType, string) belonging to that class' instance |
13:16:06 | kokozedman | that is,when time comes, the proc will be called in the context of the object of type MyObjectType |
13:16:31 | kokozedman | and I'd like to accept any kind of objec |
13:16:38 | kokozedman | s/objec/object/ |
13:17:04 | gokr | I thought you said "of type MyObjectType". Not any kind. |
13:17:17 | Araq0 | kokozedman: wrong approach, juse proc (string) {.closure.} instead |
13:17:21 | Araq0 | *just use |
13:17:36 | ponce__ | <Araq0> [13:18:03] however 'len' still returns int < good thing |
13:18:01 | kokozedman | Araq0: hmm... and how about the object context? |
13:19:03 | Araq0 | well usually you capture that instead |
13:19:25 | kokozedman | hmm...I'm not following |
13:20:33 | * | irrequietus joined #nimrod |
13:21:07 | Araq0 | well you can look at my latest commits that use exactly that to override error handling |
13:21:22 | Araq0 | so that macros.parseExpr can raise an exception instead of dying |
13:21:24 | kokozedman | ok, which branch? |
13:21:26 | Araq0 | devel |
13:21:34 | kokozedman | ok, looking... |
13:25:08 | * | Etheco joined #nimrod |
13:27:38 | ponce__ | Araq0: len being int removes most bugs with unsigned usage |
13:27:47 | ponce__ | imho |
13:37:37 | Araq0 | ponce__: debatable, width and height in many APIs are unsigned too and bug prone |
13:38:10 | Araq0 | basically everything where minus makes sense requires signed arithmetic for sanity |
13:38:56 | Araq0 | maybe making '-' not easily aviable for unsigned also prevents most mistakes |
13:40:46 | Araq0 | but then you end up with int32(width) - 3 and then you wonder why it was uint32 in the first place when you have to throw away half of the range anyway |
13:44:35 | kokozedman | Araq0: brilliant man!!!!! this closure thing is wicked cool! ... now, that's a major productivity boost. Thanks |
13:45:38 | gokr | kokozedman: The concept of closures is not new, but of course, lots of mainstream languages still don't have them. |
13:46:16 | kokozedman | gokr: you're right, I was used to that in C++11, but I didn't realize Nim had it! just wicked! |
13:46:34 | gokr | Nim is a true candy box :) |
13:46:43 | * | kokozedman discovers a new thing about Nim every day |
13:46:53 | kokozedman | Indeed! |
13:50:28 | ponce__ | Araq0: I won't dispute that, and would have preferred if unsigned were out, but there is probably good reasons to have them I've not thought of |
13:51:06 | * | Boscop quit (Ping timeout: 265 seconds) |
13:52:09 | Araq0 | ponce__: well what really *sucked* was int8 to do byte level manipulations with the builtins toU8, ze8 etc. it was simply too hard |
13:53:03 | Araq0 | but it was an interesting experiment |
13:55:10 | kokozedman | is there an existing construct for a kind of thread-safe list? |
13:55:19 | * | uku quit (Ping timeout: 255 seconds) |
13:55:26 | ponce__ | I guess the unsigned problem might lessen if signed/unsigned comparison or binary ops are disallowed |
13:55:35 | ponce__ | wild guess |
13:55:35 | * | Boscop joined #nimrod |
14:02:18 | * | johnsoft quit (Ping timeout: 264 seconds) |
14:03:11 | Araq0 | kokozedman: well there is the old TChannel stuff |
14:04:21 | Araq0 | or you can use spawn to return a FlowVar[seq[T]], but then you need to append that to the result list |
14:05:03 | kokozedman | Araq0: which module would that spawn thing be? |
14:05:13 | Araq0 | threadpool.nim |
14:06:00 | Araq0 | beware though there is at least 1 bug left that I need to fix |
14:06:27 | kokozedman | heheh... kind of scary |
14:07:08 | Araq0 | well I love it. it's simple, limited and by construction free of deadlocks and data races |
14:08:10 | kokozedman | no, it's about that left bug |
14:08:26 | * | uku joined #nimrod |
14:08:52 | Araq0 | *shrug* I didn't look into it, maybe I already fixed it. it is also surprisingly easy to debug |
14:09:30 | kokozedman | I guess that's not in the master branch... |
14:09:49 | Araq0 | it's not in the docs |
14:09:58 | Araq0 | but yeah you should use devel for that |
14:11:05 | kokozedman | oh, ok... I'm working on something and master is stable for it... I guess I'll see if I can get a quick one involving condition variable and some locks |
14:14:28 | gokr | I have implemened something similar to fat-git in Nim. |
14:14:38 | gokr | Calling it blimp :) |
14:14:50 | kokozedman | gokr: mind sharing? |
14:15:04 | gokr | We have some silly big files in our git repos, and they are not really build artifacts. |
14:15:16 | gokr | They are Smalltalk images, and tend to be around 30-50 Mb easily. |
14:15:32 | gokr | They bloat git and makes git ... silly. |
14:15:52 | gokr | So there are numerous tools for this - git-annex, git-fat, git-media, s3annex etc etc |
14:16:19 | gokr | git-fat and s3annex are quite simple - they simply "inflate" or "deflate" the file in question - and replaces it with a hash. |
14:16:40 | gokr | So the actual content in git - is just a file containing the hash checksum of the original content. |
14:17:06 | gokr | Then these tools store the actual content "somewhere else". |
14:17:41 | gokr | So we decided we wanted something like this - so I hacked up "blimp" in Nim. |
14:17:52 | kokozedman | cool |
14:18:29 | gokr | Currently it doesn't hook itself in - you will need to manually deflate/inflate. But it does use rsync etc to upload/download the content "on the side". |
14:18:55 | gokr | Hooking onto git-smudge or whatever its called, is probably also doable. |
14:19:56 | gokr | I also got Steve Donovan's Lapp to work with latest Nim. A parseopt library that uses the help text as a spec for the parsing. Kinda neat, although it could use a tad more features. |
14:20:42 | Araq0 | now that's the *real* way to do command line parsing |
14:20:50 | gokr | Yeah, its slick. |
14:20:58 | * | perturbation joined #nimrod |
14:21:11 | Araq0 | is it a Nimble package already? |
14:21:28 | gokr | Yeah... not in the package list - but I did just publish it. |
14:21:48 | gokr | https://gitlab.3dicc.com/gokr/lapp |
14:22:06 | gokr | I know, there is some sillyness with the HTTPS cert there, so your browser may complain. |
14:22:19 | Araq0 | yup |
14:22:27 | gokr | But its ok, I promise :) |
14:22:35 | gokr | (muuuahahaa) |
14:22:41 | Araq0 | I'm used to allow these things |
14:23:02 | gokr | So Steve Donovan is a Lua guy - he did the Penlight library and more. |
14:23:18 | Araq0 | never heard of it |
14:23:25 | gokr | I emailed him and checked if it was ok if I tweaked his port of Lapp so that it works with latest Nim. |
14:23:32 | gokr | And he was just happy someone uses it. |
14:24:03 | gokr | So I fixed one bug, renamed a bunch of stuff that has changed and... well, that's basically it. |
14:24:28 | gokr | It can probably be written differently. And it needs more doc/examples. |
14:24:29 | * | Boscop_ joined #nimrod |
14:24:48 | Araq0 | you can use nimfix to do the renamings for you |
14:24:58 | gokr | ahhh. Too late :) |
14:25:38 | gokr | Hmm, I can publish blimp too... |
14:25:42 | Araq0 | well it's usually so little work that tooling support doesn't matter |
14:25:54 | Araq0 | unless you have >40K LOC ... |
14:26:13 | Araq0 | (which we do...) |
14:26:29 | gokr | https://gitlab.3dicc.com/gokr/blimp |
14:26:53 | gokr | Here is the use of it: https://gitlab.3dicc.com/gokr/blimp/blob/master/blimp.nim#L148 |
14:27:17 | * | Boscop quit (Ping timeout: 240 seconds) |
14:27:43 | * | bjz quit (Ping timeout: 255 seconds) |
14:33:43 | * | bjz joined #nimrod |
14:36:38 | Araq0 | nice |
14:36:52 | Araq0 | hrm ': auto' really shouldn't trigger a generic context |
14:37:11 | Araq0 | it should infer the type instead |
14:37:38 | * | Araq0 wonders how hard this is to change |
14:41:12 | Araq0 | gokr: if not existsDir(blimpStore): createDir(blimpStore) |
14:41:27 | Araq0 | is not necessary, createDir doesn't fail if the directory already exists |
14:41:54 | Araq0 | in general we don't follow arachaic API designs blindly |
14:42:20 | * | prosper_ joined #nimrod |
14:42:28 | gokr | Aha |
14:46:19 | Araq0 | also your empty except are kind of evil |
14:46:32 | Araq0 | better name the exception like 'except OSError' |
14:47:11 | Araq0 | though it's not nearly as bad as in python because we don't map KeyboardInterrupt to an exception |
14:48:15 | * | flyx left #nimrod (#nimrod) |
14:49:17 | * | prosper_ quit (Ping timeout: 258 seconds) |
14:53:18 | * | prosper_ joined #nimrod |
15:03:52 | gokr | Ok, will check :) |
15:04:11 | gokr | Just replied to Steve Donovan trying to get him/them into Nim again |
15:04:37 | gokr | He was lured by go concurrency - so I wrote that hey, Nim has cool stuff there now :) |
15:10:57 | * | darkf quit (Quit: Leaving) |
15:11:30 | gokr | Araq0: Why are there multiple listings of the same raises here: http://nimrod-lang.org/system.html#readFile,string |
15:14:37 | Araq0 | gokr: because the compiler found multiple paths that raise this exception |
15:14:44 | Araq0 | but it's a bug of course |
15:14:46 | gokr | I kinda suspected :) |
15:15:00 | Araq0 | it shouldn't show this in the docs though |
15:15:15 | Araq0 | I think it's still in my todo.txt |
15:15:26 | * | BlaXpirit quit (Read error: Connection reset by peer) |
15:16:38 | * | BlaXpirit joined #nimrod |
15:19:45 | * | perturbation quit (Quit: Leaving) |
15:24:10 | gokr | This kind of programming (blimp) was very smooth in Nim I must say. |
15:24:25 | gokr | And the resulting binary is of course blindingly fast. |
15:24:57 | gokr | I like the "no surprise" simple standard APIs. |
15:29:44 | gokr | Ugh... my docker doesn't want to build blimp since it doesn't have lapp. So it needs nimble. And it needs... hmm. |
15:37:21 | Araq0 | well you can always install lapp manually without nimble |
15:37:43 | Araq0 | in fact maybe nimble should support some way to do script generation for these things |
15:37:45 | gokr | Mmm. I think I will prep the docker image with nimble. |
15:38:11 | Araq0 | so you can say "Nimble! create a script for retrieving package a, b, c" |
15:38:20 | kokozedman | while using thread, how do I use a proc that needs no argument? |
15:38:30 | kokozedman | I tried to tinker around but ... no |
15:38:32 | gokr | But... it would be nice if nimble could take a bit of json from ... somewhere else too. More "sources" and merge those lists. |
15:38:41 | Araq0 | kokozedman: createThread[void](fn) |
15:38:44 | gokr | Araq0: right |
15:40:06 | kokozedman | Araq0: silly me... thanks |
15:42:05 | Araq0 | kokozedman: it's a common gotcha though, there should be an overload for that |
15:47:50 | * | prosper_ quit (Ping timeout: 256 seconds) |
15:52:59 | * | kemet quit (Remote host closed the connection) |
15:53:32 | * | kemet joined #nimrod |
15:53:55 | * | kemet quit (Client Quit) |
15:54:22 | * | kemet joined #nimrod |
15:57:39 | * | mko joined #nimrod |
15:57:50 | * | mko quit (Max SendQ exceeded) |
16:03:18 | * | flyx joined #nimrod |
16:05:35 | * | brson joined #nimrod |
16:12:09 | * | gokr quit (Quit: Leaving.) |
16:20:31 | * | Araq0 quit (Quit: Page closed) |
16:21:18 | * | kemet quit (Quit: Instantbird 1.5 -- http://www.instantbird.com) |
16:34:41 | * | uku quit (Ping timeout: 255 seconds) |
16:38:23 | * | kemet joined #nimrod |
16:46:18 | * | johnsoft joined #nimrod |
16:50:08 | * | uku joined #nimrod |
16:54:22 | * | gokr joined #nimrod |
17:02:54 | gokr | Three things that would be nice in nimble: 1) List installed 2) Be able to merge package.json from several sources (so internal packages can be handled) and 3) Act a bit as bundler to suck down dependencies. |
17:08:00 | ldlework | 1 would be amazing |
17:08:14 | ldlework | also being able to export that list |
17:08:21 | ldlework | and being able to take it to another machine |
17:08:29 | ldlework | and giving it to nimble and saying, here install these |
17:08:41 | ldlework | a built in virtualenv-like system too... |
17:09:02 | ldlework | kthxbai |
17:22:14 | * | irrequietus_ joined #nimrod |
17:22:14 | * | irrequietus_ quit (Client Quit) |
17:22:42 | * | Trustable joined #nimrod |
17:23:28 | dom96_ | gokr: PRs always welcome ;) |
17:23:43 | gokr | Yeah... :) I started peeking a bit at it. |
17:24:07 | gokr | I built SqueakMap in the Squeak community, kinda similar sort of tool. |
17:24:27 | * | irrequietus quit (Ping timeout: 245 seconds) |
17:37:11 | dom96_ | cool |
17:38:32 | onionhammer | gokr one thing i've been asking for with nimble is supporting lists of packages in packages.json |
17:38:49 | onionhammer | as well as improved search to go along with it.. |
17:39:06 | onionhammer | so individual developers could manage their own packages/versions/etc |
17:39:22 | gokr | What do you mean with "lists"? Isn't packages.json a list? Ah, you mean #2 from my three? |
17:39:43 | onionhammer | packages.json is a list, but it's not a list of lists |
17:39:48 | onionhammer | similar to your #2 |
17:39:56 | gokr | Or... you mean... ability to nail down to specific versions? |
17:40:11 | gokr | Pinning. |
17:40:23 | onionhammer | pacakages.json could point to onionhammer/packages.json and fowlmouth/packages.json |
17:40:41 | onionhammer | and users would seemlessly see packages sub-lists |
17:40:46 | gokr | My #2 was more like... oh, we have these 10 internal packages - and would be neat to be able to handle them too. Just like apt can have multiple sources. |
17:40:56 | onionhammer | right, I like that idea too |
17:41:09 | gokr | Ah, ok, so its similar. |
17:41:21 | onionhammer | yep, except these are public lists, not private/internal |
17:41:22 | gokr | You mean a kind of federation. |
17:41:27 | onionhammer | yeah |
17:41:33 | gokr | I mean a kind of "private" federation :) |
17:41:38 | onionhammer | yeah |
17:41:45 | gokr | Both quite useful I guess. |
17:42:00 | gokr | You could then maintain your own little "universe". |
17:42:19 | * | gokr freezing ... |
17:42:29 | gokr | I am sitting in an ice rink. |
17:42:29 | * | mko joined #nimrod |
17:43:09 | gokr | My daughter is practicing her axel. |
17:45:41 | onionhammer | next stop olympics |
17:45:57 | gokr | Nah, but after christmas its the district championships :) |
17:46:45 | gokr | A few more years until the olympics ;) |
17:52:31 | * | Matthias247 joined #nimrod |
18:06:03 | kokozedman | is there an existing list kind that can be used for FIFO? |
18:06:32 | kokozedman | I mean, seq[string] as FIFO? |
18:07:11 | kokozedman | (might not be making a proper sense though) |
18:09:18 | * | nande_ joined #nimrod |
18:09:23 | * | nande quit (Read error: Connection reset by peer) |
18:09:28 | * | nande_ quit (Read error: Connection reset by peer) |
18:10:17 | onionhammer | kokozedman http://nimrod-lang.org/queues.html |
18:12:09 | * | kniteli joined #nimrod |
18:12:10 | kokozedman | onionhammer: thanks |
18:13:04 | * | Jesin joined #nimrod |
18:16:17 | * | johnsoft quit (Ping timeout: 272 seconds) |
18:16:41 | * | johnsoft joined #nimrod |
18:24:32 | kokozedman | Queue is GC unsafe ... I'm trying to use it in a thread, what's the proper solution? |
18:24:37 | * | q66 joined #nimrod |
18:27:01 | * | gokr quit (Quit: Leaving.) |
18:53:27 | Varriount_ | kokozedman: Use a ptr? |
18:54:27 | * | Varriount_ is now known as Varriount |
19:23:11 | * | hopla joined #nimrod |
19:25:11 | * | rpag_ joined #nimrod |
19:26:57 | * | rpag quit (Ping timeout: 244 seconds) |
19:39:06 | * | Boscop_ quit (Ping timeout: 265 seconds) |
19:41:32 | kokozedman | Varriount: moved the variable to be local to the thread |
19:49:04 | hopla | when infix operators are implemented, first character is used for precedence as in Ocaml? |
19:49:26 | Araq | hopla: that is correct. details are in the manual |
19:49:36 | hopla | Araq: thanks! |
19:49:49 | hopla | Araq: I'll look it! |
19:49:55 | Araq | kokozedman: you can't move the channel itself to the thread, how should this work? |
20:03:43 | kokozedman | Araq: I'm using a queue ... it doesn't compile if it's a global variable, so I set it to threadvar |
20:03:54 | * | Trustable quit (Quit: Leaving) |
20:03:56 | kokozedman | it should work (haven't tried yet) |
20:04:03 | kokozedman | (I mean, I guess) |
20:04:05 | Araq | and then? |
20:04:11 | Araq | it's thread local |
20:04:34 | Araq | how can you then use it for interthread communication? |
20:04:46 | Araq | you should really use a TChannel |
20:05:24 | kokozedman | Araq: oh yeah, you're right... I'm being very stupid right now |
20:05:32 | kokozedman | I should go to sleep, it's late |
20:06:29 | kokozedman | good night everyone |
20:06:33 | Araq | bye |
20:06:40 | kokozedman | thanks Araq |
20:28:23 | * | Mat3 joined #nimrod |
20:28:29 | Mat3 | hello |
20:32:45 | * | kniteli quit (Ping timeout: 265 seconds) |
20:35:01 | Araq | servus |
20:38:15 | * | Dispatch joined #nimrod |
20:38:38 | Dispatch | Hi |
20:38:49 | Dispatch | do I need to allocate an array to use it? |
20:43:34 | * | Boscop joined #nimrod |
20:43:55 | * | kniteli joined #nimrod |
20:44:22 | Araq | Dispatch: no. but it's of fixed size at compile-time |
20:44:45 | Araq | for a 'seq' you have to use newSeq or similar ways |
20:44:46 | Dispatch | ok, that's what I assumed |
20:46:00 | * | BitPuffin quit (Ping timeout: 244 seconds) |
20:54:20 | Mat3 | hi Araq |
20:54:40 | * | Boscop_ joined #nimrod |
20:58:26 | * | Boscop quit (Ping timeout: 265 seconds) |
21:00:13 | * | gokr_ joined #nimrod |
21:11:58 | * | kniteli quit (Ping timeout: 265 seconds) |
21:11:59 | Varriount | hopla: You are the first person to not be surprised by that. |
21:15:44 | * | Dispatch quit (Quit: Page closed) |
21:16:38 | * | nande joined #nimrod |
21:18:57 | Varriount | gokr_: If you have any suggestions for improving the new build bot, feel free to add issues here - https://github.com/nim-lang/nim-buildbot/issues |
21:21:10 | * | Visaoni joined #nimrod |
21:23:20 | * | kniteli joined #nimrod |
21:27:15 | Araq | hi Visaoni welcome |
21:27:24 | Araq | Varriount: what's the status of your excpt.nim patch? |
21:31:21 | * | kniteli quit (Ping timeout: 272 seconds) |
21:34:49 | * | hopla quit (Ping timeout: 246 seconds) |
21:38:55 | * | gokr joined #nimrod |
21:39:28 | * | flaviu joined #nimrod |
21:44:15 | * | kemet quit (Quit: Instantbird 1.5 -- http://www.instantbird.com) |
21:44:25 | * | kniteli joined #nimrod |
21:44:55 | Varriount | Araq: I've been at work/in class all day, so guess. |
21:55:19 | Varriount | Araq: I have the code, however I need a sample to test it on. The error dialogue on appears for very serious/unusual errors (things like heap corruption, threading errors, etc) |
21:56:14 | Araq | Varriount: simple. |
21:56:19 | Varriount | ? |
21:56:23 | Araq | threads.nim, line 195 |
21:56:34 | * | Boscop joined #nimrod |
21:56:35 | * | Boscop quit (Changing host) |
21:56:35 | * | Boscop joined #nimrod |
21:56:38 | Araq | disable it, run a threading test from tests/parallel |
21:57:07 | Araq | and it will produce a very serious error for you to test |
21:57:19 | * | kniteli quit (Ping timeout: 272 seconds) |
21:57:27 | Varriount | so '-d:useStackMaskHack'? |
21:57:45 | * | Boscop__ joined #nimrod |
21:58:50 | Varriount | Oh, wait, wrong line. |
21:59:16 | * | Boscop_ quit (Ping timeout: 265 seconds) |
22:01:23 | * | Boscop quit (Ping timeout: 255 seconds) |
22:03:59 | * | hopla joined #nimrod |
22:04:46 | hopla | I would like to compiler nimrod (the compiler) with debugger support but this is failing on the first try. Some problem in system.nim. Is it possible? |
22:05:30 | Varriount | hopla: It used to be possible, however the debugger hasn't been maintained. Perhaps, if you and araq were willing, araq could tell you how to fix it? |
22:05:53 | hopla | What I want to do is compile nimrod with the debugger to trace into the debugger code to see the internals step by step |
22:06:05 | hopla | I mean "to trace into the compiler code" sorry |
22:06:25 | Varriount | hopla: Yeah. You can either use gdb, or fix endb |
22:07:32 | hopla | Varriount: Ah yeah good point. I do not really care about variable values. line info should be fine to start |
22:09:45 | Araq | hopla: this is usually the wrong approach |
22:09:59 | * | kniteli joined #nimrod |
22:10:01 | Araq | you will be overwhelmed with pointless information |
22:10:27 | Araq | however, you can insert writeStackTrace() into the compiler's code at strategic places |
22:10:34 | Varriount | hopla: Stay away from the lambda lifting code. It bites back. |
22:11:55 | Varriount | In fact, the best way to start is just by examining all the internal structures first (then asking questions, and writing documentation filled with the answers you are given_ |
22:11:58 | Mat3 | Araq: The hack for implementing subroutine threading works quite well (this approach is ~2x faster than using direct threading though GNU'S label-as-address extension in my test - Intel Core I3] |
22:12:37 | Varriount | Mat3: What are you running to test? Can I try? |
22:12:43 | * | superfunc joined #nimrod |
22:14:55 | hopla | Araq: I like learning code like this if the debugger is OK. Mostly to break point and see what is going on here and there. But yeah, with no watch and the rest, this is not going to be that useful. I'll see. Code is small though. |
22:17:59 | Mat3 | Varriount: I port the threading-dispatch test programs from Anton Ertl's web side. You can find the sources tomorrow night in my Git repro. Beware that the switch based version should compile without optimization flags other than -O or GCC > 4.6 will compile it to remarkable bad code. The subroutine-threaded version should compile with -O3 (-d:release) |
22:18:44 | Araq | hopla: well use --debuginfo --lineDir:on and it works fine with gdb |
22:19:43 | hopla | Araq: I am looking at the compilation errors at the same time. Seems to be related to some old naming: Kind -> kind, True->true |
22:20:02 | Mat3 | avoid clang (horrible code quality) |
22:20:11 | Araq | Mat3: interesting |
22:20:25 | Araq | they used to brag about how their compiler can deal with interpreters |
22:21:26 | * | mko quit (Read error: Connection reset by peer) |
22:21:38 | Mat3 | really ? |
22:22:10 | Araq | iirc yeah |
22:22:51 | Mat3 | ehm, ok... it's an academic project I guess |
22:23:22 | Araq | Mat3: did we talk about http://www.emulators.com/docs/nx25_nostradamus.htm ? |
22:23:49 | * | hopla quit (Ping timeout: 246 seconds) |
22:24:48 | * | hopla joined #nimrod |
22:25:25 | NimBot | Araq/Nimrod devel ea57f34 def [+0 ±1 -0]: Fix compile because of case sensitivity |
22:25:25 | NimBot | Araq/Nimrod devel 78b3f73 def [+0 ±1 -0]: Remove runtime deadlock prevention as deadlock detection at compile-time is available... 3 more lines |
22:25:25 | NimBot | Araq/Nimrod devel 6fb2d44 Andreas Rumpf [+0 ±1 -0]: Merge pull request #1643 from def-/fix-locks-case... 2 more lines |
22:26:08 | Mat3 | no, the interpeters from Darek Mihocka exploit software pipelining which only works well with VLIW processors like DSP's and superscalar out-of-order cpu's like the ones from Intel |
22:29:12 | Mat3 | however, it's quite interesting to read his blog |
22:29:21 | Araq | well I don't get it at all |
22:29:30 | Araq | in what bizzare universe is this: |
22:29:36 | Araq | if (pfn != (PFNDUOP)duopFireEscape) |
22:29:38 | Araq | { |
22:29:39 | Araq | pfn = (PFNDUOP)(*pfn)(&pduop[1], pduop[1].ops);.... |
22:29:53 | Araq | the fastest way to implement dispatching |
22:31:25 | * | Matthias247 quit (Read error: Connection reset by peer) |
22:32:47 | * | kniteli quit (Ping timeout: 272 seconds) |
22:33:35 | Mat3 | this code transform machine code for say mx680x0 cpu's into streams of micro instructions which are interpreted by soft-sheduling the generated machine code for its dispatch routine to the out-of-order pipelines of the iCore 2 |
22:36:02 | Mat3 | this way the interpretation overhead is hidden though parallelization |
22:37:10 | * | kemet joined #nimrod |
22:37:35 | Mat3 | the code transformation is not shown in the example so the resulting fragment is somewhat unreadable |
22:43:06 | gokr | hopla: If you compile with debuginfo on and lineDir on - then you can step perfectly fine using KDevelop for example. |
22:43:43 | gokr | KDevelop was the nicest gdb frontend on Linux that I tried. |
22:44:10 | * | BitPuffin joined #nimrod |
22:45:07 | * | kniteli joined #nimrod |
22:45:44 | * | darrell_ joined #nimrod |
22:45:53 | hopla | gokr: sorry, I am staying with gdb :-) |
22:47:10 | Mat3 | Araq:// A DUOP contains a pointer to the handler, and various operands |
22:47:14 | Mat3 | typedef struct DUOP |
22:47:16 | Mat3 | { |
22:47:18 | Mat3 | PFNDUOP pfn; // pointer to handler |
22:47:20 | Mat3 | WORD uop; // 16-bit duop opcode |
22:47:22 | Mat3 | BYTE iduop; // index of this duop into the block |
22:47:24 | Mat3 | BYTE delta_PC; // start of guest instruction duop corresponds to |
22:47:26 | Mat3 | DWORD optional; // optional 32-bit operand |
22:47:28 | Mat3 | DWORD ops; // 32-bit packed operand(s) for this duop |
22:47:30 | Mat3 | } DUOP, *PDUOP; |
22:47:44 | Mat3 | sorry, for the long post |
22:47:52 | Araq | yeah exactly |
22:48:02 | Araq | thats at least 16 byte per instruction |
22:48:20 | Araq | quite insane |
22:50:02 | Mat3 | that's the price of 'C' and 'C++' to be paid for performance |
22:51:22 | Mat3 | you can limit the sizes by using direct-threading for the dispatch routine (but these depend on the de facto standard GNU extension for labels) |
22:51:33 | * | kniteli quit (Ping timeout: 244 seconds) |
22:51:56 | Mat3 | another alternative is replicating the switch (this is called replicating-switch threading) |
22:52:10 | Mat3 | both can be combined with software pipelining |
22:52:12 | * | hsuh quit (Remote host closed the connection) |
22:53:03 | Mat3 | the last approach increases the generated code size significant |
22:56:06 | * | hsuh joined #nimrod |
22:58:21 | * | vendethiel quit (Quit: q+) |
22:58:25 | * | def- quit (Ping timeout: 258 seconds) |
23:02:23 | * | def- joined #nimrod |
23:03:28 | * | kniteli joined #nimrod |
23:07:23 | flaviu | I suggested using -Og for the csources compile, but no one was around. Thoughts? |
23:07:24 | * | kemet quit (Remote host closed the connection) |
23:12:07 | Araq | flaviu: well you know |
23:12:14 | Araq | nothing is really hard coded |
23:12:28 | Araq | change your config so that it uses -Og for -d:release |
23:13:53 | flaviu | Looks hard coded to me: https://github.com/nim-lang/csources/blob/devel/build.sh#L31 |
23:14:11 | Mat3 | ciao |
23:14:21 | * | Mat3 left #nimrod (#nimrod) |
23:14:24 | flaviu | Anyway, I guess I should send a pr to nim-lang/nim-buildbot |
23:17:10 | Araq | oh you mean the build script |
23:17:21 | Araq | well you need to adapt that then |
23:17:38 | flaviu | Yep. It takes a while on ARM, so any speed up is desirable. |
23:19:47 | hopla | About the interpreter stuff. I am not sure it relates to the conversation ... but tail call optimization is fairly well supported in c compilers (used by many scheme compilers for CPS transform). See: https://gist.github.com/anonymous/922f23126e30e7bde88a. Each opcode function uses a jump and no stack is involved. Anyway :-) |
23:22:11 | * | pmac_ joined #nimrod |
23:23:44 | * | hsuh quit (Read error: Connection reset by peer) |
23:24:09 | * | hsuh joined #nimrod |
23:26:17 | Araq | hopla: yeah we know |
23:29:26 | * | pmac_ quit (Quit: Page closed) |
23:29:35 | fowlmouth | Araq, how come there is no llvm target |
23:30:41 | Araq | fowlmouth: too much work for zero gain |
23:30:46 | flaviu | fowlmouth: Because C works just as well. |
23:31:47 | hopla | Araq, fowlmouth: dwarf support ??? :P |
23:44:19 | * | hopla quit (Ping timeout: 246 seconds) |
23:49:50 | * | johnsoft quit (Ping timeout: 255 seconds) |
23:50:57 | * | johnsoft joined #nimrod |