kiedtl / bureaucrat Goto Github PK
View Code? Open in Web Editor NEWA high-level, stack-based language that compiles to Uxn bytecode.
License: MIT License
A high-level, stack-based language that compiles to Uxn bytecode.
License: MIT License
Currently, basically no memory is ever freed. The allocator isn't even deinit
'd.
Start out by writing routines for recursively freeing ASTNode
's, then start deinit
'ing the GPA, and piping the output traces through less
to find out what else is not being deallocated.
Making dip
, sip
, bi@
, bi*
, etc builtin would provide more "structured programming"-type improvements. For example, dip
would allow for refactoring the following:
move
over dup * swap -
(r move) +
into
(dip [ over dup * swap - ]) +
There would still be a manually-defined version for the stdlib though.
s/ASTNodeList/Block/g
in common.zig
, where Block
is something along the lines of struct { body: ASTNodeList, scope: *Scope }
.
Would allow for per-block locals, types, etc, and provide better error reporting (due to blocks carrying their own srcloc info). Would also allow cleaning up the Cond
struct.
Shouldn't be too disruptive of a change.
Would be nice.
The idea is that pointers are marked as const
using some method, and are then prohibited from being passed to words that (indirectly or directly) call STA
(i.e. takes a non-const pointer).
("Marking" pointers in this case means modifying their type signature. I'm not settled on what the signature for this is -- could be @const Type
, @@Type
, &Type
, (Cons @Type)
, or something else.)
Pointers can be made const in a few ways:
(const)
to constify the pointer on TOS(const foo)
to constify a variable#const (let CONSTANT [ 0x0 ])
to declare a variable constant.
Same principle for device ports -- writing a readonly port literal results in Const_Dev16
/Const_Dev8
, which cannot be passed to words that require a non-readonly port. (Not sure if adding this particular feature is worth the extra complexity. I mean, how often would one accidentally try to write to a readonly port?)
In-progress on the fixpt branch.
TODO:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.