Misc: I honestly haven't had any time; I hope to try to finish up the first release of the gen gc stuff over the midterm break next week, but I'm not making any promises.
Gc: Yeah, I'm pretty pissed off at that greg fellow for taking so long to get the bloody thing done, too ;). Most of what remained to be done at the end of the xmas break is still what needs to be done; that is, the promotion of structs needs to be dealt with, the stuff inside the gc itself needs to be finished (I've thrown a few lines of code at this whenever I've been able, so it has crept along a little). Anyways, have two midterms over the next two days, so I need to spend the token amount of time studying ;).
Misc: busy busy busy. I really haven't even had time to follow the guile mailing list much, let alone work on code (lotsa stuff going on there, tho). I'll see if I can take another stab at the gc this weekend (hopefully it won't take as long to grade the papers this time around ;).
Gc: fixed up most of the vectors stuff for the gengc; also, I'm going to implement a bit of a simpler solution for the structs & vtables stuff for now.
Misc: been a bit busy, since classes have started up, and I've had to become familiar with a few new `languages' (matlab for a numerical methods course; java because I'm gonna be working as a marking drone this semester ;).
Gc: fixed the popen bug for good (though it's slightly hackish; it adds a `without-gc thunk' thing for hooks, though this should be ok provided it's only used when necessary, and not abused to try to get over gc speed failings ;).
Test suites: working on dynwind and throw test suites; shouldn't take too long.
Misc: starting to look at gcc to see if I can figure out how to add an option to prevent the optimizations that are dangerous for conservative gc's. This might take a while, though, since I'm not entirely familiar with gcc's code. Also, a few other little things that'd take more time to write about than it will likely take to finish 'em ;).
Actual stuff: I've finished the hash test suite (though I haven't posted yet, I want to give it a look over first) and I've mostly marked up the gc-mistakes file in texinfo. A little gc work, too. I'm sort of easing back and taking lotsa wrist breaks (no pain, yeah :).
Misc: damn, no post-apocalyptic war zone; maybe I can return the Mad Max ensemble ;).
Misc: mostly restin' and relaxin' (I hate it, really really hate it, though it's nice to be rid of that `icepicks in the wrists' sort of sensation). Small bits of work on the gc and test cases, but mostly just reading and doing some conditioning type stuff for my hands and wrists. Hope those of you who celebrate it had a Merry Xmas :). Now, let's hope that civilization as we know it is still around a week from now ;) No, I don't expect anything major, but you never can tell; of the varity of ways that we've conceived to destroy ourselves, though, wouldn't it be slightly ironic if we were destroyed by frugal programming? Imagine, the whole shebang for what boils down to two bytes. That really tickles the evil cynic in me ;).
Misc misc: I'm allowed to entertain flights of fancy, it's my page, after all ;)
Misc: the test suite for hash tables probably won't be finished tonight (I just finished texinfoizing a document on changelogs by Jim Blandy, and my hands & wrists are starting to get that tingly, painful sort of feeling; since I'd really like to still have the manual dexterity to wipe my own ass in 10 years, I'm going to let 'em rest for a bit ;).
Misc: oops, that gc book is 700 km away. I was sure I had it here ;).
Gc: unfortunately, I don't think the first release of the gengc will be out before civilization crumbles (so we'll all be testing it in rubble, I guess, trying to avoid looters and mimes ;). I know this makes the nth time I've delayed it to do something else, but at least the test cases are very likely to be used by other people (unlike all the stuff I did with thing, which had, what, one user ;)... it did make me more familiar with all of guile, though, so it is paying off in some ways). In any case, a full test suite will make it easier to get the gengc in verifiable working condition, so it's not a totally a move away from the gc. I do think that the test cases will provide a much larger immediate benefit than the gengc would (particularly if the gengc were really buggy due to not being rigourously tested). And yes, I would prefer to be working on the gc :)
Misc: I've been mostly slacking since Saturday (I did spend a couple of hours on the gc last night, but that ended up being mostly seeing if I could squeeze out some cycles using asm (fun and stuff ;)). I was mostly planning on not doing much over the weekend, anyway, and I didn't end up having much of a choice; I screwed up something in my right hand Saturday morning when I was lugging around a big cs book before my exam, so I couldn't spend an awful lot of time typing over the past few days. (utterly stupid bit: I dropped off a big pile of books at the library just before the exam, and, wouldn't ya know it, they received a fairly new copy of Richard Jones' gc book as well, so I'm just about to go down to see if I can't shatter their happiness at the unintentional xmas gift ;).
Gc: (likely) gonna implement structs as a two-cell object tonight, so that the gengc can find the vtable pointers without having to special case all over the place. Should also remove some code from the evaluator, and that never hurts :).
Hmm... I thought I'd updated this at least once this week. Anyhow, there likely won't be a gengc release this weekend. I underestimated the amount of time I was going to have to spend on my term paper (and the volumnous discussion on the guile list ;), so I haven't quite got the gc to a place where it's ready. The stuff on the main page was updated last night; a short summary is that almost everything is done; there's still an outstanding problem with structs (i.e. they don't point directly towards their vtable, but at the vtable's mem, so I have to figure out how to track these things when the struct is tenured, if the vtable isn't; it shouldn't be likely to occur but that doesn't mean it won't, so something needs to be done).
Misc: I'm almost through with all the crud I have to finish up this semester; only one exam left (and a fairly easy one), and one term paper to finish; unfortunately, I didn't get that done as quickly as I'd hoped, so I haven't had a chance yet to do more work with the gengc. The bulk of it hopefully should be finished tonight, and I'll get down to the gengc tommorrow or Tuesday. Note that it's going to diverge from the guile-core for a while on account of the large changes currently going on, so further releases will be tarballs.
Misc: slowly inching towards the end of the semester :). Also, I've switched over to scwm. Exciting, eh?
Misc: just a quick note before I dive back into the books; for those of you who don't follow the typical new sites (but you read this? How odd... seek help ;), 3dfx has made glide and their texture compression code open source... and (this is the huge bit) they've made the programming info for their cards freely available (and you don't even have to go through a `register for access' kind of deal... if you're listening, matrox, that really sucks goats... it's not like I was planning to start fabing chips in my bathroom)! Anyways, if you own a 3dfx card and always wanted to hack at the bugger :), check linux.3dfx.com.
Misc: just a short pause in memory of Frank Zappa, who passed away on Dec 4, 1993. The new midi is "What's New in Baltimore" which is currently my favorite Zappa tune. He may not have been the nicest guy, in his collection of lyrics you can very likely find something to be deeply offended by, but man, could he ever write great music :) (and some of those lyrics are funny as hell, provided you take 'em with a grain of salt ;). A few good links for online zappa tunes:
Thanks to Frank, without whose music I'd spend more time coding and less time learning weird guitar parts :)
Misc: looks like we will get a new guile maintainer (yea :). Maciej Stachowiak (of scwm fame... has been around for quite some time) has volunteered, and I don't see any good reason why he shouldn't be the maintainer (and a collective sigh of relief from everybody (including myself) who thought there was a possibility it would end up being me ;).
Guile: got a little distracted doing the gc stuff and went halfway towards implementing full cow shared substrings; some of the code is still in there (SCM_TMP_CHARS, which allows you to fetch the chars of a string without creating a new heap object... this is really needed if you want to get the most out of shared substrings, since you don't need to promote them to full strings just to read them (see SCM_COERCE_SUBSTR)). I modified filesys.c to use these, and they work quite well. Also modified some of symbols to make the slots stuff a little more sensible (i.e, none of this pointing to the start of slots, since we already know exactly where they are).
Gc: in alphabetical order, I'm down to print (and I've done symbols as well); the problematic bit is (as I'd anticipated) structs ;).
The bad: I have two assignments to finish up, and finals starting next Thursday, so any possible release will come after next weekend.
Gc: of course (for those who were reading and couldn't figure out what was going on ;) the undisclosed thing was the gengc (it's about time, you might be thinking... at least, I was thinking that ;). There are some progress materials on the main page. I've gotten enough done now that I think it's pretty safe to assume that it will be finished within the month (the pages are already out of date, actually, since I just finished working on symbols).
Misc: I'm going to see what I can resurrect out of thing, just in case guile actually gets a new maintainer :)
Mass exodus?: After Mikael Djurfeldt's announcement last week that he's stepping down as a guile developer comes Jim Blandy's announcement last night that he's stepping down as guile's maintainer. I wasn't so surprised about the last one (except maybe surprised that it took this long... Jim has had little time for guile for a quite a while, and it was inevitably going to happen sooner or later); Mikael's came as a surprise, though (I fully expected Mikael to become maintainer after Jim stepped down), so it looks like a little bit of disarray time for guile. Personally, I think that Gary Houston may be the best candidate for the new maintainer (if for no other reason than that he's the only developer who's actually been active).
Gc: almost done modifying eval.c for some, as yet, undisclosed purpose >;') (really, I don't want to publicly announce it until it's close to release... it will (99.9% chance) be ready before new years, just to make that whole y2k thing look like a small glitch ;). There's a smaller chance it'll be ready much sooner, but this is shaping up to be a busy week, so I make no promises. Only Gregs are allowed to know the exact details >;')
Gc: again, I must stress that I have only been neglecting this page, and not the gc ;). There've been a couple of gc releases, and some fun stuff a brewin' on my hard drive.
Gc: did a lot of tweaking & tuning. There's now one explicit mark stack for all objects, I played with improving conservative scanning a little, and a bunch of other stuff; I'm going to finish up the 2 cell heap objects today and probably do a patch tonight or tomorrow.
Gc: I think I've found the buggered bug that was causing so much joy >;'). Still needs some testing. Also found a graph package (and, at no extra cost, it has graph display :). It's ibm's graphvis package. It is open source, but not necessarily nicely gnu source (something similar to the current qt license; you can mod, distribute & sell, but you have to make the mods a patch against the distribution).
Misc: usually when I don't update for a long time, it means I probably haven't been working on anything much ;), but that's not the case this time (woohoo!). All right, I might have been spending a little time playing half-life, too (and what a disappointment! I should've bought something from loki, or system shock 2).
Gc: slowly tracking down the insidious bugs that're causing so much trouble with scwm and other systems. I'm also looking for a decent graph library (in c, preferably... I hate c++) to use for tracking conservative pointers, as a profiling option, obviously... it makes more sense to use a separate graph library, which is likely to be more efficient than something I'd slap together in a night or two, and which will hopefully provide some visualization features (which'd be nice and cool ;). More on this as it develops.
Other guile stuff: the numbers stuff isn't in as bad a shape as I thought. I can almost get it to compile now (though no link, it still doesn't have a complete guile interface). I'll be releasing the almost working code (just have to get the rationals to compile) very soon. Hopefully someone will get a bug up their arse and pick this up ;) (note: actual bug in arse optional).
Non-me written guile stuff: (what a stupid topic name) I've been looking at a pre-release of autogen (there's a link on the projects page, and I really like it. It'll change your life, so keep a look out for the announcement :). Also new is a decompiler project; more details can be found on the mailing list (subject: decompiler project (interested hackers?)).
Other other stuff: I'm supposed to be in a cs class right now :).
Gc: I was hoping to release this today, but I really screwed up something with the explicit mark stuff. Prolly tomorrow. (Update) Couldn't just sleep on it; this was actually a very stupid thing which had been around for a while; when it was marking glocs, it was just using the recursive mark macro, rather than scm_gc_mark; unfortunately, the argument was *++mem, which just makes you want to beat the c standard violently ;). Anyhows, it's fixed, I'll package it tomorrow.
Gc: finished modifying the vector/weak vector/continuation marking code. The explicit mark stack now stays very small . I'm actually making sure this one works before unleashing on the world :) So far, it passes all the guile tests (keep forgetting 'bout those) and works for generating the projects page. Also, a few little potential optimizations. I'd like to make it so that only one mark stack is allocated, but I'm not entirely sure that's a good idea (though I guess, if we get os-level threads, the gc would have to change anyway). It would make smobs less of a problem, though, since they can't use the recursive marking (currently).
Misc: I finally got around to listening to the midi that was here, and it was a horrible rendition (ick). A much better one is here now. And, I'm really going to try to get some more gc work done today.
Everything: urgh. I'm not sure I can say much more. Urgh university stuff. Urgh
Gc: I've actually done something with this (so, chop off an urgh, I guess). The explicit mark stack almost behaves sanely now (I just have to finish up the weak vector handling). Still, it's not nearly as much as I'd like.
Misc: I totally suck. Answered few of the mails, barely looked at guile. I'm going to try to get something done today, but I don't know exactly what yet (maybe the profiling stuff for the gc, to find out how much actually is retained due to conservative marking).
Misc: I've been way too busy lately. I should have some free time in a few days, though, so I'm going to definately try to get some guile work in (and answering all the emails that are building up in my draft box!).
Gc: have a few benchmarks, haven't integrated them with the guile benchmark framework yet. Added some optimizations to marking and the debug freelist option that was discussed on the mailing list (haven't tested).
Web: finally have a kerberos principle for gnu.org; now I just have to figure out how to get cvs to work with it *groan*.
Gc: working on a few benchmarks; should be finished today.
Numbers: I'm going to try to get a little more done with this, too.
GC: doh! I finished up the gc patch, but forgot to put it up yesterday :'/. Anyhow, it's guile-gc-0.10.tar.gz. I'm going to do a few more things with this today, so another one should be coming out shortly.
GC: ported over to the current code tree; some touchups are needed, which I should get to tonight before I go to bed.
Web: a few little updates here; still no gnu site access, so nothing new there.
Misc: I've been mostly busy since last Sunday (packing, moving, classes & junk), so there isn't much to mention. I hope to do a release of the gc this weekend.
Web: @$%!*#@$$@*!!#@#$ (non-offensive profanity). I still don't have access to the guile site.
Gc: I spent a little time cleaning up the malloc stuff and putting the support for malloc usable size back in. Haven't had a chance to test it yet, though. I'm hoping to get a bunch of things done in the next week, provided I don't end up spending a lot of time writing strange music ;). The biggest problem facing the gc right now is the tremendous amount of syncing required to get my source tree up to date with the current guile source tree (and, related, the changes to object types that I'd already had figured out). Mostly, it's just hard to get back working at it.
Misc: much to the chagrin of everyone within earshot, I finally picked up the two Rammstein cd's, and a few Zappa cds to boot (in particular, Joe's Garage, which I've been meaning to get for years... it was worth the wait). In tribute, the new midi tune goin' on should sound something like "Fembot in a wet t-shirt" (I can't check it out right now... for all the `advanced' talk, ALSA is a pain in the ass to get working, and I can't seem to get the sequencer going). So, if it doesn't sound like `fembot', just pretend it does ;). On a side note, it's kinda fitting that FZ would be poking a sharp stick at $cientology, way back in '79.
Web: still trying to get a kerberos principle for gnudist, which is why I haven't done any updates there since early July (ok, I probably wouldn't have done that much, given that I've been doing little besides writing silly little tunes, reading far too many books, etc...). When I'm able to, I'll add the scheme documentation links that appeared on the mailing list.
Gc: I actually did a little something with this (gasp). Not much, but more than nothing.
Numbers: spent bits and pieces of time on this. Basically, it's been sitting in the same boat as the gc; I either haven't had the energy, or haven't had the inclination to spend time on it.
Numbers: the answer to ``what breaks'' is: quite a bit.
Gc: ya know, it'd be really cool if I actually had something to say about this. Alas, I've done sfa.
I: totally suck >;')
Gc: soon, soon, soon.
Numbers: I'm going to try to build this into guile tonight and see what it breaks. Maybe something useful over the next few days.
Misc: still haven't gotten around to getting gnu access again (I'll send that stuff off again today).
Gc: slowly creeping back to this. I'm going to fix up some of the more annoying bits of the current gc.
Web: I don't currently have access to the gnu site (I dragged my feet on getting a keberos thingy going, and I'm still waiting for some kind of response on this).
Misc: we can put shit on Mars, but apparently we can't create a coffee maker that lasts longer than a few years. This really pisses me off, especially when they break down after all the stores are closed and I've gotta switch to instant (ugh) (shudder) (cluck).
Misc: I have been feeling better... however, I've also been feeling quite irresponsible and in more of a mood to enjoy summery things, play that newly aquired copy of quake for linux, and generally not looking at guile at all. I'll get back to everything once the guilt gets too great, but it's not quite there yet, so I'm off to blow some more shit up :)
Misc: retroactively censoring myself, so this place ain't so much of a downer ;). I'm definately going to do some gc stuff at some point today :)
GC: I've been poking at it, but nothing really significant (it keeps giving that baleful look, so I feel guilty and stop poking it... it then runs off to the corner and gibbers quite happily).
Web: well, I updated this page, putting a little bit of thought into giving the gc animal characteristics (what's the official word for that again... umm stupidity?).
Totally offtopic: I finally saw the new Star Wars film (snip of reference to movie as ``The Phantom Anus'', because that's really cheap and I'd never stoop so low as to call it something like ``The Phantom Anus'' or even ``The Phantom Penis''). I wasn't expecting much and even I was disappointed. As expected (or at least, as I expected) Darth Maul was the lamest villain in the history of cinema... through extensive dialog and actions, he developed a personality on a par with that guy in the funny hat who pulled the lever for the Death Star. Anyways, how could you feel animosity towards a fellow who dances so divinely (oh, I wish I were joking; lets just say that the duels between the Jedi and the ``Sith with two lines'' had an odd, Riverdance-ish quality, mostly because of Maul's great impression of a `lord a-leaping'. I don't care how cool taking on two Jedi is supposed to be, the intensity of it all suffers somewhat when the bad guy looks like he'd be more at home in Swan Lake, albeit without all the horns and shit). Overall, it just felt long and directionless, with long sequences tacked in for the express purpose of merchandising (ahem... Pod Racing game... ahem); kind of like this news entry, but a whole lot more expensive (hmm... maybe I should start charging; for six bucks a pop, I could do a pretty mean pirroette... very mean... damaging to look at, in fact. On the plus side, I could only do it once).
Misc: I should be back at everything soon (the one cool thing is you can't feel like crap forever ;). If you've submitted something for the projects list and it isn't up yet, it'll be up tomorrow (I have to hunt down a little bug that tends to wipe out the database... maybe that's not so little; luckily, I was really paranoid when I set it up, so there's a few dozen db backups :).
Misc: my net access just came back, after being down since Sunday, so there's a big backlog o' stuff.
GC: I have been chipping away at it as much as possible... generational sweeping for a few different kinds of objects has been implemented.
Web: finally finished modifying the projects stuff for gnu.org. You can check it out here.
Gc: right now I'm far too thick to figure out the exact bits of structs I need to change. I'll get back at this later on today, after I've consumed a great deal more coffee.
Misc: a lot of activity on the mailing list lately, which is rather cool.
Misc: I've been busy with other stuff (I haven't even checked my mail in the past few days), so there's no significant amount of new code.
GC: not an awful lot; some more merging of generational stuff.
Web: argh! Still no slimmed down projects page for gnu.org; this is partially because it's a very tedious thing to do, but that's not much of an excuse.
GC: implemented automatic size tracking for obj allocation again. This one should work pretty much everywhere, and not have problems with alignment. Next for this is to add support back in for glibc (where it's very easy to get at the size of any given malloc chunk); then I'll make the last thing release before the gengc.
Web: oops, still haven't done the projects list stuff for gnu.org. This was sidelined by the gc, since there's nothing like a mega-consing program to point out bugs ;). Tonight or tomorrow.
Hockey: the NHL awards were tonight, so I figured I'd make a last hockey entry here until next season. A few bits:
GC: been paying more attention to this than updating the news page :). Fixing bugs with lazy sweeping and the explicit mark stack.
Web: I'm going to fix up the projects stuff tonight so that a striped down page containing only free software can be generated for gnu.org can be generated.
Misc: if you don't check out the linux game tome, there's some bad news there for the gc; I just won a copy of the new linux release of Quake :)
Gc: I've done a lot of cleaning up with it... to some extent, the overwhelming pile of macros has been removed; also, I've simplified some bits of the generational stuff to make it easier to keep track of inptrs, and changed the way the heap is laid out for the gengc.
Gc: I was a bit over optimistic about the state of the current sweep stuff ;). I'm starting to get back into the gc groove, though, so it shouldn't take very long. What needs to be done is to implement the reaping for the youngest generation (this is actually just the current sweep, with a slight modification), and to implement it for the rest, which is slightly more complicated, since they have to be checked for pointers to younger objects. Also, there's still the slight iffyness of what to do about constituent pointers where you can't figure out what object they actually belong to (a pointer in a vector is the best example)... the problem with these is that we can't take them out of an inptr list when we advance a chunk... but it's probably just as well to leave 'em in, and fix them when that generation is traced.
Numbers: anyone interested yet?
Web: I've written a partial resources page for the official site, that I have up temporarily here. More definately needs to go into that (I'm not happy that I have the only guile website listed... I'm also not happy that it's so small).
Misc: spent a far too large amount of time today trying to get someone's scanner working under the evil o$... there's a cure for sanity, in case you're looking.
Long time, no update. I was a bit busy :)
GC: I've finally started doing more work on the gengc (half of which was figuring out what I'd already done). The current status is
Numbers: If anyone's interested in finishing this up, let me know (it's going to take a while, because I'm concentrating on the gc). There's not an awful lot left to be done, but I think it really needs someone who enjoys working on the numbers bits, rather than someone doing it because the alternative is the current implementation ;). Sometime tonight I'm putting up the second revision here.
Misc: spent a big pile of time getting a patch of the non-controversial stuff ready for jimb... and about 5 minutes after I finished, found out that he'd just checked in Gary Houston's ports patch. Doh! I tried to skip most of the ports stuff, anyway, but it's probably leaning towards useless right about now.
Web: started up a resources page for the official guile site.
Projects: started bugging the people who've announced projects but haven't sent in anything for the projects list ;).
GC: I've played with the explicit stack some more... surprisingly, it's no faster in terms of gc time (it does seem to slightly cut down run time, but that's more to do with alignment, I would think). The contributing factor here is that the x86 architecture absolutely blows goats (so none of the stuff can really be inlined, since the benefit of not doing a function call is hosed by the increased register pressure, particularly when it's built as a shared lib... something could probably be done by writing some of the bits in asm, but that's way overkill ;).
GC: the explicit stack is implemented (though not in the most robust way... it tries to handle running out of stack space by just reallocating, and can't cope if this fails... the typical required stack space is around 8kb, which I think is much cheaper than all the recursive calls (for each of those objects, scm_gc_mark would be called recursively... for long lists, that's an awful lot of stack space)... eventually, though, it needs to deal with totally running out of space). thing now beats cvs guile + expmem on gc time for startup, which I think is pretty cool (the actual startup in user time is about half of guile's). The next bits to do are lazy sweeping and moving the marks totally out of the heap... on the heap is easier, but off the heap will likely provide better performance. Also, the profile stuff is now optional.
Numbers: getting back to those presently. About halfway through the glue, so a second prerelease (that works!) should soon be forthcoming.
Numbers: still working on the glue. All the bitwise functions are now implemented.
GC: Fiddling around with a few ideas (explicit stack for marking, mostly... again, it comes up against the typical trying to free something on the stack problem *sigh*)
Hockey: Colorado went out with a wimper last night. That just sucks.
Thing: moved a few more functions from boot.scm to c sources (read-line & pals... the only one left in scheme is read-delimited, but that's mostly because I don't feel like untangling it at the moment :). I'm planning on a new release very soon.
Projects: damnit, I've gotta get around to changing the categories!
Misc: Picked up a copy of the thread listing for the mail archive
to start picking out some links for the thread references on my main
page, and out of curiosity slapped together a few commands to do a
count on the frequency of posts by each person (cat
guile-news-threads.html | grep '<EM>.*</EM>' | sed -e
's/<EM>\(.*\)<\/EM>/\1/g' | sed -e 's/<\/LI>//g' | sort | uniq -c |
sort -n, for those interested :)... I have the second
biggest mouth, apparently ;)... mdj elbowed me out by 9. The thread
references are on the main page now.
Numbers stuff: added support for exponents and more funky stuff into the from_string function.
Misc: not much else... been doing a lot of reading on linux memory management and the stuff present in the current breed of intel processors, to see what kind of cool stuff might be possible for the gengc.
Hockey: Colorado played one of their infamous 30 minute games last night, so the final game goes on Friday in Dallas. They've gotta be the most frustrating good team to root for.
The first prerelease of the numbers is up here. Still lots to do, but at least I've finally let it breathe free the electrons for a little while :)
*sigh* Toronto's Cinderella run ended tonight. It's too bad they had to be such literalists and wear glass slippers on the ice, but they are a young team, and bound to make a few mistakes. So, the hope for an exciting Cup final between Toronto and Colorado, two teams who like to play smothering defense about as much as they like wearing colostomy bag helmets, is shot down. I guess it doesn't matter much who Colorado has to beat to get the cup, tho ;'7
In life, there come few very special moments, and when they do come, you must cherish them. So let us pause for a moment and wonder at the free-association that gave us `colostomy bag helmets'.
Damn, I wanted to do a prerelease of numbers last night, but didn't end up getting enough finished in time. It's very likely to be today or tomorrow; the first release is only going to be for the very brave, who like to look at code and stuff :) (I'll still need to finish off all the interfaces that guile currently wants).
Colorado is leading their series with Dallas 3-2... woohoo!
I've got a few spiffy ideas brewing for the gc, which is why I'm trying to push out the numbers stuff ;'7
I'm into the testing of various bits of the new numbers. The parser seems to work, so string->number is happening. More glue is still needed.
I finally got a copy of Richard Jones' gc book. It's nice to not have to spend so much time poking through a few hundred tech reports :)... it's quite well written, too.
A new midi file (Colorado lost a road game, the bastards!). Another Zappa one from One Size Fits All... for some reason, these seem to be the best sequenced Zappa files... tho this one isn't as good as Andy.
Pop quiz: what do you get when you add:
To paraphrase the immortal Ralph Wiggum: my head hurts and my back hurts... I have two ouwies (hrm... odd kind of thing to spell, that one).
I pretty much finished up the stuff dealing with actual numbers before that little spill, though; I'm a bit too dizzy and tired to work on the glue right now, though... but it is looking pretty good for an alpha version sometime this week or the weekend.
Cats may also be the root of all evil ;')
Spent most of the past few days brushing up on math stuff (and fiddling with numbers, not necessarily in that order).
Colorado wins another one. Even with the theft of a goal, the Avs fought back to end the game on a 2-1 tally. It wasn't as boring as the score sounds (though I may be a bit subjective here ;).
I actually finished the rationals! Just the reals and the interface to guile to go (which I've already started, and I'm going back to after I finish this).
I still can't think of anything new I want to add to the official guile site. I was thinking about a resources page, but most everything is unacceptable for the gnu site (the fact of the matter is, you're much less likely to get a free manual than you are a free project, because manuals are such a f$*#@!# PITA to write ;). Anyways, any suggestions would be appreciated (maybe a bug tracking system?).
Still no new look. I really suck at this whole html thing ;)
If I was to write that I'd been working on the numbers stuff, would you be surprised? Thought not :)
Colorado justified the song, dropping the fatal blow on Detroit tonight in a 5-2 victory.
Oops... the song's "We Are The Champions", for those of you without a midi plugin (that actually includes me... I haven't bothered with it ;).
Toronto's sharing the song, taking the series in overtime during the sixth game. Woohoo!
It's a conspiracy, I tell ya! Loki Games just announced the next three games they'll be porting to linux... one of those is Railroad Tycoon II. This is almost as much a time eating threat as Alpha Centauri ;)
Ok, I'm definately going to finish rationals today (well, almost definately... baring a sudden attack of exploding chickens).
You'll notice the music has changed... maybe a bit premature, but after the lousy second game, Colorado has absolutely owned (the hated >;) Red Wings.
Numbers stuff, tried to muddle through the problems with Irix. I've started in on the modules documentation, too.
Still a total absence of a new look... sigh.
If you have a plugin for playing midi, you should be hearing one of the coolest Frank Zappa midis I've been able to find (cool in that it's very true to the original recording... the tune is ``Andy'', from ``One size fits all''). This and more Zappa midi's can be found at, of all places, the Frank Zappa Midis page. Eventually I'll get around to sequencing the gc segfault song to assault your ears ;) (anyone really want to donate a midi guitar? ;).
I'm planning to document the module stuff after I finish with this (it annoys me when I have to look for complex solutions to problems that're already solved ;).
I'm also doing a writeup on outstanding number problems, which will probably be posted to the guile-numerical list pretty soon.
Still no new look... I have found a few really cool Zappa midi's I'm probably going to add, though :)
Other than that, I spent a lot of time playing around with threads and modules, trying to figure stuff out (this mostly sparked by a thread on the mailing list). I wonder about the semantics of something like dynamic-wind in the presense of threads, tho.
Colorado left the stink home in Denver, apparently.
No new look yet... I'm still trying to figure out how other sites do it (I know so little html, it's kinda sad and funny).
Finally got the strop diff into guile cvs... it only took, what, 4 months! ;)
Yep, still working on the numbers stuff. I'd give an expected date, but that's mostly a pointless endevour, 'cause it would I'd either rush it, or release a non-working pile of code. Anyhow, I hope to get most of rationals implemented today, and rewrite the number parser (that's one of those pieces of code that I know, just thinking about it, is going to be rewritten a half dozen times before I'm happy with it ;)
Colorado's really starting to stink up the ice against Detroit.
Been working on an improved website... expect a new look RSN.
Since my little search on arbitrary precision numbers brought me to cln, I figured I might as well give clisp a look again... jeez! I remember when a clisp download only took 2 megs!
On the numbers topic, what I'm probably going to do is try to crib some things from cln, and add them to a strict module, which should be selectable at compile time (and maybe run time, on dynamic linking platforms). The issue isn't so much the strict gpl on cln, as the fact that it's written in c++ (urg).
Was just browsing around for numerical algorithms, and came across the cln package by Bruno Haible (of clisp fame :). It has a much more complete set of operations than gmp, but there are two problems:
Started working in earnest on the rational and real number implementation. The first release is only likely to have the four (rationals via mpq_t in gmp, reals as doubles). I've been looking at other scheme implementations, and their number parsers are really ugly, too ;)
The second round of the playoffs starts tonight.
Wow, r5rs' numbers syntax really blows goats. I guess I'm just a purist, but I really hate it when you hit something that is almost totally foreign to the design of the rest of the system, and the number syntax really fits in here. What makes more (schemely) sense?
#i34333 (exact->inexact 34333)
It's also a bit gross to write something to grok that number syntax, and since that's what I'm doing today, I feel a little grouchy about the whole thing ;). There are good reasons why you want it (so that you can write and read the numbers, and get back the same thing) but parsing them's a pain in the ass.
After the first round of the playoffs, I'm batting .750 (Pittsburgh also screwed me over last night by winning ;). As for correct predictions of the number of games as well, that's at .375
A big pile of discussion on the guile list currently, which started on defined? (again, I dislike the non-predicate predicateness of that... defined is better), and is now in the realms of direction and future, so ya know it's gonna go on for a while ;). Since I'm grouchy, I'll be cynical and predict that there'll be a lot of talk about what guile should be, what direction it should take, and in the end very little will come of it, 'cept maybe a pretty full mailbox for a few days (if you want to see something happen, you've gotta actually do it... no amount of talk will make the code magically appear, which is why I try not to bitch about anything I'm not prepared to put the time into fixing... unfortunately, that means that I've got a lot of crap to do, because there's a great deal in guile I like to bitch about ;).
I bet you thought I was gonna mention that Colorado won last night, thereby fulfilling my prediction of Colorado in 6, and, as a Colorado fan, making me quite happy. Well, you were right.
Been playing around with a few different bugs, and occasionally throwing a little code at the numbers stuff.
Just a quick update: Toronto moves on to the second round! After saying that Colorado could make me right about one, two teams went out tonight and made me look good. Though nobody really cares ;), here were my picks for the first round series that've ended (also available here, at the playoff pool page, so ya know I'm not just doing a bandwagon jumping thing :)
Now, you may be saying "Damnit! What the hell does this have to do with guile?!?!". And I have one thing to say to that: *phbbbt* ;')
(On q3) That should've been 1st person shooter, of course. For those of you keeping score at home, that's another one for Brain Fart, with Typo drawing the only assist.
Final Score: Greg 2, Stupid Errors 35
In that vein, Colorado finally broke out of their playoff malaise on home ice (likely helped by the embarrasing 7-3 drubbing on Friday) to lay the hurt on San Jose last night. Colorado leads the series 3-2, with a game Monday night in San Jose (and, even cooler, if Colorado wins it, I'll have at least one correct first round prediction! :).
Still with the numbers stuff...
Tried out the q3arena test... looks cute. Well, that's about it, really, another good looking 3rd person shooter. *Yawn*
Something I didn't know is that there's a Dave Barry page at the Miami Herald site, where they have an archive of his articles for your reading enjoyment (try it, it doesn't hurt, and the guy's really quite funny). A sample:
For years, ``officials'' told us that marijuana was an evil criminal drug. Now they tell us that it has ``important medical benefits warranting further investigation, but first let's order a pizza.''
Ok, now back to coding ;)
Missed another day!
Here's a bit of detailed status on the numbers reimplementation: the generic implementation of r5rs primitives is done; immediate integers and bignums are (almost) done (there are a few tiny holes with bignums, which I'll get at after I finish this). Rationals (to some extent) and reals (almost totally) still need to be done. I'm probably going to leave out complex numbers initially, since you can have a functioning number system without them; they'll come after I iron out any problems with the system. This is ignoring the little bits that'll have to be changed all around (removing the asubr type from eval, for example). A few more days...
Woke up yesterday and said: "Hey! I've still got two days left in April! I can still get an alpha gengc out in time!" Then I thought of numbers, shuddered, and figured that I'd have to let it slide. In case you're wondering, these are the reasons the gc is taking so bloody long (in no particular order):
The ``Greg is a banana split'' foundation is now accepting donations of money, whipped cream, and, of course, bananas.
Oops, did miss a day!
Been banging out some ideas for the numbers stuff; many thanks to Dirk Herrmann for the suggestions and ideas :)
Actually did a very small amount of work on the official guile web pages at gnu.org; it was only a little bit of correction and additional pointers for Jim's idea page. I've been thinking about adding a guile news page there, but I'm afraid there'll be embarrasingly little to report.
Ottawa was swept in four straight, totally screwing my playoff predictions (doh!). I knew there was a reason why I don't put money on this stuff ;).
I was a bit surprised to find that anyone actually reads this (I thought all the hits were from spiders and bilkers). Maybe I should spend more time thinking about what I put here?
Naw, let the reader beware ;')
Oops, almost missed a day!
A little more numbers work, and merging Gary's latest port patch into guile; mostly, it's been a sucky day, so I've been trying to take it a little easy.
The best description I've heard (though I can't say how accurate it actually is) for Fibromyalgia: "It's like Rheumatoid arthritis, but without the deformity." It's always nice to avoid that deformity thing ;). Anyhows, that's a good word (Fibromyalgia) to do a search on when you feel annoyed about the slow birth of the gc, among other things (anyone willing to swap bodies should drop me an email :).
Still working on the numbers stuff :)
Finally, a team I was rooting for actually won a bloody game! (Toronto 2-1 over Philly, the two goals coming in the last two minutes of the game). Of course, my main team Colorado also won, but that's to be expected >;')
My main guile page topped 1000 hits yesterday... excluding robots, address harvesters and me, that's almost 10 hits! :)
I've been in sort of a `download & play with stuff' kinda mood; my icq number is 37181463 ;) (tho probably not all that useful, since I'm online sporadically at best).
Still working on numbers stuff; just to clarify things, I'm not much concerned about the numeric performance, as I am with reimplementing it cleanly. For the curious, my approach is to go a similar route as smobs and ports, by having one type, and an index into a structure of numbers functions; this basically implements the numeric tower by having any operation on two numbers call the function associated with the higher number (where higher is towards the top of the numeric tower). For example, doing (+ inum inum) will call the inum addition, while (+ inum complex) will call the complex addition; it means that handling the various types of numbers is confined to the more complicated numbers (so an inum addition does very little testing). A lot can be optimized eventually, but I'm more interested right now in just having a smaller mess ;).
Ottawa lost again, albeit in the second overtime period. That just sucks.
Still working on reimplementing numbers. I should finish up integers (immediates and bignums) sometime today.
Toronto lost the game last night (doh!)... looked like nerves (same thing with Ottawa, actually; they had more than enough scoring chances, but were trying so hard they were fumbling all over the place).
I'd planned to do the (seemingly very) simple task of finishing the SCM -> pointer thing (and fixing configuration for it, making it clean and sensible); mostly, this should've been a mindless task of compiling, fixing the places where it went wrong, fixing those, compiling... you know, shit work. And it was going pretty well, until I came up against my old nemesis, numbers.c . I've been trying to avoid that particular little gem; partly because that code's in the blindness inducingly ugly category, and partly because I know that having to deal with it much more is going to force me to rewrite it. From the tangled mess, to the free and easy swapping of longs and SCM's, I was quite happy when the hockey game started, giving me a good excuse to leave it be for today ;)
Planning to start re-writing numbers.c next, using gmp.
Currently, Ottawa's tied with Buffalo; the high points of the first period included an almost total domination by Ottawa, and the spontanious the birth of the Senator victory cry ``Take that, you Czech bitch!'' (I'm so articulate whilst watching hockey). Alas, the Sabres just went up by a goal. Also, the two ref's are going batshit with penalties.
Fiddling about with some gc docs, doing some changes to thing (like moving SCM from a long to a pointer to an undefined struct, which should allow a lot of warning in places where a SCM is used interchangably with an integer).
The final results in the Usenet/WWW Hockey Draft are out. The Weinerdogs placed 60 out of 311, which wasn't too bad, given that I barely looked at it for a few months.
On another hockey related note, the playoffs start tomorrow: Go Avs!
And, of course, since I'm supposed to be working on some website stuff, I'm slapping together my own personal markup language in guile ;).
Not much news, I'm afraid. It's been total suckage the past few days (Jim jinxed me with his comment about my energy ;). I've taken a look over a few source files, and tinked with designing a new logo for guile, but given that my master work is ``Portrait of the Artist as a Stick Man'', it's probably destined to suck ;).
I've
Looks like I'm a guile webmaster now (be afraid, be very afraid ;').
In case you've been living in a cave, Wayne Gretzky announced his retirement on Friday. It's kind of an odd feeling, actually; even though I haven't been a hockey fan all of my life, Wayne Gretzky was a constant (after all, he's been playing since before I can remember); he was also the rare class-act, in an era where sports stars seem to prefer rolling around in piles of money than actually performing in their sport.
More gengc... mostly modifying things to work and stuff ;).
Finally getting around to all those niggling little bugs in thing/guile, like the time thing (you see something and you say 'I'll look at that in a little bit when I've got some time to think about it', and then it's two months later and that mail is still sitting there unread :( ).
Nothing new to download today; I've implemented updating for the project list stuff (my life: 100% easier, I'm going to add the licenses for the stuff I know about in a little while), made the html it generates almost readable (and legal), and revamped some of the gengc code (the way I'm going at it now should be more efficient, since it doesn't need any really large lists of possible pointers, and it makes it very easy to advance any particular set of objects).
A new thing tarball. Lots of guile compatability stuff, bug fixes, and slight cleaning (major cleaning starts soon after I finish this ;').
A new thing patch. Fixed bugs with numbers functions (exposed while messing with goops, which is a whole lotta fun :').
I've recovered quite nicely from excessive consumption of Canadian lager.
I'm back to figuring out the various bits of guile that I haven't looked at closely yet (i.e. biting the bullet and diving into eval... if I come out with sanity intact, it'll bode well for the gengc ;).
Some potentially very bad news; in an irc interview with Brian Reynolds of Firaxis software (makers of Sid Meier's Alpha Centauri, which I've mentioned here previously), says
[DanQ] Will there be a Linux version? [Brian_] Certainly a Mac version; I'm assuming a Linux version too though that hasn't been finalized...
Can you say ``time eater''? I'm almost hoping it doesn't happen ;)
Some people celebrate a birthday spending time with family and friends; others quietly contemplate the year before and the year ahead; and still others buy a bunch of marked down Easter chocolate, drink beer, and play with Garnet. It probably doesn't take much detective work to figure out which category I occupy ;) (if only they'd based it on clos... *sigh*)
I'm not trying to be slashdot here, but there's an interesting little article about M$ considering releasing source that peaked my interest (again, that's the beer talking, I guess ;). For those of us who do like to play games every once and a while, this would be excessive coolness (not to mention the benefit for Wine). Of course, this will result in a lot of people's belief systems being completely shattered (M$ is evil... no, it's beautiful... no... argh! *head exploding sound*).
After a freshmeat announcement, I've taken a little look at Icon; that is one spiffy language. I've been smitten, I think ;).
And no, I didn't do much work with guile stuff today... I'm a drunken birthday boy fulla chocolate, damnit ;)
Happy Birthday to me!
The gengc was notable in it's absence of stuff I worked on today (looking at moving the current module stuff to c, some other clean up type stuff, and the project list stuff). Apologies to everyone waiting anxiously for it (am I hearing crickets? ;).
New project list tarball here. Mostly improves the entries in the database, and generates proper code for html special characters.
The first stab at an auto-generated projects page is up here. The code and the `database' is in guile-projects-0.1.tar.gz.
There's a patch for the new thing here, which fixes all the bugginess resulting from the weak vector changes.
It was definately a good thing that I decided to wait on the thing announcement for a day (no pun intended ;). There were a few really horrid bugs with the weaks, which I've been hammering out. A new dist, and a patch to yesterday's version will be up later tonight.
Second recipient of the `cool enough to give you an ice cream headache' award; Thien-Thi Nguyen (usually just uses Thi), for submitting a renderer and a partial mail groker for the projects list format (an html generator is only a little work, and this will hopefully be reality in a day or two). I'll package these up, plus the stuff I've finished later tonight; as well, I've almost completely finished rewriting the stuff on the temporary projects page in the alist format, and that'll be up shortly as well.
Finished documenting the queue module for the qdocs (aka q in official guile, which is a really shitty name, IMNSHO ;). This one's been done in texinfo, and it's most likely that all future stuff will be texi.
Off-island connectivity is toasted right now... somehow, the day just doesn't feel complete unless I take a look at freshmeat ;). So if anyone's been having any problems getting through to the website, this is probably the reason.
Taking a little break from putting a few finishing touches into thing; the announcement will be sometime tonight, and it will be available here. Even with a little polishing, though, this is likely to be the most fragile release, since a few new & possibly dangerous things have gone in (a mod to weak vectors to accomidate the gengc, Maciej Stachowiak's init patch); other bits include more documentation (including a list of things that really need someone to work on them).
Spent a little time becoming refamiliar with elk; their gen collector is a good example of why using an os-based write barrier sucks, actually (still a nice little system, though... well documented (nudge)).
A good day for once! I'm shocked, I tell ya (even more so, since I spent most of last night watching hockey and drinking beer ;).
I'm back for a few moments with some advice:
Luckily, it didn't take too too long to get things back working (with much trial and error of cylinder numbers... I got a break in that I knew exactly where one partition was, and could remember enough of the layout to get everything working again). The worst bit was that both the thing source tree and my cvs directory were the important bits on the two partitions affected. I certainly hope I've learned my lesson.
Other than that, I've been toying with guile-gtk+, and wondering how hard it would be to write a little browser for the projects list (which look like they're, at least initially, going to be based on your basic `file with a bunch of alists').
Updating this page when I'm supposed to be working on the gengc is something I really should avoid ;).
Speaking of thing, should be a new one tommorrow, with the ``don't eat my main'' patch, and a little more stability to the new ports. I'm not sure if I'll include the current work on the gengc yet (probably not, since it doesn't really do much). Also, it may not include the qdocs this time around, since that'll require a bit of delving into that autogenerated mess that is automake/autoconf.
Need to follow up a few interesting things that people mentioned (particularly the profiling patch).
Yep, most of yesterday's entry was a limp April Fool's joke (BSOD was a dead giveaway, of course... basically, in order to get someone, you actually have to have something that would cause some type of anguish ;).
Spent a little time on the projects software (which I'm absolutely not doing anymore, looking for someone else to do); I didn't get an awful lot done, due to the paradox.
My brain hurts!
I've decided to quit doing stuff for Guile, and start a company producing commercial software for Windows.
I intend to call it 'BSOD Inc'.
Winter strikes back, with about a foot of snow over the past two days. And, of course, cold weather = slow me, so not a lot of real guile news to talk about, 'cept a little bit of gengc stuff, and yet more time spent on the popen module (it's like an addiction trying to figure out all the little oddities that thing exposes ;).
Spent most of yesterday doing ``Misc'' (tinkering here and there; fixing small bugs, etc).
Probably gonna drive Gary Houston batshit with fixes to my fixes of the popen module from his ports patch ;)... it should work right this time... honest!
Other than that, no big news. Actually spent some time outdoors yesterday, hanging around in the sun with the cats :)
Didn't get nearly as much done over the weekend as I wanted. Spent most of Sunday watching hockey (Colorado laid a beating down on LA, which was cool) and playing with a demo of Alpha Centauri (also cool... thankfully, exchange rates are horrid, so I won't be buying that anytime soon ;).
Of course, after saying that I was giving up the projects software for a while, I spent a lot of time working on the projects software... I'm so weak ;)
Just for the record, Bruce Korb is the one looking at writing the page generating software for the projects list. I sent him a simple test case yesterday with three project entries.
And finally, the long awaited (ok, maybe not) debut of Futurama (Matt Groening's new show) was last night... it was ok (the Leonard Nemoy bit was hilarious); around the quality of current Simpsons, which isn't terrible, but not as good as the Simpsons in it's prime.
I've been a little lax here, but then again, I don't think anyone but me reads this page ;).
More slaving in the gc mines. In theory, the generational stuff should now work with conses and vectors, though the real test will be when the generational stuff is all in. I've found another little complication (pointers that don't actually have a generation or a parent... an example is the root, though that should actually always be traced I think (we can always skip if the object it points to is too old), but it is a class of objects that'll surely come up).
I'm trying to subcontract the projects software ;)
The weather is being totally funky (from sunshiny to near zero rain); a bit of advice for anyone with a circulation problem (among other things; I'm not going to get into it... let's just say my wetware totally sucks): do not live in a Northern climate!
On a related note, anyone want to offer me a job in Arizona? Will work for room, board, cat food and inet access ;)... will even program in Basic... on a c64... wearing mickey mouse ears and a tutu... (note: the cat food would be for Tiger... I'm not *that* desparate :).
More generational work. It's coming along pretty well. I've again split up the gc into separate files by category (because a 2000+ line file is a hassle to work with... I'm going to stay like this for good, I think... the only reason I went back to gc.c was to make it easier to contribute changes for the official guile, but given that providing a change for official guile is often not much more than time wasted trying to put together the patch, it doesn't make much sense to make my life harder).
The rfc882 thing will load up a file, and correctly separate
headers from body, and let you access separate fields. Pretty spiffy,
though I still need to test it with a real mail (and provide some
decent defaults for dealing with The mail module can now grok headers pretty well, and creates an
alist of header/contents things. It still needs to deal with folding a
bit better (but I wasn't working on this much today).
I've actually started going through the source and adding the
generational bits :) I'm raring to go right now, but I'm a bit to
tired to be trusted with it, so I'll be at it tomorrow morning.
After much procrastination, I've finally set up a backup system
with my tape drive. Really, I should've done this after my first
hard drive went flop, but I've been lazy. Luckily, nothing bad has
happened since then, and a report of a recent thump on the crystal
space list made me a little paranoid.
Watched `There's Something About Mary' today (waiting for the
backup... I'm using the dos software, since I'm really not in the mood
for ftape hassles again)... the first Hollywood comedy I've seen in a
long time that really made me laugh; recommended viewing if you aren't
easily offended ;)
Finally, it's been a month since I said that I was trying to quit
smoking and... dumdududa! I still haven't quit smoking. I am, however,
still on the same can of tobacco (so I've cut down to, at most, 1/4 of
what I was smoking before... which is pretty cool).
Not a lot of note; I've almost finished the mail module, so that
should be up in the next few days; I've added some more profiling bits
to the garbage collector, though nothing interesting showed up (most
of the time is in marking, wadda surprise, eh?). Also, the mail system
here is likely to get a bit funky (my isp has heard of having
redundancy, and wants no part of it apparently), so a few messages
might bounce.
A few new releases (yeehaw!)
Since I find myself still waiting for one thing or another to
download, figured it diddle on the page ;)
Another batch of stuff:
Another fairly active day, so let's dive right in:
Actually, there is the third option of registering our ports with
the c library, but I think that's only a gnu feature, so not very
portable.
I've finished porting Gary Houston's diff to my tree; so far, I
haven't given it extensive testing (and, in fact, it does break
readline, which I'll look at shortly), but a quick, out of curiosity
performance test of thing vs guile looks pretty good for thing ;)
I did a very simple, startup speed test, where both guile and thing
we're run as time guile -l test.scm; test.scm used the
syncase module, then quit.
Guile gives "real 0m1.835s user 0m1.820s sys 0m0.010s"
(I'm being kind, this is about the best speed guile had).
Thing (with init-seg = 65536 & seg-size = 65536) gives
"real 0m0.984s user 0m0.710s sys 0m0.010s"
(this wasn't the best speed)
Thing (with init-seg = 16384) "real 0m0.884s user 0m0.700s sys
0m0.030s" (neither was this... toldja I was being kind ;)
sys pretty much hung around the same place (which was expected,
since neither should really require any more system time than the
other). In terms of the actual time it took to boot up, though, thing
is twice as fast (there is a noticable startup time increase on a k6-2
300mhz). Simply put, I rock >;')
I really need a nice news page. Seems like there's a whole swath of
stuff to cover now, so I'll dive right in.
I've been pleasantly surprised by the response to the initial
projects list I put up. There's a lot of cool stuff going on out
there for guile.
Sort of on that note, I spent most of the non-updating the list
time today working on porting Gary Houston's new port buffering
implementation to my modified sources. This is actually one thing that
worries me about the future of guile... given that it takes quite a
while to get changes in, we're likely to end up with a lot of people
with big changes that just aren't compatable with each other, turning
into an administrative nightmare (and a lot of unnecessary
work). I'll probably bring this up on the list soon, but I have a bit
too much I really want to get done to get into a big discussion of
this right now.
I'm still hovering around that half-pack marker... actually, the
increased amount of stuff I've had to do with the list has made it
somewhat harder to go lower (whenever I'm responding to email, I
always get an urge to smoke for some reason... maybe I'm just really
weird ;).
As opposed to yesterday, observers could truthfully note: "Hey,
that guy's doing dick!" (ok, maybe that's a bit grosser than
anticipated). I've been trying to whip those nasty textbuffers into
shape, squashing more than a few very large, glaring, fanged
bugs. I'm starting to get the hang of hacking without smoking,
which is good, 'cause there's a shitload of stuff I need to do.
I've found at least one potential package for a guile projects
page, called catalog (I'll need to fish out the url soon). More
about this after I actually read the documentation.
I'm down under half a pack a day (not only will it save my
lungs, but my monitor as well ;).
Other than that, it was a quiet guile day (a few changes in cvs,
but nothing to get all hot&bothered about).
Really, I haven't done dick. Thankfully, this isn't the case for
everybody :)
A new release of guile-gtk.
Now supports v1.2 & 1.3 (and 1.0 & 1.1 support has been dropped).
Ok, maybe I have done a little; it looks like the ball is
rolling towards getting a guile projects page up.
I'm down to about half a pack a day and I'm basically a
gibbering mess, so it'll probably take a week or so until I'm
actually able to sit down and write/code for longer than 15 minutes
(cross fingers).
A long time between updates, but that's just 'cause there isn't
really any news to tell. I've worked some on the gengc (and figured
out a few new things, which should cut down mem usage, and
hopefully make things easier) and the textbuffers, and I'm meaning
to start ripping into the load mechanism to see if I can't get it
going at a decent speed (isn't someone working on this? I really
want to start up an ongoing projects page, because the current
state of things is far too stupid).
I have a few patches queued to go on the patches page (Christian Lynbech's load patch,
and Maciej Stachowiak's patch to remove the need of guile to eat
your main). I do need to finish at least partially describing
these, though, so sometime tonight, hopefully.
The new thing actually should've been put up a week ago, but I
just haven't gotten around to it yet, and now I'm thinking I'll
wait until I try integrating a few of the more important patches
into the tree, and try ripping into load first.
Really, I've spent far too much time blowing shit up lately,
thanks to a new Voodoo2 vid-card (for you quake2 fans who haven't
tried it, the effect of a deathmatch player with the quad will
knock your socks off... but don't stare too long, or else you'll
get a lot more than your socks knocked off ;).
Given the almost total non-gcness of news here, it's now my
guile news, which is broad enough to cover most of what I tend to
put here. Anyhow, I'll try to keep up with other news outside of my
own guile stuff, so here's some of the more recent tidbits:
Jeez, I've been taking my time updating this. I'll see how brief
I can be here:
Outside of that, I've been spending maybe a little too much time
getting gibbed on q2 servers around the net ;)
Garbage collector news? On my garbage collector news page? Who
woulda thunk it!?! Anyhow, r7 of
the guilegc is up now, which adds an after-gc-hook.
I've quite officially decided that I despise automake. It's not
that I was a big fan of it before, but I think that things are
starting to get to a point where it's easier for the programmer
*and* the user to just have a simple makefile to edit (just try to
build things when something doesn't want to behave). I guess I'm
just being testy, but the combined annoyance of the configuration
tools and guile's lousy handling of dynamic objects is really
ticking me off... maybe I should take a little break and play some
angband for a change :). Interestingly enough, this doesn't have
anything to do with the gc, either. The hooks are almost ready,
though, I just have to figure a little bit out about the behaviour
of asynchs
Ok, one more day for the buffers (this being Saturday night,
actually). The main reason is because I'd underestimated what was
left to be done. Documentation is finished, there are a few little
features that need to be added (forward-line is about the only one
that comes to mind... that and proper end of buffer
reporting)... there are some complications with the module
facilities (i.e. guile's module facilities blow goats >;), so the
first release isn't likely to be a pretty thing.
Again with the buffers... anyhow, looks like they might not be
ready until Saturday, since I ended up doing some more overhaul of
it. Still needs some slight tweeking, my "Buffer the vampire
slayer" test showed a little oddness.
Still no new gc stuff... I've rewritten the emacs buffers
(correctly this time ;). There's still a slight amount of
flakiness in bits, but it's not nearly the nightmare it was on the
first go round.
Not much news on the gc front, I'm afraid. Mostly, I've been
working on a few other things (the qdocs, emacs buffers), and
letting the code lie for a bit. There isn't much else that can
really be done with the current collector, so I'm going to see
about getting it merged with the current cvs version of guile.
Not much news on the gc front, I'm afraid. Mostly, I've been
working on a few other things (the qdocs, emacs buffers), and
letting the code lie for a bit. There isn't much else that can
really be done with the current collector, so I'm going to see
about getting it merged with the current cvs version of guile.
Another two revision stretch without an update. The current one
is here. This fixes a stupid bug
with stats, and muddles with a few other things, though nothing
significant. I've been meaning to do a hard profile, but trying to
coax all the automatically generated files to do the right thing
is a royal pain in the ass.
Oops, two revisions before I got around to updating this (with
a fifth coming tomorrow [um.. today, actually ;)], most
likely). The current one is Revision
4, and you'll have to use the changelog to really find out
what's changed. The fifth is actually finished (which includes an
experimental mark change, which isn't guarenteed to help with much
of anything ;).
Revision 2 was put up
yesterday. It restores the ability to create heap segs with ncells
== 2, and cleans up a bit.
Updating a dozen little docfiles, news files & emails, all
pretty much the same. A new revision of the gc is here. The changes are detailed in the
README and the ChangeLog in the tarball. There seems to be a
little bug, but it isn't breaking anything, so I'm not wildly
concerned. I have scwm up and running ( - the gay default colours
;). A better gc is definately needed.
Other bits:
The merging of chunklets with the current gc is finished, and
should be up very soon here.
Back to slaving in the gc mines >;). Mostly been backporting
some bits into guile's gc (the chunklets, and some better sweeping
methods). Should be available very soon.
Still trudging along with the write barrier. I've been toying a
bit more with the library idea for the gc, and looking for some
good (and well documented ;) parsing code for scheme.
The write barrier stuff is starting to get done. So far, the
stuff to keep track of the generational pointers and things is
pretty much done.
Other notes: I've looked briefly at xlint, but it is suffering
from the unfortunate fact that it's completely netbsd
dependant. I've given a half-hearted attempt to port it to linux,
but not too much has come of it yet. What I have been wondering at
is if there's a lint out there that allows you to write new
tests. This might actually be a cool project for guile and the
currently rotting syntax stuff, although it does get to a nice
chicken-egg sort of deal.
Also, there's a few newer versions of hobbit floating about on
red-bean (haven't looked there in a while)... there appears to be
some module support, but it still can't compile any arbitrary bit of
code :(
The rgc is officially finished. I don't think it's generally
useful as an alternative to the current gc, and I'm moving on to
the generational garbage collector. There are too many limitations
to the approach to make it worthwhile.
I've done a little testing with the thing (+ an addon to segment
selection that factors in the last time the segment was collected,
this is probably not very useful, though). As expected, in a
situation where it has similar seg sizes to the current gc, it
(slightly) outperforms for typical create garbage, destroy, create
some more operations. For very big allocations, though, it grinds
to a halt (make-list 100000 takes infinately longer than the
current system, which is to be expected, since the rgc prefers
collection to allocation by default, and suffers very badly if it
can't get any free storage). Note that, for this particular case,
we probably should be letting the gc know that we are getting all
that storage, and that until (at least) that operation is done, it
won't be collecting any storage. This is only an issue for very
large allocations, since in this case, the rgc is collecting more,
and getting back no more storage than the current gc.
I've moved the November stuff out of this file. I really need to
get a nicer way of dealing with this. Other than that, I intend to
start working on the rgc again tonight, starting with the segment
selection stuff.
The first alpha release was yesterday. I'm going to let that one
sit for a day or two while I do some documentation and look at
xlint from netbsd.
Ok, it doesn't crash anymore, it just runs forever... a mixed
blessing, I guess. I've changed back to a traditional mark/remove
marks method. I've felt a little iffy about this, because i can
always see how an unmarked object could be considered marked
(though no marked objects should get considered unmarked). Anyhow,
this way's a bit simpler, though somewhat more work. The other
method should be workable with more than one bit per object, but
for now, I'll stick with the straightforward way.
One down, as I've discovered where the out of heap marks are
attempted. (the vcell of structs, which isn't always a cell). I'm
still trying to track the freecell on scm_symhash... an
interesting thing I've noticed is that option.doc strings are
being freed, so it may be one of options.c or symbols.c causing
the problems... the gc doesn't appear to have anything glaringly
wrong.
Removed the SCM_CARLOC things (it aparently wasn't so stupid... in
fact, it doesn't make much sense to use CARLOC, since a scm value
is either an immediate or a pointer to a cell, so that it's not
going to be marked, or it's pointing to the location in the heap
that needs to have a mark associated). Other than that, it's been
more stepping through with gdb (and may I say, gross... it really
needs a better command language).
Ok, I know where the out of heap mark is coming from (scm_permobjs,
not mark locations). I still need to find the cause, though, and
this probably means checking out all the places that create
permanent objects (ugh).
Second release of the rgc. This should fix weaks, but the mark of
an object outside the heap is still causing difficulties. Also,
some of the legacy bits that don't make sense with the new gc (GC8
marks) have been removed from the gc (other code will wait until
the gc actually works, although the only other place it's used in
guile is gdbint).
I've put up a very early release of the rgc. Doesn't work, but it
will hopefully get a few extra pairs of eyes looking at the code
;')
Posted a little patch to add an option to gc after each cell
allocation. Fixed an error in the bitvector stuff that could have
been causing most of my grief, though I'm still working on
cleaning up the new gc code, so I haven't tested it yet.
Oh, ugh, ugh, ugh, El Stupido isn't even close to harsh enough. A
lot of the insidious bugs are mostly traceable to the fact that a
mark would set the mark on x, rather than SCM_CARLOC(x),
completely screwing everything (i.e, the mark wasn't going
anywhere near the right place, could be outside the heap, etc). It
still crashes, but I'm too tired to go through and find every mess
up that's likely related to this (it just occurred to me while
drifting off in a post-Av victory euphoria, I figured I'd document
it for the world before going back to bed ;). Hopefully, this
means something working and testable sometime over the weekend,
although I should've learned by now not to set any kind of
estimated date on this thing.
In Spain, I'm known as El Stupido... one major bug was cropping up
on account of the new definition of GCCDR(x) being x. It still
really wants to free alists in scm_symhash, though.
When you get to the bottom you go back to the [TOP] of the slide.
Last modified Wed Mar 22,2000
Contains some annoyances for page harvesters >;^).
By Greg Harvey
<Greg.Harvey@thezone.net>
My ICQ#: 60927702
Copyright (c)1997, 1998, 1999