If you needed any more evidence that memory safety is the future...

Paulo Pinto via Digitalmars-d digitalmars-d at puremagic.com
Wed Mar 8 05:50:28 PST 2017


On Wednesday, 8 March 2017 at 13:12:12 UTC, Minty Fresh wrote:
> On Sunday, 5 March 2017 at 11:48:23 UTC, Jacob Carlborg wrote:
>> On 2017-03-03 16:23, Moritz Maxeiner wrote:
>>
>>> That would be a good next step from an engineering 
>>> standpoint, I agree,
>>> to proceed to minimize the amount of trust in people you need 
>>> to have vs
>>> verifiable safety.
>>> I have considered porting something like seL4[1] to Rust, but 
>>> ultimately
>>> this would take a significant amount of time and even if done 
>>> you'd then
>>> have the biggest problem any new kernel faces: Hardware 
>>> support. Driver
>>> development is AFAIK mostly done by people working for the 
>>> hardware
>>> manufacturer and you're going to have a hard (probably closer 
>>> to
>>> impossible) time convincing them to spend money on driver 
>>> development
>>> for you. And if they don't you'll have close to 30 years of 
>>> hardware
>>> support to catch up on by yourself.
>>> But suppose you limit yourself to a single (or at most a 
>>> handful of
>>> homogeneous) platform(s) like [2], e.g. a new AArch64 board. 
>>> Suppose you
>>> even take one where the hardware is open so you can audit its
>>> schematics, then you'll *still* either have to use 
>>> proprietary firmware
>>> for the (partially onboard) periphery (and have unsafe 
>>> interfaces to
>>> them), or - once again - write all the device firmware 
>>> yourself.
>>> And once you've done all of that you're still missing 
>>> userspace, i.e.
>>> you have a nice new OS without any actual use for it (yet). 
>>> So you
>>> either start writing your own incompatible, safe userspace, 
>>> or you're
>>> going to decide to integrate the userspace of existing OSs 
>>> (probably
>>> POSIX?) to your new OS, so you're going to be writing your 
>>> own (safe)
>>> libc, (safe) pthread, etc, exposing (once again) unsafe APIs 
>>> to the top.
>>> It will be safer than what we currently have on e.g Linux 
>>> since you can
>>> probably make sure that unsafe use of them won't result in 
>>> kernel
>>> exploits, though; this will, of course, take even more time.
>>> Finally, at the arduous end of your journey you're likely 
>>> going to
>>> notice what - in my experience - most new OSs I've observed 
>>> of the years
>>> experience: Essentially nobody is interested in actually 
>>> switching to a
>>> volunteer-based OS.
>>> Honestly, I think you need serious corporate backing, a 
>>> dedicated team,
>>> and like 5-10 years (low estimate) of guaranteed development 
>>> time to
>>> have a snowballs chance in hell to pull this off and the only 
>>> possible
>>> sponsors for this I'm both aware of and would currently trust 
>>> not to cut
>>> you off in the middle are either already working on their own 
>>> OS[3], or
>>> have dedicated their R&D to other things[4].
>>
>> I agree. The only potential hope I see would be to port Linux 
>> to a memory safe language.
>
> By Linux, I hope you don't mean the kernel itself. Because 
> outside of being an entirely fruitless venture, it shows a lack 
> of understanding of what's involved in kernel programming.
>
> Most memory safe languages I know don't take well to using bit 
> arithmetic with pointers, deliberately smashing the stack, self 
> modifying code, and a whole plethora of things required to work 
> with the CPU in a freestanding environment. Within the span of 
> a single function call, an address in memory is easily able to 
> refer to a different address on physical memory.
>
> Forgive me if I'm wrong, but I don't think you can get that 
> much benefit out of memory safety when you change the address 
> of the stack pointer manually and start to manually prefill it 
> with new values for general registers.

I will just leave this here.

https://muen.codelabs.ch/



More information about the Digitalmars-d mailing list