IRC log started Tue Feb 15 00:00:02 2000 [msg(TUNES)] permlog 2000.0215 -:- smoke [smoke@16dyn80.delft.casema.net] has joined #tunes -:- SignOff smoke: #TUNES (One day sheep will rule the world) -:- smoke [smoke@16dyn80.delft.casema.net] has joined #tunes -:- water [water@tnt-9-8.tscnet.net] has left #tunes [] -:- smokie [tw026024@zaalf15.twi.tudelft.nl] has joined #tunes -:- AlonzoTG [Alonzo@216-164-128-206.s206.tnt1.lnhva.md.dialup.rcn.com] has joined #tunes -:- thomas [thomas@193.217.63.152] has joined #tunes -:- SignOff smokie: #TUNES (BitchX-75+Deb1an -- just do it.) -:- Kaufmann [kaufmann@jobim.fluid.impa.br] has joined #tunes foo bar where can I find RFCs? some .mil sites with low IP numbers... I have some links in my unix manuals.... 07:00am Ha-ha. Virginia passed UCITA. Now you're all screwed. Ha-ha. * AlonzoTG/#tunes is a virginian. well, Alan, you're screwed. =( * AlonzoTG/#tunes wants ops and someone called "VA HOUSE" to join so I kan kick the SOB... the senate is still considering it. So go write your representatives. Make a big fuss about it. Take a bus to the state capital and start shooting people's asses. yeah, I'm only a 2 hour's drive away from richmond... =\ 2 hours? Oh, stop being a wuss. I spend 2 hours on cross-town bus trips every single day, twice a day. 07:10am okay, so I drags my carcass down there; then what? then you rent yourself a room near the House of Representatives, and start putting up flags and banners everywhere, and distributing pamphlets at the door. -:- SignOff AlonzoTG: #TUNES (Read error to AlonzoTG[216-164-128-206.s206.tnt1.lnhva.md.dialup.rcn.com]: Connection reset by peer) -:- AlonzoTG [Alonzo@216-164-128-206.s206.tnt1.lnhva.md.dialup.rcn.com] has joined #tunes 07:20am !c if you say so... 07:50am -:- SignOff Kaufmann: #TUNES (Ever notice how the only people who say "it's never too late to change your mind" are the undecided?) -:- rares [rares@wtrb-sh2-port141.snet.net] has joined #tunes -:- SignOff rares: #TUNES (Read error to rares[wtrb-sh2-port141.snet.net]: EOF from client) -:- hcf [nef@me-portland-us321.javanet.com] has joined #tunes -:- NetSplit: carter.openprojects.net split from sterling.openprojects.net [09:14am] -:- BitchX+Deb1an: Press Ctrl-F to see who left Ctrl-E to change to [carter.openprojects.net] -:- Netjoined: carter.openprojects.net sterling.openprojects.net -:- smkl [sami@glubimox.yok.utu.fi] has joined #tunes -:- SignOff smkl: #TUNES (changing servers) -:- thomas [thomas@193.217.63.152] has joined #tunes -:- Closing Link: TUNES[bespin.dhs.org] by devlin.openprojects.net (Ping timeout for TUNES[bespin.dhs.org]) -:- Connection closed from irc.us.openprojects.net: Success -:- Connecting to port 6667 of server irc.us.openprojects.net [refnum 0] -:- BitchX+Deb1an: For more information about BitchX type /about -:- Welcome to the Internet Relay Network TUNES -:- Your host is devlin.openprojects.net, running version u2.10.05.18.(ipcheck4-5) -:- This server was cobbled together Wed Apr 28 1999 at 12 02:19 EDT -:- devlin.openprojects.net u2.10.05.18.(ipcheck4-5) dioswkfcg biklmnopstv -:- [local users on irc(7)] 1% -:- [global users on irc(292)] 43% -:- [invisible users on irc(385)] 57% -:- [ircops on irc(17)] 3% -:- [total users on irc(677)] -:- [unknown connections(1)] -:- [total servers on irc(29)] (avg. 23 users per server) -:- [total channels created(224)] (avg. 3 users per channel) !devlin.openprojects.net Highest connection count: 112 (109 clients) !devlin.openprojects.net Welcome to Open Projects! You are on 4 ca 1(2) ft 14(14) tr. -:- Mode change [+f] for user TUNES -:- Mode change [+iws] for user TUNES -:- JOIN activated by "TUNES #tunes tunes@bespin.dhs.org " -:- TUNES [tunes@bespin.dhs.org] has joined #tunes -:- Topic for #TUNES: TUNES, Free Reflective Computing System @ http://www.tunes.org || slate @ http://www.tunes.org/~water/slate-home.html -:- topic set by hcf [Mon Feb 14 09:14:39 2000] -:- [Users(#tunes:8)] [ TUNES ] [ thomas ] [ hcf ] [ AlonzoTG ] [ smoke ] [ Plundis ] [ abi ] [ Fare ] -:- Channel #tunes was created at Sun Feb 28 08:48:06 1999 -:- BitchX+Deb1an: Join to #tunes was synced in 8.676 secs!! -:- Mode change [-ws] for user TUNES -:- Netjoined: lackey.openprojects.net devlin.openprojects.net -:- AlonzoTG [Alonzo@216-164-128-206.s206.tnt1.lnhva.md.dialup.rcn.com] has joined #tunes -:- rares [rares@wtrb-sh1-port79.snet.net] has joined #tunes -:- rares [rares@wtrb-sh1-port79.snet.net] has left #tunes [Segmentation] -:- SignOff smoke: #TUNES (Ping timeout for smoke[16dyn80.delft.casema.net]) -:- SignOff thomas: #TUNES ([x]chat) -:- smoke [smoke@16dyn80.delft.casema.net] has joined #tunes -:- SignOff smoke: #TUNES (brb) -:- kc5tja [kc5tja@garnet.armored.net] has joined #tunes -:- SignOff hcf: #TUNES (Leaving) -:- smoke [smoke@16dyn80.delft.casema.net] has joined #tunes -:- SignOff smoke: #TUNES (Read error to smoke[16dyn80.delft.casema.net]: EOF from client) -:- ult [noone@user-38lc6fa.dialup.mindspring.com] has joined #Tunes -:- smoke [smoke@16dyn80.delft.casema.net] has joined #tunes -:- SignOff ult: #TUNES (bbiaf) -:- NetSplit: wang.openprojects.net split from irc.linux.com [02:23pm] -:- BitchX+Deb1an: Press Ctrl-F to see who left Ctrl-E to change to [wang.openprojects.net] -:- Netjoined: wang.openprojects.net irc.linux.com -:- Plundis [plundis@130.238.23.252] has joined #tunes -:- ult [noone@user-38lcn4i.dialup.mindspring.com] has joined #Tunes -:- SignOff smoke: #TUNES (Ping timeout for smoke[16dyn80.delft.casema.net]) -:- smoke [smoke@16dyn80.delft.casema.net] has joined #tunes -:- SignOff ult: #TUNES (Read error to ult[user-38lcn4i.dialup.mindspring.com]: Connection reset by peer) -:- lar1 [larman@1Cust50.tnt31.sfo3.da.uu.net] has joined #tunes -:- mibin [mibin@an1-573.tiscalinet.it] has joined #tunes -:- smkl [sami@glubimox.yok.utu.fi] has joined #tunes -:- lar1 has changed the topic on channel #tunes to: TUNES, A Free Reflective Computing System @ http://www.tunes.org hum * Fare/#Tunes is writing a paper on the architecture of computing systems -:- rares [rares@wtrb-sh5-port35.snet.net] has joined #tunes the paper is currently titled "Six Steps of Structural Sophistication in System Software", although I'm looking for another word than "Steps" (if possible, beginning with S) because these "Steps" are not strictly hierarchically dependent. 03:10pm i'm still not convinced! hehe abi, rares is not convinced ...but rares is addicted to politics... Fare: !! no, rares is not convinced abi: no, rares is not convinced okay, rares. kc5tja: cheers! ok, so the steps correspond to the following classes of system components: incidentally I use aboute 4-6 steps to prove code is free speech in the dvd-discuss ml -:- air [brand@p0wer.qzx.com] has joined #tunes runtime libraries; resource monitors; compilers; admission controlers; code verifiers; code synthetizers Fare: Long time no see. :-) which in turn correspond to incremental programming; concurrent programming; dynamic programming; high-level programming; contract enforcement; metaprogramming wassup w/ dolphin? Fare: #dolphin or #osdev Is water here? Oh good. Dolphin is now on SourceForge. Yay Though I can't seem to upload the source to them yet -- their CVS servers are royally crocked. 0.5 is _almost_ done (technically, it's Dolphin 0.48, since it has all the features of 0.5 except support for multiple address spaces). 03:20pm multiple address spaces are nice for efficient untrusted code (like, emulators, including self-emulators), but not strictly necessary Fare: The _sole_ reason it's there is to do stuff like memory mapped files (which is a big help in some applications I'm interested in developing), software development, and so on. The idea is to run only untrusted code in a separate space. The bulk of the system is in a single address space, however. I suppose some kind of same-processor code-morphing could bring better security with less hardware cost. Fare: How do you reccomend implementing security? Fare: Only if the machine language for the hypothetical processor has enough semantics assigned to it that you can guarantee type safety. lar1: by using the latter high-level components in my "six steps": compilers, trust brokers, code verifiers. lar1: certainly NOT at the lower library or monitor levels. security is a high-level concept. Trying to solve it with low-level tools is a doomed abstraction inversion. -:- eihrul [lee@usr5-ppp150.lvdi.net] has joined #tunes Hey eihrul water is an abstraction inversion :) it is when it gets cold it expands abstraction inversion? abstraction inversion is described in ftp://ftp.netcom.com/pub/hb/hbaker/CritLisp.html abi, up is down * Fare/#Tunes expanded just a bit on the uK section of the Glossary, once again abi? yes, rares? How is the Glossary currently maintained? abi: up is down i already had it that way, rares. lar1: not much abi, down? wish i knew, rares abi's a bit limited Fare: Should the Glossay be DBifyed? should, yes My I have your holy blessing to do that? sure, and have had for some time I have your blessing to DBify anytihng on the tunes page? as long as you respect the README.contribute; and if possible, what I proposed about this DBification on the list 03:30pm Fare: Where is the README.contribute? root of the tunes CVS hierarchy as for comments on DBification, look to my initial replies to prof Shapiro on the list... How do I access the tunes CVS in win32? "protection" in operating system kernels is really just like "protection" in human societies' governments we shall get rid of it Fare the only way to do it is: lar1: install cvs for win32; or ssh into a computer with real system software. Fare: Ok The depth of abstraction is such that bothe coder, the user, and even the computer can block bad code here's how you do it: make security a module then have the security module scan the program every once in a while the secmodule would be a user 03:40pm Okay explain why Linux/Borland survey is getting 2.5 x the attention UCITA is Could a thread preproccess the code to see if its naughty? UCITA 500 Lin/Borland 1200 comments that i s/i/is rares: borland discussion is spammed mechanically lar1: Not without actually executing it. kc: actually it should be possible kc5tja: Why must the code be executed? lar1: Because it's impossible in current computer architectures to unambiguously identify code from data. For example, many, many, many compilers will optimize switch() and case: statements into a jump-table which usually resides fairly close to the switch code. How does one interpret this jump-table? UCITA 500 ? smkl! did you solve your problems with cybernethics@foo subscription? Fare: It's a bill in the U.S. that will make it legal for companies to misuse their customers, and it will give software companies the equivalent of a communist regime over what people can do with their software. kc5tja: Follow the flow of execution? is mrsmkl@bar a valid email address? lar1: How do you do that though? (fscking slow keyboard) Fare: hrrm what kind of problems did i have? email to mrsmkl@bar was returned to me mrsmkl@saunalahti.fi should be disabled now kc5tja: start at the top of the code and evaulate what happens... emulate it if you wish lar1: Emulation is the only way to do it. Because that switch code can be executed IRL innumerable times, each taking a different path. * rares/#tunes thinks it's time for a regular flood about now cheap clean tools to totally scare the fuck out of the market and to add the kill UCITA banners well, shall I replace it by smkl@tunes.org where applies? i don't mean cracking * kc5tja/#tunes thinks it's high-time for an outright armed revolution in this country. kc5tja: Emulation is proccessor intensive though... I think the multi memory space is still faster rares: Whats UCITA? it has been said that UCITA is Uniform Computer Information Transactions Act Whats that? lar1: Elucidate on your algorithm, if you will.' 03:50pm Fare: i already have smkl@tunes for cybernethics ... and i hope that i remembered to remove it from other places kc5tja: Elucidate? lar1: To enlighten, (from Lucht, or Light). I'm saorry u have failed to pay for the mandatory upgrade of software in your computers your machine at Cetral Medical Emergency Room Cyber Surgeon shall be sh... Oooo...* kc5tja "security as a runtime module" is no better than security in the kernel oops Fare: Do you sugeuest that all code be trusted kc5tja: I haven't designed it or anyhing, just a quick thought I had security should certainly have modules at meta^n runtime, for all n, not only n=0 (as little as possible at expensive n=0) but to be effective, there needs be a centralized trust broker YABL, no? and THAT is the essential point about security lar1: when written in a sage language then yes all code is trusted YABL? i think YABL is Yet Another Burden Layer s/sage/safe/ Fare I suggest something else air: sage language? collapsing all interfaces to nomore than thre levels air: Oh, heh ;) How does a 'safe language' ensure all code can be trusted? lar1: Think about it for awhile...you'll eventually see that it's just not possible with the computer hardware we have today. :) lar1: Type and semantic safety is explicit in the language. yes it is rares: why three, and not four? why not 3.14159 ? a safe OO language How does that protect against apps scribbling on eachothers memory? lar1: If you don't have a reference to an object, how can you use it? How can you destroy it? lar1: if u cant define a pointer than how can u write on another apps memory Fare: do you know of any (good) garbage collector benchmarking programs? Fare 3: 1st machine-dependent, 2nd job dependent, 3rd moron dependent So pointers must be assigned a value before useage in a safe language or you can't have pointers at all? lar1: A safe language technically doesn't have `pointers'. Instead, they have references, which is a more abstract concept. kc5tja: Couldn't a thread see if an app is about to write out of its memory area? lar1: Nope. Not unless the location is a constant that is well-known throughout the program. Take for instance, the following C code: int strlen( const char *s ) { int length = 0; lar1: a safe language not only prevents an app from writing out of its memory but it ensures that the app only writes to the location it was suppose to write to while( *s++ ) length++; return length; lar1: which prevents bugs } eihrul: no. All the less since a GC is only part of a whole eirhul: to test GCs independently from the rest is VERY difficult 04:00pm Fare: i know, that's my problem kc5tja: thats infinite, no? lar1: The C code is perfectly valid, and works perfectly fine. But what if the end of string is never found? This can only happen if the function receives a wild pointer. it's a bit mine, too lar1: Nope. That's precisely how the C function strlen() is implemented. i've been testing them in allocation and collection speeds with a little random allocation patterns thrown in to try and emphasize some fragmentation eihrul: what application/language/compiler/foo are you interested in? what allocation style do they lead to? kc5tja: How could *s++ return false? ... /0 Fare: well, i have three sets of benchmarks for randomly sized objects, large objects, small objects, that are intensely allocated and freed... lar1: So while the library code is known-good (well, as far as ANSI is concerned), what the client calls into it could be complete garbage. Ergo, when loading the library function into memory, how can the OS/security module know that the code will ever reference out-of-bounds memory? the typical X11 app will have different storage allocation than a typical postscript document, which will behave differently than a Haskell script, etc kc5tja: Hmm, I see... Fare: but i'm trying to think of a slightly more fair test that will model more closely the "average" programs allocation/work patterns :) lar1: *(s++) is how it's interpretted in C. Remember s is a character pointer. *s dereferences the pointer to return the current character. s++ post-increments the pointer. it is possible to typecheck ASM abi: tal? i think tal is typed assembly language at http://www.cs.cornell.edu/talc/default.html kc5tja: Ah, ok it's about size, frequency, but also about locality, pointing backwards in time, etc, etc Fare: well, i'm not trying to be thorough, just fair :) Is multi memory the only way to provide security while executing untrusted code? about "bursts" of allocation/deallocation, circularity in structures, and much more Fare: this is just a school project, so i don't have to examine everything :) also, do you use finalization, etc eihrul: I suppose the authors of Great Circle have a lot of data, but it might be proprietary. * eihrul/#tunes will just build a tree and walk around in it... Boehm & Wilson may have a lot of data, too, and freely available since i don't have more than a night to get this done :) finally, the right place to look for help is gclist@iecc.com lar1: Nope. Use of a singular programming language is another way. Consider the original LISP environments -- these are systems that are fully garbage collected, etc. There was no way to muck with stuff you didn't own without relying on an external C extension to the language. Fare: already subscribed :) Fare: read all the archives kc: original LISP systems didn't have external C extensions. Fare: I meant changes to the LISP interpretter's source code. On the other hand, their assembly implementation was open, and LISPers often used LAP (LISP ASSEMBLY PROGRAMMING) kc5tja: How about in an unsafe language envrioment? lar1: unsafe wrt what? lar1: Two methods are used there. First, run-time profiling (basically emulation). This, as you indicated, is abhorently slow on any processor except the Transmeta (TM was designed for this purpose, so naturally, it's going to rock at it). The second is multiple address spaces. The latter works because it's a hardware enforced sand-box within which the program runs. kc: why abhorrently slow? BRB "code morphing" is exactly how Executor works -:- SignOff lar1: #TUNES (Leaving) or maybe even FX!32 and also the PowerMac's m68k emulation 04:10pm and IBM's 3x0 stuff, too Fare: They work because of two reasons. First, they both rely on outside MMU management to enforce a sandbox. Second, since applications of those environments never touch the hardware, it's possible to avoid such decisions as, "If this MOVE.L instruction is trying to reference I/O registers, go here. Otherwise, just store the data." and some Java JITs Fare: And none of them even come close to native speeds. I guess the Transmeta codemorphing doesn't come that close to VLIW native speed, either I can't see how transmeta pulled it off though they said straight code runs slower than morphed... -:- hcf [nef@me-portland-us909.javanet.com] has joined #tunes No, but the architecture is designed to perform I/O emulation trapping in hardware. Read some of the patents on it. rares: That's a lie. Since straight code is, by definition, what makes up the morphed instructions, it can't possibly be true. :) efficient I/O trapping is handy, but not that useful for morphing of safe high-level language code And then there's the issue of emulating CPU flags, the CPU's target memroy management architecture (e.g., segmentation, paging, etc). It all adds up. I'd have preferred efficient trapping for type tags and read/write barriers Fare: Now that's different. Lar1 and I were talking about assembly code, not high-level code. I agree that morphing semantic trees is perhaps the best way to distribute software. kc: sure, the Transmeta can emulate a X86 pretty fast, that's what it's designed for; I'm still convinced that the emulated code is significantly slower than "native" underlying VLIW with TAL, it's possible to send native code, and have it typechecked DMacs? -:- hcf has changed the topic on channel #tunes to: TUNES, Free Reflective Computing System @ http://www.tunes.org || slate @ http://www.tunes.org/~water/slate-home.html Fare: Not according to the reports I've heard. 70 to 80% is what I've been told. The explanation is that the way the VLIW instructions are packed are optimized for one VLIW instruction block per x86 instruction. Of course, it doesn't actually realize that goal in all cases, but for most operations, it seems to succeed. Dolphin eMacs rares: AHH!! No No NO! Emacs will not sit on any Dolphin installation of mine. Long live JED! :) Emacs -- on a diet! * kc5tja/#tunes doesn't like the concept of a text editor that is its own operating system, complete with a suite of applications. :-) * kc5tja/#tunes giggles like StarOffice? * Fare/#Tunes does like it; but hates an OS w/o multiprogramming Hmm... Dolphin JED -- DED? ;) Dude here's the problem Fare: I like Emacs too. I'm being a bit facetious(sp?). But still -- 20MB for a text editor is insane. :) * kc5tja/#tunes wants a scriptable text editor, preferably through a standardized object interface (like CORBA). * smkl/#tunes removed Emacs so he could install StarOffice all you need to do is split emacs into pieces and add the interface on top LOL smkl CORBA sucks Fare: Like hell. Fare: another word than "Steps", stages Fare: CORBA kicks butt. CORBA programmers suck, CORBA rules hcf: actually stages was what I used first i need SO to read MS Word docs :/ hcf: but it kind of implies that the steps don't commute 04:20pm degrees degrees ain't better Axes might be good, but doesn't begin by an "S" theres just no pleasing u is there? Sexes ? heh lol (especially the sequence between hcf's and smkl's comments) Sections? try Signs Stigmatas Signs but there are more than three Stalemates. :) Sources? what tf does 3 have to do w/ this Signs And why are we looking for words that start with an S? ;) rares: 3 shall be the number and the number shall be 3 * kc5tja/#tunes must have missed something. Five is RIGHT ... OUT. \title{Six Sources of Structural Sophistication in System Software} Ehh...that sounds good enough as it is.. ;-) use the word Signs Sophistication is bad Sets? nop[e As in, "Six Sets of Structure in System Software" Structure in software or Book on Structure Book two Software what the hell are u guys doing? :) i do not know Brainstorming. My, what loud weather we're having! Microsoft aka SourceFudge.com 04:30pm Hey, I use SF primarily for its task managemen and bug management interface. I don't have the time to set up one of my own. why is sophistication bad? * kc5tja/#tunes likes the sophistication word in that title. It adds just the right amount of syllables. and there should be six words in the title, too you could have Seven, and then SSSSSSS somewhere so it would be recursive Seven Evaluates Very Elegantly, Not? anyway, I haven't found a suitable plan for the article the goal was an architectural description of key components in a system architecture for TUNES as well as for PHENIX -:- SignOff rares: #TUNES (Read error to rares[wtrb-sh5-port35.snet.net]: Connection reset by peer) darn! this life of brian sciprt on the net hasn't got "three shall be the number..." Fare: That's because that quote is from The Holy Grail. -:- rares [rares@wtrb-sh9-port14.snet.net] has joined #tunes oh! Specifically, the Holy Handgrenade of Antioch. :) * Fare/#Tunes hits head against wall sure Bard's Tale 2 had Holy Handgrenades, too Why not? They're imminently useful. Fare: how about suites? suits go to hell! anyone wearing a tie should go to a psychiatrist not suits, suites 04:40pm ok, gimme the presidential suite * eihrul/#tunes nods. well I gotta go -:- SignOff rares: #TUNES (KVirc 1.0.0 Millennium BETA 3) -:- SignOff smoke: #TUNES (z!) 04:50pm mmm quicksort worked well enough as a metric... since the time that itself takes dwarfs the allocation time (and that's what i wanted to prove in the first place :>) s/allocation/allocation\/collection 05:00pm -:- ult [noone@user-37kbamr.dialup.mindspring.com] has joined #Tunes -:- water [water@tnt-10-142.tscnet.net] has joined #tunes hey full house * water/#tunes has decided to add re-write systems to his shameless plug list :) hello? rumour has it hello is a multi-threaded operating system written in Standard ML and can be found at http://www.ics.hawaii.edu/~esb/prof/proj/hello/ heh rofl hm. i can't just depend on eihrul for interaction about slate * ult/#Tunes nods eihrul is untrustworthy om eh? well he seems to be busy at least oh n/m :) Water: lets start our own school where the only language class is an elective in Lojban. =) screw lojban Got anything better than lojban? eihrul: got time to talk? atg: yep <> :) is that the symbol for slate? water: hold, need 5 minutes to compile my science project :) although it's not as nearly as well developed as lojban abi <>? <> is Modality or a diamond symbol or your Arrow-like human language idea okay... /me starts searching his hard drive for the recient arrow update... i'll web doc it over the next few days you know, i had no idea yesterday was st valentine's until someone mentioned it today at work :) Is it the Arrow System Philosophy, Jan 6, 2000 ? is that version worth printing? well, it's mostly the same content as the earlier version, but it's more legible i haven't put in the time needed to re-engineer it 06:10pm unless someone's willing to help :) bleh. i think that even if i lived to see 3000 AD, i wouldn't have time to fully explain all my ideas ok my science project is compiled what is it, if i may ask? garbage collectors... i'm evaluating them against the elusive explicit memory management rats, GSVIEW 32 is trying to talk direct to my printer instead of using the 'doze print subsystem. =( Garbage collectors are very cool. hm GC is more of a language/library issue, not neccessarily an OS issue.... eihrul: rewrite encompasses mem-mangement spectrum (manual, stacks, gc's of various types...) AlonzoTG: Correct. Just let the program waste its own memory and then kill it when if it takes too much... AlonzoTG: Not acceptable in a high-availability environment. water: well, that's not necessarily what my science project is trying to prove, but yes, i still need to look over rewrite :) Water: is there a new arrow paper coming out soon? eihrul: dude rewrite as a spec language is really powerful atg: when i get time (i.e. someone help please) and so far while GC collection mechanisms are slower in microbenchmarks versus explicit management Okay. I'll take a gander at it... as a whole they seem to make programs run faster :) I can't print it from here unless I find myself a better PS viewer.... eih: sure, because they *automate* well, that's what my science project was conducted to examine :) eihrul: Someone did a test of that theory by linking an X window server with a Boehm conservative GC library. It was reported that the X server was about 2 to 3 times faster, and produced zero memory leaks. :) oh yep, it was even kind of surprising to me :) i expected neglible slow-down, but not necessarily a speed-up :) -:- SignOff mibin: #TUNES (Ping timeout for mibin[an1-573.tiscalinet.it]) 06:20pm * eihrul/#tunes really needs to catch up on rewrite. What is rewrite (in this context)? well it's not vital rewrite logic sure the logic of substitution of expressions as groups of terms * kc5tja/#tunes isn't familiar with it. but doesn't mean i shouldn't learn more about it it derives from the process of solving equations water: Just curious -- isn't that like EBNF? so you can specify things algebraically kc: not quite rewrite allows for non-determinism in semantics, which a rewrite system as meta-logic can dis-ambiguate dynamically in other words, reflection allows you to tweak search-strategy :) water: ahhh...algebrae... And since most algebrae follow the same basic set of rules (e.g., composition of functions and such), it's possible to simplify complex systems of "equations" (interactions) by "short-circuiting" the algorithm, as you would simplifying an equation (e.g., using quadratic formula to solve a 2nd order polynomial) sure that's the basic idea abi tell kc5tja about maude does anyone know of good graphing software that can spit out images? * kc5tja/#tunes will check it out as time permits. For now, it's bookmarked. :) hm the squeak guys are discussing new syntaxes eihrul: libgd1 is used by PHP3 for drawing graphs and such. eihrul: It spits out .GIF files IIRC> kc5tja: url? None available -- I just know it exists. I know about it because it's a Debian Linux package. heh. maybe i should post up my slate syntax ideas :) Try going to www.google.com and search for it there. water: perhaps >:) but without the meta behind the syntax it's just syntax sure And without the syntax behind the meta, it's just meta... ;) btw, eihrul, you don't object too much to having slate math operators being non-method objects, do you? okay, so have you come to any more conclusions on the naming issue? well, it's somewhat diverging from the idea that numbers are objects &c that most OO languages use... hm well namespaces seem to solve most of the problems with naming i know brb it'll need work to make it usable rmm, not that... the 'directory' thing :) 06:30pm hm? what directory thing? relative addressing of objects/namespaces (heh maybe we should stick to one thread at a time to avoid confusion :) well the directory thing is dynamic, you realize .., ., /, &c it's based on the current method-context stack well, there's ambiguity... that's the only way it works and you avoid inconsistency of whether that stack is of activations, or is of objects :) oh well right hm or rather... i mean by objects looked up by the enclosing expression well it should be obvious what .. is supposed to select well, it's not quite obvious what / selects... as i see it as a stack of stacks uh you have a stack of frames ok i follow that and each frame itself has a stack of objects resulting from an expression :) eek * water/#tunes finds it a bit hard to swallow, but ok well, i had though yesterday that was what you had inferred i mean to say that the stack within the frame itself is inconsequential :) -:- lar1 [larman@sdn-ar-008casfrMP088.dialsprint.net] has joined #tunes oh whew :) so it was more of a question of why you wanted... but it was just a miscommunication it seems :) hm so the question still remains what / should mean kc5tja: yeah, but that's what i mean :) oops, wrong channel perhaps / should be a reference point, sort of a relatively-defined namespace root heh hmmm, libgraph is nice pie charts, bar graphs, line graphs... it does it all that's nice (i wonder how much gnumeric handles?) seemed as if it graphed functions whereas i'm graphing values and graphing lots of constant functions doesn't sound quite fun heh 06:40pm what do you think of the idea i mentioned for / ? hold k well... sounds similar to what i was thinking although i was merely thinking of having relative roots and absolute roots to model both activations and the namespace (and wasn't particular imagining any uses beyond that, but :>) hm ultimately the question is where does / fit into user code, and what should it mean? well, i was thinking of having it as the absolute root and : as the relative root though how relative roots get bound is another subject... well, if : is the relative root, then what's the syntactic assigner? yes that is the question... since : needs to be bound to the enclosing cloned method object well it doesn't really matter what keyord/symbol we use really -:- ult_ [noone@user-37kbat3.dialup.mindspring.com] has joined #Tunes perhaps even <- well, that's particularly why it is not aesthetically pleasing because you have this notion of 'assignment' :) but even : denotes assignment or at least binding i see it as denoting redirection... hm -> suggests advancing -:- SignOff ult: #TUNES (Ping timeout for ult[user-37kbamr.dialup.mindspring.com]) which suits the stream-of-values idea as in "a->b" => "a takes on value b" or "...moves on to value..." 06:50pm * kc5tja/#tunes needs to go. A friend of mine is having car problems, and I need to go and pick him up. -:- SignOff kc5tja: #TUNES (I'll be back soon, I hope...) kc: ok nice seeing you eih: does this jive? :) jive? Sweet... I am not the only one that uses that word! i use whatever words i find appropriate and i like exercising vocabulary I as well Unfourtnally, I can't spell most of it right ;) i gues... i'm still not sure about the whole relative addressing scheme here, though :) neither am i the problem is that an absolute scheme doesn't work either, afaik yes, anythign absolute is somewhat evil :) because then you lose the explorative metaphor well, i suppose / could be dropped, but even so it would appear in namespace selection expressions e.g. ../otherContext so maybe this directory metaphor won't work e.g. another syntax for managing namespaces 07:00pm hm nothing seems intuitive perhaps the static namespace directory metaphor should be kept with / being the root or system namespace (and also the root of the gc :) perhaps... but you still have the "self" namespace that somehow needs to be accounted for ./ ? zero abi: bah well, i'll let you know if i think of anything more intuitive :) okay and we already seem to need two "directions" for namespace access Why? one for the ordinary structural dimension, the other for behavior-meta dimension er meta-behavior ... /methods, /meta :) * ult_/#Tunes pokes eihrul hm ../meta the ... was just so my irc client doesn't interpret those as commands :) oh hmm /meta /maybe your client just sucks. all irc clients suck 'cause they ain't based on tunes ;) 07:10pm er what was /methods supposed to access? the stack oh great i just considered that namespace access should be subject to some reifiable and modifiable protocol but i still don't think it's quite elegant no not yet we should consider the context in which code is actually used i.e. we need to understand the computational model wrt the stack why on earth does Netscape insist on reloading pages when I click 'back'? * ult_/#Tunes wonders what goes through the mind of the AOL devs... no proper caching? nope I've never had a single version properly cache anything yuck And every version I've used for some reason always downloads usenet articles twice. (Just on Linux, mind you) eih: so how do we use the stack? Will slate make the stack[s] directly accessable? ultimately the stack starts by executing a method entered by the user on a command-line for instance ult: well we're probably going to get into that ult: i've been working out continuations, but it's not ready yet Hmm. but executing a method results in cloning the thing the activation context itself is the thing on the stack, right? 07:20pm hm since we're (at least i am) considering concurrent threads and processes within the language, we should consider the stack as one of many * ult_/#Tunes nods and as we discussed many days ago, the activation context's 'parent' is the enclosing (calling?!?) context i just realized there may be a big difference in slate over enclosing vs calling correspondence ult: having the context inherit from its enclosing context is what enables nested variable scoping hmmm there's something important there hm i should draw out this whole model to be sure of what's going on i'll put it online too damn i've been getting behind on the web docs eihrul: afk? i guess afk is Away From Keyboard grr water: was ur discussion of <> on usenet only in the thread of; grup: alt.language.artificial, subj: High Order Language ? i wish he'd let me know when he stops paying attention hcf: yes 07:30pm i got 2 replies, though (private ones) 07:40pm g'nite -:- SignOff ult_: #TUNES (Leaving) -:- rares [rares@wtrb-sh5-port8.snet.net] has joined #tunes hey hey water: sorry... i'm trying to get this science project done (due tomorrow morning) eihrul: well let me know when you're busy ok it's called netiquette :) * rares/#tunes gives eihrul some crack okay, i sometimes forget though... just write "afk" * eihrul/#tunes apologizes profusely. afk no sweat, just try to let me know when you're too busy k * water/#tunes ponders the syntax/semantics relationships of objects as state-accessors water: yes, the cloned activation record is what is actually the frame on the stack 07:50pm om * AlonzoTG/#tunes contemplates founding a monestary. hm and the 'result' of each record contains the code as its slots it seems we've placed the actual code one layer away from the actual context at all times 'one layer away'? yeah you have to ../ to get the record's state from within the code * eihrul/#tunes ponders the need for a lisp version of libgraph. yup we don't Optical Ram Char Recognition hmmm Or OROR Optical RAM Object Recognition ordinary oo does the same thing technically... it just has different syntax ./ could be the records state it implicitly selects ../ within methods where it just inherits the scope of receiver object itself and ./ within objects so any selectors not defined on the activation route to self :) hm? though that's somewhat trickier... hold on you lost me how could ./ be the record's state? we're not in the record, but the code itself, right? or maybe i'm confused well, i thought {../}*{./}* just accesses activation records? as we had established earlier? which one? ../ or ./? zero gr btw, i don't think we need to have explicit access to previous activation records, because they're linked by delegation 08:00pm water: yes... though umm try to come up with something clearer than perl as a syntax pls :) rares: heh we're trying water: i don't know if dynamically scoped methods are really desireable for a default :) hm as dynamic scoping doesn't serve much use wrt methods ok i can see that so inheritance among activation records will serve the usual purpose, i guess which is perhaps a different between blocks and activation records :) s/different/difference instead of scoping er i don't distinguish blocks from records i don't want to well... they behave differently... exactly i want the same behavior less complexity i think it creates more complexity maybe we're talking about two different things because methods usually do not access the calling method's activation though... actually the semantics of methods and blocks even in this respect can be somewhat unified i don't care about *usually* by noting that blocks and methods access the scope in which they're *defined* usually happens to be usually due to heterogeneous language ideas (for sake of argument, but not implementation, we'll pretend methods are defined in an object) blocks (as closures) are defined within other closures i don't care where they're defined, though and so can access state in the defining closure, even outside of it and a method is *conceptually* defined within an object i want blocks to be independent and so can access state in the defining object otherwise we'll have lameness are you listening?? you already have it... :) a suggestion: IT IS NOT INTUITIVE THAT METHODS CANNOT ACCESS THE CALLING METHOD! :) nor is it desirable i didn't say they couldn't er jerk s/CANNOT/CAN :) oh brain fart geez BIG brain fart dude om =\ ToPiQuE? but methods always access the calling method via arguments have a way to change the point of view of the hierarchy rares: yes? object.member arguments *are* the way for this to happen in usual programming languages member.object rares: YUCK! rares: doubly so water: but, i don't see any practical benefits to it... i see a method as delegating to the receiving object not as delegating to the calling method eihrul: i'm saying it's done all the time though 08:10pm no not delegation geez you really weren't listening namespace:object/member ? ;) shrug i believe i was listening argggggg * AlonzoTG/#tunes contemplates the amazingness of my 16 hour uptime... atg: shut up! oh brother i'll review the logs god i'm trying to explain something and all i get back is crap you don't own windows 3.11, 16 hours is a big deal for me! =P atg: thx for more crap -:- SignOff hcf: #TUNES (Leaving) -:- hcf [nef@me-portland-us1041.javanet.com] has joined #tunes * rares/#tunes listens :) yeah yeah, You and your ivory tower.... * water/#tunes sighes time for a vacation I gotta get my grins where I can.... water: you talk about "inheritance of activation records" but... yeah atg right while i'm working at my second job while activation records are linked in a stack like fashion =\ Okay...... they do not use this for "delegation" purposes as you say in the log i know i realized that the dynamicness of delegation would be a problem no wait!!!! duh!!! big duh 'parent' happens to be a slot like any other you can have static scoping by making activation records clones of an object whose 'parent' stays immutable once set yes, but what is the parent? er... just have an immutable parent slot the enclosing record i think that's confusing why? it works the same as in oberon or modula I never bothered with all that terminology in designing my OS... I just said 'I want something that does this' And didn't bother giving it a name as names don't relate directly to their capabilities... now I just have a design but no imp. =( well, it just causes one to think of a call tree instead of a call stack... well shift your thinking guess its an apples to oranges things okay if you design anything, write a manual and mail it to me.... s/things/thing -:- AlonzoTG [Alonzo@216-164-128-206.s206.tnt1.lnhva.md.dialup.rcn.com] has left #tunes [] (thank god) 08:20pm * water/#tunes sighs water: problem? just stressed out s/just// i just can't figure out how to make the stack work right and the syntax for accessors seems baffling (myObject (setVar1 : ../foo)) what : does seems vague and incoherent -:- SignOff eihrul: #TUNES (Ping timeout for eihrul[usr5-ppp150.lvdi.net]) :P nacho day eh? not my decade heh make that two i really need help this schedule's killing me at which stage is tunes? does it know the meaning of no :) no my personal schedule navy + commute + slate + arrow + <> + tunes and oh yeah it'd be nice to fit a personal life somewhere between all that water: what <>, tunes stuff r u doing atm? grrrrr 08:30pm info access'll cost you k, n/m because it costs me * water/#tunes feels like his own web server heh not to sound like I'm peddling rosewater elixirs but if I could just get some cash I'd be able open up the coder recruiting market at like age 15+ lar: info sucker that you are would know water: I gotta suck info from somwhere, right? ;) rares: i have $22k cash in one account alone lar: i'd prefer you go elsewhere or at least keep your trap shut water: About what? * rares/#tunes hides maybe i should hire someone part-time might work i'd have to meet them every day irl water: Hire me! ;) * rares/#tunes hides :) lar: shut the flying fsck up Sorry lar1: stop poking the dragon heh i'd like to think that there's something i could do tonight to help myself, but i seem to have run out of options hell, i'm mostly driven by lonliness lately er loneliness 08:40pm well, it's certainly quiet now :) maybe all accessors should use the same protocol accessors? so that : automatically seeks one slot (just in case it doesn't mean what I think it means) messages that set/get object state gotcha i don't see why not yeah well how much do you grok self or slate? if you don't grok self, don't opine I know self pretty well (I generally don't memorize it irks me but I understand models I was born with models in my head :)) so why no problems with all accessor objects having the same protocol? because an accessor needs only a few details: the object, the slot, the state, and permission (if any) permission .is meta the object .is implicit to the execution semantics: it's the namespace returned to hcf: can you turn off the option for abi to pick up indirect comments? -:- eihrul [lee@usr5-ppp72.lvdi.net] has joined #tunes wb re water: give an example shingles are things that cover roofs abi shingles? shingles are things that cover roofs abi forget shingles water: I forgot shingles it would save me a lot of /msg-passing to abi to have her not pick up anything just casually mentioned and because she hangs out on #osdev, she picks up a LOT of crap it would save the same if u used #modtunes 08:50pm sigh abi: part #tunes goodbye, hcf. -:- abi [nef@bespin.dhs.org] has left #tunes [] so if I say bounce, state=high the object is automatically a ball ? huh? the object .is implicit to the execution semantics: it's the namespace returned to that's not what that means the execution semantics means *after* the message has been looked up if the look-up is unsuccessful, no execution hence, no coersion however, you could give an object a special bmo that could allow coersion by trying to dynamically adapt the object's protocol, perhaps given some framework like category theory (which is how you could do fp within slate) :P i'm too depressed now breathe man breathe hell, i've cried four times this past hour just imagining what my life's gonna be like if i don't get out of this rut You will get out though wow. words of encouragement from a 14-yr-old water actually that's quite common these days 09:00pm what life in a rut? both rut + 14-year old encouragement hell yeah it's common, but i don't deserve to have to struggle with it you know why it's common? no, but you're going to tell me ;) heh we're at a point where those who know what the next 5 years hinge on are getting ready to kick some serious arse what the hell does that mean? there's a huge gaping hole in the markets and someone is going to fill it um speak english, please heheh we're not quite as intune with the spirit realm as you are, i guess, otherwise we'd understand major companbies don't want to deal w/ customers, the future, nor markets they're getting weary they are scrambling to just find astable revenue stream wait a sec * water/#tunes tries to figure out why he gives a rat's a** about this no, i don't eihrul: where were we? it worked :) it doesn't matter if i don't get any good conversation here and eihrul's about as polite as a bot hm well, annoying me seemed to result in a dead channel once again you can have static scoping by making activation records clones of an object whose 'parent' stays immutable once set that's about where you were gee thanks 09:10pm unless you have questions, that's useless i guess i'm chronically trying to fix my compass :) water: how u rate the usefulness of the initial posts u did? hcf: which posts? beta, self, lisp, etc er well they were helpful in getting the people who are now on the slate mlist aware in the first place, but that's about it has anyone on the list been non-passive besides eihrul? no i know the list has been dead, i mean personal email, etc again no so bringing in new ppl seems useless how about reusing existing ppl, like witten? i don't even remember how much he knows wasnt he the one working on something sim. to slate? god i must know 150 people through tunes at least hell if i recall called something like tensor oh god no not that now i recall no, his ideas were lame found it, torsion ok that guy i met at work who knew lisp turned out to be a lame programmer as well and a bit mentally-unstable 09:20pm heh like u ;) no, much worse Heh as in physically dangerous to be around * rares/#tunes hands water a bouncy ball whatever what about fufie? he's too busy even for tunes as is tril or beholder fare? ;) yeah like he'd actually help we'd be stuck in the formalization process for decades need any more papers? ;) depends on the subject matter i dont have any urls atm good i'l find some if u wish now is anyone going to help me with the slate spec or what? what's missing? geez if i knew how to describe it, it probably wouldn't be missing mostly the virtual machine stack 09:30pm i can't figure out how the damned thing should work hmm... gimme a minute * water/#tunes watches a minute of his time disappear into eternity slate as sure as hell better not need any work from me after the year's out otherwise i'll drop it like a rock for arrow arrow needs to get done.... slate can go screw itself if people don't get interested hell i thought slate would get attention since anyone who groks tunes would see slate as an obvious way to go but of course tunesers are useless slobs, as they've proven many times okay here goes: (heh i just realized that slate's ":" = "in in in in ....") does it? I thought you had anti-infinty loop protections in the design for other cases, yes not so for assignment without : otherwise you have to set the input of the function which sets the input to your accessor which naturally recurses 09:40pm you grok? and where's that question of yours? not questions yet more an outlining process so? DIALOG :) * eihrul/#tunes un-afks. good, trialog works too :) heh of course i could spell my constructed words correctly, but oh well oo at work :) eihrul: so what are the arguments for/against having activation records delegate to surrounding records? besides arguments of "it's non-intuitive" i really don't see a reason for it :) duh a cascading message miss delegation? without it you don't get block-scoping * eihrul/#tunes sighs. i think munging two ideas with disimilar behavior in this case is the wrong way to go about things... i'm not munging they belong together and i don't even think you're correctly modelling block behavior... you mean like start the car could be expressed as start the ignition or start the car who cares? or atleast not as closures i break two models and make a single better one i can see the point of being able to tunnel like that and replace them with one that's less clear and less useful well explain what else inheritance among records is good for * eihrul/#tunes shrugs. it's your proposal you explain exactly *you're convincing me* just great not the contrary :) that's exactly what i need is to have people ask more info of me * eihrul/#tunes wonders where this strange notion of making others prove one's own ideas arose from. especially when they don't happen to support them :) i've already filled 80% of today's logs wrt closures well otherwise we use the namespace system or something else to provide the functionality hey wait a sec!!!! i definitely think the function tunneling support is useful 09:50pm eihrul you clod! you forget that i already spelled out my intention to unify self with beta and you don't grok beta, which explains your confusion entirely no go read beta i have no confusion all i have is disgust at this particular moment i think the confusion lies on the other end well explain how beta does it beta doesn't need blocks, btw smalltalk and self DO need blocks well, i think the two can be unified but in a different manner having blocks separate from closures is a problem how? a closure accessing external state to me is no different than a method accessing a 'self' uh they're both largely the same no they're trivially the same except that the particular delegatee may is modified (self) whereas in one its constant -may that conflicts with mutability 'modified' not necessarily meaning assignment in this case then use another word suggest one, then lol i don't even distinguish what you're saying from assignment how can i know what's in your noggen? just the notion that 'self' is somehow bound to the appropriate receiver however that's expressed is irrelevent to me vague atleast for the purpose of this particular concept shrug that's all i need right now are vague concepts just say the receiver of the message that's what you want self to be, right? yes, it's bound to 'self' virtual binding whatever as i said 10:00pm i could care less how its bound in this case :P so get to the point a closure accessing external state to me is no different than a method accessing a 'self' except that the particular delegatee may is modified (self) whereas in one its constant the closure delegates to some other enclosing namespace just as the method does (to self) that conflicts with mutability :) what you're saying is still baloney not really how you're interpreting it is how i interpret it is what the statement is otherwise you're just talking to yourself i might as well be heh well you're not making it clear what the difference is explain why what you're talking about is NOT about mutability that help? perhaps a better analogy is to look at it through inheritance of scope... lol a closure may inherit the scope of another closure OR it may inherit the scope of a method a method inherits the scope of the receiving object uh the object inherits the scope of the 'namespace' slow down the method DOES NOT inherit the scope of the calling method... explain each statement dude structurally you have two things setting a variable /me listens scratch that that is the structure, defined by single relation of 'parent' sigh gggrrrrrrrrrrrrrrrrr no, make the structure ridiculously explicit let me see if I can't explain it i can find no other way to explain it than as a lineage of namespaces okay I'm a robot and my methods are my arms and legs as *commonly* found in most languages where you have some namespace encompassing representing the global world you're not explaining, because your previous statements i cannot parse disambiguously I can tell another robot to move his arm up or down and you wrote them in quick sequence so i couldn't address them individually so you suck at explaining that's an object taking the scope of another object look, this is merely a hierarchy of namespaces found in every damned language known to man! wow i can't sort these threads out at all I can just grab his arm and move it up and down i do not see why the concept is so particularly challenging hello eihrul: you're obfuscating that's why it's just now represented as objects that use delegation to inherit their scopes guys shhhh I'm explaining eihul: wow!!!! that sounds familiar but, in a way that more closely models how other languages use scopes! :P 10:10pm in a way that actually happens to be *useful* yeah, but it means you can't delegate to anything else why so? we're talking past each other only one parent slot * eihrul/#tunes nods. oh did you forget that? not at all well you're not explaining your argument at all you gave me 5 sentences in a row without letting me ask questions very non-friendly -:- rares [rares@wtrb-sh5-port8.snet.net] has left #tunes [Segmentation] closures inherit scope from other closures... *or* (continued) questions? yes i had questions you asshole i don't even care now btw, we are using different terms here -:- rares [rares@wtrb-sh5-port8.snet.net] has joined #tunes you said you had questions, so ask them... i'm willing to answer, if you're willing to ask you use closures for what i was calling activation records, which was a term YOU brought into the discussion so clarify the difference between a closure and an activation record first precisely ok... to clarify -:- witten [witten@un.torsion.org] has joined #tunes thinking of a system in terms of objects (rather than in terms of methods) and? an object sends a message to another object, which interprets the message and responds nowhere in this transaction do i see an 'intuitive' nesting of exactly how that message is interpreted and responded to wtf does this have to do with closures vs activation records? you're just about useless it has to do with the notion that there is not one giant stack of activation records ok, you know what? fine how about i just quit? hold on doesn't the smalltalk vm have a stack? a *single* stack? i am really trying here, but i'm only being met with insult after insult... this is not entertaining in the least well, you're not being direct yes, but i do not warrant insult! answer the question!!! * rares/#tunes pulls the universe out of his ass doesn't smalltalk have a stack? a stack of frames the stack merely serves as an efficient way to allocate frames yes which gets modified by method execution 10:20pm and model computation on a sequential computer i see a frame as an individual stack used for the computation in a particular method i don't so there :P well, i dare say that's more functional than object-orientated :) you think so? :) yes well i'm not surprised because i wanted it that way :P why contradict yourself? i'm not :) what happened to pure object-orientation? it's not contradictory explain why i need a stack of frames as i said before a method is like a virus it needs and object to live the stack need not be considered to exist it merely serves to allocate frames in my mind what does that mean? explain it to me, i don't understand me? no rares shush hold, trying to find an adequate way to explain this i thought you'd find it hard but continue please ok it is more intuitive (for me) to think of objects acting in parallel... each one has its own stack (or frame) to maintain the state of its behavior sending a message opens an interactive stream between two objects through which inputs are sent and then outputs are finally sent so that a particular object that has been sent a message to is not enclosed by the object that sent the message why must it be a stream? what would you call it/ the previous object is enclosed within the particular world/namespace others: shush so that its particular behavior (and its state) exists in isolation from the state of the object sending the message i think you haven't explained anything to anyone the comments from rares and witten make this clear bah sigh, i give up try again, please eihrul: i know what you're saying, if it matters well, you need to explain the difference between the models explain why one stack doesn't work your model assumes that the particular behavior *do not* exist in isolation of eachother 10:30pm behavior=? i think i get it and that a particular message'd object may access the state of behavior of the object interacting with it i don't whereas the only relation between the object should be the stream itself... inputs and outputs there is no delegation here allowing the message'd object to know the internal state of the sending object okay I'm going to try again: can someone please explain this? ok rares it merely knows how the other object has interacted with it... eihrul: shuch shush I'm a robot (the object) my arm is the method there is another robot I can tell the robot to move its arm up and down (obj scope to obj scope) **in summary**, following this model, the enclosure for a particular objects state of behavior (method) is not another objects state of behavior, but the object itself I can mopve his arm myself (obj scope to method scope) and hence the enclosure being what is delegated to... eihrul: i said shush * eihrul/#tunes sighs. but my arm cannot move the orobot on its own that's not a good thing eihrul: that doesn't make it clear witten: does it make sense to you that a called method can access any of the variables of the calling method? witten: or that instead it accesses the particular variables of the object the method resides in? rares: well, i get oo principles, but what does this mean about implementation eihrul: i can comprehend that concept, yes well, water is suggesting the previous, i'm suggesting the latter eihrul: i think i'd have to agree with you, then water I'll get you a report later on that I gotta go it's late i still haven't seen a proof that one stack per thread is not enough as i explained, this stack is merely a way to allocate frames... maybe you're thinking about multi-threading of objects it is merely an implementation concept wtf is a frame dude? frame=frog afaik the activation record and other closures inheriting its scope -:- SignOff rares: #TUNES (KVirc 1.0.0 Millennium BETA 3) and what are those? what's an activation record? YES explicate be really fscking precise not just precise, but try to avoid terminology because if we're all talking in different terms it makes things dificult right no jargon an activation record is the state of a method (the particular values/variables it uses and the other values needed to return to the calling method, etc) okay eihrul: how would i make an object that models an activation record ? so a frame is a method's state? or state variables? yep answer my god damned question okay. so now water seems to think you need a single stack of these frames. what's your take on that, eihrul? um no no... water thinks you need a single stack, period okay, nevermind then -:- SignOff smkl: #TUNES (Ping timeout for smkl[glubimox.yok.utu.fi]) okay no one stack per thread get a clue 10:40pm get a stick out of your ass well i stated that we were talking about one thread before you got here yes, but what is the granularity of a single thread that is equally vague does a thread correspond to a single object? threads aren't implementational to me yes or a whole system of communicating objects? same thing a.k.a. namespace namespace == thread == object? no but they correspond well, okay one-to-one correspondence perhaps another explanation that will draw ridicule, the scope enclosing a method (and thus its 'parent') is the object which does that method, and there is no direct relation between methods (where one call the other), save a continuation that defines how to return to the calling method and that a 'parent' relationship between the two methods is useless the problem i see is that in slate, methods are objects and what is the problem? so you have to make a stack for stacks for stacks etc not really, no since every method needs its own state, sends and receives messages so methods don't have state? :) they do, but the particular implementation doesn't regress like that :) are you saying i can't synchronize my messages? eh? i mean synchronize stuff between two concurrent messages? eihrul: the implementation should regress like that ok, then let it... no, that's if your model is used the rubber has to hit the road at some point i don't see the problem lisp, c, smalltalk, etc, use the particular model :) well eihrul hasn't proven to me that he understands what i want for slate until he does i have to assume he's using usual oo crap i only understand what you want so far as you've told me what you want i know, but even so i can't guarantee we're on the same page what's wrong particularly with the usual oo crap's approach to all this? because usual oo can't deal at all with messages being real first-class objects 10:50pm why not? because usual oo can't deal with methods except as parts of other objects uh, why not? and you therefore can't send messages to messages answer first question ok before basing further assumptions upon it you can send a function pointer to a function no not functions not like that * eihrul/#tunes points to the question. oh, full messages, arguments and all? i'm saying that an object defines its protocol, but it's protocol can't be re-used except by name protocol meaning.. interface? yes it's slots s/it's/its/ whereas your vision contrasts this and betters this by how, exactly? so what does an object's interface's reuse have to do with messages getting passed to messages? eihrul: i thought so answer the question i've answered quite a lot witten: know the syntax in for getting methods via selectors? many times over it's your turn, man water: what's a selector? eihrul: no, you spat out a lot of garbage without waiting for response witten: the name of a slot eihrul: just a sec * water/#tunes ponders how to answer this best water: are you talking about getting methods via selectors at compiletime or runtime? witten: why should there be a difference? water: in most OO languages, there is witten: exactly so you want to be able to do that at "runtime" too, i presume is that your point? not quite what is your point? hold on, i'm trying to write up an answer to eihrul eih: i'm looking for two different kinds of extensions 11:00pm one involves algebraic or top-down style of protocol spec which could be done by re-write but there mgith be lots of other ways the other way is to modify the "lookup" of the bmo so that it doesn't just go through a mechanical search of slots instead it derives the protocol from a set of rules and i'm also trying to figure out how to keep slot-objects as separate from their "containers" as possible separate how? independent meaning what? you destroy the container but the part isn't gc'd if it's used somewhere else oh, that's easy and where it can be used in other ways thatn as a value no listen what else would you want to use it for? LOL anything particularly as a method like? oh i wasn't sure of what you meant by value i think eihrul's done his afk thing again no oh sorry, i guess i'm used to it :P now... wheere does the 'better' part come in... * water/#tunes sighs yeah, what's it in for me? er, in it that was the question... we were discussing the particular limitations of OO which you had hinted at yes and the particular question was how all this was actually solved these particular limitations... i'm saying you could overlay e.g. category theory to share methods as functions what's the difference? using bmo's lookup protocol man what a wasted night i didn't want to argue at all 11:10pm i see now that i should never have let eihrul introduce activation records into discussions of stacks last week among other things now tomorrow i get to go back to my fscking job and waste another day of my life while you jerks go off and ignore my ideas and tunes becomes ever more untobtainable Life is too short to whine like that, water water: question... do you want my help or not? not if we're going to argue about jargon it's the same thing every other tuneser does it's not jargon, it's the behavior behind the jargon lol no, we got terms mismatched it's so bad right now i don't feel up to fixing it saying a method delegates to its calling method is different from saying it delegates to the object enacting the method... it's not a matter of jargon why would a method do either? because a method accesses the state of it's self you must define delegates to make it clear what you mean.. okay, that makes sense but you gotta be really careful i don't understand i thought delegation was for inheritance delegation can be a general term that means "if i don't have a particular member, then look for it elsewhere" i.e. clone-and-modify water: would a slate glossary be as unused and useless as the tunes glos? hcf: YES i'm talking about self-like delegation only 11:20pm copy-and-modify any other kind of delegation seems rather non-intuitive eihrul: i think a better term to talk about what you're calling delegation would be member resolution or something then you're saying a method calls another method by cloning itself and modifying the clone such that it resembles the other method... yuck -:- SignOff lar1: #TUNES (Leaving) seriously that's terrible well, umm, isn't that *your* suggestion? no well, 'parent' is a slot implicitly used for inheritance that wasn't about *calling* methods that was about containership you had earlier stated that a method is related to a method it uses upon another object by a 'parent' relationship huh? you substituted some important term there ARGH you two are just talking at each other i understand completely what both of you are getting at you need a translator or something :P thank god someone does eihrulspeak <-> waterspeak like i said, it's a matter of terms i can see why you people don't get anywhere if all the discussion is like this :P well eih and i agreed well until very recently did you even know what you were agreeing to? :) until the problem with syntaax, yes when we discovered the problems with syntax, the argument turned south let's clarify shall we? given that an activation record was a clone of a method residing on the stack, what exactly is its 'parent'? whose parent? the activation record 11:30pm aka the clone of the method the method because that's what it was cloned from and there begins the seed of my misunderstanding oh now, re: unifying blocks and methods * water/#tunes remains in conversation-debuggin state if the parent scope of a block is held by the 'parent' field... not exactly the parent field just points to the parent, it doesn't actually get you the scope then how do you maintain the relation between parent scope and child scope? oh well implementationally you have to follow that parent reference so this particular 'parent' slot exists independently of the implicit 'parent' slot that implements cloning/inheritance, eh? no its the same implicit=inherited from root (and whose meta-behavior is immutable) now exactly how do the respective handlings of methods and blocks tie together? :) where do block fit into this? well, you've consolidated them into a single idea blocks are just objects have a meaningful result slot that supposedly supports both methodiness and blockiness eihrul: what's the difference, except that one is named/declared/reused? s/have/that have/ both should be able to be anonymous too 11:40pm okay it just seems almost trivial to unify them so where does 'self' fit in? well the method's 'self' accesses the method to get the object, you just dial '../' and the 'self' or just call your local operator :) because the method itself is a namespace that must be exited to get the receiver object receiver object? now, what does the relationship '../' mean exactly and how is it created? yeah the receiver of the message dunno, for now its just syntax by exited, do you mean that the receiver object is a "parent" of the method? yes, but for what? witten: no why does ../ lead you to the receiver of the message? eihrul: because i said so :) yes, this is me making it work why explicitly go to the receiver with "../" when you can just recurse up the inheritance hierarchy by searching "parent"? (the first parent should BE the receiver) witten: because it might not be so example? hm actually i don't need one every time you want 'self', you'll still have to bypass the method 'self' eh? and accessing 'parent' of the *method* isn't the same thing witten: 'self' is accessed from method code, right? right but every object is a namespace so even methods have 'self' if you want them to well it doesn't allow for method-object independence otherwise okay because ordinarily 'self' implies strict containerism right 11:50pm so namespaces + namespace syntactic operators allow me to bypass the 'problems' due to my object model by introducing "../"? sure maybe i could use 'receiver' instead it just doesn't seem right you have a better idea? not yet heh neither does eihrul you sure? yes i don't like your 'solutions' well they are unacceptible to me, and i'm the one who came up with this language if "parent" is the enclosing namespace, then isn't the value in the parent slot the same as your "receiver"? water: the attitude really isn't necessary dunno i've had a very long day i mean, it's one thing to do member resolution (recursively search through the parent tree looking for a member), and it's another thing to just USE whatever object is in the parent slot yeah but namespace access is different how so? it's not just a matter of "give me that object" why? because you can't go past the one container level what do you mean by that? hm maybe i should keep the directory syntax so you can access things like modules remotely what is wrong with a given slot being the 'receiver'? (within the limits of meta-protocol) eihrul: nothing, it just seems redundant it's not enough how so? and besides the 'receiver' slot wouldn't work anywa eihrul: the parent IS the receiver already. why not just use that? -:- SignOff air: #TUNES (http://www.qzx.com/ :: sleep) anyway witten: it isn't... eihrul: why not? the parent of a given clone of the method is the method the parent of the method itself is probably root oh, that's where your language differs, then yeah methods can inherit and such [msg(TUNES)] newlog 2000.0216 IRC log ended Wed Feb 16 00:00:01 2000