Fixpoint

2020-09-29

Gales Scheme

Filed under: Historia, JWRD, Scheme, Software — Jacob Welsh @ 22:26

There's a project I've been working on, passionately though intermittently, for some years now that I'm at last going to start laying out, one bit at a time.(i)

Its framing started out ambitiously enough as a simple yet complete Scheme interpreter for the Unix environment. The idea was to build a robust implementation of this classical, expressive and compact programming language, that would fit in my own head and enable me to meet business needs as technical co-founder of what's now JWRD Computing, with greatly reduced reliance on the conventional options of the day. Those seemed to offer only "industrial scale" bug-infested quagmires on one end and half-assed hobbyist efforts on the other.(ii) It has achieved this to some degree and is already quite serviceable, albeit for a rather narrow sort of domain.

I now envision its future as nothing less than a complete and self-sufficient computing system, enabling all of the accreted layers of software and hardware sludge - historical, modern and postmodern - to be safely jettisoned. It has a lot of growing to do, and so do I if I'm to get it there. And I'll be needing some help.

The code is already available for what I consider a maintenance branch, in V patch format here,(iii) but major changes are afoot.

  1. Hopefully not the binary sort of "bit" - though I'm going for small-scale articles on the theory that I can be more consistent about it that way. [^]
  2. For what it's worth, it was an attempt at reading the TinyScheme source code that convinced me that writing my own was quite doable and yet quite necessary if I was to have the kind of diamond I sought. [^]
  3. I recently issued a re-genesis to better follow V conventions, and some bug fixes: the recommended head is gscm_fix_m_whitespace_package_install.vpatch. [^]

7 Comments »

  1. Does this mean you plan to re-write everything in Scheme?

    On a side note, there seem to be some similarities between golf and older code projects even!

    Comment by Diana Coman — 2020-10-02 @ 09:49

  2. I reckon it took me a bit to respond here because the question pulled in a number of vaguely remembered and partially digested threads. Found one to reread that involved good houses and clothes being made for a specific person. But meanwhile:

    Does this mean you plan to re-write everything in Scheme?

    What a blank check that would be! No, and that doesn't strike me as possible, or even desirable. As always, he who wants to play Mario should buy the Nintendo or run the emulator. Now, whether it's my thing that ends up the toy while "real business" happens by Excel spreadsheet, or the other way around, is a question. It would depend on finding a viable niche, and/or getting some network effect going.

    On a side note, there seem to be some similarities between golf and older code projects even!

    I have some guesses but I'd rather ask - how do you mean?

    Comment by Jacob Welsh — 2020-10-03 @ 05:41

  3. Well, my question ended up as broad as that for the very simple reason that I couldn't figure out anything *narrower* from your article above. So coming at it from the other end then, the other way to ask this would be what do you mean then to re-write in Scheme? What does that "enabling all of the accreted layers of software and hardware sludge - historical, modern and postmodern - to be safely jettisoned" even mean and how is it really a less blank cheque than what my first question clearly points out?

    I have some guesses but I'd rather ask - how do you mean?

    For the simplest part, whether in the green & break or in picking up an older project, a retreat in and a retracing of the more familiar ways is still at core exactly the same. At best, it can turn out to be perhaps not a closed loop though but more like part of an upwards spiral, there is that to be said.

    Comment by Diana Coman — 2020-10-04 @ 19:01

  4. By "complete" I mean missing no essentials. By "self-sufficient" I mean requiring nothing outside the system for its own maintenance and further development. (Since the system in question consists of code, I suppose it's understood that things like people or factories or electricity aren't in the domain that's excluded there.)

    There's a lot of "to be determined" in the details of what is essential. But I am convinced that there is indeed a gap between that and "everything". I use the systems I do because they provide things I need, not because I need all the parts they come with (and each of those in at least half a dozen flavors with their subtle interactions and incompatibilities). They're like a clock built from a thousand tiny gears, complete with the necessary-apparently mechanisms to oil them all. I'm after knowing the time, and believe it can be had with but a fraction of the clockwork.

    Not sure if I'm just dancing around your question though.

    a retreat in and a retracing of the more familiar ways is still at core exactly the same.

    Thanks for spelling it out. There's been retracing indeed but perhaps greater awareness of the costs of the familiar ways even as there is comfort in the indulgence. For instance, not having a well-oiled and listened-to system for determining what happens when, means I can't trust that something will get done at all if saved for later, which creates a sense of "must be done *right now* if it's not to be dropped", which means that whatever best intentions I start the day with, of what to do or how much time to spend, don't stand a chance.

    Comment by Jacob Welsh — 2020-10-07 @ 22:45

  5. A new bugfix patch is at: gscm_immutable_fill.vpatch, explanations enclosed. Also I have corrected the omission of signatures from the patches mentioned in footnote iii.

    Comment by Jacob Welsh — 2020-10-24 @ 07:33

  6. [...] An atrophied sort of introduction to Gales Scheme, the interpreter used by the offline signing progr... [...]

    Pingback by Gales Bitcoin Wallet (re)release « Fixpoint — 2021-12-07 @ 19:13

  7. [...] - Gales Scheme interpreter, used by [...]

    Pingback by The simplest way yet to fetch Bitcoin code « Fixpoint — 2022-02-04 @ 00:20

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by MP-WP. Copyright Jacob Welsh.