On Wed, Jul 15, 2015 at 12:24 AM, Keean Schupke <ke...@fry-it.com> wrote:
> You don't want to have a large runtime for a systems language. For example
> when writing an operating system kernel, you don't want invisible code added
> to the kernel that may be insecure. In general, if I write a program that
> does 1 + 2, I expect the binary to do exactly that, without needing to load
> a large runtime to do that.

I agree with the stuff above, but I don't see how it argues against
what I said. The fact is that if you want non-fragile interfaces, you
need the language to somehow support non-fragile interfaces, even if
that means you need more runtime support.

You are only pointing out that the requirements of a systems
programming language and the requirements of a modular application
programming language are somewhat at odds.

(Also, I don't see why runtime support for non-fragile interfaces
would have anything to do with the implementation of (1 + 2).)

> Further I would like to write any dynamic
> loading code in my language.

That's pretty hard, I think, if you want any sort of safety property
for your language.

> If there is no way to do the unsafe pointer conversion in the language then
> you cannot write the runtime in your language, and will have to write it in
> assembly, or 'C'. This potentially makes all programs in the language
> unsafe, rather than just those explicitly using the unsafe address
> conversion primitive.

No, not if I'm understanding you. Whether the language directly
supports unsafe pointer conversion, or supports calling native code,
it's an unsafe escape hatch. Any program using an unsafe escape hatch
may be unsafe. Programs that stick to the safe part of the language
are safe, assuming the language implementation is correct.

The only real choice is whether non-fragile interfaces are supported
by the safe part of the language. It seems like a bad idea to allow
fragile interfaces in a safe language, because then linking a wrong
version makes your program not so safe after all. (I am assuming
breaking fragile interfaces is unsafe. This isn't necessarily true of
all languages, but seems true for the languages we're thinking of.)

I'm starting to think that you're not aiming for a safe language, and
this is causing a miscommunication. If the language is not meant to be
safe, then I can see that your approach might be better.
_______________________________________________
bitc-dev mailing list
bitc-dev@coyotos.org
http://www.coyotos.org/mailman/listinfo/bitc-dev

Reply via email to