Please enable JavaScript to view this site.

A-Shell 7.0 Release Notes

Navigation: Notes by Version and Date

1775 — 11 August 2025

Scroll Prev Top Next More

1775.0.1

EIR

ASHNET.DLL / libashnet.so 1.14.204 refinement: support base32 encoding and decoding in Xcall CRYPTO. New flag CRYPTF_KEYBASE32 (&4000) added to crypto.def to support keys encoded in base32, needed to support 2FA / TOTP (two factor authentication using time-based one time passwords) generated by smart phone authenticator apps.

1775.0.2

EIR

Xcall TIMES enhancement: new opcode 4 returns seconds since "the epoch". Needed to support 2FA / TOTP.

1775.0.3

EIR

Various Compiler Updates.

1775.0.4

New

PYFUNC() Function provides a means to call an external function written in Python (version 3).

1775.0.5

Fix

MX_FILESTATS: attempting to return the hash of a directory was generating an "illegal argument" msg. The hash and version arguments are now just ignored for directories.

1775.0.6

EIR

Minor refinement to MX_OCVT to increase the maximum width of the output from 8 to 64 characters.

1775.0.7

New

Internal support for the new A-Shell Debugger (ADB.LIT).

1775.0.8

New

New system command ADB.LIT (A-Shell DeBugger). Allows a client instance running ADB to debug a target instance in another job. Supports breakpoints, single stepping, displaying variable values, etc. Under development, more details to follow.

1775.0.9

Fix

XTREE:  Date ~Format specified was messing up sorting and interfering with the use of the DatePicker control for editing.

1775.0.10

Fix

XTREE: resize the tree window was restoring hidden columns if the were not yet saved.

 

 

 

Compiler Updates

Edit 1075: support implicit CALL statement when first token on line is function, e.g. the following statements are now equivalent:

call fn'foo()

fn'foo()

 

Edit 1074: fix spurious unmapped variable error when compiling LSX
Edit 1073: support ++PRAGMA LIT (equivalent to FORCE_EXT "LIT" but more  of a natural sibling to the existin ++PRAGMA SBX).
Edit 1072: Support new /SYM (or -sym) siwtcyh to create a SYM file. To be used for debugging.
Edit 1071: Support new PYCALL(mod,func,args...) function to call an external Python function. Arguments:

mod is the filespec containing the python code (e.g. mycode.py)

func is the name of the python function with the specified module

args are the arguments to the function

The interface is preliminary state, with more details to follow.

 

 

 

PYFUNC() Function

The language and runtime enhancement PYFUNC() function provides a means to call an external function written in Python version 3.

PYFUNC(module, funcname {, arg1, ... argn})    ! (numeric return value)

PYFUNC$(module, funcname{, arg1 ... argn})     ! (string return value)

where:

module  (String)  [in]

filespec (native format) of the module containing the function; (default extension py)

funcname  (String)  [in]

name of the function to call

arg1 ... argn  (any scalar type)  [in]

zero or more arguments to the function

PYFUNC uses the Python C interface API to initialize the Python environment. If necessary, certain Python environment variables can be set via the file %MIAME%/pyconfig.ini, formatted as follows:

[Python]

;Base directory for Python installation (executable)

HOME=C:\Program Files (x86)\Python312-32

;PLATLIBDIR=

 

The pyconfig.ini file can be eliminated if Python is set up to run from the command or shell prompt without explicit settings.

Unlike other A-Shell function interfaces, the parameters here are all read-only, so if the function is to return anything to caller, it must be done through the return value of the function, either a scalar or an auto-extend array.  Examples:

city$ = pyfunc$("./geo.py", "capital_of", "California")

median = pyfunc(".math.py", "median", 5, 23, 15, 100, 44, 11)

dimx ary(0), b, 2, auto_extend

...

ary() = pyfunc("./mymod.py", "myfunc", 10, 20, 30)

 

Warning: this interface is still in the experimental stage. We're not yet sure if there's really any application for it, and there are a number of complexities that will need to be sorted out. Developers are advised to provide feedback to us before investing too much effort into it.