3 ms·
Oh, you're right, I don't. I assumed that they were also gc, but I guess not! How was the performance of the old mainframe formats?
by lachlan-sneff 8y ago
Oh, you're right, I don't. I assumed that they were also gc, but I guess not!
How was the performance of the old mainframe formats?
- pjmlp 8y agoPretty ok for their workloads, bytecode is only used as portable executable format. The kernel has a JIT and they are converted into native code at installation time, or when an operator decides to retrigger the operation. In a way, Android (5 - 7), iOS bitcode and WP 8.x MDIL follow similar ideas. And something that I forgot, MSIL also has support for C and C++, hence why all C# 7.x performance improvements don't require any runtime change, just exposing features that C and C++ already make use of on MSIL.
- lachlan-sneff 8y agoHow well do they support software sandboxing?
- pjmlp 8y agoNot sure if I get your point. The mainframe ones, are just like any other OS, code gets generated at installation time, then they are OS processes just like any other. Java and MSIL depend on how they get used. Both have bytecode verifiers, and multiple ways to deploy. Either as single runtime, where strong typing plays the role of sandboxing, or as multiple processes/containers. Just to use .NET as example, not going to make an exhaustive list. .NET Micro Framework deployed on Netduino, the runtime is the OS, only strong typing takes place. .NET Framework on Windows, and .NET Core on Windows/Mac/Linux, each CLR instance gets their own OS process, which might be additionally wrapped into an OS container. .NET Core on UWP, applications run as separate sandboxed process using the UWP sandbox model. Xamarin on iOS runs with the iOS sandbox model, after AOT compiling for deployment. Xamarin on Android, runs with the Android sandbox model where binary code gets dynamically loaded into ART instance, sandboxed via SELinux and Linux container mechanisms. And regarding security, Web Assembly still fails short of preventing memory corruption inside of the loaded module. I was hoping pointers would be tagged, but that doesn't seem to be part of the design goals.