libera/#ecl - IRC Chatlog
Search
14:15:47
selwynning
are there any dependencies aside from libffi and bdwgc that are likely to need porting?
14:17:27
jackdaniel
ecl dependencies are: libffi (optional, requires porting), threads (optional, requires porting), bdwgc (required, requires porting), gmp (required, has portable "C" implementation)
14:18:06
jackdaniel
there are also platform specific bits in files unixfsys.d and file.d and they may need porting
14:18:29
jackdaniel
but from dependencies I think that only bdwgc must be ported (and libc for exotic platforms without it)
14:19:49
selwynning
libffi is somewhat of a lower priority since im ultimately aiming to run in a sandbox, but i will at least think about it eventually
14:20:37
jackdaniel
if you can afford cross-compiling ffi bindings along with ecl, then libffi is not strictly required
14:28:04
jackdaniel
regarding a "simulated stack", note that we already do something like that - we have a lisp stack in the interpreter
14:28:33
jackdaniel
we have also a frame stack that is shared by all runtimes (these frames basically represent return points)
14:28:55
jackdaniel
and there is ihs frame stack (debugging stack to keep track even of inlined lisp functions along with their "real names")
14:29:49
jackdaniel
these things have somewhat extensive comments in appropriate files (stacks.d stacks.h environment.d etc - I might have missed some)
18:56:43
selwynning
if we build without cmp - will ecl write any files anywhere during normal operation
19:28:29
jackdaniel
so you could i.e point a logical pathname to an in-memory vector and have it working like a file
19:44:02
selwynning
i did think it would be nice to mix logical pathnames with this virtual filesystem stuff
20:03:56
selwynning
tempted to simply turn off gc by defining gc_malloc to be malloc and seeing if ecl builds
20:46:43
jackdaniel
it initializes stacks and the environment, if there are any top-level forms that need to be executed at startup - they are
20:48:01
jackdaniel
about 10 functions initializing different modules, they are nicely named like init_gc, so you may look it up easily