<<21-11-2012>>

00:05:02*q66 quit (Quit: Quit)
11:52:52*Araq_ joined #nimrod
12:02:35*Araq_ quit (Quit: ChatZilla 0.9.89 [Firefox 16.0.2/20121024073032])
13:56:21*Vladar joined #nimrod
14:40:36*FreeArtMan joined #nimrod
14:41:05*q66 joined #nimrod
15:12:36*exhu joined #nimrod
15:12:58exhuhi all!
15:15:06exhudoes anyone know how to iterate over object fields?
15:35:17*exhu quit (Quit: Leaving)
17:00:33dom96Araq: Brilliant job on including what exceptions are raised by a proc in the docs. I love this feature.
17:00:42dom96(I would still love to be able to document it though :P)
17:02:00dom96Also some of them raise E_Base which looks puzzling
17:41:04*Trix[a]r_za is now known as Trixar_za
17:41:04*FlutterAi is now known as Nimrod
17:46:48Araqdom96: true ...
17:47:01Araqyou can list the exceptions explicitly too btw
17:47:08dom96mm, I know.
17:48:39dom96But yeah, brilliant job nonetheless :D
17:48:43Araqthanks
17:49:01Araqstill some bugs left ... why does it still list some exceptions twice?
17:49:09Araqvery strange ...
17:49:18Trixar_zaBtw Araq, I had a weird bug
17:49:33AraqTrixar_za: I'm listening
17:50:08dom96Why can't I do: proc a() = var x = 9 div 0; proc b() {.raises: [].} = a()
17:50:10Trixar_zaI have two sections, IRC and IM and I had a channel key in both. If I tried to reading the second channel key's value, it always gave me a error
17:50:13dom96(All on one line?)
17:50:22Trixar_zaBut when I changed the first channel to chan, suddenly it worked
17:51:27Araqwell what error?
17:51:36Araqdom96: because it's bad style :P
17:51:55dom96Araq: true :P
17:53:21Trixar_zaError: unhandled exception: value is not accessible [EInvalidField]
17:55:05AraqTrixar_za: you're using it wrong then ;-)
17:55:09Trixar_zaIt's weird, because I change the other channel key to chan, so works with the same line of code and same line in the conf file after the change.
17:55:47Araqhrm, provide a gist then please
18:00:26Trixar_zahttps://gist.github.com/4126530
18:00:39zaharyAraq, should we keep the LLVM code? I'm making some reforms concerning the rope caches and have the opportunity to clean it up
18:01:19Araqzahary: I'm torn but often end up deleting it ;-)
18:02:40zaharydo you happen to know what are the most common hits for the rope cache?
18:03:02Trixar_zaActually the test work
18:03:04Trixar_zahmmm
18:03:17zaharyI made compile-time formatting macros for ropes and hoisting function that caches ropes in global vars
18:03:32zaharybut still, the rope cache prevails with 95% efficiency :)
18:03:52AraqTrixar_za: if currentSection == section and currentKey == key:
18:03:54Araq return e.value
18:04:11Trixar_zaNo wait, it fails
18:04:20Araqthis doesn't validate you have a 'cfgKeyValuePair' and thus 'e.value' may not be accessible
18:04:24Trixar_zaI forgot to change my conf file
18:05:07Araqzahary: the cache is only used for leaves anyway iirc
18:05:10Trixar_za if e.kind == cfgSectionStart: currentSection = e.section
18:05:11Trixar_za if e.kind == cfgKeyValuePair: currentKey = e.key
18:06:18zaharynot really as I have already killed around 200K of cache hits
18:07:12zaharybut anyway, I'll investigate further - I can just clean it between compilations as an alternative
18:07:33Trixar_zaStill doesn't explains why changing the name of the first 'channel' fixes the reading of the second one. Also why doesn't it fail for the other similar name keys?
18:13:27AraqTrixar_za: sorry your program logic looks wrong :P
18:13:42Trixar_zaProbably is :P
18:13:55Araqlines 17-18 need to be protected by the check in line 16
18:13:56Trixar_zaMind you
18:14:10Araqand what's wrong with 'elif' or a 'case' statement anyway?
18:14:11Trixar_zaI don't really need the second channel for the imbot
18:14:23Trixar_zaThere is a built in default for bitlbee servers
18:14:58Trixar_zaYes, but how to you check a case of the final if statement?
18:16:16Araqmeh, just have a look at how nimweb does it
18:17:51Trixar_zaI would comment how we need better examples, but I tend not to read them :P
18:19:41Trixar_zaThat reminds me
18:19:47Trixar_zaI need to setup a test contact
18:26:56Araqdom96: it lists 'E_Base' whenever it can't compute the proper exception list
18:27:13Araq[E_Base] means "maybe some exception"
18:32:05dom96I see
18:33:52Araqzahary: I think we have a serious problem if the compiler starts using macros ...
18:34:19Araqthe problem is that the TNodeKind enum is kept binary compatible with the enum in macros.nim
18:35:10zaharyI've kept the interface compatible, it can be switched on and off
18:35:22Araqgreat
18:35:42AraqI had the same problem with the TMagic stuff
18:35:52Araqso I needed to change that to string comparisons
18:55:10*FreeArtMan quit (Ping timeout: 246 seconds)
18:55:43Araqoh btw zahary, I solved the code generation for multi dispatch this morning
18:56:29*ekselkiu joined #nimrod
18:57:01Araqgot it down to an indirect jump and some easily predicted comparisons
18:57:39Araqif the object type are mostly static at runtime, that is ...
18:57:41*TheVoid joined #nimrod
18:58:10AraqGCC's computed gotos are really nice for this feature though :-)
18:59:16VladarDoes anybody know how to send nil instead of pointer to imported (importc) function? Got SIGSEGV at compiling time.
18:59:40Araqwelcome TheVoid
18:59:53AraqVladar: sigsegv at compile time is a compiler bug ...
19:08:05Vladarand same on newest build =(
19:08:51AraqVladar: bug report
19:09:19Vladaryep, in progress
19:10:35Araqzahary: have a look please: https://gist.github.com/4126968
19:13:52VladarAraq, just checking, `pointer` type is analogue to `void *` in c?
19:14:04Araqyes
19:21:50zaharyhrm, you're counting on the fact that the method will be reentered with the same types?
19:22:18*exhu joined #nimrod
19:22:37exhu!ping
19:22:37NimBotpong
19:22:37NimBot_pong
19:22:50exhutwo bots -)
19:24:01exhuneed some help, are there nimrod gurus?
19:26:01Araqzahary: yes
19:26:04Araqhi exhu
19:26:13exhuhi Araq
19:26:36zaharythis technique is called inline polymorphic caches and some script languages use it, but why can't we assign static IDs as we've talked before?
19:27:08AraqI know how it's called :P
19:27:31zaharyand then just use a normal switch. I'm thinking about DLLs now
19:27:31exhuAraq, should I consider typeinfo module incomplete?
19:27:36Araqstatic IDs look harder to do and don't play nice with DLLs
19:27:49AraqI'm answering on the forum
19:28:00Araqthe answer is yes, I forgot that one ;-)
19:28:10Araqit's easy to implement though, I can tell you how
19:28:30zaharyyou remember what I proposed for depth-first traversal of the hierarchy and the baseId variable for DLLs, right?
19:28:58Araqyeah but it's more complicated :P
19:29:45Araqand I'm not sure your solution really works with MI
19:30:04zaharyMI? multiple inheritance?
19:30:15Araqmy solution is simple and very flexible as it allows 'of' to be as expensive as we want to
19:30:28Araq(yeah multiple inheritance)
19:31:29zaharyPIC sends you in the land of dynamic languages - they are fast these days, but I think any static solution will be more efficient
19:32:04VladarAraq, nevermind, nil pointer is not a cause.
19:32:21zaharyin dynamic langauges you get "mostly the same types", because functions are not polymorphic in nature
19:32:28AraqVladar: if the compiler segfaults, it segfaults and it's a serious bug
19:32:29zaharybut methods are by definition polymorphic
19:32:37zahary"most functions are not polymorphic in nature"
19:33:41VladarAraq, yeah, but I want to figure out real cause before sending bugreport.
19:33:44Araqdamn you stop raising good points ... I'm happy it's possible without JIT or instruction patching
19:34:53Araqbut fine I won't implement it and you can implement your way
19:36:31Araqexhu: what does 'baseTypeKind' return for you?
19:38:57Araqzahary: my thinking was that for the collide example most of the time the same types collide so PIC should be fine
19:38:58exhuakObject
19:39:24zaharyif you want to try implementing it, that's not a problem for me. I can always look at the generated code, try another approach, see which works better, etc
19:40:13exhuAraq, typeinfo function "fields" enumerates only fields of the type specified, it won't return inherited fields
19:40:36zaharycollide, you mean physical simulation?
19:42:00Araqyeah well I mean that often you have some 80%+ distribution
19:42:20exhuAraq, i thought to go with macros then it looked terribly complex to me and i found typeinfo rtti to be more appropriate.
19:42:23Araqwhere 80% of your objects are of the same type and you have few of an inherited type
19:43:14AraqPIC should work fine for these cases
19:43:27zaharysince I indeed care for the performance of collide, in C++ one would implement it like this: colliderFunc[(shape1.type << TYPES_BITS) & shape2.type)] (shape1, shape2)
19:43:27Araqexhu: add this code to typeinfo.nim please:
19:43:56zaharythere are many ways to implement multi-methods and for me it would even make sense to have a pragma that specifies the implementation
19:44:25Araqproc base*(x: TAny): TAny =
19:44:27Araq result.rawType = x.rawType.base
19:44:28Araq result.value = x.value
19:44:50Araqand exhu your approach with 'fields' + recursion looks really good
19:48:53AraqVladar: you can use --verbosity:3 to determine what input the compiler crashes
19:50:07exhuAraq, thanks. I'll make a pull request after i test it all.
19:50:09VladarAraq, thanks, I already figured it out: it's crashes when accessing const tuple of unsigned integers
19:50:54VladarAraq, https://github.com/Araq/Nimrod/issues/259
19:51:36Araqexhu: maybe you need to substract some offset of 'x.value'; still thinking about it, I don't think it's necessary
19:51:49VladarIt's ok with ints or floats, but not with uints
19:52:24Araqyay ...
20:02:34AraqVladar: here you go
20:02:58exhuAraq, how to get a String representing the name of the type of a variable and/or a typedesc?
20:05:01exhuAraq, good to have proc typeName(a: TAny): String or so
20:05:53*Nimrod needs to disable highlights for this channel :P or make his highlight a litttttle more specific.
20:06:21AraqNimrod: change your nick :P
20:07:02Araqyou can do T.type.name I think to get the typename at compiletime for a generic type T
20:07:38Araqbut the RTTI doesn't even contain object names ... so how could it provide it? ;-)
20:07:39NimrodAraq: but but
20:07:44exhui'd better add a proc name*(x: TAny): string
20:07:48NimrodI've been using this nick for months
20:07:57Nimrod:P
20:08:04AraqNimrod is older :P
20:08:08NimrodI'm sure it is
20:10:27Araqexhu: and yeah this means you can't load a class by name ...
20:11:18exhui don't need to load a class by name, i prefer my own class factory if i need to.
20:11:53Araqthen typeinfo should be good enough for you
20:12:10exhui saw there's type name stored in TNimType.node.name. Now i can't convert it to cstring, as compiler crashes with SIGSEGV on $node.name
20:12:27exhufrom cstring to string
20:13:17Araqnode.name is a field name I think
20:14:10exhuyes, it's TAny.rawType.node.name, and that name is a cstring
20:14:46Araqwhy does that crash the compiler?
20:14:58Araqwhat's wrong today?
20:15:53VladarAraq, I just tried fresh build with this fix, but it still crashes
20:16:20Araqit compiled and produced correct output for me, Vladar
20:16:40Vladarhmm... strange
20:16:57exhuAraq, sorry it's not compiler, it's the test program itself -)
20:17:41Araqthat means node.name is nil :P
20:19:53AraqVladar: check that 'nimrod -v' has the date of today
20:21:09exhuArag, so there's no way to check for type at runtime, i.e. to get type name?
20:22:11exhuAraq, i mean the name of object type
20:22:22Vladar2012-11-18. I don't get it, I just pulled fresh .zif from github and that commit is there
20:22:28Vladar*.zip
20:23:58Araqexhu: as I said you can get it compile-time and can setup some lookup table to have this information at runtime, but nimrod's own RTTI does not contain any type names
20:24:26AraqVladar: you need to bootstrap
20:26:14exhuAraq, ok thanks a lot! I think i have all i need now.
20:35:00VladarAraq, thanks, it works now.
20:35:08Araqgreat
20:40:07*Trixar_za is now known as Trix[a]r_za
20:44:49Araqbtw what are you working on, exhu?
20:48:09exhuAraq, trying to implement a simple standalone database application to grab filesystem trees and let users organize it with tags, previews etc. a media catalogue.
20:49:05Araqdo you use an existing database backend?
20:49:27exhui have family photos on CDs and external drives, and some old family home videos digitized from VHS. They are spread between external hard drives and CDs
20:49:38exhuI use sqlite3
20:49:52reactormonkfor storing the photos?
20:50:09exhunot the photos but only descriptions or previews
20:50:32exhuwith tags, text documents, electronic books etc.
20:52:49Araqexhu: I'm puzzled by your 'raises: [EDb, EDb]' fragment
20:53:11Araqdo you use 2 different database backends in this example?
20:53:47AraqI added code to prevent double listing of the same exception type ...
20:56:08exhuyou can reproduce with https://github.com/exhu/Palitsa/blob/master/nimrod/palitsa_db.nim
20:56:25exhui import db_sqlite
20:56:41exhuwhich probably imports sqlite3 bindings
20:59:03Araqsorry, I'm a bit lazy; did you use the latest compiler and 'doc2'?
21:02:34VladarAraq, I also posted about 'multiple definition' errors with new (after 0.9.0) builds: https://github.com/Araq/Nimrod/issues/261
21:02:36exhu0.9.1, yes just recompiled with koch
21:03:58exhunimrod doc2 also produces a lot of error messages like "lib/pure/os.nim(1383,69) Error: can have an unlisted effect: FReadIO"
21:04:10AraqVladar: yeah fowl has the same problem ... haven't looked into it yet
21:04:53Araqwell that explains it, exhu ;-)
21:05:00Araqare you on windows?
21:06:05exhui'm on linux x64
21:12:51Vladarwhat is the best way to send/recieve struct from imported function: object or tuple?
21:13:24Araqobject
21:14:09AraqVladar: I downloaded nimgame but dunno how to compile it :P
21:14:43VladarAraq, just create main file with one string: import common, engine
21:15:13Vladarand then: nimrod c -p:lib this_file.nim
21:15:38Araqok
21:15:42VladarAraq, any pragmas for that object? {.final.} or something else?
21:15:55Araqnot with 0.9.0
21:16:00Araqmaybe 'bycopy'
21:16:38VladarAraq, thanks
21:17:57exhuBTW, what was tyRecord? -) it's mentioned in system/hti.nim
21:18:02VladarAraq, how about {.pure.}?
21:18:32AraqVladar: now both final and pure are default for 'object' if it doesn't inherit anything
21:18:55VladarAraq, ok, thanks again
21:20:20Araqexhu: the language had records but these turned into tuples
21:25:07VladarNeed to go, bye
21:25:12Araqargh
21:25:15Araqwait!
21:25:20Vladar?
21:25:31AraqI'm fixing the bug that prevents nimgame from compiling
21:25:50AraqI'm quite sure it's "method"-related
21:26:05Araqyour code is quite method-happy ...
21:26:16Vladaryeah )
21:27:41Araqit's strange, I don't remember changing anything after 0.9.0 about the method implementation
21:28:06reactormonkVladar, dynamic dispatch is slow, you know? :-P
21:29:08VladarAraq, I remember this bug appeared around october, don't know exactly when
21:29:18Araqlol that hardly helps
21:29:39reactormonkVladar, go bisect
21:30:10VladarAraq, I'll try to get some logs from dropbox
21:32:46Vladarreactormonk, when you dealing with 2d-graphics output, dynamic dispatch isn't your biggest problem =]
21:34:12reactormonkVladar, thought so
21:51:57Araqok I think I got it
21:56:31Araqok :D
21:57:30*gradha joined #nimrod
21:57:54exhuseems like people went to bed
21:58:24AraqVladar: please try it
21:58:53Araqyay gradha
21:59:02gradhayay me
21:59:14Araq25 users ... new record I think ;-)
21:59:35gradhadoes that count bots and the like?
21:59:46Araqyes ;-)
21:59:58Araqbut we only have 2 bots here
22:00:23exhubtw why two bots?
22:00:25zaharyAraq, is there a GC proc that I can modify a little bit to print some information about all objects on the heap? I'm a bit stuck as I've supposedly cleaned all global caches now, but the GC doesn't want to collect anything
22:01:20dom96exhu: One is a brand new beta version.
22:01:39dom96Running to make sure it works properly.
22:02:03dom96Also, yay new record.
22:02:06dom96NimBot should track this.
22:02:33Araqzahary: hrm there are lots of options, none without quite some tinkering
22:05:08VladarMoment of truth... YEAH!
22:05:33VladarAraq, thanks a lot
22:05:50Araqyou're welcome but try to run your game please
22:06:10gradhawhat is the equivalent of "weak pointers" in nimrod? A reference to an object which can be garbage collected when the system is on low memory but usually persists for caching
22:06:10AraqI already know it compiles again :P
22:06:55Araqgradha: see tests/gc/weakrefs.nim
22:07:10exhugradha, weak references were discussed on the forum, Araq presented some solution
22:07:39VladarAraq, everything is compiling and working
22:07:51exhubtw, forum lacks search feature
22:07:56gradhathanks for the pointers
22:08:01gradhagoogle is fast to show http://forum.nimrod-code.org/t/45
22:09:16AraqIMHO it's a beautiful solution showing quite some elegance
22:09:43gradhaoh man, jumping from end user code to library code with idetools makes me chuckle, such a joy to use
22:11:56Araqzahary: you could try to set 'x.owner = someDummyModule' and invoke the GC explicitly
22:12:06exhuthat should be mentioned in the FAQ or manual/tutorial whatever
22:12:33exhui tell about weak refs
22:13:18zaharywhat is the purpose of someDummyModule? I'm clearing all global roots to compiled modules and calling the GC with GC_fullcollect
22:13:55zaharyI'm googling for heap snapshot analyzers - there seems to be some java based tools that work with a common format called "hprof"
22:14:07Araqwell I think the code often relies on owner != nil
22:14:31zaharythat would be powerful solution, but I could do with backtracing of references: "what roots point here?"
22:14:38Araqexhu: yeah yeah the docs suck, we know
22:15:51exhudo you accept pull requests to manual or where to put such info?
22:16:11gradhaexhu: there is still hope weakref might transform from test case to library module
22:16:28reactormonkexhu, yep, should do
22:16:29exhulike "see weak references in tests/gc/weakrefs.nim TODO explain in details later"
22:17:55AraqI'm still not sure whether these things should be in the manual or the tutorial ...
22:18:15Araqin fact the manual is supposed to become a proper spec
22:18:39Araqbut the tuts are too terse so people should read the manual instead ...
22:18:51Vladarok, that's all for today, bye
22:18:56Araqbye, Vladar
22:19:04*Vladar quit (Quit: Leaving)
22:19:20exhucurrent documentation is of high quality, I mean wording, explanation etc. although some things are described in tutorials, other in compiler manual (like {.compile.} pragma) but I think it's ok for an open source project to have stubs like TODOs, copy-pasta, links to forums etc.
22:20:53Araqwell we also kind of use the wiki on github
22:22:37exhuhttps://github.com/Araq/Nimrod/wiki/Unofficial-FAQ -- i can mention weak references here, is it appropriate place to?
22:23:48Araqmeh I don't think many people read this page
22:23:54dom96Perhaps we should create a github repo where we create a more lengthy tutorial documenting each feature of Nimrod in separate sections?
22:24:40AraqI'm not a fan of too many repositories but ok
22:25:08Araqthe current tutorials are good as a starting point; lets add more stuff to them
22:25:21gradhaI'm not understanding the weakref test, it creates 10_000 references, which are just objects holding an int, and they get nil in a few lines? why don't they persist?
22:26:27Araqwell the GC is aggressive
22:26:48dom96Araq: I think starting from a clean slate would allow us to be more detailed. I mean sure, we could use things from the current tutorial.
22:27:28gradhabeing that aggressive defeats the point of using those as a cache then
22:27:54dom96A breakdown of what each section should contain would be nice as it would allow us to see what actually needs to be done.
22:28:34Araqwell a whole new tutorial is fine with me too
22:28:37exhuwell, cache differs, i was interested in weak refs just to keep a list of used objects, e.g. textures. If it is used it is stored in the cache, if it is not used it MAY be still stored...
22:29:29dom96I will see what I can do. But I would love the support of the community as I don't have enough time to write all of it, it would be nice to see everyone writing some parts of it ;)
22:29:33Araqgradha: actually I prefer simple fixed size arrays for caching
22:29:55Araqdom96: see? that's why it's much easier to add to something that already exist ... :P
22:30:55dom96Araq: It's even easier to do nothing. Do you want to be lazy and do nothing, or do you want quality docs? :P
22:31:00exhuyeah it's pain to find spare time and vigour to write docs -)
22:32:05Araqalright here we go: check our awesome docs; parts are in the manual, other parts in compiler's documentation, still other parts in the tutorial
22:32:24Araqand we improved the situation with another source of information :P
22:33:35Araqbut as I said, go ahead
22:34:06dom96I'll think about. You're not being very encouraging :P
22:35:09dom96*about it
22:36:01Araqgradha: the weakrefs example is more about some "listener/observer"; "lets see if this object is still around, if so, tell it about some event"
22:36:50zaharybtw, it's easy to write a weakref solution that will work in O(1) access time
22:36:55Araqfor caching you could extend the lifetime artificially though
22:37:14gradhayes, recently in java had to use weakrefs and they had two types: the one which go dead ASAP and the ones that want to stay forever
22:37:24Araqhey, my solution is O(1) :P
22:37:56zaharyyou use IntSet? log(n) invalidation and access
22:38:08gradhafor the "stay forever" kind i was going to ask if there is support for C requiring nimrod to "free memory"
22:38:25zaharyah, this is hash table
22:38:36Araqyes :P
22:38:48zaharyok, but I mean even better 0(1), just a memory lookup at fixed location
22:38:53Araqwith packed bit representation
22:39:51Araq(yeah I know, we talked about it)
22:40:02zaharyso lets discuss this GC problem
22:40:57zaharycan we add a proc that will execute the "mark" algorithm to tell me about all paths to a given object?
22:42:25Araqdo you have a single object in mind?
22:42:37AraqI mean can you do:
22:42:45AraqGC_track(thisObject)
22:43:04Araqafter creation of 'thisObject'?
22:43:41Araqif so, I'd patch the write barrier to keep a list of parents
22:44:32zaharyI can keep one ref to some particular module and execute GC_track to look for another paths to that object
22:44:56Araqyes that's what I have in mind
22:49:39Araqyou could also hook into stack scanning and whenever a root is detected there make it output the graph belonging to it
22:50:19Araqthe problem with these approaches is however that they are too slow very quickly and you get overwhelmed with noise
22:51:14zaharyI imagine something that I can call on demand
22:51:45Araqwell 'system.repr' can write general Nimrod graphs
22:52:06Araqbut here is a better idea:
22:52:22Araqbite the bullet and enhance RTTI with class names
22:52:39fowlif i do {.link: "some.so".} it will look in ./ ?
22:52:40Araqthen you can easily filter against object type
22:52:47fowlcurrent dir*
22:53:02Araqfowl: dunno, try it
22:53:37Araqbut hrm, class names are not good enough
22:53:50Araqperhaps we need an object cookie
22:53:55exhutype names, TTime is represented as akInt
22:53:56zaharyI see some provisions for "when leakDetected" in the GC? how far does this go?
22:54:22fowlhm i guess it does
22:57:13Araqzahary: it's outdated but could be re-activated
22:57:17gradhalooks like I can do var temp : string
22:57:20gradhathen temp = nil
22:57:32gradhathe compiler doesn't say anything, then at runtime there is a SIGSEV
22:57:47*exhu quit (Quit: Ex-Chat)
22:57:53Araqgradha: known bug :P
22:58:07fowlhow is that a bug/
22:58:29Araqwell the language is a bit shizo with 'nil' strings ...
22:58:45Araqthey are valid only as initialization state
22:59:11Araqyou can't explicitly set them to nil, unless you can ...
22:59:59Araqzahary: the idea is that 'new' tracks filename and line information for every allocated object
23:00:15Araqbut that doesn't help us now
23:00:24zaharyyeah, I read the source
23:00:45Araqit was for GC leaks, not for logical leaks
23:00:57zaharyglobal roots doesn't seem to be tracked on regular scans? they are only handled with unAssignRef?
23:02:19Araqthis is correct
23:03:17Araqand indeed is a problem if we ever implement a tracing collector
23:03:26*Trix[a]r_za quit (Ping timeout: 256 seconds)
23:04:07zaharywe'll just modify the codegen, but I was hoping to reuse the "list of globals" for some heap-dumping
23:04:16zaharyanyway, moving on
23:04:26Araqbtw did you try with boehm's GC? maybe it's not a logical leak but a real GC leak?
23:04:47*Trix[a]r_za joined #nimrod
23:05:53Araqand even if it's a logical leak, boehm has some support for finding leaks
23:08:10zaharythat would be koch boot —gc:boehm, right?
23:08:36Araqright
23:10:35*gradha quit (Quit: gradha)
23:18:29*ekselkiu quit (Ping timeout: 260 seconds)
23:41:05zaharydid you know that the refcount is incremented/decrement by 8?
23:41:05zahary(*c).Refcount -= 8;
23:41:19zaharypeculiar, it's int in the code
23:41:44Araqof course I do
23:41:59Araqit's my way of keeping the last 3 bits 0 for some flags
23:42:09Araqwell not touching the last 3 bits
23:42:14zaharyaha, I see. so these ++ are special operator
23:44:36*dedis15 joined #nimrod
23:44:56Araqwelcome dedis15
23:45:09Araq(what's up today in here?)
23:47:48dom96We've obviously been slashdotted.
23:51:29*q66 quit (Quit: Quit)