< 1176077132 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :so it's just a name? < 1176077176 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :More or less. < 1176077222 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :!daemon omfg bf ,+++++++++++++[.,+++++++++++++] < 1176077230 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :omfg i < 1176077247 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :....is that a service? < 1176077258 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :objects < 1176077310 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :!omfg i < 1176077318 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :!ps < 1176077320 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :5 SevenInchBread: ps < 1176077405 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :bf default is 16-bit, so you would be hard pressed getting either a halt or a newline out of that < 1176077435 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i.e. nothing will be printed until buffer overflows, i think. < 1176077469 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ihope, oh alright... so with my idea I'm basically saying every process is a service... and the organizational structure is kind similar to a filesystem hierarchy. < 1176077477 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :right? < 1176077569 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :SevenInchBread: I'm thinking letting processes offer more than one service or none at all would add a little versatility. < 1176077596 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Why should every process be a service? < 1176077600 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :hmmm.... how would it know which service it's doing? < 1176077610 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :if you're just feeding it input. < 1176077613 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :How would it know which service it's doing? < 1176077628 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :A process pretty much chooses what services to provide. < 1176077641 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Oh, you mean...? < 1176077662 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :The process is told what service has been called with what data. < 1176077664 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :yeah... if one process was registered as two services with two fundamentally different tasks... and you used one - how would the process know which one it's handling. < 1176077674 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Pretty simple. < 1176077677 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :you could have the process register streams at different addresses. < 1176077719 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :What's this about streams? < 1176077720 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ah... that's a good idea. Except the stream part. :) I think Erlang "mailbox"-ish IO mechanisms would work nicely. < 1176077747 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :instead of having just stdin and stdout as interface, which i think is what is confusing here < 1176077762 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :aaaah... I see what you mean. < 1176077775 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Why be mailboxish when you can have your processes provide procedures that can be called directly? < 1176077789 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :(I'm talking Pascal now for some reason, aren't I?) < 1176077806 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :this leads then to the conclusion that procedures should also be placed in the filesystem < 1176077808 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ihope, asynchronousness. < 1176077819 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :but... that could be an option. < 1176077846 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :SevenInchBread: if you provide procedures like that, the program can handle mailboxes by itself. < 1176077851 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and before long we have arbitrary objects (in a general sense) < 1176077867 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: placing procedures in the filesystem? < 1176077868 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I was just saying... instead of the stream of bytes... you have a queue of.... stuff. < 1176077896 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :the data gets partitioned... instead of jumbled alltogether in a huge chain. < 1176077919 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Did I say something to the contrary? < 1176077923 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :given that each service should have at least one spot in the filesystem, if i understand SevenInchBread correctly < 1176077940 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Services need not be invoked with plain old bits and bytes. < 1176077948 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: but I haven't agreed to that. :-P < 1176077958 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Putting services in the filesystem isn't a bad idea, though. < 1176077970 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :well... kinda. Maybe not -literally- in the filesystem... but I was much wanting processes to be organized in a structure that resembled a filesystem. < 1176077974 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :But that's a job for the filesystem handler, not for the kernel. < 1176078019 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Having processes arranged in trees is... well, what's the reason behind that? < 1176078041 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :basically... it's an implication of giving processes names. < 1176078058 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Apart from its use in rationing CPU time. < 1176078070 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :if we gave them names and didn't organize the names into some kind of scope... it would have all the problems of a flat filesystem. < 1176078106 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Couldn't you just put slashes in there or something? < 1176078122 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :slashes? < 1176078146 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :We can still have foo/bar/baz isn't if it's not baz inside bar inside foo. < 1176078162 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :well... in my examples... I just used spaces... ala-Smalltalk message-passing (which is a similar concept). < 1176078173 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Your examples? < 1176078180 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :"fs cd" except < 1176078183 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :er... etc < 1176078291 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Why not just have another service called fs/cd and/or have cd be part of the message to the fs service? < 1176078316 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :-shrug- it could work. < 1176078322 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1176078324 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it is < 1176078329 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :What is? < 1176078338 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :the "cd" part is literally just a string being passed to fs < 1176078345 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :fs can choose to do whatever the hell it wants with it. < 1176078442 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Indeed. < 1176078445 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :if you like your names nice and flat... making some macros wouldn't be too impossible. < 1176078459 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :macro set (cd, fs cd) < 1176078499 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Indeed. < 1176078520 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :So is there really any reason to put services in a tree like that/ < 1176078521 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :...or you could borrow another concept from file hierarchies and do "current processes" < 1176078538 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :-shrug- not really... it's not really all that necessary. < 1176078557 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Indeed. < 1176078578 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :By the way, how's the SourceForge coming? < 1176078601 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :no word as of yet. < 1176078641 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :how about representing time? < 1176078654 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :it can all be done with ObjC distributed objects! < 1176078664 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I notice that Google Groups does offer some storage space? < 1176078667 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :oh, and another benefit of microkernels is that we have no obligation to write everything in one language. < 1176078671 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :What about representing time? < 1176078677 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Indeed, that's true. < 1176078689 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :the code behind fs or any other process major OS process could be any language. < 1176078719 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :well... it would be kind of stupid to do time like all the major OSes... since it's going to run out of ticking power by 2032 < 1176078751 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :...or whatever the year is. < 1176078768 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Make it 64-bit? < 1176078790 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :what about bignum? < 1176078794 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :variable length. < 1176078831 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :64-bit won't go bad for a while. < 1176078842 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :you could do like.... a base-256 numeral system... in reverse order (the smallest place values come first) < 1176078848 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Though bignums aren't bad. < 1176078858 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :and terminate with a null. < 1176078870 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :so the length can be arbitarry... and you won't ever have to worry about it. < 1176078896 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :"(2^64) seconds = 5.84554531 * 10^11 years" < 1176078912 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :We won't be the ones to worry about it. < 1176078922 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :eh... sure < 1176078926 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :terminate with a null? then it would be buggy < 1176078940 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :not if its in reverse order. < 1176078949 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :sure it would < 1176078951 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... well yeah < 1176078984 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :maybe have a special byte for the terminator... and have do base-255. but for the OS, 64-bit should be enough. < 1176079012 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :If we use 256 bits, we'll be good until all protons in the universe have decayed. < 1176079027 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Time Error: Date is beyond Universe Heat Death < 1176079045 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :....actually... let's go with a 230-bit integer. < 1176079054 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :...just cause. < 1176079094 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :... < 1176079109 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :how long do red dwarf stars live again, hm... < 1176079152 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I sometimes wonder what the computer world would be like if we could specify the size of our bytes. < 1176079153 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :64 bits. < 1176079157 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :That'll be enough. < 1176079161 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ah, 64 bit won't be enough for that then. < 1176079202 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :In 500,000,000,000 years, somebody'll have invented a way to translate everything up to 128 bits. < 1176079237 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I doubt Abrasax/YAOS/Sophia will still be in use by then, anyway. < 1176079248 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :....pretty sure the Earth or at the very least humans will be gone by that time. < 1176079268 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :...good riddance, I say. < 1176079299 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Pff. < 1176079315 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ah, a misanthrope. or a misgean? < 1176079349 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :How about we stay on topic, eh? < 1176079372 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :We can always take this into #off-topic. < 1176079385 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Now, just how will we compile our kernel? < 1176079442 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :...I don't want to ride your topics. < 1176079444 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1176079448 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :we will load it into the atmosphere of a red dwarf. < 1176079455 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :erm.... I don't know. I've never actually used a compiler before. < 1176079511 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, kinda. I have a love-hate relationship with humanity. < 1176079528 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I suggest we steal the "Multiboot example". < 1176079563 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :anything specific about memory management we want to do? What about paging? < 1176079574 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :See http://www.gnu.org/software/grub/manual/multiboot/multiboot.html#Example-OS-code < 1176079590 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :The kernel will probably have to handle memory management. < 1176079595 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Or at least some of it. < 1176079606 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :It can't leave loading processes up to a process it can't load. < 1176079638 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :yeah yeah... one of the main jobs of the kernel is memory management. < 1176079644 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :no way to process-ify that. < 1176079680 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I'm not that familiar with how memory works. < 1176079688 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I know a little bid. < 1176079696 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :What do you know? < 1176079700 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :buddy system allocation, paging files, etc.... the usual stuff. < 1176079710 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I don't know how processes work... < 1176079714 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Buddy system allocation? < 1176079753 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I know a little bit about processes. < 1176079769 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :http://en.wikipedia.org/wiki/Buddy_memory_allocation < 1176079792 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I don't know how processes interact with the kernel to get memory though... I just know bits and pieces of HOW the kernel can go about handing out memory. < 1176079842 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Wouldn't that be done via system calls? < 1176079882 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :guess so... I've never used realloc and malloc in C. < 1176079889 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :but I'm assuming that's what they exist for. < 1176079959 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :memory management is kind of weird... you've got to find the best way to package a bunch of little blocks so that they can be picked up quickly < 1176079985 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :We may have to find an expert. < 1176080012 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :paging is probably the way to go.... all the big OSes use it... so its tried and testing < 1176080014 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :er.. tested < 1176080073 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :actually... the hardware kinda handles paging for us. < 1176080086 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :expert? < 1176080089 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :who needs em < 1176080093 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :we just need to write the program that reacts to a page fault. < 1176080135 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I think you know more than I do on the subject. < 1176080169 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :http://en.wikipedia.org/wiki/Paging < 1176080251 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :a large amount of OS performance relies on a good paging algorithm. < 1176080341 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Think you can handle it? < 1176080407 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :.....I don't know a thing about how to do it. < 1176080413 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :....I just know like... what it's supposed to do. < 1176080453 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :probably the other factor in the performance of this OS will be how quickly it can handle IPC... which is a bit more important to a micro kernel. < 1176080473 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Indeed. < 1176080699 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Think we should recruit an expert, then? < 1176080705 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :but... IPC doesn't mean shit if the process isn't scheduled to execute at the proper time. < 1176080711 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :so... scheduling will be the other thing. < 1176080722 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ihope, nah.. < 1176080729 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Why not? < 1176080736 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :to learn how to mess up. :) < 1176080736 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Why do processes need to be scheduled to run at the right time? < 1176080771 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Indeed, failure results in learning. < 1176080778 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :well... one of the OSes jobs is to schedule which processes get to run and at one time. There's only so many processes that can run at any given time. < 1176080853 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :You mean multiple processes can run at the same time? < 1176080856 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :http://en.wikipedia.org/wiki/Process_scheduling < 1176080881 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :well... I mean... there's only so many processes that can be "active" at any given time. < 1176080897 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Why? < 1176080905 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :....forgot why. < 1176080905 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Just what is being "active", now? < 1176080917 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I suggest you remember, seeing as how I have doubts. < 1176080926 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :http://en.wikipedia.org/wiki/Process_states <--LOL MORE LINKS < 1176080939 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is researching as he goes. < 1176080963 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :process swapping. < 1176081003 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Argh, process swapping. < 1176081021 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :How about we leave *that* up to a process? < 1176081052 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :well... to a certain extent OSes do... Windows for example lets me set the process priority. < 1176081081 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Indeed, failure results in learning, but aren't we aiming for success? < 1176081087 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :....so... I can set "firefox.exe" to realtime... and then it'll take me a good hour to try to move my mouse back to set it back to normal. < 1176081103 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ihope, we can fail, and then correct our mistakes. < 1176081169 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I'd rather succeed the first time around. :-) < 1176081179 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Unless we can go faster by learning. < 1176081208 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :see... the problem is that if you set the priority of a process extremly high, but keep all the processes that it accesses at normal... then the high-priority process will be spending most of its time waiting for its dependencies to become active. < 1176081240 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :so... probably the best priority scheme is one based on a combination of reaction time as well as independence. < 1176081246 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :We could let processes switch to other processes. < 1176081256 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :the mouse... for example... should be highly responsive... < 1176081281 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Invoke a service provided by a process, then switch to that process. < 1176081309 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :hmmm? < 1176081348 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it's not quite that simple. < 1176081351 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :It's not? < 1176081364 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :because processes are fairly asynchronous... there is no "return value". < 1176081403 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :There's no return value? < 1176081409 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :What do you mean? < 1176081453 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I mean... processes don't wait for the results of other processes... they're all running at the same time. < 1176081484 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :the simplest scheduling algorithm is an equal time algorithm... which ensures that each processes gets a chance to execute... < 1176081503 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :we can start with that one... and then find one that finds more efficient uses of time later. < 1176081504 0 :sebbu!unknown@unknown.invalid QUIT :"@+" < 1176081576 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :the only real reason equal-time scheduling doesn't work is because not all processes need an equal share. < 1176081578 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :They're not all running at the same time. < 1176081609 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :What's keeping us from adding a system call saying "spend the rest of this time slice on that process"? < 1176081611 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :an HTTP server - which spents most of its time waiting for something to send it a request... doesn't need near as much time as a video game. < 1176081632 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ihope, that's just a specific situation... it doesn't solve the whole problem. < 1176081662 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Couldn't the HTTP server end its time slice early? < 1176081766 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :nope < 1176081798 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :well, while it's blocking, the OS needs to put an entry in the ptable that says it's not available for scheduling < 1176081866 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Blocking is something I'm going to have to understand, isn't it? < 1176081916 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1176081926 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :blocking is when a proccess waits for some external input < 1176081942 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it seems to me that the HTTP server problem is if a process has two "states" - one where it does immediate work in response to a request, and one where it does occasional work while otherwise waiting. < 1176081944 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :obviously, when a proccess is blocking, the scheduler shouldn't give it any proc time < 1176081960 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ihope, yeah that works fine... but you can't expect the process to handle itself... programmers don't want to have to think about time slices. < 1176081964 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :then they may need different priorities. < 1176081984 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :SevenInchBread: so how do we know whether it's blocking or not? < 1176081999 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :eh... blocking is explicit. < 1176082005 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :only blocking system calls can block < 1176082028 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Blocking can only be the result of a system call? < 1176082034 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1176082071 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :you could of course have a system call that did nothing but end the current time slice < 1176082074 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :if my program splits off a subprocess... I can explicitly say "wait for this process to return a result" < 1176082108 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Well then, the HTTP server invokes a service that waits for an incoming connection. The process that handles the service does all the work--right? < 1176082113 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :like waitpid(2)? < 1176082132 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1176082137 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :except.... with names. :) < 1176082142 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Wait for process termination? < 1176082146 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1176082149 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :that's a block < 1176082160 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Or "wait for service to return a result"? :-) < 1176082171 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :SevenInchBread: names are ugly < 1176082174 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :either one works... < 1176082179 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood, ................................. < 1176082186 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Where do you come up with the names? < 1176082191 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :SevenInchBread: single words (ints) are much nicer < 1176082194 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :alright then.... in Sophia the file system shall reference files by number. < 1176082199 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Indeed, they're pretty convenient. < 1176082209 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :SevenInchBread: let's not violate WP:POINT here. < 1176082215 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :... < 1176082218 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :YOU WIKINERD < 1176082220 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Not that this would be a WP:POINT violation even if this were Wikipedia. < 1176082234 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Rather, let's not use slippery slope arguments or whatever they're called. < 1176082265 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :....I just can't fathom how numbers are more convient than names. < 1176082268 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :that's just inodes isn't it? < 1176082281 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :When I create a file, I usually have a name in mind for it. If I don't have a name in mind, I might choose a number. When I create a process, I usually don't have a name in mind for it. < 1176082285 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :indeed... we have DNS because names are more convient than numbers. < 1176082297 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :SevenInchBread: it's easier to store a name than it is to store a number. < 1176082305 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Names are for things that persist. < 1176082307 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :no it's not < 1176082314 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Erm. < 1176082320 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :an int will always be one word < 1176082324 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ihope, ...why is that important though? < 1176082325 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :s/name/number/ and vice verse. < 1176082331 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :s/verse/versa/ :-P < 1176082337 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :SevenInchBread: why is what important? < 1176082343 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :naturally the name would be optional, and initialized like a temporary file name if not provided < 1176082351 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ints being easier to store than names. < 1176082353 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :(Alternatively: s/easier/harder/) < 1176082368 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :system calls are numbers, file descriptors are numbers, permissions are numbers... < 1176082377 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Oh, names are fine. < 1176082381 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :pids are numbers... < 1176082382 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :But why have them? < 1176082385 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :...in UNIX < 1176082390 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yes, in unix < 1176082420 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :but why? A number has no referential meaning to a human... they're only convient for the computer - which is fine in some cases. < 1176082424 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :however if the OS supports process persistence (and otherwise, why go to all this trouble?) then you might run out of numbers. < 1176082448 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :er... < 1176082454 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :SevenInchBread: humans are stupid < 1176082473 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :unfortunately. < 1176082475 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :It's not especially often you need to refer to a process by ID. < 1176082476 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :that's why we have OSes < 1176082486 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :to help the stupid computers work with the stupid humans. < 1176082517 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I could say "the process providing the 'fs' service" or "the process that's an instance of /foo/bar" or "the process that's using all the CPU time". < 1176082551 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :heh... I've been referring conceptually to fs being the actual process. < 1176082575 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :If the process that's using all the CPU time is the only instance of the executable, we refer it to is as "the process that's an instance of /foo/bar". Otherwise, how do we come up with names for all the instances? < 1176082593 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :If you let the processes name themselves, you end up with things like processes named "_________________________". < 1176082611 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :And processes named "ΓΈ". < 1176082626 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :names are useful for persistance of any kind.... fs will always remain fs each time it is around... that way we have a quick and global reference to it. < 1176082638 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :fs is the name of the service, not the name of the process. < 1176082644 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ihope, is that any more troublesome than "the process 242" < 1176082651 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ihope, maybe to you. < 1176082663 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :SevenInchBread: well, you have to copy and paste the underscores rather than typing them by hand. < 1176082679 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Can you tell how many underscores there are without doing something tedious? < 1176082693 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I can copy "242" much more easily. < 1176082695 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :....that's a stupid example. :P < 1176082704 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :My example or yours? < 1176082708 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :yours. < 1176082715 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Why is it stupid? < 1176082729 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :yes indeed... someone could name their process "asfkjskdljdklgjdlkgjlkdgkldfjgkljdfg".... but then they're fucking retarded. < 1176082744 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Well, there are people in the world who are fucking retarded. < 1176082745 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :and you probably don't want whatever that process does. < 1176082755 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :And that means you need to kill it. < 1176082762 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :pwnt. < 1176082775 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :...hahahahaha < 1176082775 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I'd rather type 242 than copy-and-paste that thing. < 1176082783 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ACTION dies. < 1176082791 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :oh - that was fucking brilliant. < 1176082796 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :good job. < 1176082850 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :okay... so then you can simply have numbers AND names. like file descriptors and file names. < 1176082866 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :same like unix < 1176082873 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :a proccess's "name" is its path < 1176082877 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Why have process names, again? Service names, sure, but why process names? < 1176082885 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :but with unix the process names aren't unique. < 1176082898 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :same reason we have file names. < 1176082905 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :the pids are, though < 1176082912 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :-nod- right. < 1176082926 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I'm talking about a unique reference name and a unique ID number. < 1176082955 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :basically... a service IS a process.... a process with a name in front of it. < 1176082956 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I'm thinking giving every process a name is like giving every inode or whatever you call it a name. < 1176082971 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :maybe not in UNIX... in UNIX the service name -creates- a new process each time it's referred to. < 1176082986 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Well, yes. The services act as the names, so what reason is there to give each process another name? < 1176082990 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :but I don't think we're doing that... unless we want to spawn a process each time we refer to "fs" < 1176083000 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Indeed. < 1176083052 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :not proccesses, just objects < 1176083053 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :hmm.... alright... < 1176083064 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood, NO. We are not going all fucking OO < 1176083066 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Users and application developers need to know "fs", the service name. They don't need to know the name of the process. < 1176083080 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :SevenInchBread: what you describe is message passing OO < 1176083086 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :no matter what you try to call it < 1176083105 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :proccesses have private data and can be sent messages. they are objects. < 1176083111 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :...I just don't like the concept of the service. I just like... the concept of "a name for a process"... the name can optional sure, but it's not a separate entity from the process itself. < 1176083138 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Well, that's pretty much what a service is, really. < 1176083154 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Except that you can attach multiple services to a process. < 1176083159 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood, what I described is the desktop metaphor... it's also a good bedtime story and makes for a damn good sexual joke. Is that an apple or a red fruit? < 1176083166 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :And not every process needs a service at all. < 1176083177 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :wtf? < 1176083181 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :...I'm still not sure how that would work. < 1176083189 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :How what would work? < 1176083211 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :having multiple names for a process... each doing something different. < 1176083227 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :argv[0]? < 1176083236 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :When the service is invoked, the process is told what service it was. < 1176083241 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ah. < 1176083290 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Well, I should get to bed. There's school tomorrow. < 1176083297 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric ::( < 1176083303 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :...I think I'd just like there to be a persistent name for processes. A service does this nicely... but then how difficult does it become to create a new name for your process? < 1176083334 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :[And then somebody yells "Let's get going!", and "Walking On Sunshine" by Katrina and the Waves starts playing.] < 1176083397 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood, the weird apple-red-fruit thing was referring to the notion of identity. < 1176083407 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :Something is only OO if we decide to refer to it as such. < 1176083412 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :SevenInchBread: the process requests permission to use that service name, something grants permission, and the process registers that service name. < 1176083430 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Or the process already has permission, in which case it simply registers it. < 1176083441 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ihope, across multiple OS runs? < 1176083704 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :rebooting is for wimps < 1176083765 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :booting is for rewimps < 1176084154 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :SevenInchBread: services aren't preserved when rebooting, but permissions may be. < 1176084199 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ACTION thinks they should. :( < 1176084204 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :See "'default' permissions". < 1176084218 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :SevenInchBread: well, indeed, services could be preserved when rebooting. < 1176084229 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :But that would mean processes being preserved when rebooting. < 1176084235 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :We all know that's iffy. < 1176084269 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yeah that's yucky < 1176084449 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :"Default" permissions are stored in along with the executable, somehow, and therefore preserved when rebooting. < 1176084475 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :with record-based filesystems < 1176084479 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :that's not too hard to do < 1176084502 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Record-based filesystems? < 1176084518 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :yeah... instead of storing files as streams you store them as hash-table-like things < 1176084533 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :that makes no sense < 1176084545 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :...what? < 1176084666 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :...I like the idea. < 1176084675 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :What's this about hash tables? < 1176084690 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I think it makes a shitload more sense than cramming all the info into a stream and having to parse out all the data < 1176084729 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :So the filesystem handler does all the parsing instead of the client? < 1176084781 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :eh... sorta kinda.... depends on how its stored on the disc < 1176084785 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :but, essentially, yes. < 1176084797 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Depends on how it's stored on the disk? < 1176084824 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :yeah... instead of using bytes to delimit record entries you can use some physical property of the disk sector or something... < 1176084836 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :but, generally speaking, the filesystem does all the work for you. < 1176084889 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :We could always have a "hash table handler". < 1176084910 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :http://en.wikipedia.org/wiki/Record-oriented_file < 1176084948 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :there's also sequantial access... which works something like a linked list instead of a hash table < 1176084967 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :so... data that's split up into lines could give each line a record. < 1176085005 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Time for me to go to bed. < 1176085011 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :'Night. < 1176085178 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :'Ook < 1176086175 0 :ihope!unknown@unknown.invalid QUIT :Connection timed out < 1176087783 0 :Pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Mmkay. . . < 1176087800 0 :Pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I friggin' hate glibc. < 1176087809 0 :Pikhq!unknown@unknown.invalid PRIVMSG #esoteric :frodo:/source/glibc-build# /source/glibc-2.5/configure --prefix=/usr --disable-profile --enable-addons --enable-kernel=2.6.0 --libexecdir=/usr/lib/glibc < 1176087810 0 :Pikhq!unknown@unknown.invalid PRIVMSG #esoteric :configure: error: cannot find install-sh or install.sh in scripts /scripts < 1176088272 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :that's why you don't try to compile glibc < 1176088602 0 :Pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I'm making a distro. What else am I supposed to do? < 1176088611 0 :Pikhq!unknown@unknown.invalid PRIVMSG #esoteric :. . . Use uclibc? < 1176088636 0 :Pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Actually, that's a pretty decent thought. < 1176088858 0 :Pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Maybe make this sucker use really, *really* small packages. < 1176088949 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :use "make the lazy bastards code it themselves"libc < 1176088960 0 :Pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Hahah. < 1176089143 0 :Pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Screw it. < 1176089159 0 :Pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I'm using buildroot to create the initial root tree. . . < 1176089185 0 :Pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I'll then use the buildroot environment to compile my own packages, overwriting everything eventually. < 1176090628 0 :SevenInchBread!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1176094922 0 :ShadowHntr!unknown@unknown.invalid QUIT :"End of line." < 1176096139 0 :oerjan!unknown@unknown.invalid QUIT :"ZZZ" < 1176105027 0 :wooby!n=alan@cpe-66-67-60-51.rochester.res.rr.com JOIN :#esoteric < 1176105599 0 :clog!unknown@unknown.invalid QUIT :ended < 1176105600 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1176105724 0 :Sgeo!unknown@unknown.invalid QUIT :"Ex-Chat" < 1176107455 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1176107609 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: Hey! < 1176107622 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :How about a cellular automata VM? < 1176111259 0 :sebbu!n=sebbu@ADijon-152-1-91-82.w86-204.abo.wanadoo.fr JOIN :#esoteric < 1176114987 0 :nazgjunk!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1176115015 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1176115732 0 :puzzlet!n=puzzlet@122.46.198.22 JOIN :#esoteric < 1176116350 0 :sebbu2!n=sebbu@ADijon-152-1-91-82.w86-204.abo.wanadoo.fr JOIN :#esoteric < 1176116940 0 :ihope_!n=ihope@c-71-205-100-59.hsd1.mi.comcast.net JOIN :#esoteric < 1176116960 0 :ihope_!unknown@unknown.invalid NICK :ihope < 1176117521 0 :sebbu!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1176117521 0 :sebbu2!unknown@unknown.invalid NICK :sebbu < 1176124264 0 :jix__!n=jix@dyndsl-080-228-176-081.ewe-ip-backbone.de JOIN :#esoteric < 1176124846 0 :jix__!unknown@unknown.invalid NICK :jix < 1176125092 0 :jix!unknown@unknown.invalid NICK :jix____ < 1176125229 0 :jix____!unknown@unknown.invalid NICK :jix < 1176128899 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: what would that be? < 1176131393 0 :falseep!n=falseep@218.242.110.120 JOIN :#esoteric < 1176131934 0 :nazgjunk!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1176131956 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1176133221 0 :falseep!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1176135069 0 :jix__!n=jix@dyndsl-080-228-185-096.ewe-ip-backbone.de JOIN :#esoteric < 1176135564 0 :jix!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1176136896 0 :jix__!unknown@unknown.invalid NICK :jix < 1176139159 0 :nazgjunk!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1176139193 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1176141714 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: Dunno, we'd have to reduce every simple cellularo automota to VM commands. < 1176142393 0 :jix!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1176142562 0 :jix__!n=jix@dyndsl-080-228-185-096.ewe-ip-backbone.de JOIN :#esoteric < 1176143081 0 :ihope!unknown@unknown.invalid QUIT :"http://tunes.org/~nef/logs/esoteric/06.08.09" < 1176143467 0 :calamari!n=calamari@ip72-200-73-175.tc.ph.cox.net JOIN :#esoteric < 1176143630 0 :ShadowHntr!i=sentinel@wikipedia/Shadowhntr JOIN :#esoteric < 1176143863 0 :digital_me!n=digital@wikipedia/Digitalme JOIN :#esoteric < 1176146206 0 :atrapado!i=opened@186.Red-81-47-14.staticIP.rima-tde.net JOIN :#esoteric < 1176146708 0 :jix__!unknown@unknown.invalid NICK :jix < 1176148559 0 :calamari!unknown@unknown.invalid QUIT :"Leaving" < 1176150722 0 :nazgjunk!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1176150811 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1176151369 0 :Sgeo!n=Sgeo@ool-18bf68ca.dyn.optonline.net JOIN :#esoteric < 1176151838 0 :calamari!n=calamari@ip72-200-73-175.tc.ph.cox.net JOIN :#esoteric < 1176152302 0 :ShadowHntr!unknown@unknown.invalid QUIT :"End of line." < 1176152503 0 :nazgjunk!unknown@unknown.invalid QUIT :Dead socket < 1176152557 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1176152792 0 :atrapado!unknown@unknown.invalid QUIT :Read error: 60 (Operation timed out) < 1176152803 0 :dub_!i=opened@161.Red-81-47-2.staticIP.rima-tde.net JOIN :#esoteric < 1176152829 0 :dub_!unknown@unknown.invalid NICK :atrapado < 1176153114 0 :ihope!n=ihope@tapthru/resident/ihope JOIN :#esoteric < 1176153152 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Yarr! < 1176153156 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I be an IRC pirate! < 1176153344 0 :ihope_!n=ihope@c-71-205-100-59.hsd1.mi.comcast.net JOIN :#esoteric < 1176153358 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :Yarr! < 1176153364 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :I be a disconnected IRC pirate! < 1176153413 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Heh < 1176153682 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :Anyway, I half-officially declare the name of "the operating system project" to be Abrasax, < 1176153685 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :s/,/./ < 1176153705 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :We could have trademark issues with Sophia. < 1176153725 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :And the half-official IRC channel is #abrasax. < 1176153802 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Whassisnow? < 1176153919 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :http://groups.google.com/group/AbraSophia < 1176153978 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :ACTION nods as if he has an effing clue what's going on. < 1176153993 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :It's an operating system project, < 1176153995 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :s/,/./ < 1176154002 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Esoteric? < 1176154005 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :Nope. < 1176154384 0 :ihope!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1176155511 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :I think I'll be the one to do all the "dirty work" of getting the basic bit of kernel down. < 1176157343 0 :dub_!i=opened@140.Red-81-47-0.staticIP.rima-tde.net JOIN :#esoteric < 1176157423 0 :atrapado!unknown@unknown.invalid QUIT :Nick collision from services. < 1176157426 0 :dub_!unknown@unknown.invalid NICK :atrapado < 1176157643 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: sounds fun < 1176158159 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: I don't know much about CAs though < 1176158208 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :Wow. A lot happened on March 26, according to the logs. < 1176158250 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :I blame Pez. < 1176158370 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :Hmm... < 1176158375 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :A 16KB stack, eh? < 1176158408 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :I love how Google can do things like "0x4000 bytes in kilobytes" < 1176158460 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :me too < 1176158538 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :"# define EXT_C(sym) _ ## sym" < 1176158540 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :google will end up as a natural language interpreter < 1176158545 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric ::-) < 1176158553 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :Does that _ ## mean anything special to the preprocessor? < 1176158560 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1176158575 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :What's it mean? < 1176158592 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :## is either concatenation or turning into a string < 1176158617 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :What's it do in this case? < 1176158640 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :one sec < 1176158653 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :## is concatenation < 1176158664 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :so EXT_C(foo) => _foo < 1176158715 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :ACTION nods < 1176158720 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :So what's "movl $(stack + STACK_SIZE), %esp" do? < 1176158838 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I'm guessing it puts the address of the top of the stack in esp < 1176158859 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :but i'm just guessing < 1176159350 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :variadic cpp macros are fun < 1176160017 0 :nazgjunk!unknown@unknown.invalid QUIT :"Bi-la Kaifa" < 1176160059 0 :oerjan!n=oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1176160788 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Gah. I'm finding ObjC less and less attractive. < 1176160808 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ah, the end of initial infatuation < 1176160829 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Well, I had thought that ObjC was a simple object layer wrapped around C. < 1176160845 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :The dynamic runtime stuff is interesting ... but it's said to be slow. < 1176160877 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Why doesen't someone implement a generic function based OOP extension to C? It would be easier to code than a message-passing one. < 1176160938 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Now I'm paralyzed between Java and D for a new project. I need GregorR to shower me with D's advantages once more. < 1176161005 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1176161082 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Isn't GregorR our resident parser god anyways? < 1176161102 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: I did < 1176161121 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: Did what? < 1176161124 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I mean, the beginnings of one < 1176161142 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :A generic function based OOP extension to C < 1176161151 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Well, if I had the experience with writing language parsers, I'd like to create a simple superset of C for generic functions. < 1176161195 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :C has dirty corners in its parsing. < 1176161206 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Well, this would parse it into straight C. < 1176161209 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :And compile that. < 1176161226 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :not context-free. < 1176161232 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Nope. < 1176161260 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :That would be an interesting project in fact. A light OOP extension to C without major additions to the language and huge stdlibs. < 1176161327 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :parsing :/ < 1176161441 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Well, here's how I see it: < 1176161461 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :You can create classes as a set of slots. It'll be done in the same syntax as a struct, except we'll call it object. < 1176161488 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :(So you have something like ``object hi { int a; char b; } '' < 1176161491 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :) < 1176161579 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :You then define a method using a syntax like ``void display (hi obj, int x, int y)'' and then you can add_generic() a function pointer. < 1176161594 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :*function pointer to display() < 1176161621 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :.... We don't need a parser for this ... do we? < 1176161646 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Oh but we have to grab the method signature somehow. < 1176161647 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :s/object/struct < 1176161650 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that's your parser! < 1176161673 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Well, when you use call_generic(display), it'll have to lookup display. < 1176161685 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :that is practically the same algorithm as objc message passing < 1176161701 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :But it avoids the annoying dynamic runtime of ObjC. < 1176161718 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :And based on the parameters you give call_generic, it needs to be able to match the correct function. < 1176161724 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :I need to pull up my C reference, hold on. < 1176161776 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :call_generic() is the same as objc_msgSend() < 1176161837 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :But the difference in ObjC is the whole business with id. < 1176161866 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :well...dynamic typing is nice < 1176161876 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :But it's *slow*. < 1176161887 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :and running through a linked list to find a method doesn't seem very slow < 1176161899 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :It is, almost all the spare links on ObjC say so. < 1176161918 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :They all advise keeping method invocations to a minimum because it slows the program down. < 1176161938 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :think about it [obj message] -- obj->isa, hash table lookup, obj->isa->super, hash table lookup, obj->isa->super->super... < 1176161941 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :not very slow < 1176161954 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :That's what the weblinkse I've read say *shrug*. < 1176161958 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :*weblinks < 1176162112 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :all a method invocation needs to do is a lookup in a hash table < 1176162124 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :maybe a few hash tables if the inheritance is deep < 1176162162 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :There's more to it. < 1176162186 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :The ObjC runtime doesen't type check at compile time for message passing, in case you want to change stuff later. < 1176162199 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Which is part of what leads to the slowdown. < 1176162299 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :so? < 1176162307 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :It's slow :( < 1176162347 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :looking up a method in objc is the same as looking up a variable in a interpreted language < 1176162409 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Exactly. < 1176162421 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :I'm looking for something just a tad bit slower than C. < 1176162430 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I don't think it is very slow < 1176162434 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :java is going to be slower < 1176162438 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Google begs to differ. < 1176162444 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Google says that Java is faster. < 1176162459 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :that's counter intuitive < 1176162467 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Java is by no means slow if programmed correctly, you know. < 1176162475 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :And the sheer amount of work done on the runtime is incredible. < 1176162490 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :I think JVM, SqueakVM, and ParrotVM are the most worked on in this respect. < 1176162502 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :more work than the objc runtime < 1176162504 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :hence slower < 1176162513 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Nope. < 1176162522 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :The Java runtime has been optimized incredibly. < 1176162528 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :this is stupid < 1176162553 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :I mean if you think about it logically, people (for good or for ill) have been putting work into the runtime for 10 years. < 1176162565 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :objc is older than java < 1176162576 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :But it hasn't been continually developed is the problem. < 1176162597 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Same with C++. < 1176162610 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :I don't think you see many changes to the g++ code on a daily basis.