IRC log started Wed May 10 00:00:01 2000 [msg(TUNES)] permlog 2000.0510 hm i should link to clover's home page as well btw hcf if you haven't noticed, i change the 'topic to ponder daily' whenever my current topic proves too ambiguous to decide upon or too unknown or difficult at the moment or when others don't ask me good questions ;) 12:10am k 12:20am -:- SignOff water: #TUNES (Read error to water[tnt-9-133.tscnet.net]: Connection reset by peer) -:- vvater [water@tnt-9-133.tscnet.net] has joined #tunes -:- vvater is now known as water -:- Fare [rideaufr@lantier.enst.fr] has joined #Tunes hey fare yeah water * water/#tunes is awaiting delivery of more theoretical cs books * Fare/#Tunes is awaiting delivery of some courage "category theory for the working mathematician" and "information in distributed systems" maybe I should be going to see the Wizard of Oz... what's the courage for? coding? :) :-~ heh core is on #dolphin, btw "We're on to see the Wizard, " 12:40am so what's this about courage? water: abi: x from fr est-ce que tron n'a pas déjà vaincu le mcp? hcf: didn't tron already overcome the mcp? ah thx that makes my method redundant courage, love, and truth are the three basic elements that you can combine into eight virtues huh? well, this is getting a bit unproductive to say the least, and i've finished the reading my intended set of papers for tonight, and it's late * Fare/#Tunes might be buying a MacIvory from Symbolics, to see a LISP machine in action... so i'll see you all on thursday evening, PST water: good bye! yes, and i might buy a sparc to see self in action hasn't self been ported? not the optimizations * Fare/#Tunes remembers trying self on a big bad SS20 with 24MB or RAM -- pathetically slow 12:50am probably so hm so i guess you have nothing useful to discuss then cya -:- SignOff water: #TUNES (The Tao went that-a-way!) 01:00am -:- SignOff abi: #TUNES (dying by hcf's request) -:- hcf [nef@me-portland-us120.javanet.com] has left #tunes [] -:- karltk [nobody@firewall.prosalg.no] has joined #tunes -:- karltk is now known as Ghyll -:- abi [nef@bespin.dhs.org] has joined #tunes -:- XeF4 [xef4@194.255.106.103] has joined #tunes -:- Kyle_L [kyle@cr168790-a.nmkt1.on.wave.home.com] has joined #Tunes Anyone here? no Would you like to answer a question? It is general. -:- SignOff smoke: #TUNES (Ping timeout for smoke[15dyn180.delft.casema.net]) 03:50am if I can I am making a garbage collector today. I appears to me that garbage collection in a reflective system is harder than normal. this is really not my field of expertise.. have you read the self papers ? I can not keep all objects that are reachable because my system knows of all objects. My system knows of all objects becuse it stores them in memory. MMMmmm. Self. No. how do you determine reachability ? Can you rovide me with a link? abi self self is a prototype-based object system at http://www.sun.com/research/self/ or old mirror at http://www.cs.ucsb.edu/oocsb/self/ 1) if a chain of pointers points to an object 2) some pointers are designated as "reverse" pointers and those are also followed 3) is an object is a member of a reachable est then it is also reachable. that is it. what do you mean by 2) The second one is a consequence of the database paradigm I am using. No object is allowed to have a collection in its definition. So what happens is the objects that belong to the collection point bakc to the parent. -:- adonay [adonay@pd1.pcnet.ro] has joined #tunes ah, ok. but, let's do the trivial case; do you have a scope-table of all objects accessible in a scope ? In C I would follow a set of pointers. I just call them reverse pointers. I do not understnad "scope" in this sentence. ever played with lisp or python ? no. is this collector for your own languag e? 04:00am yes. if it's reflective, there should be some way to list the variables/objects from inside the language. is there ? yes. where is this list stored inside the system ? There is a "Set of all objects". That set is in the "Set of all sets". does the 'set of all objects' only have objects that exist ? Yes, and it has objects that should be removed because, in some way, they are not "reachable". I am trying to define what "in some way" means. k in python, a something akin to your 'set of objects' is kept in memory whenever a new variable is assigned something, a new entry is made, and it's inserted with the proper binding. Is it the set of valid (reachable) objects or all objects? all objects, afaik. I don't even know of python has any gc. anyway, it's not too hard to extend this a bit: if (pred) { /* this starts a new scope */ foo = "hi"; /* now 'foo' is entered in the current scope */ } /* now 'foo' was removed since it went out of scope */ * Fare/#Tunes is back from lunch this is of course all very naive, but it works. why "harder than normal"? I'd say "easier than normal" MMMmmm. Garbage collection happens only in the context of a running program. Interesting. Kyle_L: I'll let the expert take over from here.. :) Fare: Harder then normal because the reflective system refernces objects that should be removed. But since they are referenced, they are not subject to normal Garbage collection. Thanks Ghyll. Kyle: let me introduce you to the concept of weak pointers. abi: mm? i heard mm was the memory management reference at http://www.xanalys.com/software_tools/mm/ Kyle: familiar with Languages.html#GC ? 04:10am * Fare/#Tunes crave LISP hardware Languages.html#GC? Is that a URL? http://tunes.org/Review/Languages.html#GC -:- SignOff adonay: #TUNES ([x]chat) That is a good link. Thanks. :) I will go and read some now, and see if I can get an answer. Thanks again, both of you. http://tunes.org/ or http://tunes.org/Review/ is often implicit in the URLs I give ok abi: implicit URL? somebody said implicit URL was http://tunes.org/ or http://tunes.org/Review/ is often implicit in the URLs that Fare gives darn, not what I wanted. 04:20am I do not think weak pointers help me identify what objects to remove/not remove. -:- hcf [nef@me-portland-us320.javanet.com] has joined #tunes KL: what's your problem? I will give an example. (beep me repeatedly with /msg Fare ^G to draw my attention, if I'm away) (or send me email notice) k I'm not away, btw 04:50am Fare: for that factoid, did u mean ? The biggest memory hog is my compiler. It takes source code and generates a DAG. Every time I recompile I must remove the old DAG and replace it with the new one. Sure. You might do regions-based management I currently am doing manual memory managment, but my database is getting big fast, so I missing something somewhere. I.e. tag objects with an "outer region", such that freeing the outer region collects all the included objects. If you use linear type checking, this can be done in a safe way I need garbage collection to solve this problem. But how do I identify the old DAGS? I can just see if any part of the DAG is referenced. abi: implicit URL? http://www.tunes.org/ or http://tunes.org/Review/ is often implicit in the URLs given in #tunes, especially by Fare Fare: better? hcf: what was the trick? foo is bar k are you using any GC at the moment? I must be able to identify these old DAGS beyond any one run of the compiler. No GC is in use right now. what problem is there in your structures that plain tracing GC wouldn't solve? btw, the following pointer I found recently in a google search and is not yet in Languages.html#GC -- http://www.math.grin.edu/~gaswick/302/ Everything is tracked, therefore even objects I want removed, are tracked and not available for garbage collection. why would objects you want removed be tracked? just drop pointers to them! or is anything preventing you to drop pointers to them? OK, I have considered marking all sets and objects that use "weak pointers" so should be cleaned. This may take some time. abi: gc? well, gc is garbage collection, see http://www.cs.ukc.ac.uk/people/staff/rej/gc.html or http://www.wildcard.demon.co.uk/dev/gc.html When new structures are created, how will I know to mark them for GC consideration or not? abi: gc is also http://tunes.org/Languages.html#GC okay, Fare. hcf: these pointers are already on #GC, btw hcf: shall I put #GC as the only pointer for abi? 05:00am Fare: #GC should be obvious in here KL: if your sets are themselves _under_ the head for the DAG structure, just drop that head -:- SignOff XeF4: #TUNES (BitchX: causing all sorts of havok!) i checked #GC for those pointers after i had abi spew them, oops KL: or are your sets global? The weak pointer idea works, if I know what are to be weak pointers. But I will have to manage these weak pointers like a do manual memory managment now, although it is easier. (if so, weak pointers may be a solution) Yes, there are many global sets. Fare: ppl obviously dont try to use the resources already available from the site b4 nagging other ppl those to whom it is obvious won't need to ask abi, either For example the set of all objects is to be considered a "weak set". But how many more weak objects are there? I can ask abi? abi: gc? hmmm... gc is garbage collection, see http://www.cs.ukc.ac.uk/people/staff/rej/gc.html or http://www.wildcard.demon.co.uk/dev/gc.html or http://tunes.org/Languages.html#GC Fare: r u aware of abi's 'scan for' function? hcf: no abi: scan for GC the syntax is abi: scan for [] I would like a method to identify weak objects. defaults to 5 Kyle: where do you need the set of all objects? KL: do you need it at base level, or only at meta-level? I only use it at the meta level right now. But I could use it for datatransfers at the base level. I could query the object set to find objects that match particualr attributes. uh? hum. As in a database? I think you definitely want an explicit notion of weak pointers, then Yes, a database. 05:10am You have convinced me that weak pointers are good. But I do not know of an algorithm to find out what object is a weak onjext. (object). KL: typical algorithm: 1) trace 2) for each weak object (in a remembered table), check if live or not 3) trigger finalizers 4) collect stuff That algorithm assumes the weak object is marked as a weak object. How do I know that it is a weak object? the problem, of course, is when finalizers can point to the dead object and resurrect it. There must be some exteroir information that is considered. there are many ways to address the problem, none 100% satisfactory because everytime you create weak pointer, it is registered in an appropriate table (yes, this does make weak pointers more expensive than normal ones) Fare: w/ 'scan for' /i isnt needed since all keys r stored in lowercase, and btw, scan for only search for keys, ... ...for a more in depth search, get the db dumps ~nef/abi/db/ Fare: This is dissapointing. :( KL: why disappointing? KL: another way is to make your tables no longer global. I did not want to mark objects as weak, or not. If I do that I will make a mistake, and I will loose subtle information. KL: e.g. managed by an explicit meta-object, or such I do not mind managing the weak objects. Just marking them. pointers, not objects, are weak KL: instead of discussing means, could you explain the ends? I would like to remove garbage from my database. :) -:- Bala [Bala@202.9.147.43] has joined #tunes how do you define "garbage"? 05:20am I am saying objects to cover "weak sets" and "weak pointers". =( Fare: Thanks, for the question. I guess it is a balance between what is needed in the immediate future, and what could be needed ever. dur! I could see may old DAGS being queried deep in the futer by some person interested in the versions of a function. But these DAGS are not useful to me. Maybe my problems lies in allowing sets to be stong pointers to objects. sometimes you DO want strong sets! all the more since weak sets cost more... Yes, dbut I do not know how to mark them as such, except manually. of course, you have to mark them manually! being weak is a semantic property that's to be visible to the user!!! -Bala:#tunes- Hi Is there any one there -Bala:#tunes- hello 1 Is there a way to analyse a routine to see if it references a set as a strong set? you mean, like, have weak as default, and use some analysis to see that in some cases, strong doesn't leak memory, and cost for managing weakness can be optimized away? 05:30am yes, that can be done. That's called liveness analysis. Not exactly, the means is right, the ends is wrong. If you use it for a lot of optimizations, and do global analysis of static code, it even works in enough cases so as to bring substantial performance improvements. I am not saving the cost of managing weak, I am not loosing the objects referd to in a set, despite them not being refereced directly elsewhere. I am not saving the cost of managing weak I do not want to loose the objects referd to in a set, despite them not being refereced directly elsewhere. Are weak sets as expensive as weak pointers? I see them as fairly efficient. KL: weak sets are just sets where the nodes use weak pointers. Unless of course you use some kind of region-based suballocation, and your set precisely matches the notion of "the objects within said region" Yes. I am doing the latter (region-based suballocation). then it's something altogether different! ? well, not THAT different but let's say that the costs for weak-pointers is already accounted for in the suballocation policy 05:40am k Do you have formal semantics for this region stuff? .... that fscking til.info.apple.com is dog slow. So much for Apple customer-friendliness -:- SignOff Bala: #TUNES (Bala) KL: is your code available anywhere? I'm curious Yes, it is a mess. @ http://www.arcavia.com/rd/dbc-html/download.html I will see if I put up a more recent copy. That one had problems compiling. I will have that fixed by end-of-day. (EST). 05:50am Each "set" is an explicite statement of the objects it contains. That means an object that is not in the "Set of all objects" does not exist. I mean really not exist. I does not exist to the memory manager, and it does not take space up on a drive. There would be a subset of objects that can be considered 'live'. but that subset changes with garbage collection That is fine. That subset is 'weak'. MMMmmm then is it referenced by the collecting queries. <:-( Reference by query makes the set strong. NO, the set is strong. Objects are removed manually, by the GC, there is no issue wih that. I'm not sure what you are rambling about :) The set of live objects is a strong set. It is strong because the GC has to refer to that set to make changes. I do not see why you said "but that subset changes with garbage collection" 06:00am when you garbage collect, it will kill some objects in regions unless you prevent GC from happening inside a queried region, or suddenly promote all its objects to live Are you talking about mutithreaded issues? GC will not be allowed to clean objects in regions defined by strong sets. Strong sets are defined by sets that are queried. I amke the distinction between cleaning, and removing. The GC cleans garbage, but removes objects from its 'live' set. 06:10am of course there are multithreading issues, to me if I wanted a non-multithreaded OS, I'd stay with Emacs I would like something that works, at least, in single threaded mode. I have designed with consideration to mutithreaded implementation. I have not implemented it yet. Kyle: tagging all objects in a queried region as "live" is ok, but that means that all objects pointed-to from the region suddenly become live, too. That may have quite some impact on GC performance (particularly real-time GC) -:- SignOff hcf: #TUNES (Leaving) You refer to the possible plethora of extra live objects becuase of the existence of 'live' sets? Or do you mean complexity/computability issues? the former. * Fare/#Tunes wonders about the performance of GC with working sets > available RAM. (although if pointers are properly seggregated, BLOBs need not be accounted within the "working set") I do not see a method of solving that. If a set of objects is available for query, then any object that is referenced by that set could conceivably be used as a result of the query. (neither need untouched ref-counted-only regions w/o circular stuff) 06:20am I call BLOBs BitFields. KL: this need not forcibly be "solved". Just documented, and accounted as cost of the query. why not call BLOBs BLOBs? mind the L in BLOB MMMmm I like the idea of segragating circular regions. Sounds familiar. familiar? I may have read about it. if you find pointers, I'm quite interested. ok BLOBs are arbitrary in size. BitFields are objects, but do not contain objects. BitFields are 2^n bits in size. hum. That might hurt (make migration of objects to/from other systems more expensive than should) (all the more if objects get exponentially larger at each round-trip) I like to think of it has having a consitent BitField representation of an object. These bit fields can be used for communication 06:30am For instance, table records are stored in bitfields. How a record is stored in a bitfield is encoded in the function that handles getrecord() requests. The code can be moved to another machine easily, even if it is innefficient. Local compilers can use the implementation as a metaphore to make more efficient versions. I understand this may not be computable. Approximaions are fine. BitFields are a map from machine-ordered representation to object-unordered representation. I want to use bitfields for so compilers can make instruction sequences. The contents of a bitfield can have no meaning without a reference to a function that accesses it. why the 2^n bit size limitation? instruction routines typically do not show such limitation... efficient block managment. I do not have the 'hole' problem when deleting these things. 06:40am I could go with a single size, but that wastes space for small objects. different implementations can do differently why encode an implementation-dependency in the user-visible object model? Any size can be generated by a set of thes BitFields. I do not beleive this cost is too high, especially when every object is of fixed size (no streams). Because some users are low level developers. what do you propose to those who are not? They do not have to use them. They will not even know of thier existence, unless they hunt. The reflective 'loop' is purely object oriented. BitFields is a modules to map to hardware implementation. ok -:- SignOff Fare: #TUNES (Ping timeout for Fare[lantier.enst.fr]) Thanks Fare. I am off to make a prototype collector. -:- SignOff Kyle_L: #TUNES (Leaving) 06:50am -:- Fare [rideaufr@lantier.enst.fr] has joined #Tunes -:- smoke_ [smoke_@cti041.citg.tudelft.nl] has joined #tunes *** Topic is 'gpl demos | the UN should give humanitarian aid to TUNES' hehe :) 08:10am :) 08:20am -:- SignOff smoke_: #TUNES (woosh) -:- SignOff Ghyll: #TUNES (food) -:- smoke [smoke@16dyn240.delft.casema.net] has joined #tunes -:- SignOff abi: #TUNES (Ping timeout for abi[bespin.dhs.org]) -:- NetSplit: fontana.openprojects.net split from varley.openprojects.net [09:29am] -:- BitchX+Deb1an: Press Ctrl-F to see who left Ctrl-E to change to [fontana.openprojects.net] -:- Netjoined: fontana.openprojects.net varley.openprojects.net -:- smoke [smoke@16dyn240.delft.casema.net] has joined #tunes -:- dirt [mindfvck@niantic0322.mohawk.net] has joined #tunes -:- abi [nef@bespin.dhs.org] has joined #tunes -:- SignOff dirt: #TUNES (Leaving) -:- n8j [nate@1Cust135.tnt26.det3.da.uu.net] has joined #tunes -:- NetSplit: sterling.openprojects.net split from tolkien.openprojects.net [01:15pm] -:- BitchX+Deb1an: Press Ctrl-F to see who left Ctrl-E to change to [sterling.openprojects.net] -:- Netjoined: sterling.openprojects.net tolkien.openprojects.net -:- smkl [sami@glubimox.yok.utu.fi] has joined #tunes -:- Fare [rideaufr@lantier.enst.fr] has joined #tunes -:- abi [nef@bespin.dhs.org] has joined #tunes -:- dirt [mindfvck@niantic0320.mohawk.net] has joined #tunes ole -:- SignOff smoke: #TUNES (Ping timeout for smoke[16dyn240.delft.casema.net]) -:- Kyle_L [kyle@cr168790-a.nmkt1.on.wave.home.com] has joined #Tunes 01:30pm -:- smoke [smoke@16dyn240.delft.casema.net] has joined #tunes -:- SignOff dirt: #TUNES (Read error to dirt[niantic0320.mohawk.net]: Connection reset by peer) -:- hcf [nef@me-portland-us544.javanet.com] has joined #tunes -:- NetSplit: varley.openprojects.net split from tolkien.openprojects.net [03:14pm] -:- BitchX+Deb1an: Press Ctrl-F to see who left Ctrl-E to change to [varley.openprojects.net] -:- Netjoined: varley.openprojects.net tolkien.openprojects.net -:- smkl [sami@glubimox.yok.utu.fi] has joined #tunes -:- Fare [rideaufr@lantier.enst.fr] has joined #tunes -:- Kyle_L [kyle@cr168790-a.nmkt1.on.wave.home.com] has joined #tunes -:- hcf [nef@me-portland-us544.javanet.com] has joined #tunes -:- ChanServ has changed the topic on channel #tunes to: http://tunes.org/ -:- abi [nef@bespin.dhs.org] has joined #tunes abi: seen fufie? fufie was last seen on IRC 29 days, 3 hours, 58 minutes and 27 seconds ago, saying: hangs himself with a coax cable [Tue Apr 11 11:27:43 2000] wheres he been? 03:30pm he is at IRCnet, go ask him -:- SignOff smoke: #TUNES (woosh) hmm, ok 03:40pm -:- SignOff hcf: #TUNES (Leaving) -:- eihrul [lee@usr5-ppp174.lvdi.net] has joined #tunes -:- ult [ult@user-37kbao3.dialup.mindspring.com] has joined #Tunes -:- Alija [hex@ip232.los-angeles20.ca.pub-ip.psi.net] has joined #tunes -:- Alija [hex@ip232.los-angeles20.ca.pub-ip.psi.net] has left #tunes [] -:- SignOff ult: #TUNES (Ping timeout for ult[user-37kbao3.dialup.mindspring.com]) -:- ult [ult@user-37kbajd.dialup.mindspring.com] has joined #Tunes -:- coreyr [coreyr@net255ip95.parklink.com] has joined #tunes -:- hcf [nef@me-portland-us502.javanet.com] has joined #tunes -:- kurtkilgor [undisc@ip177.boston5.ma.pub-ip.psi.net] has joined #Tunes hello, fellas, I'm new here are all of you on the tunes project? all but me, I am a newbie oh i am not either. I am not so new that I do not know the people. I have been here for a month. kurtkilgor: usually water will make his way here again and if you are truly interested, im sure he will disuss anything you would like. ok... 07:40pm does any discussion of tunes actually take place here? nope this channel is basically dead yeah because people like hcf and water throw a hissy fit whenever someone talks here where is the main discussion? here here kurtkilgor: the project does lack some vitality if you are willing to contribute.... coreyr: oh, really? that's a shame. It seemed pretty serious from the website it has longevity :) -:- hcf has changed the topic on channel #tunes to: TUNES, Free Reflective Computing System: http://www.tunes.org/ || Slate Language: http://www.tunes.org/~water/slate-home.html have you checked out the slate page? no you should is it LISP-like? hmm I saw a lot of lisp mentioned on the site yeah I love LISP, but it's a very fast way to get nothing done i believe water is offering slate as the HLL for tunes HLL? high level language what's the LLL, then? abi HLL? HLL is High Level Language abi LLL? LLL is Low Level Language what's the actual language, though? C? have you looked at the review page? That has yet to be determined. Yes. Slate is C. Well, it's an extension to C. Basically water wants to turn C into a prototyping language. ult: :) ult: OH, i did not know that. And Slate sort of isn't really a Tunes HLL candidate -- water has admitted so himself, they both have different goals. it seems like Slate is more of a lisp-y language abi: seen water water was last seen on IRC 18 hours, 56 minutes and 2 seconds ago, saying: cya [Wed May 10 00:51:19 2000] what's the syntax for this abi thing? its an infobot abi is a she, not an it abi ? kurtkilgor? abi help kurtkilgor: join #tunes_test, i'l show u abi's stuff looks like she does not like you. :) grrr. Ok. Well, I'm going. I'll start my own super-OS :) -:- SignOff kurtkilgor: #TUNES (Leaving) our work is done heh 07:50pm -:- SignOff eihrul: #TUNES ([x]chat) -:- ult is now known as eihrul -:- eihrul is now known as mathias_ -:- mathias_ [ult@user-37kbajd.dialup.mindspring.com] has left #Tunes [] -:- lar1 [larman@adsl-63-203-74-39.dsl.snfc21.pacbell.net] has joined #tunes -:- SignOff Kyle_L: #TUNES (Leaving) -:- td [x@1Cust199.tnt3.wilmington.nc.da.uu.net] has joined #tunes -:- mog [xdef@209-6-184-139.c3-0.wth-ubr1.sbo-wth.ma.cable.rcn.com] has joined #tunes -:- smoke [smoke@16dyn194.delft.casema.net] has joined #tunes -:- humvee [root@202.86.130.180] has joined #tunes is anyone here? hey so hows tunes coming along? i dunno :) im just visiting so any developers here? * coreyr/#tunes snores. -:- SignOff mog: #TUNES (Read error to mog[209-6-184-139.c3-0.wth-ubr1.sbo-wth.ma.cable.rcn.com]: EOF from client) 11:00pm -:- SignOff lar1: #TUNES (hell... not hell yes, nor hell no, just hell :)) -:- SignOff hcf: #TUNES (Ping timeout for hcf[me-portland-us502.javanet.com]) -:- coreyr [coreyr@net255ip95.parklink.com] has left #tunes [] [msg(TUNES)] newlog 2000.0511 IRC log ended Thu May 11 00:00:01 2000