In software, everything is objects. Objects have capabilities, aka permissions or authorization.
But most systems hand out capabilities in bulk. Log in once, and you can touch almost everything that account is allowed to touch.
Object-capability security is different.
I had a stupid idea for a text editor where all the formatting controls were continuous and scrubbable, so you could have 30% bold -50% italic half-left-aligned. stupid and dumb!
@Ngnghm@geoffreylitt I won't get started on shared state concurrency (and a modifiable program is shared state, unless you do COW/Worlds). Reflective change should be per actor . I can imagine even dealing with the stack, but it's way complicated.
paging smalltalk experts: does smalltalk have good approaches to dependency upgrades?
iirc there was some work done on representing dependencies in some serializable way outside an image? and i know there's some data migration stuff on object instances too...
but without having deep smalltalk expertise, my initial sense is that upgrading running code in an image feels a lot messier than static "trad code". (eg, what happens if i have modified parts of the dependency at runtime??)
@Gilad_Bracha@avibryant@alexwarth@jonathoda
This is way too complicated to discuss on X.
In general it's true that you figuring out the dependencies can be much harder than in a trad setting.
There's the whole question of dynamic software update (DSU); that's generally not something that static systems can even do, so not a fair comparison.
For the general case of updating random code in a live image, AFAIK it's basically update and run some custom code on all relevant instances to restore invariants. As I said, most systems cannot do this under any circumstance. The necessary primitives are missing and under appreciated
There are kind of halfway stories in Erlang, or with Java class loaders, or in various papers on DSU. They tend to depend on some specific architecture pattern, which you could always emulate almost trivially in Smalltalk. Not sure if anyone bothers.
The canonical tool for that sort of thing was probably Envy, but I never worked with it. You might also look at Self's Object Transporter which is relevant.
Of course, Newspeak imposes language rules that help a LOT, because you always know what a module depends on. It's way ahead of whatever excuse for modularity your trad-static stuff uses.
For finer grain stuff, types would be helpful. Soon, Claude-willing, I'll have the long planned optional typechecker fully working to address that too. TBH, it's never been a priority; still isn't.
Another tradition to look at would be Lisp, especially the Symbolics Genera stuff; it's the only real competitor to Smalltalk and its descendants.
If you have more specifics about why the sudden interest, talk to me. As I say, X is neither the time nor the place.
Last year, I was invited to write an essay, to be included in a book on the occasion of Java's 30th anniversary. The book never materialized, and I forgot about it.
So belatedly, for historians/archaeologists/pathologists:
https://t.co/ozt8JUCQdO
@Ngnghm Yes, this why Newspeak just overrides things and leaves it to the program to decide how to define the override.
class X = super X ... is a common pattern, but entirely up to the user, and not very hard to do explictly.
Added MCP support to Angle
ChatGPT can send me things to read on @daylightco and use the notes I made as context later
60 fps eink + AI - is this the future of reading?
https://t.co/OFGpg2nb7K
@tomcxphillips Only a bit off-topic. I hate the X UI. It seems designed to make conversation difficult. It is a prime example of a closed app I would like to modify.
Open source is part of the solution. No amount of plugins and extension points works, because one cannot anticipate all the changes people might want to make.
The other part is running on alive engine, so one can make these changes while preserving state and get immediate feedback.
Together, the above will allow AIs to make modifications that ordinary users, not just programmers, can apply and immediately evaluate to see if they are what they wanted.
@Plinz Philosophy has been a in a rear guard action for centuries, retreating from topics as science learns to tackles them. Consciousness is one of the last refuges. Also, a sothers noted, there are some, like Dennett, that have addressed AI and computation.
@mlhaufe@awelonblue@johncrickett AFAIK, no. Byte code very commonly, but not machine code. That stuff is usually in the underlying engine (C or C++ mostly) and not exposed. But Bee Smalltalk might differ, as it's Smalltalk all the way down.
We put a live programming system's entire heap inside an Automerge document — every object, class, method shared + persistent. It all worked, but it was sloooow.
New lab note with @daningalls and @pvh on the optimizations that made Livelymerge 64× faster: https://t.co/Ra0S3aAKcK