Charles Childers


blog | parable | retro | ios apps | fountain pens


Parable 2016.03: Changes to Allegory

Allegory is seeing some significant changes in the next release of Parable. So what's coming / changing?

Faster startups: Allegory now initializes from a precompiled snapshot instead of embedding the source and compiling on start. This significantly cuts down the initial load time.

Goodbye default.j and snapshots: Allegory had two functions for saving and reloading snapshots: save-snapshot and reload-snapshot. These have been removed. Additionally, it used to look for a ~/.parable/default.j to initialize from. This is no longer supported.

Hello turnkey: in place of the snapshots, Allegory now allows for generation of turnkey executables. These replace the stored snapshot with a new one, containing what would have previously been in the standalone snapshots. These also allow leveraging a couple of hooks for standalone scripts.

Example of this:

[ 'Hello, World!\n' display bye ]
'allegory.on-start' :

'hello' save-as bye

This creates a new hello script that runs the code in allegory.on-start.

Simplfied command line arguments: The older functions for obtaining command line arguments are being depreciated. It's now possible to get the argument list as an array and use the standard words for dealing with this. I'll be reimplementing the older functions using the array based access, and expect to remove them in a future release.

Libraries: With the addition of vocabularies in the core Parable language, Allegory will be supporting loading libraries corresponding to them. I'm still doing some work on this, but you'll be able to do something like:

'Tables~' need
[ 'Tables~' 'Stack~' ] needs

Allegory won't load a vocabulary that's already present. Libraries will be in one of two places: ~/.parable/library or ./library.

At present this is only partially implemented, but should be fully in place within the week.

Vocabularies: some of the Allegory functionaity will be wrapped into vocabularies. This is ongoing, but there'll at least be vocabularies for all I/O related functionality.