<< 16-08-2014 >>

00:00:03dom96tomorrow is not over yet though :P
00:00:20dom96flaviu: Interested in writing a starter pack for that?
00:01:06Araqfunny I found something similar for starcraft broodwar
00:01:14flaviudom96: 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:20Araqthough it's only for C++
00:01:39dom96flaviu: :(
00:02:41dom96I may just play around with this.
00:02:52dom96Maybe write a genetic algorithm for it.
00:03:15Araqmeh write some broodwar AI instead that outplays a professional
00:03:36Araqtook only a full university course to get there
00:03:56Araqand they kind of cheated
00:04:29Araqexcessive micro with mutas ... no human being can do it this way
00:04:31dom96I don't really have 4 years
00:05:28Araqmy university should have taught me AI this way
00:05:38Araqthere is hardly anything cooler
00:08:43Trixar_zaKeepe it gangster?
00:09:09dom96Seems I broke tenumitems
00:09:35dom96I suppose the new error is correct for it, right?
00:09:45dom96(Error: expression 'items' cannot be called)
00:09:58*johnsoft quit (Ping timeout: 250 seconds)
00:11:38Trixar_zaincidentally dom96, you're right, it doesn't compile :P
00:12:01dom96Trixar_za: The fix should be trivial.
00:12:13dom96There is code which should intentionally cause an exception at runtime.
00:12:20dom96But the compiler now catches it at compile-time heh
00:13:32Trixar_zaYeah, I just commented out var outOfBounds = vram[len(vram[])]
00:14:20*johnsoft joined #nimrod
00:14:51Araqdom96: yeah, you simply have to change the expected error message
00:15:47NimBotAraq/Nimrod devel 53b8d62 Dominik Picheta [+0 ±1 -0]: Fixes tenumitems test.
00:20:27dom96good night
00:22:17Araqsame here, good night
00:24:43Trixar_zaHmmm
00:24:46Trixar_zaGoodnight guys
00:24:51Trixar_zaSome naming issues too
00:24:54Trixar_zale fix
00:30:02Trixar_zaand 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:02Araqhi filwit
00:51:12filwithello
00:52:00dom96well, Araq is keeping me up
00:52:04dom96hello filwit
00:52:10Araqhey
00:52:13AraqI'm sleeping
00:52:18filwitah, okay
00:52:20filwithi dom96
00:52:25AraqYOU are keeping ME up
00:52:47filwitsorry, time difference is even wider now :|
00:53:00filwitit's 6pm here
00:53:15dom96Looks like me and Araq need to move.
00:55:40filwitlol
01:03:49*ARCADIVS joined #nimrod
01:08:15Varriount|Mobilefilwit!
01:08:31filwithey Varriount, one sec brb
01:08:42*filwit quit (Quit: Leaving)
01:08:51Varriount|MobileI'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:45VarriountMeep
01:18:21filwitbeep
01:23:41VarriountSo filwit, your move went well I hope? Finances ok?
01:24:05filwitah it's going smooth so far
01:24:19filwiti'm fine financially atm, thanks for asking
01:24:26filwitfamily and friends are nice to see
01:24:39filwitbut the weather isn't as nice as Florida :(
01:24:59*Varriount wishes he lived somewhere snowy
01:26:00filwityou from the south?
01:26:20filwiti wouldn't want to live in most inner parts of the southern states, but along the coast is nice
01:33:00VarriountI live on in the East. Not really near the coast, but close enough to get crazy weather.
01:40:33NimBotAraq/Nimrod devel dfba87f def [+0 ±1 -0]: Make times module compile with javascript backend
01:40:33NimBotAraq/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:00Skrylarhm
03:16:04Skrylardeserialization is annoying.
03:36:15*q66 quit (Quit: Leaving)
03:51:21*saml_ quit (Quit: Leaving)
04:27:41Skrylarwell 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:06OrionPKdom96 cant build babel anymore yo
05:08:10OrionPKdeclared/defined issue
05:09:20filwitjust compile will master
05:09:48filwitor fork/fixit
05:11:24filwitfor y in 0 || <720: # is this smart, or is there a way to better distribute workload across cores?
05:12:16filwitit doesn't seems to increase performance at all (it identical to using the '..' operator actually, which makes me thing something is wrong)
05:12:28filwitis there a compiler option i'm missing that
05:12:40filwit..'s required for this to actually work?
05:13:55filwitindeed... my TaskManager only shows one core spike when i run the program...
05:28:56Varriountfilwit: Who knows. Have you tried the new spawn/sync/parallel stuff?
05:29:28filwityeah just did that actually, although the single-core version still works (very marginally) faster
05:29:46VarriountHrm, I wonder why.
05:29:51filwitbut now with parrallel/spawn it's spiking all cores
05:30:01VarriountThen again, I don't know what you're testing.
05:30:12filwitwell it's the raytrace benchmark... so maybe the workload is too small for the thread overhead?
05:30:14filwitidk
05:30:47filwitit completes in ~300ms (single thread) & ~320 (multi thread)
05:31:17filwiti should up the resolution and try it
05:36:22filwiti think my timing might be off...
05:37:16filwiti 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:27filwiti'm using cpuTime() not epochTime()...
05:40:39filwityeah that was it.. epochTime() reports correctly. Guess cpuTIme() is only for small measurements
05:42:09filwit~19.4 (single thread), ~9.7 (4 threads taking 1/4th the image each) @ 1280x720 * 8
05:43:01VarriountWoo!
05:43:59Varriountfilwit: File monitoring on windows is almost done. It only took me completely reworking the file location synchronization mechanism.
05:44:16Varriount*sigh* yet another failure of recursion.
05:44:32filwitcould 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:43filwitVarriount: nice :)
05:45:17Varriountfilwit: Any synchronization problems with your threaded code?
05:45:24filwitso what does that mean exactly, some lib which tracks file changes?
05:46:10filwitVarriount: 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:58VarriountHm. Perhaps dividing into more chunks would work?
05:47:30filwityeah that's what I'm about to do
06:13:25filwitcool, got it down to ~5sec (compared to ~19.4 single threaded)
06:13:44filwitby dividing into smaller chunks and keeping the threads more active
06:13:53*Demos quit (Quit: Leaving)
06:14:04Varriountfilwit: Do you think this is reddit-worthy?
06:14:10filwitAraq'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:49filwitVarriount: maybe, but we'll have a bunch of reddit announcements soon :)
06:16:08VarriountOh? What announcements would those be?
06:25:38*bjz_ quit (Ping timeout: 260 seconds)
06:25:49Trixar_zadom96: 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:59VarriountLesson for the day: Avoid using task manager as a tool for memory usage tracking
07:15:59Trixar_zaBecause it takes up more memory than the task itself? Oo
07:16:12VarriountNo, because it's not accurate
07:17:09VarriountTrixar_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:20filwiti 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:52filwit(but i get what you're saying)
07:19:18VarriountAlthough, 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:06VarriountI'm about to be very mean towards the file event monitor code.
07:29:37VarriountI'm going to run a batch script which continually moves and renames the file, with no delays
07:29:49VarriountMuahahaha!!!
07:31:03*Varriount|Mobile joined #nimrod
07:32:24VarriountAraq: How well does the GC prevent heap fragmentation?
07:34:33Trixar_zaRight, that's my cue to disappear for months on end since I have no idea what heap fragmentation is. Trixar_za AWAY.
07:34:48VarriountNuu! Don't go!!
07:41:48VarriountTrixar_za: https://www.hiawatha-webserver.org/weblog/72
07:42:33filwitVarriount: 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:47filwiterr.. the GC** doesnt ...
07:43:22Varriount"The GC doesn't deal with heap defragmentation"?
07:43:33filwityeah that's what i meant to say
07:44:17Varriountfilwit: Yes, but if I recall correctly, the GC uses memory mapped pages - I was wondering how that affected fragmentation.
07:44:19filwitnothing 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:24filwitVarriount: ah, okay. Well i don't know the answer to that one :)
07:45:58Trixar_zaSo heap fragmentation is errors caused in memory by memory mismanagement? That could lead to interesting blue moon bugs.
07:46:13Trixar_zaand when I say interesting, I mean annoying as hell
07:47:49filwitTrixar_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:46filwitiirc (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:12Trixar_zaSo it's like disk fragmentation done by Windows
07:50:13Trixar_za:P
07:50:58filwityes.. i think (but i don't know much about Window's file-system enough to say for sure)
07:52:35filwitanyways, 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:36VarriountTrixar_za: Very much so. Except in this case, you can't 'split' a file into smaller pieces to fit into the gaps.
07:53:10Varriountfilwit: But doesn't that mean you need double-pointers for everything, to refer to the new memory locations?
07:53:53Trixar_zaI get the feeling I'm going to hate memory management in my near future
07:54:02filwitVarriount: 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:08VarriountUnless you can magically re-write all the locations containing pointers to the old memory...
07:54:41VarriountTrixar_za: Which is why I have yet to thoroughly learn C/C++
07:54:59filwitwell 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:58filwitand 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:08filwitbut 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:04Varriountfilwit: 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:03filwitVarriount: 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:41filwitVarriount: that ^ was a response to your "double memory" for copy collectors question.
08:00:32Varriountooo, this is an interesting article: http://en.wikipedia.org/wiki/Mac_OS_memory_management#Fragmentation
08:05:52filwiti wish there was an & and &= operator for seq
08:06:27VarriountHuh? What would & do?
08:06:28filwiti would much rather use mylist &= someItem over mylist.add(someItem)
08:06:36filwitconcat
08:06:48VarriountSo... same as add?
08:06:50filwitmylist = listA & listB
08:07:18filwityeah, it would just be aliases for add and whatever
08:07:54filwitthough i usually don't like pointless aliases at all
08:09:53Varriountproc `&`[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:31VarriountThere's probably a more efficient way to copy the items onto the new sequence.
08:11:31*zahary joined #nimrod
08:11:38Varriount*gasp*
08:11:46Varriountzahary! You're alive!
08:14:51filwitVarriount: more like: proc `&`[T](a, b:seq[T]) = StrUtils.concat(a, b)
08:15:00filwitVarriount: but basically yes
08:18:31filwitmostly i want &= tho.. cause i think it look smuch better when there's a complex object you add to a list, eg:
08:18:31filwitthing.items &= Something(foo:10, bar:"...", baz:"...")
08:18:37filwitvs
08:19:05filwitthing.items.add( ... )
08:19:06filwitthing.items.add ...
08:19:19filwit^ i don't like that for some reason... feels odd
08:19:23filwitbut that's probably just me
08:20:27filwitthen 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:25filwitanyways, 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:35dom96http://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:24willwillsonshould I prefer {.pure.} enums over ordinary enums?
14:29:52EXetoCthat's not very common
14:30:26EXetoCit's up to you, but a prefix of some sort is often used instead, so as to minimize conflicts
14:31:30OrionPKdom96 babel?
14:32:00willwillsonthanks
14:32:58EXetoCsomethingKind = enum\n skSomeMember
14:34:54EXetoCabbreviate (or whatever is more appropriate) or use pure as you see fit
14:35:54EXetoCbut 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:22willwillsonthanks 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:08flaviuhttps://gist.github.com/flaviut/d2749bae9da77cc739b3
16:54:40flaviuI got clang to give me a callgraph of system.nim
17:03:47Demosa.pdf hehe
17:04:06DemosI 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:08flaviuNo, I chose that so that it would be sorted at the top
17:32:35flaviuI don't think it even provides a default output file name
17:34:36*saml_ joined #nimrod
17:38:28bogenit seems like that callgraph tree is not balanced. It should not be so spaghetti like. There should be arrows showing call direction.
17:39:20flaviuThere are arrows showing call directions
17:39:23*io2 joined #nimrod
17:39:30flaviuIt isn't a tree though, there isn't a main method or anything
17:39:56flaviuIts every procedure in the system module and how they interact
17:41:25bogenok, I did not zoom out far enough
17:43:45bogenok, most calls seem to be down, which is good. There is some single and double recursion.
17:44:18Demosare we sure that trying to have a small dependency graph in a single module is a good thing?
17:46:25Araqwell we are sure the dependencies in system.nim are minimal
17:46:34Trixar_zaOh right
17:46:44Trixar_zaI need to fix that bootloader
17:47:00bogenI'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:44NimBotnimrod-code/babel master de62dc2 Dominik Picheta [+0 ±1 -0]: Fixes for recent compiler changes.
18:50:46dom96OrionPK: 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:30Skrylarso i've come to an interesting observation about significant whitespace
19:18:42Skrylaryou have to more or less make a guess at when to put dedents when doing auto-indent scripts
19:22:24Araqwhat is an auto-indent script?
19:22:37VarriountAraq: How much heap fragmentation does the default GC create/avoid?
19:23:59VarriountAlso, 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:09AraqVarriount: 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:18dom96Araq: gcsafe breaks asyncdispatch
19:26:31Araqdom96: no it doesn't
19:26:43dom96Araq: Doesn't compile anymore.
19:26:56Araqhum? I fixed that days ago
19:27:10*Jesin joined #nimrod
19:27:22dom96it complains that 'cb' is not gcsafe.
19:27:22VarriountAraq: See https://gist.github.com/Varriount/06d54907ad8da089ec1c
19:28:41*Jesin quit (Max SendQ exceeded)
19:29:14*Jesin joined #nimrod
19:29:18Araqnimrod c lib/pure/asyncdispatch # compiles
19:30:01dom96oh i see
19:30:01AraqVarriount: there is shallowCopy(dest, src) for strings and also 'shallow' to mark strings as "pass around by ref"
19:30:26dom96This gcsafe detection does in fact work, well done.
19:30:48AraqI know, it's awesome
19:31:00dom96would be nice to get an instantiation from here
19:31:07AraqI used it to verify nimbuild back in the days
19:31:43VarriountAraq: Yes, but that copies the pointer, not the contents.
19:31:56AraqVarriount: isn't that what you want?
19:32:03Araqoh I get it
19:32:11Araqnice idea!
19:32:56Araqyeah we should do that ... requires a codegen patch though
19:33:42Araqdom96: 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:12dom96Araq: It's possible I simply didn't notice it. If I run into it again i'll create an issue.
19:34:53VarriountAraq: How much does this idea change string semantics? Could it be done as an automatic optimization?
19:35:11AraqVarriount: doesn't change any semantics afaict
19:35:34Araqit'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:50VarriountAraq: 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:50SkrylarVarriount: 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:59Skrylarfrom 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:34AraqVarriount: 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:40adoniscikis there a reason nimrod can't automatically convert float-cfloat and double-cdouble arrays?
21:13:33Araqyes, conversions are shallow
21:13:53Araqyou 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:02Demos_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:29Araq#dynlib
21:42:36Araqread its docs
21:46:31flaviuAraq: Actually, its free
21:47:07flaviuif typedef int foo, *foo == *int
21:47:42Araqnim's float is C's double
21:47:52Araqso float-cfloat is not free
21:47:56*johnsoft joined #nimrod
21:48:04flaviuAh, I think adoniscik was just confused there
21:48:18flaviuI'm sure he meant float32-cfloat
21:48:18Araqbut I think he's only talking about more intelligent type inference for array constructors
21:48:31Araqwhich we definitely need to do some day
21:49:58Araqflaviu: this has been implemented, right? https://github.com/Araq/Nimrod/issues/1217
21:50:28flaviuYep, but it seems I didn't use the keywords github wanted
21:51:19Skrylardoes anyone else dedent after blank lines?
21:51:42Skrylari'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:46flaviuSkrylar: dedent after blank lines?
21:54:45flaviulike `\n\n` -> `\n|<-`?
21:56:13Skrylarflaviu: yeah. i might need to make a gist to clarify
21:56:24flaviuI do
21:56:28Skrylarright now i mostly do it all manually, but the emacsen way is to have an autoindenter
21:56:40Skrylarwhich can't 'know what i mean' since there is no actual closing mark
21:56:58flaviuI like to use paragraph breaks to set apart related blocks of code
21:57:09flaviusame as with prose paragraphs
21:57:26flavius/I do/I don't
21:57:50Skrylarhmm. looks like i have a lot of code that would have to be fiddled with for that
21:58:24Skrylarguess i could just rebind the navigation keys to skip over indented chunks instead
21:59:11Skrylarflaviu: 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:36flaviuI particularly miss pretty lambdas
22:00:07Skrylara 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:18Skrylarand two blank lines makes short if statements look ridiculous
22:01:06*perturbation quit (Quit: Leaving)
22:01:27Araqwell you can always use #end as a terminator
22:01:37flaviuhaha
22:01:54Araqthat said, it sounds like some weird tooling limitation
22:02:16Araq"the remainder of this indent level" is clearly defined either way
22:04:45*filwit joined #nimrod
22:06:18filwitAraq: did you see my post here: http://forum.nimrod-lang.org/t/526
22:06:19*q66_ joined #nimrod
22:07:08filwit(my question)
22:07:41flaviufilwit: You might be better off reading the C memory model
22:08:22dom96Araq: Please add showstopper bugs to the milestone.
22:08:33filwitflaviu: er.. why?
22:08:46*q66 quit (Ping timeout: 260 seconds)
22:08:52flaviuBecause thats what governs the behavior here
22:10:14filwitwell 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:47filwitguess i should just look at the ThreadPool module source...
22:16:41*flaviu quit (Read error: Connection reset by peer)
22:18:45Araqhi filwit
22:18:51filwithi
22:19:07Araqthe answer is complex so I haven't answer yet
22:19:34*flaviu joined #nimrod
22:19:41filwitokay, no problem, am looking at the source anyways, so i may find my answer there
22:19:56Araqyou won't
22:20:01Araqin short: your cast to 'ptr' is fine and 'ref' needs to have deep copy semantics
22:20:18filwithrm, k
22:20:26Araqhowever for parallel syntax like a[i..j] will be supported soon
22:20:53Araqwhich doesn't copy and the compiler proves the slice expression is disjoint
22:21:29Araqso it's provably without data races and without any locks
22:21:59filwitthat sounds like a good solution
22:22:13filwit(though i don't understand deep copy thing for ref)
22:22:29filwit(nevermind, yes i do)
22:22:52Araqwell for 'parallel' we can weaken the requirement for 'ref'
22:23:06Araqdunno if it's a good idea
22:25:18filwiti'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:39filwiti also think like the sound of you parallel slice idea for safe manipulation of arrays without the need to cast
22:27:00filwitmakes 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:44AraqI think you do
22:35:16flaviufilwit: Write a blog post, explaining your thought process while paralizing that code!
22:35:57filwitflaviu: would be easier to do that if i had a blog :P
22:36:14flaviumedium.com?
22:36:22reactormonkNice to see nimrod is coming along :-)
22:37:09filwitflaviu: i'll check it out
22:37:28dom96screw that, use ipsum genera
22:37:53filwiti'll look into that as well
22:40:02*io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist)
22:40:54flaviudom96: 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:47Skrylarbjz: 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:47NimBotAraq/Nimrod devel c4ac8ed Clay Sweetser [+0 ±1 -0]: Make device and file ID's public.... 2 more lines
23:51:47NimBotAraq/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:47NimBotAraq/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:07dom96Varriount: how's file monitoring going?