Charles Childers


blog | parable | retro | ios apps | fountain pens


Apologue and Parable as a Service

Up to this point Apologue has used a simple custom backend. This has worked, but has some limitations that are annoying to me.

Parable as a Service (begun with the 2016.02 release) will become very important as a means of resolving these issues. It already resolves my biggest issues:

Currently the only thing using PaaS is netlistener. This is currently slow, but should improve as the offline support code is written / fleshed out and fewer network requests are required.

PaaS will be a big part of the initial work done for Parable 2016.04 (work on this starts next week). Part of what I've been waiting on is the opportunity to switch to Python 3 only. This is finally on the horizon (I was holding off due to Pythonista on iOS; there's now a beta with Python 3 support. It works fine for my uses, and I'm hopeful that it'll be publically released in the next couple of months.)

The API

As it currently stands the API consists of the following requests.

getpso

First you'll need a snapshot. You can use one created with gen-snapshot.py or obtain one via the API:

req=getpso

Returns a snapshot

evaluate

req=evaluate
pso=snapshot string
source=string of code to evaluate

Returns a snapshot

dictionary

req=dictionary
pso=snapshot string

Returns a JSON data with keys: names, pointers.

stack

req=stack
pso=snapshot string

Returns a JSON data with keys: values, types.

dictionary_names

req=dictionary_names
pso=snapshot string

Returns a comma separated list of names in the dictionary

dictionary_map

req=dictionary_map
pso=snapshot string

Returns a comma separated list of pointers in the dictionary

stack_values

req=stack_values
pso=snapshot string

Returns a comma separated list of values on the stack. These are raw numbers: use the stack_types to help map these to human readable data.

stack_types

req=stack_types
pso=snapshot string

Returns a comma separated list of type constants for values on the stack. Pair with stack_values to help create human readable data.

errors

req=errors
pso=snapshot string

Returns a comma separated list of error messages. Use clear_errors to empty the error log.

clear_errors

req=clear_errors
pso=snapshot string

Returns a snapshot.

get_slice

req=get_slice
pso=snapshot string
s=slice number

Returns the memory values in a given slice. These are the raw values without type information.

Future API Additions

At a minimum I need to implement the following to round out the core functionality.

get_types

req=get_types
pso=snapshot string
s=slice number

Return the type constants for the values in a given slice.

get_dependencies

req=get_dependencies
pso=snapshot string
s=slice number

Return a comma separate list of slices that are needed for execution of a specified slice.