Live data from Hacker News

The Inevitable Death of VMs: A Progress Report [pdf]

cs.kent.ac.uk

11–20 of 27 posts

Re: The Inevitable Death of VMs: A Progress Report [pdf]

#11
post #8
post #6

Earlier quoted context omitted.

> I expected this to be about system virtualization, not language VMs. Interesting though, but not my area of expertise. The blatant reuse of abbreviations and terms is one of my pet peeves. For example, VM can mean Virtual Machine, Virtual Machine, or Virtual Memory. Yep, three completely distinct things, two of which are helpfully referred to under the same expanded name as well. Do you know all three? mroche has h…

Your first two "virtual machines" are actually not that different. Sure, xen simulates the same CPU type as host, and talks to host via block devices and raw sockets, and each guest includes the full OS and filesystem; while Java VM simulates a completely different CPU, and uses host's OS for filesystem and TCP/IP access. They seem pretty distinct. But you are just looking at the sides of the spectrum, and there are…

Your correct that "OS VM" and "language VM" blur the line.

Perhaps the most striking frequent differences between a typical OS VM and a typical language VM is memory management.

...Which is the very thing that the author sets out to bridge the gap for. Were higher-lever memory management available in the OS, the line would become truly fuzzy between the two.

Re: The Inevitable Death of VMs: A Progress Report [pdf]

#12
post #9
post #8

Earlier quoted context omitted.

Your first two "virtual machines" are actually not that different. Sure, xen simulates the same CPU type as host, and talks to host via block devices and raw sockets, and each guest includes the full OS and filesystem; while Java VM simulates a completely different CPU, and uses host's OS for filesystem and TCP/IP access. They seem pretty distinct. But you are just looking at the sides of the spectrum, and there are…

I'd also add that I believe the usage in the title here is a little obscure -- I think almost any generalist programmer (i.e., not someone who exclusively works in program language VMs or in system VMs) would assume "VM" refers to a system-level virtual machine. At one point I interacted with the JVM and its quirks on a daily basis, and I never started referring to it as "the VM", it was always "the JVM". I suspect i…

The usage has changed over time. Go back 15 years, and I'd expect people would more commonly associated "VM" with the language VM. Of course, that historical development fits well with the high-level claims made in the paper.

Re: The Inevitable Death of VMs: A Progress Report [pdf]

#13

Very interesting. Had to point the irony though > A key hypothesis of the liballocs design is that existing VMs may be retrofitted onto it at fairly modest effort, rather than being thrown away or substantially rewritten. A previous partial retrofitting (of V8) exists, but is challenging to maintain; therefore, input is sought on alternative candidate VMs for use as retrofitting targets.

In all fairness to the author, casually maintaining any major changes to V8 or Chrome for more than a month is borderline impossible. The whole codebase undergoes massive churn on a release-to-release basis. There are projects like LibCEF that have the rug pulled out from under them every release or two because some major subsystem got completely overhauled.

So, the difficulty of maintaining the v8 changes is kind of meaningless. The fact that it's possible at all is the interesting part!

Re: The Inevitable Death of VMs: A Progress Report [pdf]

#14
post #9
post #8

Earlier quoted context omitted.

Your first two "virtual machines" are actually not that different. Sure, xen simulates the same CPU type as host, and talks to host via block devices and raw sockets, and each guest includes the full OS and filesystem; while Java VM simulates a completely different CPU, and uses host's OS for filesystem and TCP/IP access. They seem pretty distinct. But you are just looking at the sides of the spectrum, and there are…

I'd also add that I believe the usage in the title here is a little obscure -- I think almost any generalist programmer (i.e., not someone who exclusively works in program language VMs or in system VMs) would assume "VM" refers to a system-level virtual machine. At one point I interacted with the JVM and its quirks on a daily basis, and I never started referring to it as "the VM", it was always "the JVM". I suspect i…

An important bit of context is that this is a talk from the workshop "MoreVMs", which is about -- you guessed it -- language VMs and not systems VMs. In that context, the qualifier is not necessary.

In more general contexts I tend to write "language VMs" explicitly.

Re: The Inevitable Death of VMs: A Progress Report [pdf]

#15

Very interesting. Had to point the irony though > A key hypothesis of the liballocs design is that existing VMs may be retrofitted onto it at fairly modest effort, rather than being thrown away or substantially rewritten. A previous partial retrofitting (of V8) exists, but is challenging to maintain; therefore, input is sought on alternative candidate VMs for use as retrofitting targets.

In all fairness to the author, casually maintaining any major changes to V8 or Chrome for more than a month is borderline impossible. The whole codebase undergoes massive churn on a release-to-release basis. There are projects like LibCEF that have the rug pulled out from under them every release or two because some major subsystem got completely overhauled. So, the difficulty of maintaining the v8 changes is kind of…

Thanks! Indeed I should have said "no more difficult to maintain than V8 in general... i.e. well beyond a researcher's means".

Re: The Inevitable Death of VMs: A Progress Report [pdf]

#16
post #3

GitHub repository: https://github.com/stephenrkell/liballocs I read the paper imagining a kind of COM implementation (apartments/marshalling/...)? But the Github readme makes it seem more like a kind of tagged malloc wrapper.

Ouch. :-) There's a lot more to it than that, though wrapping malloc is certainly one part of it. (Reminds me I should finish my blog post on why wrapping malloc reliably is way harder than it should be.)

But the key idea is to avoid introducing new abstractions -- anything that liballocs formalises should be commonly "lurking" in there already. So types and allocators are OK, but apartments would not be. It's not a new programming model... the newness should be at the meta-level only, i.e. ways of describing what existing code already does.

Re: The Inevitable Death of VMs: A Progress Report [pdf]

#18
post #6
post #2

I expected this to be about system virtualization, not language VMs. Interesting though, but not my area of expertise.

> I expected this to be about system virtualization, not language VMs. Interesting though, but not my area of expertise. The blatant reuse of abbreviations and terms is one of my pet peeves. For example, VM can mean Virtual Machine, Virtual Machine, or Virtual Memory. Yep, three completely distinct things, two of which are helpfully referred to under the same expanded name as well. Do you know all three? mroche has h…

Also VMS was an operating system for DEC VAX and Alpha back in the day. Fond memories of it, it is still more advanced in some ways than modern OS’s. I believe there may have been a port of it to Itanium but I’ve never seen it.

Re: The Inevitable Death of VMs: A Progress Report [pdf]

#19
post #10
post #4

tl;dr this is a two page description of Stephen Kell's liballocs library [0]. Basically, it's wasteful to install jvm, python interpreter, and electron. He's advocating that new languages use (u)nix infrastructure (processes, files, etc) as much as possible. His library is supposed to assist with this by providing process level gc. It provides a hierarchal view such that a caller allocates objects, rather than flat m…

> As an alternative view Is that really an alternative view? In a liballocs world some large part of the problems Cliff Click describes would be solved; everything is 'native' and playing by the same rules. The 'foreign' part of FFI would have no meaning. The cynic in me wonders what value liballocs delivers that is so compelling as to motivate many disparate systems to adopt it. People are entirely content to muddle…

Good question. I agree that endless muddling has shown remarkable mileage.

liballocs is not quite there yet, but is progressing (er, when I get time, which is not often enough). Beyond that, adoption is cultural. We need to build a killer "added value" in one environment which makes enough waves that everyone else wants it. We're creeping closer... with Guillaume Bertholon we have made an initial "FFI-less" for CPython which I think could be the beginnings of that kind of killer addition. You might like to read our workshop paper about that, which I've just made available: https://www.cs.kent.ac.uk/people/staff/srk21/#vmil19

Re: The Inevitable Death of VMs: A Progress Report [pdf]

#20

Interesting that the author makes no mention of CLR, Microsoft’s attempt at the same thing which has been around for 20 years.

True that the CLR is not mentioned by name, but it is covered. I invite you to read the text again, and especially the following bit.

"Specifically, we should aspire to package language implementations in a way that renounces ‘one true VM’, instead allowing first-class interoperability with the host environment (perhaps at modest drop in performance), the same interoperability with other VMs past and present, and tool support which ‘sees across’ these boundaries."

The CLR simply doesn't do these things, as witnessed by the debacle of "Managed C++" and the usual FFI wrapper tedium of "explicit P/Invoke". It is a classic "one true VM", albeit more language-inclusive than a single-language VMs.

Post reply on HN