Update FUBS authored by Eron's avatar Eron
......@@ -35,14 +35,13 @@ We have an almost pathological focus on minimalism. We want the functionality o
* Keyboard
* HDMI
* Nail self hosted code editing (50% complete) (2023 Q2)
* Create self hosted source management system. (2023 Q1)
* Create self hosted source management system. (2023 Q2)
* Programming / debugging bridge to another device. (2023 Q3)
* Nail heap management. (mostly done but not "nailed")
* Write open source license.
* Other high priority things:
* Android container. (2023 Q4)
## Details so far
## Language Details
* FUBS is basically an imperative language with decent support for closures and class hierarchies.
* Classes can contain inner classes, data fields (singleton or per object), and functions (singleton or bound to an object).
* Inner classes exist solely for the purpose of providing a hierarchical namespace.
......@@ -50,7 +49,7 @@ We have an almost pathological focus on minimalism. We want the functionality o
* Diamond inheritance is prohibited.
* Name collisions for singletons and object fields are prohibited.
* Name collisions for object functions create a function group for [dynamic dispatch](https://en.wikipedia.org/wiki/Dynamic_dispatch).
* Only classes exist at the top level. All functions and data are fields of a class.
* Only classes exist at the top level. All functions and data are fields belonging to a class.
* Strongly typed.
* Supported types:
* Primitive types (passed by value):
......@@ -74,19 +73,9 @@ We have an almost pathological focus on minimalism. We want the functionality o
* No dynamic reachability analysis except when debugging.
* A reference type may be "prime", which means that it will be automatically freed when it leaves scope (for local variables), or its parent is freed (for object fields).
* Static analysis will help catch program errors with respect to prime reference management.
* Copies of prime references are permitted. The static analyzer will try to prove that a copy does not escape the lifetime of its associated prime reference.
* Copies of prime references are permitted. The static analyzer will try to prove that a copy does not escape the lifetime of the object it points to.
* Only rudimentary support for strings.
* A string constant may be specified in a program. It will manifest itself as a mutable array of single bytes.
* [Balls](https://en.wikipedia.org/wiki/Exception_handling):
* Exists only on a trial basis. Will be evaluated on an ongoing basis. Candidate for removal.
* [Balls](https://en.wikipedia.org/wiki/Exception_handling)
* [Closures](https://en.wikipedia.org/wiki/Closure_(computer_programming))
* Stack variables can be captured by reference (default) or by value (not yet implemented).
* If the closure escapes to the heap only capture by value is allowed.
* Concurrency is not yet implemented.
* Execution model:
* Fully self hosted execution/compilation.
* Fully self hosted source code management.
* Programs are stored using FUBS's own built in object persistence primitives.
* Fully self hosted IDE is being developed to directly manipulate the abstract syntax tree.
* Fully self hosted filesystem designed to work well with automatic serializations of FUBS objects.
* A text format exists for bootstrapping and luddites.
\ No newline at end of file
* Higher level concurrency mechanisms have not been worked out yet.
\ No newline at end of file