[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: safe/unsafe mode




Mike wrote:
> From this, and several other messages in the SRFI 77 archives, I'm
> getting the impression there's some misunderstanding here about the
> nature of safe/unsafe mode, as alluded to in the document.

Always possible. I understand safe/unsafe mode to mean that there is
some form of global switch (either compile-time or run-time) that is
controlling whether certain arithmetic operations raise an exception
when an error condition happens---or just press on. I understand that
the 'unsafe' mode allows a compiler to produce code without range
checking or tag-bit removal, with all sorts of performance benefits. Is
this what you mean by safe/unsafe mode?

In my opinion, such a global switch is an unfortunate design. As I
pointed out in my earlier email, I would prefer that you classify the
intended use of the fixnum operations, and decide on a per operation
basis whether the operation is most useful for its purpose if it is 'safe'
or if it is 'unsafe.'

One possible design for fixnums in this style is posted as
        http://srfi.schemers.org/srfi-77/mail-archive/msg00051.html
In essence the idea is to use fixnum as a 'safe' integer subrange, and
have additional 'unsafe' operations for giving access to the underlying
hardware arithmetics as a basis for implementing number types.

> I want to point out that, as far as the general idea is concerned,
> R5RS gives you *only* unsafe mode---very few unspecified situations in
> R5RS are guaranteed to signal an error, most are allowed to be
> silently ignored or lead to a crash.

Is this put forward as an argument in favor of R6RS following in this
tradition? At least you can rely on the fact that you cannot rely on
errors being caught sensibly. In this sense, I would even prefer the
R5RS design over a 'global switch' design.

Sebastian.