Phantom is, basically, a virtual machine (VM) working in a huge persistent virtual memory. Part of the VM classes (some classes, called ‘internal’) are implemented in kernel, giving VM code access to low level kernel services. Persistent virtual memory is completely orthogonal to object space and VM (no relation between, for example, object boundary and virtual memory page, etc.) and is implemented so that abrupt computer failure or loss of power leaves system in coherent state. On the application code (VM bytecode) level OS shutdown (either manual or caused by failure) is not even ‘seen’ – applications and their data are ‘never die’, they continue their work after the next OS boot up as if no shutdown ever happened.
The code of this slickly presented operating system is available on github.
I’ve always felt that these “persistent application” concepts are a big risk. It was hard enough to get OSes to the high-uptime reliability level we enjoy now, and a lot of work was poured into that.
Your average application developer isn’t going to be pouring that high amount of work into their testing.
Everything-as-an-object died its permanent death the minute the Web came along. Network links transmit things as byte streams, so any incompatible record format will incur large serialization/deserialization penalties, like the complexity difference between ftp’ing a file (or sending it via zmodem/kermit in band along a shell link for that matter) and “zfs send.” If everything has to be shared as byte streams, it only makes sense for the OS to work with them directly. Windows with .NET has an everything-is-an-object view of the world but approximately nobody uses it when they can use Unix instead for writing network applications.
Think about how much harder debugging an OS would be too, if state persists across power cycles by default. If you can’t reboot to get a known clean system, the default response will be “uh… reinstall.”
All of the information shared by you is unique to me. thank you for sharing it with us.
NOTE: geek squad
emmAjackson01,
Good job on the spam, it almost looked like a legitimate post.
I wonder if geek squad knows the SEO company they hired is spamming wordpress blogs?
Maybe you shouldn’t assume everything is serialized over HTTP(S)? For instance when I play a shooter most data is stored locally and cached in RAM, the only things sent are updates to/from a remote server. Even when rendering a website data is downloaded and stored locally in a more efficient format that what is sent over the internet.
I don’t completely disagree but for a different reason, by biting the bullet of inefficient communication it’s easier to make heterogeneous systems work over a lot of different communication types. However that doesn’t mean I believe Unix with the text-as-representation as a kind of fundamental building block is more suited for an operating system, an object based system with efficient binary formats is still better both locally and remotely.
o_O
Everything is nothing but a bunch of byte strings at a low enough level. If you’re rationalizing JSON, that’s mainly a problem with javascript and web tech in general being awful. gRPC, which uses the binary protobufs, is used quite a bit for communication between services, and once you don’t have to worry about humans, or breaking through firewalls, you get a lot more options.
This would be pretty nice actually. Snapshot the OS and diff it with a good example.
This kind of sounds like a unikernel where the idea is to redeploy if the server is bad.
Actually Phantom keeps (at least) two snapshots of prev state. If last is broken, previous can be used to roll back. It is possible to keep more, or have, say, monthly shots.
Usual question – if system went into an error state once, will it do it again starting from the same condition?
Possibly. Or, if the error was in kernel, it is possible to get new kernel and restart.
At least, there is a chance.
And if one program did something wrong, just that program must be fixed and reinstalled. Not whole OS.
It is amazing how we used to non-persistent environment.
Every discussion of Phantom starts with a comment which boils down to “I am afraid the fact that my variables will not be cleared by OS reboot”.
As if someone said – “I’m afraid to see that when I come back to room, everything is still there and not vanished till I was absent.”
Their entire website looks like some middle manager just vomited up buzzwords and spread them across a canvas.
I know the clean, bright fade-in-fade-out style of websites is all the rage nowadays, but i can’t help but feel the devs should be spending more time working on the content of the site and actual product they want to ship than frilly bells and whistles that no-one really gives a damn about.
C’mon! Template. 🙂
You must be great at parties.