Re: Pony talks about Deny Capabilities

Dan Connolly <[email protected]> Mon, 11 May 2015 23:31:24 -0500
Newsgroups gmane.comp.capabilities.general
Message-ID <CAD2YivZ-dxPvkhp8diJD8acCXYZurFgts4HPXHGr7OgBJjrwAQ@mail.gmail.com>
On Mon, May 11, 2015 at 12:29 PM, Sylvan Clebsch <[email protected]> wrote:
[...]
> This primitive gives only compile-time platform information. That is, these values are set in stone for a program once it is compiled (they are not checked at runtime), and are used primarily to write cross-platform code. We have included Platform.debug, which is set to true if the Pony program was built without optimisations, but we are considering removing it.
>
> Is this form of compile-time information problematic?

Those that know better haven't mentioned it, so I suppose not. But the
reason it jumped out at me is that it reminded me of os.path.join(...)
from the python standard library. At first blush it seems sort of
harmless, but then you write some tests such as:

  >>> os.path.join('a', 'b')
  'a/b'

... and find that they work on linux but not on windows. So my
code-review senses are tuned to look for this sort of thing.

Clearly the python os.path.join() call depends on run-time state and
conveys authority.

I'm not used to thinking of ocap languages as having a separate
compile-time; E and JavaScript get flung around the network and
evaluated at runtime, which blurs the whole notion.

More on other issues separately...

-- 
Dan Connolly
http://www.madmode.com/