Status: All releases are behind the previous schedule for several reasons, so I updated it below.
Reasons:
- I'm building query-flow for
deskc
anddworkspace
. - I plan to discard the current
mirgen
and design a new MIR intervening between Desk-lang and low-level IR to generate a GC-less binary, which is fast as Rust in theory (in my mind). - I've switched to Ubuntu Desktop from M1 Macbook Pro mainly for financial reasons. As a subsequence of it, I can utilize the mold linker.
- I've returned to Neovim after several years of a temporary stay in the VSCode.
- With the lowest priority, I have about three my own projects now to improve IDE experience with the Neovim ecosystem.
- I've built a Keyball39, a split keyboard placing a injection-molded trackball slot in the really ergonomic position. -[ ] I'm going to completely re-design the Desk-lang.
Pre-release includes:
- incremental Desk-lang compiler
- DeskVM with an official scheduler
- a file system for Desk-lang
- Desk-lang visual editor
- A web demo like Rust Playground for Desk-lang
The first release includes:
- MVP of Desk Craft, a game engine
- a platformer game demo
- a space to publish created games
- real-time collaboration on Web
- paid plans for Desk X (official hosting)
See the draft of the first release
๐ฏ Blur the line between living and coding ๐ฏ Make every software programmable
- ๐ฎ Intuitive like games
- ๐ฅผ Pragmatic like professional tools
- ๐บ๏ธ๏ธ Versatile like spreadsheets
- ๐ Accessible to everyone
- ๐น Minimalist design
Desk apps are inherently:
- ๐ผ code-oriented like data-oriented
- ๐ statically-typed (data and UI)
- ๐ค programmable (extensible by code)
- ๐งฒ interoperable with other Desk apps
- ๐ฑ running on everywhere (web, desktop, mobile)
Desk is consist of:
- Desk Programming Language and Desk Compiler (deskc)
- Desk Workspace System (dworkspace)
- DeskVM (deskvm)
- Desk-plugins (dplugins)
Desk-lang is a programming language that has:
- minimalistic syntax and semantics
- type system with inference
- algebraic effects
- content-addressable by type and UUID
- incremental compilation
Most of the data and programs on Desk apps are finally evaluated as a snippet of Desk-lang.
Desk compiler is an incremental compiler for Desk-lang.
Crates
- deskc: the incremental compiler
- deskc-lexer scans Desk-lang source code and generates tokens
- deskc-parser parses tokens and generates an AST
- deskc-typeinfer infers types of expressions.
- deskc-mirgen generates MIR
Desk-workspace is a platform-agnostic environment for editing Desk-lang.
Desk-workspace provides these features:
- file system for Desk-lang
- permission management system
- realtime collaboration support
Crates
- dworkspace: the implementation
- dworkspace-codebase defines structs for a codebase
DeskVM is a runtime for Desk-lang influenced by Erlang VM.
Features
- platform-agnostic
- capable of running many programs as a d-process
- type-driven message passing and pub/sub
- interpreter-agnostic: DeskVM can run anything as a d-process
- preemptive scheduling
- custom scheduler support
Crates
- deskvm: the implementation
- deskvm-dprocess defines structs of such as d-process
There are many Desk-plugins. Each Desk-plugin implements a single feature as a Bevy Plugin.
- ๐ง Desk Craft for game development
- ๐ง Desk Brain for productivity
- ๐ง Desk Verse for communication
- ๐ง Desk Robot for automation
- ๐ง Desk Board for BI
- ๐ง Desk Calendar for scheduling
- ๐ง Desk Pages for hosting
๐ง not yet implemented
Yes.