Releases: ditto-lang/ditto
0.0.4
Highlights of this release include the beginnings of a helpful language server (#187) and a big speed up from some #185.
What's Changed
- Ensure that multiline strings and escapes work as expected by @jmackie in #170
- Switch to
tracing
+ flamegraphs 🔥 by @jmackie in #183 - Drop
chrono
fortime 0.3
by @jmackie in #194 - Use
BufReader
andBufWriter
more 🤦 by @jmackie in #185 - An actual language server 📡 by @jmackie in #187
- Fix record formatting bug 🐛 by @jmackie in #197
- Fix bug in generated JS condition order 🐞 by @jmackie in #196
Dependencies
- Update Rust crate tokio to 1.25 [SECURITY] by @renovate in #166
- Update Rust crate dprint-core to 0.60 by @renovate in #106
- Update Rust crate tokio to 1.25 by @renovate in #195
- Update Rust crate clearscreen to v2 by @renovate in #113
- Update dependency lint-staged to v13.1.1 by @renovate in #105
- Update Rust crate ropey to 1.6 by @renovate in #179
Full Changelog: 0.0.3...0.0.4
0.0.3
0.0.2
The objective for this milestone was to have enough of a language to support a standard library.
✔️ https://github.com/ditto-lang/std
But that's not all. I got carried away and also built the packages for a simple Elm-like framework 🕺
✔️ https://github.com/ditto-lang/js-ref
✔️ https://github.com/ditto-lang/js-exception
✔️ https://github.com/ditto-lang/js-unknown
✔️ https://github.com/ditto-lang/js-task
✨ https://github.com/ditto-lang/vdom
And that framework can produce a working TodoMVC example!
😮 https://github.com/ditto-lang/todomvc
What's Changed
A helluva lot. The highlights of which are:
if then else
expressions #21match
expressions #22do
expressions #35|>
operator #41_unused
names #45- Exhaustiveness checking #47
- Record literals #54
- Parsing speed gains from a https://github.com/lalrpop/lalrpop rewrite #56 ⚡
type alias
#92- Irrefutable patterns in function binders #94
let
bindings #95 #101- Record updates #96
- Remote (GitHub) packages #109 #119
Future releases will be less chonky/more incremental, promise.
Below are the generated release notes. Although they're not an exhaustive list of the changes as I've pushed a fair bit straight to main
🤠 (PRs only from now on though...new year new me)
- Allow underscores in number literals by @wackbyte in #20
- Add
if-then-else
expressions by @wackbyte in #21 - Update shell.nix by @wackbyte in #25
- Format lambda body like value declaration expressions by @jmackie in #31
- Don't run expensive workflow jobs for draft PRs by @jmackie in #33
- Add
match
expressions by @jmackie in #22 - Stop converting case for JavaScript identifiers by @jmackie in #37
- Add
do
expressions by @jmackie in #35 - Add the pipe operator
|>
by @jmackie in #41 - Add
_unused
names by @jmackie in #45 - Add a simple exhaustiveness checker 🧐 by @jmackie in #47
- Init JavaScript rewrite rules 😍 by @jmackie in #49
- Add some more JavaScript rewrite rules ⚡ by @jmackie in #52
- Add record literals and field access ⏺️ by @jmackie in #54
- Attempt to fix slow pest parser 😞 by @jmackie in #55
- Add a (gibberish) CST generator script for benchmarking by @jmackie in #58
- Reimplement the parser with LALRPOP and logos lexer 🙌 by @jmackie in #56
- Use
ditto-src
andditto-test
by @jmackie in #67 - Add
lsp-test
⚡ by @jmackie in #72 - Stop messing around with line endings, just use LF 👨⚖️ by @jmackie in #89
- Improve CLI tests by @jmackie in #87
- Store literal expression type in the AST by @jmackie in #90
- Replace
assert_module_ok!
with trycmd tests 🧑💻 by @jmackie in #91 - Add
type alias
🕵️ by @jmackie in #92 - Allow irrefutable patterns as function parameters by @jmackie in #94
- Support
let
bindings inEffect
blocks by @jmackie in #95 - Use cargo-nextest 🚀 by @jmackie in #93
- Drop our
snapshot-test
crate fordatatest-stable
🗑️ by @jmackie in #97 - Use
trycmd
forditto-make
integration tests by @jmackie in #98 - Record updates 👌 by @jmackie in #96
- Vendor
tree-sitter
things by @jmackie in #102 - Add
let
expressions by @jmackie in #101 - Add
ditto-highlight
crate 💅 by @jmackie in #107 - Type annotate empty arrays (with JSDoc) by @jmackie in #108
- Add support for github packages by @jmackie in #109
- Fix unused JavaScript identifiers 🔧 by @jmackie in #110
- Fix aliased function type checking by @jmackie in #111
- Store any type annotations in the AST by @jmackie in #112
- Assign matched expressions to variables in generated JavaScript ⚡ by @jmackie in #114
- Fix type alias substitution by @jmackie in #118
- Shared package sets 📦 by @jmackie in #119
- Cache fetched package sets 💾 by @jmackie in #125
New Contributors
Full Changelog: 0.0.1...0.0.2
0.0.1
First public release, and coincides with the compiler source code being made public.
Most of the important functionality exists but is very rudimentary.
Namely, there is:
- A parser, typechecker, and linter for an initial module syntax. The expression language is very limited at this stage.
- A JavaScript code generator.
- A build system based on Ninja.
- A basic package manager, based on package sets and local package directories.
- A fairly naive code formatter.
- A language server with
documentFormattingProvider
andsemanticTokensProvider
capabilities. Which are enough to power a basic VS Code extension.