Skip to content

Latest commit

 

History

History
81 lines (80 loc) · 3.31 KB

todo.org

File metadata and controls

81 lines (80 loc) · 3.31 KB

Things We Need

deep recur

Recur is working when nested in additional forms

BUT if a loop is nested in another loop, the inner loop doesn’t recur properly.

This was a stack overflow bug! Lame. We need to address excessive stack usage

Less PTRMEM used.

We could use the top 4 bits of the pointers as counters, reusing each pointer up to 15 times

This means O(n) refer()

Also makes dereferencing hairier

Perhaps we could write a simple pre-preprocessor script?

Convert @ptr into *(ptr & 0x0FFF) ?

interrupt support

should be able to attach a function to an interrupt

more useful if functions are closures?

keyboard interrupts?

computer-side REPL shim

use readline

to hand character buffering

could potentially fix flakiness of Uno serial

would allow Emacs inferior-lisp

could host documentation system?

if in computer-side REPL, wouldn’t need to be on-device

may also be able to point at source file to “load” the entire file

Could do form validation and issue warnings

Could have extra functionality like (doc …)

better error handling/reporting

macro system

syntax-quote (`), unquote (~), unquote-splicing (~@)

special operators

do

fexpr?

we could write the macro system with this

builtin macros (when macro system ready)

control-flow

when

dolist

logic

and

or

numerics/bit ops

bit-shift-* and friends

Stop binding function-position valid symbols to themselves in the environment

This is an unnecessary waste of CONSMEM

We have a finite set of pre-defined symbols with functionality, so we can deal with them in C

We shouldn’t have to get a binding for a symbol we already know about to dispatch its execution

Perhaps we should look for one anyway though, in case it has been redefined.

If one isn’t found, we drop to compiled-in functionality

documentation and distribution

build instructions for mac, linux

deploy instructions for popular arduinos

example code (see Arduino examples)

Emacs, other editor inferior-lisp instructions (Sublime, vim?)

Things We Might Need

package/namespace support

it’s common in Arduino-land to distribute libraries; would make this easier

do we want namespaces, and how would they be implemented?

too much overhead?

jump/break/non-local returns

see also exceptions and unwind-protect

exceptions

atoms

for use with interrupts and callbacks

prevent clobbering of intermediate values

can we leverage a machine instruction for this?

lexical scope

capturing callbacks for wiring to interrupts - useful?

possibly too expensive in space

stack-friendly eval

deeply-nested code may blow stack when eval’d; audit eval

better GC

compiler

computer-hosted

would allow us to compile library functions and macros

slimmer onboard runtime

hash table/dictionary

literal support?

too much overhead?