aboutsummaryrefslogtreecommitdiff
path: root/alisp.h
AgeCommit message (Collapse)Author
2025-10-19stream: Introduce PIPE typeAryadev Chavali
Main reason to have this at all is to make char-by-char reading feasible. This occurs at `stream_chunk`, and previously if we passed in STDIN for `stream_init_file`, STDIN will only terminate once STREAM_DEFAULT_CHUNK number of characters have been fed into the pipe. This isn't desirable for STDIN (we really want to read char-by-char for expressions), nor would it necessarily be desirable in network applications. So any stream marked STREAM_TYPE_PIPE will only chunk character-by-character rather than genuine chunks.
2025-09-01Some changes to how streams work, clean up alisp.orgAryadev Chavali
2025-08-29Add printer for SV's that provides debug informationAryadev Chavali
2025-08-28Still got some failures, but a basic stream implementationAryadev Chavali
Need to fix what's going on with the example in main.c using stdin.
2025-08-21Make nicer primitive functions for car/cdrAryadev Chavali
If it isn't a CONS, we return NIL instead of failing. This way, we can use it in our general iteration functions. Eventually the actual runtime would use this as well. The macros are mostly for internal use to do assignment etc.
2025-08-21Made some tests to go throughAryadev Chavali
2025-08-20Refactor vectors to SBO, removing inlined entirely.Aryadev Chavali
Avoid 2 levels of indirection, and having to allocate twice for small payloads, by having an inlined array on the vector directly! Beautiful and simple. Required a bit of refactoring around the board, but overall the result makes me feel happier.
2025-08-20refactor lisp runtime to use vec_t* instead of ivec_t*Aryadev Chavali
bit nicer to look at, should have about the same painful performance hit anyway.
2025-08-20Stable vector implementationAryadev Chavali
Stable vectors will be used in the lisp runtime to implement actual vectors, instead of using the disgusting lvec trick. This way we at least can get attributes about the vector through one pointer hop.
2025-08-20remove parameter names in headerAryadev Chavali
2025-08-20ivec_ensure_remaining -> ivec_ensure_freeAryadev Chavali
2025-08-20vec -> ivecAryadev Chavali
I'm going to implement a normal stable vector instead of an inline vector so we have both options for use. I think that's smarter than just sticking to one.
2025-08-20Use sv_t instead of raw char*Aryadev Chavali
We're storing them as sv_t's anyway, we're fucked with regards to indirection. Thus, let's be nice to ourselves, and deal with the structures. We get the size of the structure for free anyway!
2025-08-20rename base.h -> alisp.hAryadev Chavali
Makes more sense when you think about including it as an external library