00:00:03 | dom96 | tomorrow is not over yet though :P |
00:00:20 | dom96 | flaviu: Interested in writing a starter pack for that? |
00:01:06 | Araq | funny I found something similar for starcraft broodwar |
00:01:14 | flaviu | dom96: Looks neat, but I have other things to do right now |
00:01:16 | * | Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
00:01:20 | Araq | though it's only for C++ |
00:01:39 | dom96 | flaviu: :( |
00:02:41 | dom96 | I may just play around with this. |
00:02:52 | dom96 | Maybe write a genetic algorithm for it. |
00:03:15 | Araq | meh write some broodwar AI instead that outplays a professional |
00:03:36 | Araq | took only a full university course to get there |
00:03:56 | Araq | and they kind of cheated |
00:04:29 | Araq | excessive micro with mutas ... no human being can do it this way |
00:04:31 | dom96 | I don't really have 4 years |
00:05:28 | Araq | my university should have taught me AI this way |
00:05:38 | Araq | there is hardly anything cooler |
00:08:43 | Trixar_za | Keepe it gangster? |
00:09:09 | dom96 | Seems I broke tenumitems |
00:09:35 | dom96 | I suppose the new error is correct for it, right? |
00:09:45 | dom96 | (Error: expression 'items' cannot be called) |
00:09:58 | * | johnsoft quit (Ping timeout: 250 seconds) |
00:11:38 | Trixar_za | incidentally dom96, you're right, it doesn't compile :P |
00:12:01 | dom96 | Trixar_za: The fix should be trivial. |
00:12:13 | dom96 | There is code which should intentionally cause an exception at runtime. |
00:12:20 | dom96 | But the compiler now catches it at compile-time heh |
00:13:32 | Trixar_za | Yeah, I just commented out var outOfBounds = vram[len(vram[])] |
00:14:20 | * | johnsoft joined #nimrod |
00:14:51 | Araq | dom96: yeah, you simply have to change the expected error message |
00:15:47 | NimBot | Araq/Nimrod devel 53b8d62 Dominik Picheta [+0 ±1 -0]: Fixes tenumitems test. |
00:20:27 | dom96 | good night |
00:22:17 | Araq | same here, good night |
00:24:43 | Trixar_za | Hmmm |
00:24:46 | Trixar_za | Goodnight guys |
00:24:51 | Trixar_za | Some naming issues too |
00:24:54 | Trixar_za | le fix |
00:30:02 | Trixar_za | and qemu crashes - lol |
00:33:22 | * | bjz_ joined #nimrod |
00:33:58 | * | bjz quit (Read error: Connection reset by peer) |
00:36:49 | * | BlameStross1 joined #nimrod |
00:36:49 | * | OrionPK quit (Read error: Connection reset by peer) |
00:37:39 | * | BlameStross quit (Ping timeout: 246 seconds) |
00:49:17 | * | filwit joined #nimrod |
00:51:02 | Araq | hi filwit |
00:51:12 | filwit | hello |
00:52:00 | dom96 | well, Araq is keeping me up |
00:52:04 | dom96 | hello filwit |
00:52:10 | Araq | hey |
00:52:13 | Araq | I'm sleeping |
00:52:18 | filwit | ah, okay |
00:52:20 | filwit | hi dom96 |
00:52:25 | Araq | YOU are keeping ME up |
00:52:47 | filwit | sorry, time difference is even wider now :| |
00:53:00 | filwit | it's 6pm here |
00:53:15 | dom96 | Looks like me and Araq need to move. |
00:55:40 | filwit | lol |
01:03:49 | * | ARCADIVS joined #nimrod |
01:08:15 | Varriount|Mobile | filwit! |
01:08:31 | filwit | hey Varriount, one sec brb |
01:08:42 | * | filwit quit (Quit: Leaving) |
01:08:51 | Varriount|Mobile | I'm getting on my desktop for this |
01:08:57 | * | Varriount|Mobile quit (Quit: AndroIRC - Android IRC Client ( http://www.androirc.com )) |
01:09:38 | * | saml_ joined #nimrod |
01:11:53 | * | filwit joined #nimrod |
01:16:28 | * | adoniscik quit (Ping timeout: 260 seconds) |
01:16:59 | * | EXetoC quit (Quit: WeeChat 0.4.3) |
01:17:18 | * | brson joined #nimrod |
01:17:45 | Varriount | Meep |
01:18:21 | filwit | beep |
01:23:41 | Varriount | So filwit, your move went well I hope? Finances ok? |
01:24:05 | filwit | ah it's going smooth so far |
01:24:19 | filwit | i'm fine financially atm, thanks for asking |
01:24:26 | filwit | family and friends are nice to see |
01:24:39 | filwit | but the weather isn't as nice as Florida :( |
01:24:59 | * | Varriount wishes he lived somewhere snowy |
01:26:00 | filwit | you from the south? |
01:26:20 | filwit | i wouldn't want to live in most inner parts of the southern states, but along the coast is nice |
01:33:00 | Varriount | I live on in the East. Not really near the coast, but close enough to get crazy weather. |
01:40:33 | NimBot | Araq/Nimrod devel dfba87f def [+0 ±1 -0]: Make times module compile with javascript backend |
01:40:33 | NimBot | Araq/Nimrod devel 9276a6d Andreas Rumpf [+0 ±1 -0]: Merge pull request #1488 from def-/js-times... 2 more lines |
01:49:13 | * | flaviu quit (Read error: No route to host) |
01:50:33 | * | flaviu joined #nimrod |
02:14:47 | * | adoniscik joined #nimrod |
02:43:01 | * | brson quit (Quit: leaving) |
02:44:09 | * | BlameStross1 quit (*.net *.split) |
02:44:09 | * | seubert quit (*.net *.split) |
02:44:11 | * | icebattle quit (*.net *.split) |
02:44:12 | * | Kelet quit (*.net *.split) |
02:44:13 | * | jez0990 quit (*.net *.split) |
02:44:13 | * | reloc0 quit (*.net *.split) |
02:44:13 | * | skyfex quit (*.net *.split) |
02:44:13 | * | krusipo quit (*.net *.split) |
02:44:14 | * | onionhammer quit (*.net *.split) |
02:47:58 | * | flaviu quit (Ping timeout: 272 seconds) |
02:59:07 | * | flaviu joined #nimrod |
03:13:19 | * | OrionPK joined #nimrod |
03:13:20 | * | BlameStross1 joined #nimrod |
03:13:20 | * | icebattle joined #nimrod |
03:13:20 | * | seubert joined #nimrod |
03:13:20 | * | Kelet joined #nimrod |
03:13:37 | * | jez0990 joined #nimrod |
03:13:37 | * | reloc0 joined #nimrod |
03:13:37 | * | skyfex joined #nimrod |
03:13:37 | * | krusipo joined #nimrod |
03:13:37 | * | onionhammer joined #nimrod |
03:16:00 | Skrylar | hm |
03:16:04 | Skrylar | deserialization is annoying. |
03:36:15 | * | q66 quit (Quit: Leaving) |
03:51:21 | * | saml_ quit (Quit: Leaving) |
04:27:41 | Skrylar | well its limping a bit but i'm starting to get in to the whole emacs major mode thing |
04:36:13 | * | bl0bs_ quit (Remote host closed the connection) |
05:08:06 | OrionPK | dom96 cant build babel anymore yo |
05:08:10 | OrionPK | declared/defined issue |
05:09:20 | filwit | just compile will master |
05:09:48 | filwit | or fork/fixit |
05:11:24 | filwit | for y in 0 || <720: # is this smart, or is there a way to better distribute workload across cores? |
05:12:16 | filwit | it doesn't seems to increase performance at all (it identical to using the '..' operator actually, which makes me thing something is wrong) |
05:12:28 | filwit | is there a compiler option i'm missing that |
05:12:40 | filwit | ..'s required for this to actually work? |
05:13:55 | filwit | indeed... my TaskManager only shows one core spike when i run the program... |
05:28:56 | Varriount | filwit: Who knows. Have you tried the new spawn/sync/parallel stuff? |
05:29:28 | filwit | yeah just did that actually, although the single-core version still works (very marginally) faster |
05:29:46 | Varriount | Hrm, I wonder why. |
05:29:51 | filwit | but now with parrallel/spawn it's spiking all cores |
05:30:01 | Varriount | Then again, I don't know what you're testing. |
05:30:12 | filwit | well it's the raytrace benchmark... so maybe the workload is too small for the thread overhead? |
05:30:14 | filwit | idk |
05:30:47 | filwit | it completes in ~300ms (single thread) & ~320 (multi thread) |
05:31:17 | filwit | i should up the resolution and try it |
05:36:22 | filwit | i think my timing might be off... |
05:37:16 | filwit | i upped the res 8x and now it's taking ~20sec, but still doesn't report the multi-thread version any faster... however, it looks like the elapsed time in the task-manager is longer |
05:37:27 | filwit | i'm using cpuTime() not epochTime()... |
05:40:39 | filwit | yeah that was it.. epochTime() reports correctly. Guess cpuTIme() is only for small measurements |
05:42:09 | filwit | ~19.4 (single thread), ~9.7 (4 threads taking 1/4th the image each) @ 1280x720 * 8 |
05:43:01 | Varriount | Woo! |
05:43:59 | Varriount | filwit: File monitoring on windows is almost done. It only took me completely reworking the file location synchronization mechanism. |
05:44:16 | Varriount | *sigh* yet another failure of recursion. |
05:44:32 | filwit | could be faster too if I did a better job at keeping the threads busy (i can watch some cores drop early and just wait around until the others are done) |
05:44:43 | filwit | Varriount: nice :) |
05:45:17 | Varriount | filwit: Any synchronization problems with your threaded code? |
05:45:24 | filwit | so what does that mean exactly, some lib which tracks file changes? |
05:46:10 | filwit | Varriount: no problems, it's just i'm dividing the (large) image into 4 equal parts and calling spawn 4 times (for my 4 core CPU) |
05:46:58 | Varriount | Hm. Perhaps dividing into more chunks would work? |
05:47:30 | filwit | yeah that's what I'm about to do |
06:13:25 | filwit | cool, got it down to ~5sec (compared to ~19.4 single threaded) |
06:13:44 | filwit | by dividing into smaller chunks and keeping the threads more active |
06:13:53 | * | Demos quit (Quit: Leaving) |
06:14:04 | Varriount | filwit: Do you think this is reddit-worthy? |
06:14:10 | filwit | Araq's ThreadPool stuff works well, and is very easy to use. Nice job on this. |
06:14:24 | * | Varriount has noticed a recent lack of Rust mentions on reddit |
06:14:49 | filwit | Varriount: maybe, but we'll have a bunch of reddit announcements soon :) |
06:16:08 | Varriount | Oh? What announcements would those be? |
06:25:38 | * | bjz_ quit (Ping timeout: 260 seconds) |
06:25:49 | Trixar_za | dom96: Apparently the bootloader is broken. Mind you, out of laziness I skipped the cross-compiler step of building binutils and gcc. I just used the system's gcc and as. I might as well just rewrite the bootloader. |
06:37:42 | * | adoniscik quit (Ping timeout: 245 seconds) |
07:12:59 | Varriount | Lesson for the day: Avoid using task manager as a tool for memory usage tracking |
07:15:59 | Trixar_za | Because it takes up more memory than the task itself? Oo |
07:16:12 | Varriount | No, because it's not accurate |
07:17:09 | Varriount | Trixar_za: The task manager shows how much memory the OS has allocated to the program, but not necessarily how much memory the program is using. |
07:17:20 | filwit | i found a memory leak in OpenGL glClear on KDE/Xfce composition & catalyst by watching the TaskManager... so I wouldn't say it doesn't have it's usefulness |
07:17:52 | filwit | (but i get what you're saying) |
07:19:18 | Varriount | Although, to be fair, the task manager does label it as "Private Working Memory", with the tooltip being "The amount of physical memory in use by the process that cannot be used by other processes" |
07:29:06 | Varriount | I'm about to be very mean towards the file event monitor code. |
07:29:37 | Varriount | I'm going to run a batch script which continually moves and renames the file, with no delays |
07:29:49 | Varriount | Muahahaha!!! |
07:31:03 | * | Varriount|Mobile joined #nimrod |
07:32:24 | Varriount | Araq: How well does the GC prevent heap fragmentation? |
07:34:33 | Trixar_za | Right, that's my cue to disappear for months on end since I have no idea what heap fragmentation is. Trixar_za AWAY. |
07:34:48 | Varriount | Nuu! Don't go!! |
07:41:48 | Varriount | Trixar_za: https://www.hiawatha-webserver.org/weblog/72 |
07:42:33 | filwit | Varriount: the heap doesn't do heap deal with heap defragmentation iirc. Only copy garbage collectors do that (they only copy the in-use memory, which defrags the heap as a side effect) |
07:42:47 | filwit | err.. the GC** doesnt ... |
07:43:22 | Varriount | "The GC doesn't deal with heap defragmentation"? |
07:43:33 | filwit | yeah that's what i meant to say |
07:44:17 | Varriount | filwit: Yes, but if I recall correctly, the GC uses memory mapped pages - I was wondering how that affected fragmentation. |
07:44:19 | filwit | nothing is preventing your app to recycle all it's memory at key points though, if memory fragmentation is really an issue (which it shouldn't be unless you're writing a service or something) |
07:45:24 | filwit | Varriount: ah, okay. Well i don't know the answer to that one :) |
07:45:58 | Trixar_za | So heap fragmentation is errors caused in memory by memory mismanagement? That could lead to interesting blue moon bugs. |
07:46:13 | Trixar_za | and when I say interesting, I mean annoying as hell |
07:47:49 | filwit | Trixar_za: heap = all memory allocated and managed by the GC. Sometimes (after memory is freed and reallocated) there's little spaces which no other object can fit. This can cause your overall memory to bloat over time and eventually (on long running processes such as web services) overflow and crash. |
07:49:46 | filwit | iirc (last time we talked about this here) someone mentioned a graph which showed that ~13% of FireFox's memory (or was it LibreOffice or Apche?) was fragments (unused space) after a certain period of time |
07:50:12 | Trixar_za | So it's like disk fragmentation done by Windows |
07:50:13 | Trixar_za | :P |
07:50:58 | filwit | yes.. i think (but i don't know much about Window's file-system enough to say for sure) |
07:52:35 | filwit | anyways, some garbage collectors (like MS C#'s and Java's) use "copy collectors".. these scan all memory once it reaches a certain threshold and copy it to a new location, which has the benefit of a) not needing to do cyclic detection, and b) defragmenting unused memory (since you only copy what's used) |
07:52:36 | Varriount | Trixar_za: Very much so. Except in this case, you can't 'split' a file into smaller pieces to fit into the gaps. |
07:53:10 | Varriount | filwit: But doesn't that mean you need double-pointers for everything, to refer to the new memory locations? |
07:53:53 | Trixar_za | I get the feeling I'm going to hate memory management in my near future |
07:54:02 | filwit | Varriount: i don't think so, but I'm not and expert on this subject by any measurement. I really have no idea, but I'm sure Araq or Jehan know. |
07:54:08 | Varriount | Unless you can magically re-write all the locations containing pointers to the old memory... |
07:54:41 | Varriount | Trixar_za: Which is why I have yet to thoroughly learn C/C++ |
07:54:59 | filwit | well copy collectors have their down-falls too... the most obvious is that it has to copy large portions of memory at some point (imagine what that means for a multi-threaded app) |
07:55:58 | filwit | and another issue is that it uses more memory (i think) because it creates memory "incubators"... which is probably why your C# "hello world" app uses 15mb of ram |
07:57:08 | filwit | but again... i really am out of my depth about this subject, and I've only just started learning about it really. So I have no idea what sort of tricks and techniques are used in modern GC designs |
07:58:04 | Varriount | filwit: I've read a bit about that, mainly from the kind of GC Pypy uses. |
07:58:20 | * | Varriount|Mobile quit (Ping timeout: 255 seconds) |
07:59:03 | filwit | Varriount: i would imagine there would be a way to "reassign" all references to their new memory locations, given that ref scanning is an inherent part of GC design |
07:59:41 | filwit | Varriount: that ^ was a response to your "double memory" for copy collectors question. |
08:00:32 | Varriount | ooo, this is an interesting article: http://en.wikipedia.org/wiki/Mac_OS_memory_management#Fragmentation |
08:05:52 | filwit | i wish there was an & and &= operator for seq |
08:06:27 | Varriount | Huh? What would & do? |
08:06:28 | filwit | i would much rather use mylist &= someItem over mylist.add(someItem) |
08:06:36 | filwit | concat |
08:06:48 | Varriount | So... same as add? |
08:06:50 | filwit | mylist = listA & listB |
08:07:18 | filwit | yeah, it would just be aliases for add and whatever |
08:07:54 | filwit | though i usually don't like pointless aliases at all |
08:09:53 | Varriount | proc `&`[T](a,b: seq[T]): seq[T] = result = newSeq[T](len(a)+len(b)); result.setLen(0); for item in a: result.add(item); for item in b: result.add(item) |
08:11:31 | Varriount | There's probably a more efficient way to copy the items onto the new sequence. |
08:11:31 | * | zahary joined #nimrod |
08:11:38 | Varriount | *gasp* |
08:11:46 | Varriount | zahary! You're alive! |
08:14:51 | filwit | Varriount: more like: proc `&`[T](a, b:seq[T]) = StrUtils.concat(a, b) |
08:15:00 | filwit | Varriount: but basically yes |
08:18:31 | filwit | mostly i want &= tho.. cause i think it look smuch better when there's a complex object you add to a list, eg: |
08:18:31 | filwit | thing.items &= Something(foo:10, bar:"...", baz:"...") |
08:18:37 | filwit | vs |
08:19:05 | filwit | thing.items.add( ... ) |
08:19:06 | filwit | thing.items.add ... |
08:19:19 | filwit | ^ i don't like that for some reason... feels odd |
08:19:23 | filwit | but that's probably just me |
08:20:27 | filwit | then again... i have to admit that seeing 'add' is more clear in terms of readability... so maybe it's just a bad idea to have a pointless alias operator for it |
08:21:25 | filwit | anyways, going to sleep, later |
08:21:32 | * | filwit quit (Quit: Leaving) |
09:09:28 | * | kunev joined #nimrod |
09:48:46 | * | io2 joined #nimrod |
10:42:49 | * | zahary1 joined #nimrod |
10:42:50 | * | zahary quit (Read error: Connection reset by peer) |
10:47:28 | * | kunev quit (Quit: leaving) |
10:50:36 | * | willwillson joined #nimrod |
11:01:35 | * | EXetoC joined #nimrod |
11:31:53 | * | saml_ joined #nimrod |
11:33:03 | * | bjz joined #nimrod |
12:16:03 | * | clone1018_ quit (Ping timeout: 240 seconds) |
12:42:45 | * | darkf quit (Quit: Leaving) |
12:54:35 | dom96 | http://www.reddit.com/r/programming/comments/2dpii1/what_i_like_about_the_nimrod_programming_language/ |
12:57:42 | * | saml_ quit (Quit: Leaving) |
13:52:36 | * | nande joined #nimrod |
14:18:08 | * | q66 joined #nimrod |
14:18:13 | * | gkoller joined #nimrod |
14:28:24 | willwillson | should I prefer {.pure.} enums over ordinary enums? |
14:29:52 | EXetoC | that's not very common |
14:30:26 | EXetoC | it's up to you, but a prefix of some sort is often used instead, so as to minimize conflicts |
14:31:30 | OrionPK | dom96 babel? |
14:32:00 | willwillson | thanks |
14:32:58 | EXetoC | somethingKind = enum\n skSomeMember |
14:34:54 | EXetoC | abbreviate (or whatever is more appropriate) or use pure as you see fit |
14:35:54 | EXetoC | but I haven't used pure in a long time |
14:53:08 | * | gkoller quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
14:58:22 | willwillson | thanks for the advice |
15:48:43 | * | bogen joined #nimrod |
16:02:58 | * | io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist) |
16:05:13 | * | io2 joined #nimrod |
16:18:33 | * | johnsoft quit (Ping timeout: 240 seconds) |
16:18:50 | * | johnsoft joined #nimrod |
16:23:30 | * | willwillson quit (Ping timeout: 272 seconds) |
16:30:22 | * | adoniscik joined #nimrod |
16:37:35 | * | Demos joined #nimrod |
16:40:12 | * | Boscop quit (Ping timeout: 245 seconds) |
16:54:08 | flaviu | https://gist.github.com/flaviut/d2749bae9da77cc739b3 |
16:54:40 | flaviu | I got clang to give me a callgraph of system.nim |
17:03:47 | Demos | a.pdf hehe |
17:04:06 | Demos | I love that the a.out thing is so ingrained in our tools |
17:11:49 | * | saml_ joined #nimrod |
17:28:18 | * | io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist) |
17:28:26 | * | clone1018 joined #nimrod |
17:29:01 | * | saml_ quit (Read error: Connection reset by peer) |
17:32:08 | flaviu | No, I chose that so that it would be sorted at the top |
17:32:35 | flaviu | I don't think it even provides a default output file name |
17:34:36 | * | saml_ joined #nimrod |
17:38:28 | bogen | it seems like that callgraph tree is not balanced. It should not be so spaghetti like. There should be arrows showing call direction. |
17:39:20 | flaviu | There are arrows showing call directions |
17:39:23 | * | io2 joined #nimrod |
17:39:30 | flaviu | It isn't a tree though, there isn't a main method or anything |
17:39:56 | flaviu | Its every procedure in the system module and how they interact |
17:41:25 | bogen | ok, I did not zoom out far enough |
17:43:45 | bogen | ok, most calls seem to be down, which is good. There is some single and double recursion. |
17:44:18 | Demos | are we sure that trying to have a small dependency graph in a single module is a good thing? |
17:46:25 | Araq | well we are sure the dependencies in system.nim are minimal |
17:46:34 | Trixar_za | Oh right |
17:46:44 | Trixar_za | I need to fix that bootloader |
17:47:00 | bogen | I'm not seeing any upward calls apart from the single/double recursion. |
17:51:59 | * | Demos_ joined #nimrod |
17:55:08 | * | Demos quit (Ping timeout: 240 seconds) |
17:57:33 | * | Boscop joined #nimrod |
17:58:41 | * | Boscop_ joined #nimrod |
18:00:49 | * | Boscop_ quit (Client Quit) |
18:01:55 | * | Boscop quit (Ping timeout: 255 seconds) |
18:14:39 | * | nande quit (Remote host closed the connection) |
18:16:03 | * | kunev joined #nimrod |
18:20:14 | * | zahary1 quit (Ping timeout: 255 seconds) |
18:22:55 | * | io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist) |
18:38:28 | * | perturbation joined #nimrod |
18:50:44 | NimBot | nimrod-code/babel master de62dc2 Dominik Picheta [+0 ±1 -0]: Fixes for recent compiler changes. |
18:50:46 | dom96 | OrionPK: done |
18:52:41 | * | zahary joined #nimrod |
18:54:02 | * | skyfex quit (Quit: Computer has gone to sleep.) |
18:54:38 | * | skyfex joined #nimrod |
18:59:58 | * | willwillson joined #nimrod |
19:03:29 | * | Boscop joined #nimrod |
19:03:29 | * | Boscop quit (Changing host) |
19:03:29 | * | Boscop joined #nimrod |
19:17:21 | * | Jesin quit (Quit: Leaving) |
19:18:30 | Skrylar | so i've come to an interesting observation about significant whitespace |
19:18:42 | Skrylar | you have to more or less make a guess at when to put dedents when doing auto-indent scripts |
19:22:24 | Araq | what is an auto-indent script? |
19:22:37 | Varriount | Araq: How much heap fragmentation does the default GC create/avoid? |
19:23:59 | Varriount | Also, is there a way to "shallow assign" the contents of one string to another, if the destination string can already contain the contents of the source string? |
19:26:09 | Araq | Varriount: we don't even have a measure for fragmentation yet. We can do quite some things to avoid fragmentation but I always thought fragmentation is an academic problem and some recent paper agrees with me. |
19:26:18 | dom96 | Araq: gcsafe breaks asyncdispatch |
19:26:31 | Araq | dom96: no it doesn't |
19:26:43 | dom96 | Araq: Doesn't compile anymore. |
19:26:56 | Araq | hum? I fixed that days ago |
19:27:10 | * | Jesin joined #nimrod |
19:27:22 | dom96 | it complains that 'cb' is not gcsafe. |
19:27:22 | Varriount | Araq: See https://gist.github.com/Varriount/06d54907ad8da089ec1c |
19:28:41 | * | Jesin quit (Max SendQ exceeded) |
19:29:14 | * | Jesin joined #nimrod |
19:29:18 | Araq | nimrod c lib/pure/asyncdispatch # compiles |
19:30:01 | dom96 | oh i see |
19:30:01 | Araq | Varriount: there is shallowCopy(dest, src) for strings and also 'shallow' to mark strings as "pass around by ref" |
19:30:26 | dom96 | This gcsafe detection does in fact work, well done. |
19:30:48 | Araq | I know, it's awesome |
19:31:00 | dom96 | would be nice to get an instantiation from here |
19:31:07 | Araq | I used it to verify nimbuild back in the days |
19:31:43 | Varriount | Araq: Yes, but that copies the pointer, not the contents. |
19:31:56 | Araq | Varriount: isn't that what you want? |
19:32:03 | Araq | oh I get it |
19:32:11 | Araq | nice idea! |
19:32:56 | Araq | yeah we should do that ... requires a codegen patch though |
19:33:42 | Araq | dom96: well I can take a look, but usually if you don't get an "instantation from here" we don't have that information anymore |
19:34:12 | dom96 | Araq: It's possible I simply didn't notice it. If I run into it again i'll create an issue. |
19:34:53 | Varriount | Araq: How much does this idea change string semantics? Could it be done as an automatic optimization? |
19:35:11 | Araq | Varriount: doesn't change any semantics afaict |
19:35:34 | Araq | it's not even an optimization really, just a different codegen strategy |
19:50:34 | * | jez0990 quit (*.net *.split) |
19:50:34 | * | reloc0 quit (*.net *.split) |
19:50:35 | * | krusipo quit (*.net *.split) |
19:50:35 | * | onionhammer quit (*.net *.split) |
19:50:35 | * | zahary quit (*.net *.split) |
19:50:36 | * | kunev quit (*.net *.split) |
19:50:36 | * | OrionPK quit (*.net *.split) |
19:50:36 | * | BlameStross1 quit (*.net *.split) |
19:50:36 | * | seubert quit (*.net *.split) |
19:50:37 | * | Demos_ quit (*.net *.split) |
19:50:37 | * | icebattle quit (*.net *.split) |
19:50:38 | * | Kelet quit (*.net *.split) |
19:50:42 | * | jez0990 joined #nimrod |
19:50:42 | * | reloc0 joined #nimrod |
19:50:42 | * | krusipo joined #nimrod |
19:50:42 | * | onionhammer joined #nimrod |
19:51:50 | Varriount | Araq: While we are on the topic of memory optimization, do inline iterators copy yielded data each time it is passed, or is it stored in the same area of memory? |
19:52:50 | Skrylar | Varriount: i think it depends on GCC |
19:52:58 | * | zahary joined #nimrod |
19:52:59 | * | kunev joined #nimrod |
19:52:59 | * | OrionPK joined #nimrod |
19:52:59 | * | BlameStross1 joined #nimrod |
19:52:59 | * | seubert joined #nimrod |
19:52:59 | Skrylar | from what i recall an inline iterator is actually compiled as a while loop |
19:53:46 | * | Demos_ joined #nimrod |
19:53:46 | * | icebattle joined #nimrod |
19:53:46 | * | Kelet joined #nimrod |
19:54:34 | Araq | Varriount: it depends but usually the copies are elided |
19:59:18 | * | kunev quit (Ping timeout: 246 seconds) |
20:04:21 | * | untitaker quit (Ping timeout: 240 seconds) |
20:06:56 | * | io2 joined #nimrod |
20:11:27 | * | untitaker joined #nimrod |
20:18:10 | * | saml_ quit (Remote host closed the connection) |
20:43:53 | * | Jesin quit (Ping timeout: 240 seconds) |
20:46:15 | * | Jesin joined #nimrod |
21:05:40 | adoniscik | is there a reason nimrod can't automatically convert float-cfloat and double-cdouble arrays? |
21:13:33 | Araq | yes, conversions are shallow |
21:13:53 | Araq | you don't want O(n) implicit conversions for "convenience" in a systems programming language |
21:32:05 | * | ARCADIVS quit (Quit: WeeChat 0.4.3) |
21:34:37 | * | bogen quit (Quit: Leaving.) |
21:37:02 | Demos_ | is there a # option to get c2nim to importc and dynlib stuff for you? |
21:37:42 | * | johnsoft quit (Ping timeout: 245 seconds) |
21:42:29 | Araq | #dynlib |
21:42:36 | Araq | read its docs |
21:46:31 | flaviu | Araq: Actually, its free |
21:47:07 | flaviu | if typedef int foo, *foo == *int |
21:47:42 | Araq | nim's float is C's double |
21:47:52 | Araq | so float-cfloat is not free |
21:47:56 | * | johnsoft joined #nimrod |
21:48:04 | flaviu | Ah, I think adoniscik was just confused there |
21:48:18 | flaviu | I'm sure he meant float32-cfloat |
21:48:18 | Araq | but I think he's only talking about more intelligent type inference for array constructors |
21:48:31 | Araq | which we definitely need to do some day |
21:49:58 | Araq | flaviu: this has been implemented, right? https://github.com/Araq/Nimrod/issues/1217 |
21:50:28 | flaviu | Yep, but it seems I didn't use the keywords github wanted |
21:51:19 | Skrylar | does anyone else dedent after blank lines? |
21:51:42 | Skrylar | i've been looking at the auto-indent problem; i usually clump everything together and use a comment to separate different blocks, but thats because i navigate with paragraph commands |
21:53:46 | flaviu | Skrylar: dedent after blank lines? |
21:54:45 | flaviu | like `\n\n` -> `\n|<-`? |
21:56:13 | Skrylar | flaviu: yeah. i might need to make a gist to clarify |
21:56:24 | flaviu | I do |
21:56:28 | Skrylar | right now i mostly do it all manually, but the emacsen way is to have an autoindenter |
21:56:40 | Skrylar | which can't 'know what i mean' since there is no actual closing mark |
21:56:58 | flaviu | I like to use paragraph breaks to set apart related blocks of code |
21:57:09 | flaviu | same as with prose paragraphs |
21:57:26 | flaviu | s/I do/I don't |
21:57:50 | Skrylar | hmm. looks like i have a lot of code that would have to be fiddled with for that |
21:58:24 | Skrylar | guess i could just rebind the navigation keys to skip over indented chunks instead |
21:59:11 | Skrylar | flaviu: i'm starting to see the downside of not having explicit terminators; it makes it much more difficult to do things like structured editing commands |
21:59:36 | flaviu | I particularly miss pretty lambdas |
22:00:07 | Skrylar | a single blank line to dedent means that normal code will look ok, however then you can't say "hey, please wrap the remainder of this indent level in an if statement for me" |
22:00:18 | Skrylar | and two blank lines makes short if statements look ridiculous |
22:01:06 | * | perturbation quit (Quit: Leaving) |
22:01:27 | Araq | well you can always use #end as a terminator |
22:01:37 | flaviu | haha |
22:01:54 | Araq | that said, it sounds like some weird tooling limitation |
22:02:16 | Araq | "the remainder of this indent level" is clearly defined either way |
22:04:45 | * | filwit joined #nimrod |
22:06:18 | filwit | Araq: did you see my post here: http://forum.nimrod-lang.org/t/526 |
22:06:19 | * | q66_ joined #nimrod |
22:07:08 | filwit | (my question) |
22:07:41 | flaviu | filwit: You might be better off reading the C memory model |
22:08:22 | dom96 | Araq: Please add showstopper bugs to the milestone. |
22:08:33 | filwit | flaviu: er.. why? |
22:08:46 | * | q66 quit (Ping timeout: 260 seconds) |
22:08:52 | flaviu | Because thats what governs the behavior here |
22:10:14 | filwit | well in C i believe what I'm doing is perfectly safe, but I am unsure of what mechanisms ThreadPool and the GC are using, which is why I asked. |
22:10:47 | filwit | guess i should just look at the ThreadPool module source... |
22:16:41 | * | flaviu quit (Read error: Connection reset by peer) |
22:18:45 | Araq | hi filwit |
22:18:51 | filwit | hi |
22:19:07 | Araq | the answer is complex so I haven't answer yet |
22:19:34 | * | flaviu joined #nimrod |
22:19:41 | filwit | okay, no problem, am looking at the source anyways, so i may find my answer there |
22:19:56 | Araq | you won't |
22:20:01 | Araq | in short: your cast to 'ptr' is fine and 'ref' needs to have deep copy semantics |
22:20:18 | filwit | hrm, k |
22:20:26 | Araq | however for parallel syntax like a[i..j] will be supported soon |
22:20:53 | Araq | which doesn't copy and the compiler proves the slice expression is disjoint |
22:21:29 | Araq | so it's provably without data races and without any locks |
22:21:59 | filwit | that sounds like a good solution |
22:22:13 | filwit | (though i don't understand deep copy thing for ref) |
22:22:29 | filwit | (nevermind, yes i do) |
22:22:52 | Araq | well for 'parallel' we can weaken the requirement for 'ref' |
22:23:06 | Araq | dunno if it's a good idea |
22:25:18 | filwit | i'm still wrapping my head around all of it, so no comment.. only that I was impressed with how easy it was to multi-thread the thing and max all cores for a pretty linear performance increase per-core. |
22:26:39 | filwit | i also think like the sound of you parallel slice idea for safe manipulation of arrays without the need to cast |
22:27:00 | filwit | makes sense (if i'm understanding you correctly) |
22:28:17 | * | tinAndi joined #nimrod |
22:31:20 | * | tinAndi quit (Quit: ChatZilla 0.9.90.1 [Firefox 31.0/20140716183446]) |
22:31:44 | Araq | I think you do |
22:35:16 | flaviu | filwit: Write a blog post, explaining your thought process while paralizing that code! |
22:35:57 | filwit | flaviu: would be easier to do that if i had a blog :P |
22:36:14 | flaviu | medium.com? |
22:36:22 | reactormonk | Nice to see nimrod is coming along :-) |
22:37:09 | filwit | flaviu: i'll check it out |
22:37:28 | dom96 | screw that, use ipsum genera |
22:37:53 | filwit | i'll look into that as well |
22:40:02 | * | io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist) |
22:40:54 | flaviu | dom96: Different, but incompatible things |
22:54:41 | * | adoniscik quit (Quit: Leaving) |
23:04:27 | * | superfunc joined #nimrod |
23:07:48 | * | superfunc quit (Client Quit) |
23:31:23 | * | shevy quit (Ping timeout: 240 seconds) |
23:37:47 | Skrylar | bjz: meep |
23:37:52 | * | bogen joined #nimrod |
23:43:48 | * | shevy joined #nimrod |
23:48:18 | * | bogen left #nimrod (#nimrod) |
23:48:33 | * | Demos__ joined #nimrod |
23:51:47 | NimBot | Araq/Nimrod devel c4ac8ed Clay Sweetser [+0 ±1 -0]: Make device and file ID's public.... 2 more lines |
23:51:47 | NimBot | Araq/Nimrod devel 6dd96ab Clay Sweetser [+0 ±1 -0]: Made the code actually work, updated the docstring to point out that the given file path must exist *and* be accessible from the current working directory of the running program. |
23:51:47 | NimBot | Araq/Nimrod devel 3cdc328 Andreas Rumpf [+0 ±1 -0]: Merge pull request #1461 from Varriount/os/add-hiddenFile... 2 more lines |
23:52:32 | * | Demos_ quit (Ping timeout: 272 seconds) |
23:53:07 | dom96 | Varriount: how's file monitoring going? |