Please enable JavaScript to view this site.

A-Shell 7.0 Release Notes

Navigation: Notes by Version and Date

1786 -- 23 May 2026

Scroll Prev Top Next More

       

 

A-Shell Release Notes 7.0.1786.2 (23 May 2026)

1786.2.1   EIR

Compiler refinement, edit 1083: IFE$(a,b{,flags}) and IFE(a,b,{flags}) will now report an error if the flags argument is specified and is of type string. Although ASB is normally pretty lenient about string/numeric types, providing automatic conversions as needed, in this case the use of a string for the flags argument is much more likely to be a coding error, probably confusion between IFE() and IFELSE(). So flagging it as an error and forcing the code to be made unambiguous seems better than risking unexpected runtime behavior.

1786.2.2   EIR

Compiler refinement, edit 1083: IFELSE$(cond,a,b) and IFELSE(cond,a,b) now automatically convert a string cond(ition) expression into a numeric expression. In other words, IFE(s$,a,b) is compiled as IFE(val(s$),a,b) if s$ is a string expression. Previously, the runtime behavior was ambiguous, as it would have depended on whatever numeric value was previously pushed on the expression stack.

One could argue that IFELSE$(a,b,c) should be flagged as a compiler error if a is simply a string expression. But it seems most likely that programmer's intent was to treat it as IFELSE$(val(a)#0,b,c), which it will now do.

 

A-Shell Release Notes 7.0.1786.1 (17 May 2026)

1786.1.1   Fix

Implicit DYNSTRUCT binding: SBX subroutines were trying to share the same structure index as the main RUN file, causing mismatches along with errors 70 through 74.

 

A-Shell Release Notes 7.0.1786.0 (07 May 2026)

1786.0.1   New

Add support for testing the exit status of RUN, LIT, and in some cases, SBX modules, and pass that status through to the exit status of the A-Shell session on exit.

ASB errors are automatically transferred to the exit status.
The SBX exit status will be passed to the caller (parent) if the AF_SBXASRUN flag is set.
RUN and LIT programs executed via HOSTEX will pass their exit status to the caller (parent).

1786.0.2   New

Add new MIAMEX function MX_EXITSTATUS (209) which provides a way to get (opcode 0) or set (opcode 1) the exit status of RUN, LIT, and in some cases, SBX modules.

xcall MIAMEX, MX_EXITSTATUS, opcode, status

Parameters

opcode  (Num)  [in]

0 = get, 1 = set

status (Num)  [in/out]

Receives or supplies the exit status. In the case of Get, it will be the exit status of the prior execution module—RUN, LIT, or possibly SBX, as noted above. In the case of Set, it sets the pending exit status, i.e. the exit status of the current module that will become active when it exits.

1786.0.3   EIR

Updates to IF.LIT (x.x.xxx) and ECHO.LIT (x.x.xxx) to support a new variable ($?) that equates to the exit status of the last module execution. For example:

RUN PROG1

ECHO PROG1 Exit Status: $?

IF $? <> 0 

    ECHO Error, cannot continue

    GOTO ENDIT

ELSE

    RUN PROG2

ENDIF

;ENDIT

 

Note that this variable is not recognized by DO.LIT.

1786.0.4   EIR

Compiler refinement, edit 1082: Support ellipsis in PYFUNC() argument lists. This is mainly useful for creating wrapper functions, for example:

result = Fn'PYFUNC'Wrapper(status, pymodule$, pyfunc$, arg1, arg2)

...

 

function Fn'PYFUNC'Wrapper(status as i2, pymodule$ as s0, pyfunc$ as s0, ...) as f6

    on error goto trap

    .fn = PYFUNC(pymodule$, pyfunc$, ...)

    status = 1  ! success

    xputarg @status

    exitfunction

trap:

    status = -err(0)

    .fn = -1

    xputarg @status

endfunction

1786.0.5   Fix

Fixes ellipsis in function call argument lists; the resulting .ARGCNT value was one higher than it should have been.