List of Design Decisions
Stephen Leach edited this page Nov 17, 2021
·
9 revisions
In reverse chronological order:
07 Nov 2021
- Adopting the term sealing in preference to 'permanent locking'.
- Removed reversible locking from the language. Reversible locking doesn't have any key use-cases, so I have dropped this complexity. (SL)
02 Jan 2021
- Adopting the term const in preference to "fully immutable" or "recursively immutable".
04 Oct 2020
- To reduce the overuse of the word 'function' the "kind":"function" is now "kind":"lambda"
02 Sep 2020
- Modifier
local
replacesprivate
as the latter is reserved for actor-like semantics.
30 Aug 2020:
- Modifiers
var
,val
andconst
adopted meaning re-assignable, single-assignment, single-assignment-to-immutable value.-
var x
meansx
can be reassigned after the initial binding -
val y
meansy
cannot be reassigned after the initial binding but may be bound to any kind of value -
const z
meansz
cannot be assigned after the initial binding and may only be bound to immutable* values
-
- The default is
const
in functions andval
in procedures and finesses.
24 Aug 2020:
-
private
modifier introduced along withblock
scope (renamedlocal
02 Sep 2020). -
class ... endclass
is implicitly a block scope.
Design Principles
- Nutmeg Design Goals
- The Spirit of Nutmeg
- Syntax Design
- State Encapsulation
- List of Design Decisions
- Influences
Language Features
- $$-Syntax (Echo Expressions)
- Actors
- Allocators
- Annotations
- Assignments
- Bindings
- Blocks and Modifiers
- Brackets
- Capsules (Proposed)
- Clean Procedures
- Comments
- Copy by Snapshot
- Declarations
- Finesses
- For Syntax
- Futures
- Identifiers
- If Syntax
- Messages
- Pass Syntax
- Queries
- References
- Return Statements
- Sealing
- Semicolons
- Strings
- Switch Syntax
Built-in Libraries and Functions
Implementation
- Architecture in one page
- Autoconversion
- Bundle Files
- Code-Trees
- Compiler Pipeline
- Components of the Compiler
- Installation File Structure
- Mishaps
- Peekable Pushable Generators
- Recursive Descent Parser
- Resolver
- Walkthrough of Hello-World
How-Tos
Process