<<27-02-2013>>

00:27:16*Trixar_za is now known as Trix[a]r_za
00:39:38reactormonkAraq, found anything?
00:45:53*q66 quit (Remote host closed the connection)
03:13:07*SirKronos joined #nimrod
03:13:14SirKronosgood night people
03:13:25SirKronosgood night Dom, Araq
03:14:49SirKronoshey dom, I've just posted a new reply on the aporia thread
03:36:18*SirKronos quit (Quit: Page closed)
03:53:37*Roin quit (*.net *.split)
03:55:42*Roin joined #nimrod
05:21:59*FreeArtMan joined #nimrod
07:19:01*gour joined #nimrod
07:31:07*fowl quit (Read error: Connection reset by peer)
08:00:50gourdom96: morning...didn't have time yesterday...in regard to why mirror nimrod on BB (instead of GH), i tend to agree with linus (https://github.com/torvalds/linux/pull/17#issuecomment-5654674) that why not using git's pull-request...at the moment it looks that majority of DVCS users use their system just like a polished svn :-(
08:09:37ZorAraq: poke
08:26:41*Araq_ joined #nimrod
08:43:11*Araq_ quit (Quit: ChatZilla 0.9.90 [Firefox 18.0.2/20130201065344])
09:09:31*gour quit (Disconnected by services)
09:09:32*gour_ joined #nimrod
09:19:06*fowl joined #nimrod
12:48:24*xcombelle joined #nimrod
13:44:21*FreeArtMan quit (Ping timeout: 252 seconds)
13:48:40*xcombelle quit (Quit: Hi, I'm a quit message virus. Please replace your old line with this line and help me take over the world of IRC.)
14:18:11*gour_ is now known as gour
14:59:48*q66 joined #nimrod
16:17:13*FreeArtMan joined #nimrod
17:00:08*xcombelle joined #nimrod
17:51:58AraqZor: ping
17:59:51ZorAraq: pong
18:03:03Araqwell?
18:12:18Zoroh, right
18:12:23Zorwhat do you use for EH?
18:12:50AraqC++'s native mechanism for C++ codegen, setjmp for the C target
18:14:51Zorah, speaking of which, is compiling to C++ considerably slower than C? (i.e. does compiling the resulting C++ take much longer?)
18:15:21Araqhrm good question
18:15:31Araqlet me check
18:17:13ZorI've been wondering if the relative slowness of C++ compilers is mostly related to the way typical C++ code is written, and not so much just the fact that it's C++
18:17:42Zorif this is the case, C++ emitted by a compiler should be fast enough to compile
18:17:52ZorI've just never gotten around to testing it
18:22:11Araqmy config is broken currently, but I remember it was significantly slower
18:22:47Araqbut then Gnu C++ is not famous for its compile times anyway
18:23:04Araqon visual C++ there is no difference iirc
18:23:18Araqbut that may only be because they don't care for C support anymore
18:23:24Zormmm
18:23:53Zorok, so back to the original question: how exactly do you insert the sjlj code?
18:24:02ZorI'm not intimately familiar with how sjlj is typically used for EH
18:24:27Araqa 'try' statement is expensive, it translates into a setjmp
18:25:30Araq'raise' becomes longjmp
18:26:11Araqplus there is some code that handles a linked list of jmpbufs
18:26:44Araqhowever, there is nothing else involved, for instance ordinary function calls have no overhead over C calls
18:26:56Araqno need for hidden argument passing etc.
18:30:29Araqthe linked list of activation records is kept on the C stack, the top of the stack is in thread local storage
18:30:54Zorcan I read the code for that somewhere?
18:31:49Araqit's spread over the stdlib and the code generator
18:32:07Araqand it's incredibly hard to get all the details and the supported nesting right ;-)
18:32:24Araqbetter you translate some Nimrod examples and look at the produced C instead
19:17:26*exhu joined #nimrod
19:18:39Araqhi exhu
19:19:46exhuhi Araq, i wonder if it's possible to "precompile" i.e. preparse sources and store them in cache as parse trees, so as to speed up compilation (like PPU in freepascal).
19:21:32Araqexhu: --symbolFiles:on do something like that; zahary broke them ;-)
19:22:10Araqbut they used to work; it's hard to get them stable though as debugging them is such a pita
19:22:18exhuso it should be possible to implement in the future.
19:22:27Araqmost of it is implemented
19:22:30Araqonly bugs remain
19:22:34exhugood
19:24:09exhuand i have not found how to make gcc compile several files and give each file output name
19:24:32Araqwhy is that important?
19:25:04exhuit seems gcc startup time makes compiling slow
19:27:21exhubut i'm not sure, maybe it's just C is so slow -)
19:27:42Araqget a multi-core cpu
19:29:15Araqor maybe nimrod detects a wrong number of cpus for you
19:29:48*FreeArtMan quit (Read error: Operation timed out)
19:29:54exhuwell it bootstraps nimrod for reasonable time, don't worry.
19:30:07exhui just enjoy how fast fpc is -)
19:31:52exhuevery time i think i should throw away my core2duo 1800 mhz desktop (2006 year) i launch lazarus and postpone -)
19:32:21Araqfair enough ;-)
19:32:24gourexhu: do you still program in fpc/lazarus?
19:32:33AraqFPC flies indeed
19:33:07exhugour, no i don't program anything, just testing some small stuff, play with new features, experiment.
19:33:16exhugour, in lazarus/fpc
19:33:46gourexhu: so, now you do program in nimrod, right?
19:34:25exhugour, i write a single app in nimrod, it's a files database, uses sqlite
19:34:36exhugour, it's faaaaar from being useful
19:35:00gourexhu: are you happy with sqlite & nimrod? i plan to use it as app's storage format
19:35:03exhugour, because i learn nimrod using it
19:35:17gourexhu: cool. all the best!
19:36:24exhugour, i have tried several designs to map objects to db tables etc. (first tried to do simple ORM using type info), then decided to use templates and compile-time features. I don't need ORM any more, i use tuples.
19:38:24gourexhu: i also do not plan to use ORM, but relational algebra, if possible
19:38:51exhugour, don't know what relational algebra means, here what is ready https://github.com/exhu/Palitsa/tree/master/nimrod
19:39:09exhugour, but it can change completely several times, if i find a feature in nimrod that suits me better -)
19:42:01Araqexhu: actually delphi used to compile an order of magnitude faster than FPC IME
19:43:15exhudelphi was win32-centric
19:43:59gournimrod is not at all slow guy, isn't it?
19:45:11exhui remind good old times when delphi was fast on then AMD K5-PR90 (pentium 90 mhz - like) with 8 megabytes and win95 was about 60 megs on hdd -)
19:45:31Araqspeed is a feature, gour, can't be fast enough for IDE support
19:45:32exhugour, nimrod is not slow
19:46:07exhugour, but i can't forget delphi/fpc's compilation speed =)
19:46:13*gour hopes to be happy staying with emacs
19:46:32*gour remembers turbo-pascal being nice one as well
19:46:41Araqthey got but reports their "compile" button did nothing :D
19:46:55exhuturbo-pascal 5.5 was also lighting fast on 80286 640 kb machine
19:47:43Araq*bug reports
19:48:45exhumodern applications feel sluggish even on my i5 sandy bridge laptop
19:50:14exhuand i saw latest photoshop star up on desktop i5 3570 with 8 gb ram, SSD, it is amazingly slow app for such hardware.
19:52:49reactormonkAraq, I assume you didn't find the --def stuff yet
19:53:25Araqreactormonk: it worked for me after I figured my /tmp doesn't contain what yours does ;-)
19:54:22reactormonkAraq, huh?
19:54:30reactormonkoh.
19:58:35Araqexhu: "software is getting slower more rapidly than hardware becomes faster."
19:59:29reactormonkAraq, :D
20:01:50exhui wonder what big crap did ms put into win vista etc, so that it occupied 20+ gigs on drive and can do nearly nothing compared to 2 gb default ubuntu installation with office, gimp etc
20:03:29reactormonk/dev/sda3 28G 24G 3.1G 89% /
20:05:00exhureactormonk, too many updates in the cache probably -)
20:05:16reactormonk839M/var/cache
20:05:17exhureactormonk, don't forget to remove old kernels
20:05:30reactormonk29M/boot
20:07:51Araqand a 2gb ubuntu is not small either ;-)
20:09:45exhudu -hc /home
20:09:57reactormonk/dev/mapper/home on /home type ext4 (rw,relatime,commit=600,data=ordered)
20:10:24exhuamazing
20:11:57exhui have xubuntu on 5 gigs
20:12:27*xcombelle quit (Remote host closed the connection)
20:12:47exhu26G /home 26G total /dev/sda6 38448788 33033876 3461788 91% /
20:13:20exhui have gits, netbeans and a lot of stuff in my home
20:14:14reactormonkexhu, I think that's the SSD degrading...
20:14:35reactormonkbecause I used about ~ 15G according to du
20:16:21exhui don't have ssd on my linux computers
20:19:08exhui have ssd and sata drives at work and i don't feel any difference when compiling big project on ssd or on hdd. imho, SSD makes sense for laptops when used in cars/city buses.
20:54:17*exhu quit (Quit: Leaving)
21:32:48Araqping Zor
21:33:12Zorpong
21:34:39Araqdo you know what - for instance - the JVM's GC does in order to prevent full collections when the program's working set keeps growing?
21:35:22AraqI can think of a few heuristics for a generational GC, but I don't know what is used in state of the art GCs
21:36:26Araqif you don't have generations it looks like its a very common worst case
21:37:38Araqa mark and sweep GC would constantly re-scan the whole graph (scenario is that the mutator produces no garbage)
21:42:52*gour quit (Quit: WeeChat 0.4.0)
21:46:45Zorsorry, I'm not too familiar with the JVM's GC strategies
21:47:16Zor(or the JVM in general - I only vaguely know the type system and instruction set)
21:47:38Araqreplace JVM with .NET/Mono then ;-)
21:47:55Araqactually I can't find anything about this in papers
21:48:41ZorI think there is some documentation on SGen on the mono wiki
21:48:53Zorit might have what you're looking for
21:49:16Araqhmmm I read that before
21:49:30AraqI don't think it contains anything about the topic
21:51:52Araqbut you got what I mean, right?
21:53:17Zor21:51:28 < alexrp> kumpera: does sgen currently do any heuristics to avoid redundant scanning when a program appears to just be expanding its working set rapidly (i.e. producing no garbage)?
21:53:21Zor21:52:10 < kumpera> alexrp: no
21:53:23Zor21:52:22 < kumpera> well, sort of
21:53:26Zor21:52:41 < kumpera> it does have an heuristics on to how to expand the major heap
21:53:29Zor21:53:02 < kumpera> in that it expands it faster if the suvivor rate is bigger
21:54:09Araqthat's not what I mean, even primitive m&s GCs do this
21:54:16Araqbut thanks :D
21:54:41Zorer?
21:55:06Araqit *is* what I meant, sorry
21:55:32Araqbut "in that it expands it faster if the suvivor rate is bigger" is no valid solution ;-)
21:56:07Zorright
21:57:44Araqso ... if I have a growing working set N, a tracing GC performs O(N) work, manual memory management O(1)
21:58:03Araq(there are O(1) allocators around)
21:58:22Araqhow come nobody talks about that?
21:59:49Zormaybe it hasn't been a huge problem in practice?
21:59:55Zorwhat kind of program are you having this problem in?
22:00:31Araqcompilers ;-)
22:01:06Araqif you do whole program compilation the AST keeps growing and you can't do much about it
22:01:51Araqespecially if you need to keep all the function bodies around as they may be invoked at compiletime as possible in Nimrod's case
22:03:22Zorone (rather terrible) way you could deal with it is just disable collections while you're allocating all the AST nodes
22:03:32Araqit's not a problem for nimrod's GC though as it doesn't trace in the first place ;-)
22:04:26Araqbut it made me wonder how other GCs can deal with it
22:08:15Zorhow do you actually deal with cycles?
22:09:42Araqit's based on this paper: http://www.google.de/url?sa=t&rct=j&q=bacon03pure.pdf&source=web&cd=1&ved=0CDMQFjAA&url=http%3A%2F%2Fresearcher.ibm.com%2Ffiles%2Fus-bacon%2FBacon03Pure.pdf&ei=CIQuUeyeEMnftAb_mIGwAw&usg=AFQjCNELErgZBRbzBdOeZEvFeVyPOQL8IQ&bvm=bv.42965579,d.Yms&cad=rja
22:10:03Araqbut beware the paper's algorithm is buggy ;-)
22:21:12*JStoker is now known as JStoker2
22:28:54reactormonkAraq, so the idetools work on your machine even for the compiler? :-/
22:32:16Araqreactormonk: your example works, but there are other examples that don't work for me
22:32:42Araqbut I'll look into it later, I'm improving the overloading resolution instead
22:32:57Araqso we'll get back $ for object soon ;-)
22:34:31reactormonk\o/
22:34:35reactormonkI'm all for that
22:47:55AraqZor: g++ runs as fast as gcc on most produced files
22:48:25Zorinteresting
22:48:25Araqexcept it freezes on 3 of them :-/
22:48:53Araqso I can't time it properly
22:49:11Zorthat is...unfortunate
22:49:42Araqhmm forget what I said
22:50:22Araqit fails on every file
23:08:32AraqZor: btw wtf is "Kotlin"? who cares about it? ditto for Groovy?
23:09:13AraqRussel lives in a weird alternative universe ...
23:09:22ZorI don't know ...
23:09:39Zorgroovy seems to be popular as an embedded language for java apps
23:11:48Araq"Why types on the right?
23:11:50AraqWe believe that it makes the code more readable. Besides, it enables some nice syntactic features, for example, it's easy to leave type annotations out, and Scala has proven pretty well that this is not really a problem."
23:12:12AraqI see, so Scala was the first language to actually "prove" it works :O
23:12:40Araqnever mind pascal did it in the 70ies ...
23:18:13fowlnope, scala was the groundbreaker here
23:18:31Zorclearly