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 ...@@ -35,14 +35,13 @@ We have an almost pathological focus on minimalism. We want the functionality o
* Keyboard * Keyboard
* HDMI * HDMI
* Nail self hosted code editing (50% complete) (2023 Q2) * 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) * Programming / debugging bridge to another device. (2023 Q3)
* Nail heap management. (mostly done but not "nailed")
* Write open source license. * Write open source license.
* Other high priority things: * Other high priority things:
* Android container. (2023 Q4) * Android container. (2023 Q4)
## Details so far ## Language Details
* FUBS is basically an imperative language with decent support for closures and class hierarchies. * 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). * 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. * 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 ...@@ -50,7 +49,7 @@ We have an almost pathological focus on minimalism. We want the functionality o
* Diamond inheritance is prohibited. * Diamond inheritance is prohibited.
* Name collisions for singletons and object fields are 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). * 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. * Strongly typed.
* Supported types: * Supported types:
* Primitive types (passed by value): * Primitive types (passed by value):
...@@ -74,19 +73,9 @@ We have an almost pathological focus on minimalism. We want the functionality o ...@@ -74,19 +73,9 @@ We have an almost pathological focus on minimalism. We want the functionality o
* No dynamic reachability analysis except when debugging. * 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). * 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. * 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. * 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. * 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): * [Balls](https://en.wikipedia.org/wiki/Exception_handling)
* Exists only on a trial basis. Will be evaluated on an ongoing basis. Candidate for removal.
* [Closures](https://en.wikipedia.org/wiki/Closure_(computer_programming)) * [Closures](https://en.wikipedia.org/wiki/Closure_(computer_programming))
* Stack variables can be captured by reference (default) or by value (not yet implemented). * Higher level concurrency mechanisms have not been worked out yet.
* If the closure escapes to the heap only capture by value is allowed. \ No newline at end of file
* 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