@devaloop/devalang 0.0.1-beta.3 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +182 -152
- package/out-tsc/api.d.ts +180 -0
- package/out-tsc/api.d.ts.map +1 -0
- package/out-tsc/api.js +286 -0
- package/out-tsc/api.js.map +1 -0
- package/out-tsc/bin/index.d.ts +12 -0
- package/out-tsc/bin/index.d.ts.map +1 -0
- package/out-tsc/bin/index.js +20 -54
- package/out-tsc/bin/index.js.map +1 -0
- package/out-tsc/examples/basic-usage.d.ts +8 -0
- package/out-tsc/examples/basic-usage.d.ts.map +1 -0
- package/out-tsc/examples/basic-usage.js +113 -0
- package/out-tsc/examples/basic-usage.js.map +1 -0
- package/out-tsc/index.d.ts +19 -5
- package/out-tsc/index.d.ts.map +1 -0
- package/out-tsc/index.js +24 -6
- package/out-tsc/index.js.map +1 -0
- package/out-tsc/scripts/copy-wasm-dts.d.ts +7 -0
- package/out-tsc/scripts/copy-wasm-dts.d.ts.map +1 -0
- package/out-tsc/scripts/copy-wasm-dts.js +36 -32
- package/out-tsc/scripts/copy-wasm-dts.js.map +1 -0
- package/out-tsc/scripts/postinstall.d.ts +1 -0
- package/out-tsc/scripts/postinstall.d.ts.map +1 -0
- package/out-tsc/scripts/postinstall.js +4 -1
- package/out-tsc/scripts/postinstall.js.map +1 -0
- package/out-tsc/scripts/version/bump.d.ts +5 -1
- package/out-tsc/scripts/version/bump.d.ts.map +1 -0
- package/out-tsc/scripts/version/bump.js +114 -44
- package/out-tsc/scripts/version/bump.js.map +1 -0
- package/out-tsc/scripts/version/fetch.d.ts +12 -1
- package/out-tsc/scripts/version/fetch.d.ts.map +1 -0
- package/out-tsc/scripts/version/fetch.js +68 -24
- package/out-tsc/scripts/version/fetch.js.map +1 -0
- package/out-tsc/scripts/version/index.d.ts +6 -0
- package/out-tsc/scripts/version/index.d.ts.map +1 -0
- package/out-tsc/scripts/version/index.js +44 -22
- package/out-tsc/scripts/version/index.js.map +1 -0
- package/out-tsc/scripts/version/sync.d.ts +5 -1
- package/out-tsc/scripts/version/sync.d.ts.map +1 -0
- package/out-tsc/scripts/version/sync.js +78 -29
- package/out-tsc/scripts/version/sync.js.map +1 -0
- package/out-tsc/types.d.ts +68 -0
- package/out-tsc/types.d.ts.map +1 -0
- package/out-tsc/{core/types/value.js → types.js} +4 -0
- package/out-tsc/types.js.map +1 -0
- package/out-tsc/wasm.d.ts +8 -0
- package/out-tsc/wasm.d.ts.map +1 -0
- package/out-tsc/{core/index.js → wasm.js} +9 -6
- package/out-tsc/wasm.js.map +1 -0
- package/package.json +42 -42
- package/.cargo/config.toml +0 -2
- package/.devalang +0 -9
- package/.github/workflows/ci.yml +0 -103
- package/Cargo.toml +0 -84
- package/docs/CHANGELOG.md +0 -622
- package/docs/CONTRIBUTING.md +0 -101
- package/docs/ROADMAP.md +0 -38
- package/docs/TODO.md +0 -71
- package/examples/automation.deva +0 -42
- package/examples/bank.deva +0 -7
- package/examples/bus.deva +0 -10
- package/examples/chain.deva +0 -19
- package/examples/condition.deva +0 -20
- package/examples/duration.deva +0 -9
- package/examples/effect.deva +0 -2
- package/examples/events.deva +0 -12
- package/examples/filter.deva +0 -11
- package/examples/function.deva +0 -15
- package/examples/group.deva +0 -12
- package/examples/index.deva +0 -63
- package/examples/lfo.deva +0 -9
- package/examples/loop.deva +0 -10
- package/examples/pattern.deva +0 -8
- package/examples/plugin.deva +0 -16
- package/examples/routing.deva +0 -23
- package/examples/samples/hat-808.wav +0 -0
- package/examples/samples/kick-808.wav +0 -0
- package/examples/synth.deva +0 -24
- package/examples/synth_types.deva +0 -17
- package/examples/variables.deva +0 -9
- package/out-tsc/bin/project-version.json +0 -6
- package/out-tsc/core/functions/index.d.ts +0 -42
- package/out-tsc/core/functions/index.js +0 -87
- package/out-tsc/core/index.d.ts +0 -6
- package/out-tsc/core/types/index.d.ts +0 -4
- package/out-tsc/core/types/index.js +0 -20
- package/out-tsc/core/types/plugin.d.ts +0 -18
- package/out-tsc/core/types/plugin.js +0 -2
- package/out-tsc/core/types/result.d.ts +0 -27
- package/out-tsc/core/types/result.js +0 -2
- package/out-tsc/core/types/statement.d.ts +0 -106
- package/out-tsc/core/types/statement.js +0 -2
- package/out-tsc/core/types/value.d.ts +0 -43
- package/out-tsc/pkg/devalang_core.d.ts +0 -15
- package/out-tsc/pkg/devalang_core.js +0 -65
- package/out-tsc/pkg/devalang_core_bg.wasm.d.ts +0 -34
- package/out-tsc/scripts/version/copy-to-binary.d.ts +0 -1
- package/out-tsc/scripts/version/copy-to-binary.js +0 -79
- package/project-version.json +0 -6
- package/rust/bindings/Cargo.toml +0 -9
- package/rust/bindings/src/lib.rs +0 -86
- package/rust/cli/addon/commands.rs +0 -35
- package/rust/cli/addon/download.rs +0 -234
- package/rust/cli/addon/install.rs +0 -33
- package/rust/cli/addon/list.rs +0 -224
- package/rust/cli/addon/metadata.rs +0 -124
- package/rust/cli/addon/mod.rs +0 -8
- package/rust/cli/addon/remove.rs +0 -271
- package/rust/cli/addon/update.rs +0 -305
- package/rust/cli/addon/utils.rs +0 -109
- package/rust/cli/build/commands.rs +0 -153
- package/rust/cli/build/mod.rs +0 -2
- package/rust/cli/build/process.rs +0 -165
- package/rust/cli/check/mod.rs +0 -208
- package/rust/cli/discover/commands.rs +0 -275
- package/rust/cli/discover/config.rs +0 -109
- package/rust/cli/discover/fs.rs +0 -19
- package/rust/cli/discover/install.rs +0 -214
- package/rust/cli/discover/metadata.rs +0 -48
- package/rust/cli/discover/mod.rs +0 -5
- package/rust/cli/init/commands.rs +0 -88
- package/rust/cli/init/mod.rs +0 -1
- package/rust/cli/login/commands.rs +0 -124
- package/rust/cli/login/mod.rs +0 -1
- package/rust/cli/me/commands.rs +0 -52
- package/rust/cli/me/mod.rs +0 -1
- package/rust/cli/mod.rs +0 -12
- package/rust/cli/parser.rs +0 -320
- package/rust/cli/play/commands.rs +0 -375
- package/rust/cli/play/io.rs +0 -17
- package/rust/cli/play/mod.rs +0 -5
- package/rust/cli/play/process.rs +0 -159
- package/rust/cli/play/realtime.rs +0 -91
- package/rust/cli/play/utils.rs +0 -23
- package/rust/cli/telemetry/commands.rs +0 -22
- package/rust/cli/telemetry/event_creator.rs +0 -80
- package/rust/cli/telemetry/mod.rs +0 -3
- package/rust/cli/telemetry/send.rs +0 -51
- package/rust/cli/template/commands.rs +0 -69
- package/rust/cli/template/mod.rs +0 -1
- package/rust/cli/update/commands.rs +0 -6
- package/rust/cli/update/mod.rs +0 -1
- package/rust/config/driver.rs +0 -112
- package/rust/config/mod.rs +0 -3
- package/rust/config/ops.rs +0 -26
- package/rust/config/settings.rs +0 -101
- package/rust/core/audio/engine/driver.rs +0 -237
- package/rust/core/audio/engine/export.rs +0 -169
- package/rust/core/audio/engine/helpers.rs +0 -178
- package/rust/core/audio/engine/mod.rs +0 -56
- package/rust/core/audio/engine/notes/dsp.rs +0 -88
- package/rust/core/audio/engine/notes/mod.rs +0 -53
- package/rust/core/audio/engine/notes/params.rs +0 -294
- package/rust/core/audio/engine/sample/insert.rs +0 -300
- package/rust/core/audio/engine/sample/mod.rs +0 -40
- package/rust/core/audio/engine/sample/padding.rs +0 -170
- package/rust/core/audio/evaluator/condition.rs +0 -61
- package/rust/core/audio/evaluator/mod.rs +0 -9
- package/rust/core/audio/evaluator/numeric.rs +0 -152
- package/rust/core/audio/evaluator/rhs.rs +0 -16
- package/rust/core/audio/evaluator/string_expr.rs +0 -94
- package/rust/core/audio/interpreter/driver.rs +0 -574
- package/rust/core/audio/interpreter/mod.rs +0 -2
- package/rust/core/audio/interpreter/statements/arrow_call/interprete.rs +0 -179
- package/rust/core/audio/interpreter/statements/arrow_call/methods/chord.rs +0 -398
- package/rust/core/audio/interpreter/statements/arrow_call/methods/effects.rs +0 -323
- package/rust/core/audio/interpreter/statements/arrow_call/methods/mod.rs +0 -3
- package/rust/core/audio/interpreter/statements/arrow_call/methods/note.rs +0 -371
- package/rust/core/audio/interpreter/statements/arrow_call/mod.rs +0 -3
- package/rust/core/audio/interpreter/statements/arrow_call/types/arp.rs +0 -192
- package/rust/core/audio/interpreter/statements/arrow_call/types/mod.rs +0 -24
- package/rust/core/audio/interpreter/statements/arrow_call/types/pad.rs +0 -116
- package/rust/core/audio/interpreter/statements/arrow_call/types/pluck.rs +0 -97
- package/rust/core/audio/interpreter/statements/arrow_call/types/sub.rs +0 -100
- package/rust/core/audio/interpreter/statements/automate.rs +0 -16
- package/rust/core/audio/interpreter/statements/call.rs +0 -325
- package/rust/core/audio/interpreter/statements/condition.rs +0 -72
- package/rust/core/audio/interpreter/statements/function.rs +0 -24
- package/rust/core/audio/interpreter/statements/let_.rs +0 -36
- package/rust/core/audio/interpreter/statements/load.rs +0 -17
- package/rust/core/audio/interpreter/statements/loop_.rs +0 -115
- package/rust/core/audio/interpreter/statements/mod.rs +0 -12
- package/rust/core/audio/interpreter/statements/sleep.rs +0 -28
- package/rust/core/audio/interpreter/statements/spawn.rs +0 -302
- package/rust/core/audio/interpreter/statements/tempo.rs +0 -40
- package/rust/core/audio/interpreter/statements/trigger.rs +0 -242
- package/rust/core/audio/loader/mod.rs +0 -1
- package/rust/core/audio/loader/trigger.rs +0 -98
- package/rust/core/audio/mod.rs +0 -6
- package/rust/core/audio/player.rs +0 -70
- package/rust/core/audio/special/easing.rs +0 -189
- package/rust/core/audio/special/env.rs +0 -45
- package/rust/core/audio/special/math.rs +0 -134
- package/rust/core/audio/special/mod.rs +0 -9
- package/rust/core/audio/special/modulator.rs +0 -143
- package/rust/core/builder/mod.rs +0 -129
- package/rust/core/debugger/lexer.rs +0 -27
- package/rust/core/debugger/logs.rs +0 -52
- package/rust/core/debugger/mod.rs +0 -30
- package/rust/core/debugger/preprocessor.rs +0 -27
- package/rust/core/debugger/store.rs +0 -38
- package/rust/core/error/mod.rs +0 -269
- package/rust/core/lexer/driver.rs +0 -59
- package/rust/core/lexer/handler/arrow.rs +0 -82
- package/rust/core/lexer/handler/at.rs +0 -21
- package/rust/core/lexer/handler/brace.rs +0 -41
- package/rust/core/lexer/handler/colon.rs +0 -21
- package/rust/core/lexer/handler/comment.rs +0 -30
- package/rust/core/lexer/handler/dot.rs +0 -21
- package/rust/core/lexer/handler/driver.rs +0 -337
- package/rust/core/lexer/handler/identifier.rs +0 -47
- package/rust/core/lexer/handler/indent.rs +0 -66
- package/rust/core/lexer/handler/mod.rs +0 -15
- package/rust/core/lexer/handler/newline.rs +0 -23
- package/rust/core/lexer/handler/number.rs +0 -31
- package/rust/core/lexer/handler/operator.rs +0 -46
- package/rust/core/lexer/handler/parenthesis.rs +0 -41
- package/rust/core/lexer/handler/slash.rs +0 -21
- package/rust/core/lexer/handler/string.rs +0 -63
- package/rust/core/lexer/mod.rs +0 -3
- package/rust/core/lexer/token.rs +0 -91
- package/rust/core/mod.rs +0 -9
- package/rust/core/parser/driver/block.rs +0 -111
- package/rust/core/parser/driver/cursor.rs +0 -82
- package/rust/core/parser/driver/driver_impl.rs +0 -159
- package/rust/core/parser/driver/mod.rs +0 -6
- package/rust/core/parser/driver/parse_array.rs +0 -120
- package/rust/core/parser/driver/parse_map.rs +0 -247
- package/rust/core/parser/driver/parser.rs +0 -160
- package/rust/core/parser/handler/arrow_call.rs +0 -328
- package/rust/core/parser/handler/at.rs +0 -279
- package/rust/core/parser/handler/bank.rs +0 -104
- package/rust/core/parser/handler/condition.rs +0 -83
- package/rust/core/parser/handler/dot.rs +0 -148
- package/rust/core/parser/handler/identifier/automate.rs +0 -254
- package/rust/core/parser/handler/identifier/call.rs +0 -91
- package/rust/core/parser/handler/identifier/emit.rs +0 -70
- package/rust/core/parser/handler/identifier/function.rs +0 -113
- package/rust/core/parser/handler/identifier/group.rs +0 -89
- package/rust/core/parser/handler/identifier/let_.rs +0 -173
- package/rust/core/parser/handler/identifier/mod.rs +0 -55
- package/rust/core/parser/handler/identifier/on.rs +0 -107
- package/rust/core/parser/handler/identifier/print.rs +0 -49
- package/rust/core/parser/handler/identifier/sleep.rs +0 -96
- package/rust/core/parser/handler/identifier/spawn.rs +0 -91
- package/rust/core/parser/handler/identifier/synth.rs +0 -171
- package/rust/core/parser/handler/loop_.rs +0 -194
- package/rust/core/parser/handler/mod.rs +0 -9
- package/rust/core/parser/handler/pattern.rs +0 -97
- package/rust/core/parser/handler/tempo.rs +0 -105
- package/rust/core/parser/mod.rs +0 -3
- package/rust/core/parser/statement.rs +0 -10
- package/rust/core/plugin/loader.rs +0 -137
- package/rust/core/plugin/mod.rs +0 -2
- package/rust/core/plugin/runner/mod.rs +0 -11
- package/rust/core/plugin/runner/non_wasm.rs +0 -481
- package/rust/core/plugin/runner/wasm32.rs +0 -44
- package/rust/core/preprocessor/loader/inject.rs +0 -313
- package/rust/core/preprocessor/loader/loader_helpers.rs +0 -110
- package/rust/core/preprocessor/loader/mod.rs +0 -235
- package/rust/core/preprocessor/mod.rs +0 -4
- package/rust/core/preprocessor/module.rs +0 -55
- package/rust/core/preprocessor/processor/handlers.rs +0 -107
- package/rust/core/preprocessor/processor/mod.rs +0 -1
- package/rust/core/preprocessor/resolver/bank.rs +0 -49
- package/rust/core/preprocessor/resolver/call.rs +0 -124
- package/rust/core/preprocessor/resolver/condition.rs +0 -95
- package/rust/core/preprocessor/resolver/driver.rs +0 -324
- package/rust/core/preprocessor/resolver/function.rs +0 -69
- package/rust/core/preprocessor/resolver/group.rs +0 -122
- package/rust/core/preprocessor/resolver/let_.rs +0 -32
- package/rust/core/preprocessor/resolver/loop_.rs +0 -318
- package/rust/core/preprocessor/resolver/mod.rs +0 -16
- package/rust/core/preprocessor/resolver/pattern.rs +0 -95
- package/rust/core/preprocessor/resolver/spawn.rs +0 -99
- package/rust/core/preprocessor/resolver/synth.rs +0 -54
- package/rust/core/preprocessor/resolver/tempo.rs +0 -48
- package/rust/core/preprocessor/resolver/trigger.rs +0 -116
- package/rust/core/preprocessor/resolver/value.rs +0 -176
- package/rust/core/store/global.rs +0 -57
- package/rust/core/store/mod.rs +0 -1
- package/rust/lib.rs +0 -323
- package/rust/macros/Cargo.toml +0 -14
- package/rust/macros/src/lib.rs +0 -52
- package/rust/main.rs +0 -557
- package/rust/types/Cargo.toml +0 -11
- package/rust/types/src/addons.rs +0 -57
- package/rust/types/src/ast.rs +0 -202
- package/rust/types/src/config.rs +0 -82
- package/rust/types/src/lib.rs +0 -15
- package/rust/types/src/plugin.rs +0 -20
- package/rust/types/src/store.rs +0 -139
- package/rust/types/src/telemetry.rs +0 -85
- package/rust/utils/Cargo.toml +0 -29
- package/rust/utils/src/error.rs +0 -186
- package/rust/utils/src/file.rs +0 -477
- package/rust/utils/src/first_usage.rs +0 -97
- package/rust/utils/src/lib.rs +0 -9
- package/rust/utils/src/logger.rs +0 -200
- package/rust/utils/src/path.rs +0 -158
- package/rust/utils/src/signature.rs +0 -41
- package/rust/utils/src/spinner.rs +0 -20
- package/rust/utils/src/version.rs +0 -58
- package/rust/utils/src/watcher.rs +0 -46
- package/rust/web/api.rs +0 -5
- package/rust/web/auth.rs +0 -5
- package/rust/web/cdn.rs +0 -34
- package/rust/web/forge.rs +0 -5
- package/rust/web/mod.rs +0 -5
- package/rust/web/sso.rs +0 -5
- package/templates/minimal/.devalang +0 -5
- package/templates/minimal/README.md +0 -218
- package/templates/minimal/src/index.deva +0 -2
- package/templates/welcome/.devalang +0 -5
- package/templates/welcome/README.md +0 -218
- package/templates/welcome/samples/kick-808.wav +0 -0
- package/templates/welcome/src/index.deva +0 -61
- package/templates/welcome/src/variables.deva +0 -3
- package/tests/integration.rs +0 -21
- package/tests/rust/cli_check_build.rs +0 -21
- package/tests/rust/cli_help.rs +0 -12
- package/tests/rust/cli_template_list.rs +0 -10
- package/tests/rust/cli_version.rs +0 -11
- package/tests/typescript/index.spec.ts +0 -136
- package/tests/typescript/playhead.spec.ts +0 -36
- package/tests/typescript/render_e2e.spec.ts +0 -77
- package/tsconfig.json +0 -115
- package/typescript/bin/index.ts +0 -28
- package/typescript/core/functions/index.ts +0 -94
- package/typescript/core/index.ts +0 -6
- package/typescript/core/types/index.ts +0 -4
- package/typescript/core/types/plugin.ts +0 -19
- package/typescript/core/types/result.ts +0 -29
- package/typescript/core/types/statement.ts +0 -47
- package/typescript/core/types/value.ts +0 -29
- package/typescript/index.ts +0 -8
- package/typescript/pkg/devalang_core.d.ts +0 -4
- package/typescript/pkg/devalang_core.ts +0 -65
- package/typescript/scripts/copy-wasm-dts.ts +0 -41
- package/typescript/scripts/postinstall.ts +0 -85
- package/typescript/scripts/version/bump.ts +0 -44
- package/typescript/scripts/version/copy-to-binary.ts +0 -82
- package/typescript/scripts/version/fetch.ts +0 -18
- package/typescript/scripts/version/index.ts +0 -25
- package/typescript/scripts/version/sync.ts +0 -24
package/docs/CHANGELOG.md
DELETED
|
@@ -1,622 +0,0 @@
|
|
|
1
|
-
<div align="center">
|
|
2
|
-
<img src="https://devalang.com/images/devalang-logo-min.png" alt="Devalang Logo" width="100" />
|
|
3
|
-
</div>
|
|
4
|
-
|
|
5
|
-
# Changelog
|
|
6
|
-
|
|
7
|
-
## Version 0.0.1-beta.3 (2025-09-20)
|
|
8
|
-
|
|
9
|
-
### ✨ Language Features
|
|
10
|
-
|
|
11
|
-
- Implemented `synth` effects chaining to apply effects to individual synth notes.
|
|
12
|
-
- Example: `mySynth -> note(C4) -> slide({ duration: 2000 }) -> reverb({ room_size: 0.8 })`
|
|
13
|
-
|
|
14
|
-
### 🛠️ CLI & Addons
|
|
15
|
-
|
|
16
|
-
- Introduced a unified addon manager and removed the legacy `install` / `bank` commands:
|
|
17
|
-
|
|
18
|
-
- Use `devalang addon install <publisher>.<name>` to install banks or plugins.
|
|
19
|
-
- Use `devalang addon remove <publisher>.<name>` to remove banks or plugins.
|
|
20
|
-
- Use `devalang addon list` to list installed addons.
|
|
21
|
-
|
|
22
|
-
- Improved the `discover` workflow:
|
|
23
|
-
|
|
24
|
-
- Recursively scans `.deva` for compiled archives (`.tar.gz` / `.tgz`) and proposes them for installation.
|
|
25
|
-
- Pre-classifies addon types by inspecting archive contents so installations can target the correct folder (bank/plugin/preset/template).
|
|
26
|
-
- Robust selection labels and mapping ensure the chosen addon is installed correctly.
|
|
27
|
-
|
|
28
|
-
- Installation and extraction improvements:
|
|
29
|
-
|
|
30
|
-
- Archives are extracted into the appropriate destination based on detected type.
|
|
31
|
-
- Temporary extraction folder is cleaned up only when empty after installation.
|
|
32
|
-
- Added `--no-clear-tmp` flag to `discover` and addon install flows to preserve the temporary folder when desired.
|
|
33
|
-
|
|
34
|
-
- Bugfixes: fixed selection-to-install mapping and improved success/error logging during install flows.
|
|
35
|
-
|
|
36
|
-
### 🧪 Telemetry & Versioning
|
|
37
|
-
|
|
38
|
-
- Telemetry now uses a runtime-first strategy to resolve the CLI version
|
|
39
|
-
|
|
40
|
-
### 📦 Packaging & Tools
|
|
41
|
-
|
|
42
|
-
- Added `typescript/scripts/version/copy-to-binary.ts` to copy `project-version.json` next to a packaged binary during release/packaging steps.
|
|
43
|
-
|
|
44
|
-
### ✅ Bugfixes & Misc
|
|
45
|
-
|
|
46
|
-
- Various fixes around temporary folder cleanup, archive detection, config updates and CLI ergonomics.
|
|
47
|
-
|
|
48
|
-
## Version 0.0.1-beta.2 (2025-09-07)
|
|
49
|
-
|
|
50
|
-
### 🛠️ MIDI & format
|
|
51
|
-
|
|
52
|
-
- Added support for `mid` export in `build` command.
|
|
53
|
-
- Example: `devalang build --output-format mid,wav`
|
|
54
|
-
- Added support for `wav16` and `wav32` audio formats in `play` command.
|
|
55
|
-
- Example: `devalang play --audio-format <wav16 | wav32>`
|
|
56
|
-
- Added support for `sample_rate` parameter in `play` and `build` commands.
|
|
57
|
-
- Example: `devalang play --sample-rate <44100 | 48000 | 96000>`
|
|
58
|
-
- Example: `devalang build --sample-rate <44100 | 48000 | 96000>`
|
|
59
|
-
|
|
60
|
-
### ✨ Language Features
|
|
61
|
-
|
|
62
|
-
- `synth` enhancements:
|
|
63
|
-
- Types:
|
|
64
|
-
- Added `pad` type for lush, evolving sounds.
|
|
65
|
-
- Added `pluck` type for sharp, percussive tones.
|
|
66
|
-
- Added `arp` type for arpeggiated sequences.
|
|
67
|
-
- Added `sub` type for deep bass sounds.
|
|
68
|
-
- LFOs:
|
|
69
|
-
- Added `lfo` parameter to `synth` for low-frequency oscillation modulation.
|
|
70
|
-
- LFO supports `rate`, `depth`, and `target` parameters.
|
|
71
|
-
- Filters:
|
|
72
|
-
- Added `filters` parameter to `synth` for applying filters.
|
|
73
|
-
- `arrow_call` enhancements:
|
|
74
|
-
- Added support for `chord` method to play multiple notes simultaneously.
|
|
75
|
-
|
|
76
|
-
### 🧠 Architecture & Refactor
|
|
77
|
-
|
|
78
|
-
- Modularized some core components to improve maintainability and readability.
|
|
79
|
-
|
|
80
|
-
### 📚 Examples
|
|
81
|
-
|
|
82
|
-
- Added `examples/filter.deva` to showcase filter usage in synths.
|
|
83
|
-
- Added `examples/lfo.deva` to illustrate LFO modulation in synths.
|
|
84
|
-
- Added `examples/synth_types.deva` to demonstrate various synth types.
|
|
85
|
-
|
|
86
|
-
### 📦 WASM
|
|
87
|
-
|
|
88
|
-
- Added `collect_playhead_events` function to the WASM module to collect playhead events during audio rendering.
|
|
89
|
-
|
|
90
|
-
## Version 0.0.1-beta.1 (2025-09-02)
|
|
91
|
-
|
|
92
|
-
> First beta of Devalang 0.0.1. Focus on stability, language surface freeze, and developer experience. No breaking changes expected compared to alpha.18; experimental features are gated and may change.
|
|
93
|
-
>
|
|
94
|
-
> NOTE: this beta release does not include pre-built WASM/Node bindings in the npm package. If you need WASM bindings, build them locally in the `rust/devalang` directory with `wasm-pack build --target nodejs` and copy the generated `pkg` into `out-tsc/pkg/`, or wait for a future release that bundles the artifacts.
|
|
95
|
-
|
|
96
|
-
### ✨ Language Features
|
|
97
|
-
|
|
98
|
-
- Language surface freeze for beta: core syntax and semantics stabilized; future breaking changes will follow a deprecation policy.
|
|
99
|
-
- `pattern` enhancements: improved scheduling accuracy and step handling; supports accents and swing via step markers; clearer error messages for malformed patterns.
|
|
100
|
-
- Better diagnostics across the language: consistent error formatting with source spans and error codes.
|
|
101
|
-
|
|
102
|
-
### 🧠 Core Engine
|
|
103
|
-
|
|
104
|
-
- High-precision scheduler: tighter timing guarantees and improved alignment with BPM; more reliable loop execution and periodic handlers.
|
|
105
|
-
- Audio quality: automatic micro-fades on start/end to reduce clicks; improved handling of tails and voice polyphony.
|
|
106
|
-
- Sample engine: safer stereo/mono handling and level preservation; fewer edge-case distortions on rapid retriggers.
|
|
107
|
-
|
|
108
|
-
### 🧩 Parser & Lexer
|
|
109
|
-
|
|
110
|
-
- Span-rich errors across maps/arrays and complex expressions; clearer messages and recovery where possible.
|
|
111
|
-
- Lexer driver matured to cleanly separate file resolution from tokenization; fewer panics and better diagnostics.
|
|
112
|
-
|
|
113
|
-
### 🔁 Preprocessor & Resolution
|
|
114
|
-
|
|
115
|
-
- Deterministic include/resolve order; variable lookup consistently walks parent scopes.
|
|
116
|
-
- Pattern resolver integration hardened to ensure `call`/`spawn` of patterns behave like functions/groups.
|
|
117
|
-
|
|
118
|
-
### 🛠️ CLI & Telemetry
|
|
119
|
-
|
|
120
|
-
- `build`, `check`, `play`: consistent exit codes and non-watch behavior; clearer surfacing of errors.
|
|
121
|
-
- `install`/`discover`: authentication flow improved; better JSON/API error reporting; integrity checks on downloaded artifacts.
|
|
122
|
-
- Telemetry: stable anonymous machine UUID; records CLI version/OS/args with opt-out capability; ensures `.deva` directory exists.
|
|
123
|
-
|
|
124
|
-
### 📦 Packaging (WASM/Node/Rust)
|
|
125
|
-
|
|
126
|
-
- WASM/TypeScript distribution: safer postinstall with guarded downloads; robust `.d.ts` types and ESM/CJS compatibility.
|
|
127
|
-
- Rust crates: metadata completed and internal versions pinned; native-only features kept optional to reduce footprint.
|
|
128
|
-
|
|
129
|
-
### 🧪 Tests & CI
|
|
130
|
-
|
|
131
|
-
- Added unit tests for parser, pattern scheduling, and selected core utilities; initial wasm smoke tests.
|
|
132
|
-
- CI matrix across Linux/macOS/Windows and Node/Rust versions; release pipeline hardened.
|
|
133
|
-
|
|
134
|
-
## Version 0.0.1-alpha.18 (2025-09-02)
|
|
135
|
-
|
|
136
|
-
### ✨ Language Features
|
|
137
|
-
|
|
138
|
-
- New `pattern` statement to define rhythmic patterns with an optional target entity.
|
|
139
|
-
- Example: `pattern kickPattern with my808.kick = "x--- x--- x--- x---"`
|
|
140
|
-
- Patterns can be invoked with `call` or `spawn` just like functions or groups.
|
|
141
|
-
|
|
142
|
-
### 🧠 Core Engine
|
|
143
|
-
|
|
144
|
-
- Pattern playback: schedules steps across one bar (4 beats), computing per-step duration and triggering the target on non-rest characters.
|
|
145
|
-
- ADSR envelope: improved interpolation at segment boundaries to avoid clicks and handle 0/1-sample edge cases.
|
|
146
|
-
- Sample engine: robust stereo-to-mono mixdown with RMS-preserving scaling; applies a tiny automatic fade (~1 ms) when samples start/end abruptly to reduce clicks.
|
|
147
|
-
|
|
148
|
-
### 🧩 Parser & Lexer
|
|
149
|
-
|
|
150
|
-
- Added `Pattern` token and parser handler; supports `pattern <name> [with <bank.trigger>] = "..."`.
|
|
151
|
-
- Introduced a dedicated lexer driver (`rust/core/lexer/driver.rs`) to separate file resolution from tokenization.
|
|
152
|
-
- Map/array parsing now logs structured errors via the shared logger instead of printing to stdout.
|
|
153
|
-
|
|
154
|
-
### 🔁 Preprocessor & Resolution
|
|
155
|
-
|
|
156
|
-
- Pattern resolver stores definitions in the variable table, enabling later `call`/`spawn` usage.
|
|
157
|
-
- Variable lookup now walks parent scopes, fixing missed resolutions for outer-scope identifiers.
|
|
158
|
-
|
|
159
|
-
### 🛠️ CLI & Telemetry
|
|
160
|
-
|
|
161
|
-
- `build`: non-watch mode now executes and surfaces errors correctly.
|
|
162
|
-
- `install`: requires authentication and reports API/JSON errors with clear messages.
|
|
163
|
-
- Telemetry: generates a stable UUID when missing; consistently records CLI version, OS, and args.
|
|
164
|
-
- Ensures the `.deva` directory exists at startup.
|
|
165
|
-
|
|
166
|
-
### 📚 Examples
|
|
167
|
-
|
|
168
|
-
- Added `examples/pattern.deva`; updated `examples/index.deva` to demonstrate `pattern` and `spawn`.
|
|
169
|
-
|
|
170
|
-
### 📦 Packaging
|
|
171
|
-
|
|
172
|
-
- Added crate metadata (description, license, authors) and pinned internal versions for `devalang_types` and `devalang_utils`.
|
|
173
|
-
|
|
174
|
-
### 🐛 Fixes & Stability
|
|
175
|
-
|
|
176
|
-
- Safer `$math` parsing with diagnostics for malformed calls and argument evaluation failures.
|
|
177
|
-
- Minor parser fixes (loop body collection, clearer error messages) and logging cleanups across modules.
|
|
178
|
-
|
|
179
|
-
## Version 0.0.1-alpha.17 (2025-08-30)
|
|
180
|
-
|
|
181
|
-
### ✨ Addons
|
|
182
|
-
|
|
183
|
-
- Discovering addons: use the CLI to discover plugins or banks : place compiled addons (.devabank, .devaplugin) anywhere into your `.deva` folder, then run:
|
|
184
|
-
|
|
185
|
-
```bash
|
|
186
|
-
devalang discover
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
- Installing external addons: use the CLI to install addons:
|
|
190
|
-
|
|
191
|
-
```bash
|
|
192
|
-
devalang install <plugin | bank> user.myPlugin
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
- Plugin usage: you can now reference installed plugins directly from Devalang source
|
|
196
|
-
using the `@use` directive and an optional alias. Examples:
|
|
197
|
-
|
|
198
|
-
- `@use user.myPlugin` — exposes the plugin under its default name
|
|
199
|
-
- `@use user.myPlugin as myAlias` — expose the plugin as `myAlias` for shorter calls
|
|
200
|
-
|
|
201
|
-
### 🧩 Packaging & TypeScript
|
|
202
|
-
|
|
203
|
-
- Improved packaging and postinstall logic for the TypeScript/WASM distribution; the
|
|
204
|
-
Node package now avoids hard-failing when optional native binaries are not available.
|
|
205
|
-
- `out-tsc` postinstall now performs guarded downloads and better logging to help consumers diagnose installation issues on CI or constrained environments.
|
|
206
|
-
|
|
207
|
-
### 🧠 Architecture & Refactor
|
|
208
|
-
|
|
209
|
-
- Introduced a shared `devalang_types` crate to centralize project types and config structures — this simplifies cross-crate typing between the CLI, core, utils and WASM artifacts.
|
|
210
|
-
- Split utilities into a reusable `devalang_utils` crate (logger, watcher, spinner, file helpers, telemetry) and moved several helpers (path resolution, file copying, safe archive extraction) to that crate.
|
|
211
|
-
- Modularized CLI features, clean separation between build/process, realtime runner, IO helpers and stats collection.
|
|
212
|
-
|
|
213
|
-
### 🐛 Bug fixes & stability
|
|
214
|
-
|
|
215
|
-
- Multiple robustness fixes across the parser, preprocessor and audio engine:
|
|
216
|
-
- dotted identifiers and synth/provider resolution improvements,
|
|
217
|
-
- safer path resolution for `.deva` resources (banks, plugins, presets),
|
|
218
|
-
- improved error collection and logging with annotated stacks for better debug output.
|
|
219
|
-
- Audio runtime: better BPM/duration estimation and loop handling in the realtime runner to avoid premature termination of periodic handlers while loops execute.
|
|
220
|
-
|
|
221
|
-
### 🧪 Tests & CI
|
|
222
|
-
|
|
223
|
-
- Added test scaffolding and types to centralize cross-crate tests (test harness and lightweight types prepared in `devalang_types`); this enables adding unit tests incrementally without duplicating type definitions. (Full test coverage is ongoing.)
|
|
224
|
-
|
|
225
|
-
## Version 0.0.1-alpha.16-hotfix.2 (2025-08-29)
|
|
226
|
-
|
|
227
|
-
### 🌎 Ecosystem
|
|
228
|
-
|
|
229
|
-
- Published `@devaloop/devaforge` on npm. A tool for creating and managing Devalang addons.
|
|
230
|
-
|
|
231
|
-
### 🔎 Telemetry
|
|
232
|
-
|
|
233
|
-
- Patched first usage and user configuration.
|
|
234
|
-
|
|
235
|
-
## Version 0.0.1-alpha.16-hotfix.1 (2025-08-29)
|
|
236
|
-
|
|
237
|
-
### 🌎 Ecosystem
|
|
238
|
-
|
|
239
|
-
- Fixed Github Actions to build and release binaries for multiple platforms.
|
|
240
|
-
- Fixed `postinstall` script to launch properly postinstall.js when installing core package
|
|
241
|
-
|
|
242
|
-
## Version 0.0.1-alpha.16 (2025-08-28)
|
|
243
|
-
|
|
244
|
-
### 🌎 Ecosystem
|
|
245
|
-
|
|
246
|
-
- Added Github Actions to build and release binaries for multiple platforms.
|
|
247
|
-
|
|
248
|
-
### 🧩 Language Features
|
|
249
|
-
|
|
250
|
-
- `bank` handler: add `as <alias>` support and robust parsing of `author.name` and string names.
|
|
251
|
-
- Example: `bank user.808 as my808`, `bank user.myBank as myBank`
|
|
252
|
-
- `plugin` handler: initial implementation with basic support for loading and resolving plugins.
|
|
253
|
-
- Example: `@use user.myPlugin`, `@use user.myPlugin as myAlias`
|
|
254
|
-
- `on` event handler: implemented event trigger resolution and context management.
|
|
255
|
-
- Example: `on beat: ...`, `on bar: ...`, `on custom: ...`
|
|
256
|
-
- `emit` event handler: initial implementation for emitting events.
|
|
257
|
-
- Example: `emit beat`, `emit custom { value: 42 }`
|
|
258
|
-
- `print`: add JS-like string concatenation with `+` between strings, variables, numbers, and `$env`/`$math` expressions.
|
|
259
|
-
- Examples: `print "looping " + i`, `print "bpm=" + $env.bpm`, `print "sin=" + $math.sin(0.5)`
|
|
260
|
-
|
|
261
|
-
### 🧠 Core Engine
|
|
262
|
-
|
|
263
|
-
- Cleanest error handling for unknown triggers (module:line:column), no implicit file search.
|
|
264
|
-
- Real-time runner (play): loops are paced at 1 iteration per beat on the same thread.
|
|
265
|
-
- Periodic events (`on beat`, `on $beat`, `on bar`, `on $bar`) are suspended while a loop is running to avoid interleaving.
|
|
266
|
-
- Loops stop strictly at the end of their block (dedent / end-of-line).
|
|
267
|
-
- Duration estimation improved by accounting for loop iteration counts to keep the runner alive as needed.
|
|
268
|
-
|
|
269
|
-
### 🔎 Telemetry (stats)
|
|
270
|
-
|
|
271
|
-
- Added basic telemetry support for tracking module loading and resolution times.
|
|
272
|
-
- To enable telemetry, execute `devalang telemetry enable`
|
|
273
|
-
- To disable telemetry, execute `devalang telemetry disable`
|
|
274
|
-
|
|
275
|
-
## Version 0.0.1-alpha.15 (2025-08-27)
|
|
276
|
-
|
|
277
|
-
### ✨ Language Features
|
|
278
|
-
|
|
279
|
-
- Added `automate` statement to schedule parameter automation (e.g. volume, pan, pitch) over time
|
|
280
|
-
- Supports per-note automation via a `automate` map on note calls (e.g. `note(C4, { automate: { volume: { 0%: 0.0, 100%: 1.0 } } })`)
|
|
281
|
-
- Added `print` statement to ease debugging at runtime
|
|
282
|
-
- Added special variables and functions usable in expressions:
|
|
283
|
-
- `$env.bpm`, `$env.beat`
|
|
284
|
-
- `$math.sin(expr)`, `$math.cos(expr)`
|
|
285
|
-
- `$env.position` (alias of beat), `$env.seed` (global session seed for deterministic randomness)
|
|
286
|
-
- `$math.random(seed?)`, `$math.lerp(a, b, t)`
|
|
287
|
-
- `$easing.*` functions for shaping values in [0,1]:
|
|
288
|
-
- `linear`, `easeIn/Out/InOutQuad`, `easeIn/Out/InOutCubic`, `easeIn/Out/InOutQuart`,
|
|
289
|
-
`easeIn/Out/InOutExpo`, `easeIn/Out/InOutBack`, `easeIn/Out/InOutElastic`, `easeIn/Out/InOutBounce`
|
|
290
|
-
- `$mod.*` modulators for time-based control:
|
|
291
|
-
- `lfo.sine(ratePerBeat)`, `lfo.tri(ratePerBeat)`, `envelope(attack, decay, sustain, release, t)`
|
|
292
|
-
- Added basic `for` loops and array literals
|
|
293
|
-
- Example: `for i in [1, 2, 3]: print i`
|
|
294
|
-
|
|
295
|
-
### 🧠 Core Engine
|
|
296
|
-
|
|
297
|
-
- Implemented runtime automation in the audio renderer with linear envelope interpolation
|
|
298
|
-
- Per-note automation supported (volume, pan, pitch) and evaluated during rendering
|
|
299
|
-
- Fixed evaluator recursion guard and improved `$math.*` expression handling (prevents stack overflows)
|
|
300
|
-
- Minor ADSR defaults polish: ensure `sustain` defaults to `1.0`
|
|
301
|
-
- Evaluator now supports `$mod.*` and `$easing.*` calls (evaluated before `$math.*`) for richer automation
|
|
302
|
-
- Modularized `AudioEngine::insert_note` into small helpers (oscillator, ADSR computation, pan gains, envelope evaluation, stereo mix)
|
|
303
|
-
- Reused helpers in `pad_samples` to reduce duplication
|
|
304
|
-
- Moved special variables/functions to a dedicated module: `core::audio::special`, and refactored the evaluator to use it
|
|
305
|
-
- Continued borrow-friendly refactors to avoid unnecessary clones and improve readability
|
|
306
|
-
|
|
307
|
-
### 🧩 Parser / Preprocessor
|
|
308
|
-
|
|
309
|
-
- Parser upgrades for operators `+ - * /`, parentheses and brackets
|
|
310
|
-
- Improved arrow-call parsing and map handling for multi-line values
|
|
311
|
-
- Resolvers: refined `call`/`spawn` resolution (better error messages with stack traces)
|
|
312
|
-
|
|
313
|
-
### 🧱 Architecture / Refactor
|
|
314
|
-
|
|
315
|
-
- Modularized audio interpreter (split by statement type); clearer responsibilities
|
|
316
|
-
- Reduced allocations by passing slices/borrows instead of cloning large structures
|
|
317
|
-
- Removed dead code and unused params across resolvers, handlers, and interpreter modules
|
|
318
|
-
|
|
319
|
-
### 🧰 Tooling / Build
|
|
320
|
-
|
|
321
|
-
- Resolved binary/lib artifact collision by renaming the internal library crate to `devalang_core`
|
|
322
|
-
- Warning sweep: build now compiles cleanly without Rust warnings (and fewer Clippy lints)
|
|
323
|
-
- Moved error collection helpers into a dedicated `utils::error` module
|
|
324
|
-
|
|
325
|
-
### 🐛 Fixes & Stability
|
|
326
|
-
|
|
327
|
-
- Prevent infinite recursion during numeric expression evaluation
|
|
328
|
-
- Stabilized renderer and interpreter timing when combining `loop`, `call`, and `spawn`
|
|
329
|
-
|
|
330
|
-
### ⚠️ Breaking changes
|
|
331
|
-
|
|
332
|
-
- Internal crate rename to `devalang_core` (no change to the CLI or WASM package names)
|
|
333
|
-
|
|
334
|
-
## Version 0.0.1-alpha.14 (2025-08-24)
|
|
335
|
-
|
|
336
|
-
### 🌎 Ecosystem
|
|
337
|
-
|
|
338
|
-
- Deployed "SSO" (Single Sign-On) for user authentication. [(https://sso.devalang.com)](https://sso.devalang.com) when using `devalang login`.
|
|
339
|
-
|
|
340
|
-
### 🧩 Language Features
|
|
341
|
-
|
|
342
|
-
- Added support for ADSR envelopes in synthesizers.
|
|
343
|
-
- Example: `let mySynth = synth sine { attack: 0, decay: 50, sustain: 100, release: 50 }`
|
|
344
|
-
- Added support for `note` parameters in synthesizers.
|
|
345
|
-
- Example: `mySynth -> note(C4, { duration: 500, velocity: 0.8, glide: true, slide: false })`
|
|
346
|
-
|
|
347
|
-
### 🧠 Core Engine
|
|
348
|
-
|
|
349
|
-
- Patched banks resolution with improved namespace handling. (declaring `bank <bank_author>.<bank_name>` and using `.<bank_name>.<bank_trigger>`)
|
|
350
|
-
- Patched `arrow_call` to correctly handle argument parsing and improve error reporting.
|
|
351
|
-
- Implemented multi-line argument parsing for `arrow_call`.
|
|
352
|
-
- Patched execution of `arrow_call` to ensure correct timing and execution order.
|
|
353
|
-
- Upgraded indent lexer to handle multi-line statements and improve indentation handling.
|
|
354
|
-
- Upgraded `parse_map_value` to handle multi-line values and improve parsing logic in Parser.
|
|
355
|
-
- Added `log_message_with_trace` function to log messages with informations when running commands with `debug` flag.
|
|
356
|
-
|
|
357
|
-
### 🧰 Commands
|
|
358
|
-
|
|
359
|
-
- Added `login` command to authenticate users to install protected or private packages.
|
|
360
|
-
- Refactored `install` command to support installing banks, presets and plugins.
|
|
361
|
-
- `install bank <bank_author>.<bank_name>` to install a specific bank of sounds.
|
|
362
|
-
- `install preset <preset_author>.<preset_name>` to install a specific preset.
|
|
363
|
-
- `install plugin <plugin_author>.<plugin_name>` to install a specific plugin.
|
|
364
|
-
- Implemented `debug` and `compress` arguments for `build`, `check` and `play` commands.
|
|
365
|
-
- `build --debug` to build the AST with debug information.
|
|
366
|
-
- `check --debug` to check the syntax with debug information.
|
|
367
|
-
- `play --debug` to play the audio with debug information.
|
|
368
|
-
- `build --compress` to compress the output.
|
|
369
|
-
- `check --compress` to compress the output.
|
|
370
|
-
- `play --compress` to compress the output.
|
|
371
|
-
|
|
372
|
-
## Version 0.0.1-alpha.13 (2025-07-26)
|
|
373
|
-
|
|
374
|
-
### 🧩 Language Features
|
|
375
|
-
|
|
376
|
-
- Added support for `fn` directive to define functions in Devalang.
|
|
377
|
-
- Example: `fn myFunction(param1, param2):`
|
|
378
|
-
|
|
379
|
-
### 🧠 Core Engine
|
|
380
|
-
|
|
381
|
-
- Patched `trigger`, `call`, and `spawn`, `renderer` to handle correct cursor time in the audio interpreter.
|
|
382
|
-
- Refactored audio engine and interpreter to handle correct timing and execution while using `loop`, `call`, and `spawn` statements.
|
|
383
|
-
- Refactored `trigger` effects to apply more effects to triggers.
|
|
384
|
-
- Example: `.myTrigger auto { reverb: 0.25, pitch: 0.75, gain: 0.8 }`
|
|
385
|
-
- Refactored `preprocessor` to handle correct namespaced banks of sounds and triggers.
|
|
386
|
-
- Refactored `collect_errors_recursively` to provide detailed error reporting across nested statements.
|
|
387
|
-
- Optimized the `renderer` to handle silent buffers and improve performance.
|
|
388
|
-
|
|
389
|
-
### 🛠️ Utilities
|
|
390
|
-
|
|
391
|
-
- Added the `extract_loop_body_statements` utility for better loop handling.
|
|
392
|
-
- Improved logging for module variables and functions.
|
|
393
|
-
|
|
394
|
-
### 🧩 Web Assembly
|
|
395
|
-
|
|
396
|
-
- Patched `lib.rs` dependencies to ensure compatibility with the latest Rust and WASM standards.
|
|
397
|
-
|
|
398
|
-
## Version 0.0.1-alpha.12 (2025-07-21)
|
|
399
|
-
|
|
400
|
-
### 🧩 Language Features
|
|
401
|
-
|
|
402
|
-
- Implemented `trigger` effects to apply effects to triggers, allowing for more dynamic sound manipulation.
|
|
403
|
-
- Example: `.myTrigger auto { reverb: 1.0, pitch: 1.5, gain: 0.8 }`
|
|
404
|
-
|
|
405
|
-
### 🧠 Core Engine
|
|
406
|
-
|
|
407
|
-
- Moved `utils::installer` to `installer::utils` to better organize the project structure.
|
|
408
|
-
- Set CLI dependencies as optional in `Cargo.toml` to allow for a cleaner build without CLI features.
|
|
409
|
-
- Patched `@load` relative path resolution to ensure correct loading of external resources.
|
|
410
|
-
- Patched `trigger` statement that was not correctly parsed when using namespaced banks of sounds.
|
|
411
|
-
|
|
412
|
-
### 🧩 Web Assembly
|
|
413
|
-
|
|
414
|
-
- Patched `lib.rs` dependencies to ensure compatibility with the latest Rust and WASM standards.
|
|
415
|
-
|
|
416
|
-
## Version 0.0.1-alpha.11 (2025-07-20)
|
|
417
|
-
|
|
418
|
-
### 📖 Documentation
|
|
419
|
-
|
|
420
|
-
- Removed old documentation, please refer to the [new documentation website](https://docs.devalang.com) for the latest information.
|
|
421
|
-
|
|
422
|
-
### ✨ Syntax
|
|
423
|
-
|
|
424
|
-
- Added namespaced banks of sounds, allowing for better organization and management of sound banks.
|
|
425
|
-
- Example: `.808.myTrigger` to access a specific trigger in the `808` bank.
|
|
426
|
-
- Added support for beat durations in `triggers` statements, allowing for more precise timing control.
|
|
427
|
-
- Example: `.myTrigger 1/4 { ... }` to trigger the sound every quarter beat.
|
|
428
|
-
- Added support for beat durations in `arrow_calls` statements, allowing for more precise timing control.
|
|
429
|
-
- Example: `mySynth -> note(C4, { duration: 1/8 })` to play a note for an eighth beat.
|
|
430
|
-
|
|
431
|
-
### 🧠 Core Engine
|
|
432
|
-
|
|
433
|
-
- Implemented `bank` resolver to resolve banks of sounds in the code.
|
|
434
|
-
- Example: `bank 808` will resolve to a bank of sounds named `808` if exists (check bank available command).
|
|
435
|
-
|
|
436
|
-
### 🧰 Commands
|
|
437
|
-
|
|
438
|
-
> Use the `bank 808` statement to access the default sounds and triggers !
|
|
439
|
-
> Then you can use `808.myTrigger` to access a specific trigger in the `808` bank.
|
|
440
|
-
|
|
441
|
-
- Added `bank` command to manage banks of sounds.
|
|
442
|
-
|
|
443
|
-
- `bank list` to list installed banks of sounds.
|
|
444
|
-
- `bank available` to list available banks of sounds for installation.
|
|
445
|
-
- `bank info <bank_name>` to show information about a specific bank.
|
|
446
|
-
- `bank remove <bank_name>` to remove a bank.
|
|
447
|
-
- `bank update` to update all banks of sounds.
|
|
448
|
-
- `bank update <bank_name>` to update a specific bank.
|
|
449
|
-
|
|
450
|
-
- Added `install` command to install banks of sounds.
|
|
451
|
-
- `install bank <bank_name>` to install a specific bank of sounds.
|
|
452
|
-
|
|
453
|
-
### 🧪 Experimental
|
|
454
|
-
|
|
455
|
-
- Introduced lazy loading and namespace-based resolution of installed sound banks.
|
|
456
|
-
|
|
457
|
-
## Version 0.0.1-alpha.10 (2025-07-19)
|
|
458
|
-
|
|
459
|
-
### 📖 Documentation
|
|
460
|
-
|
|
461
|
-
- Updated [new documentation website](https://docs.devalang.com) with new features and examples.
|
|
462
|
-
|
|
463
|
-
### 🧠 Core Engine
|
|
464
|
-
|
|
465
|
-
- Patched `call`, `spawn` to handle correct cursor time.
|
|
466
|
-
- Patched `advance_char` to handle correct indentation and dedentation.
|
|
467
|
-
- Patched `bank` resolver to handle numbers in bank names.
|
|
468
|
-
- Patched `spawn` calls that was not calling a variable.
|
|
469
|
-
|
|
470
|
-
### 🧩 Web Assembly
|
|
471
|
-
|
|
472
|
-
- Added `load_wasm_module` function to the WASM module to load Devalang modules dynamically.
|
|
473
|
-
- Added `render_audio` function to the WASM module to render audio files.
|
|
474
|
-
|
|
475
|
-
## Version 0.0.1-alpha.9 (2025-07-14)
|
|
476
|
-
|
|
477
|
-
### ✨ Syntax
|
|
478
|
-
|
|
479
|
-
- Added support for `synth` directives to define synthesizer sounds directly in code
|
|
480
|
-
→ Example:
|
|
481
|
-
|
|
482
|
-
```deva
|
|
483
|
-
let mySynth = synth sine
|
|
484
|
-
```
|
|
485
|
-
|
|
486
|
-
### 🧠 Core Engine
|
|
487
|
-
|
|
488
|
-
- ✅ **Major refactor** of the resolution layer:
|
|
489
|
-
|
|
490
|
-
- `condition`, `loop`, `group`, `trigger`, `call`, `spawn`, and `driver` were fully rewritten
|
|
491
|
-
- Ensures **correct variable scoping**, **cross-module references**, and **imported symbol resolution**
|
|
492
|
-
|
|
493
|
-
- ✅ Audio interpreter updated:
|
|
494
|
-
- `call` and `spawn` now execute correctly in parallel, preserving **temporal alignment** across groups
|
|
495
|
-
|
|
496
|
-
### 🧩 Language Features
|
|
497
|
-
|
|
498
|
-
- Improved `@import` behavior:
|
|
499
|
-
- Modules can now be imported using **relative paths only**
|
|
500
|
-
- No need for absolute or root-based imports
|
|
501
|
-
|
|
502
|
-
## Version 0.0.1-alpha.8 (2025-07-12)
|
|
503
|
-
|
|
504
|
-
### Syntax
|
|
505
|
-
|
|
506
|
-
- Implemented `if` directive to conditionally execute blocks of code.
|
|
507
|
-
- Implemented `else` directive to provide an alternative block of code when the `if` condition is not met.
|
|
508
|
-
- Implemented `else if` directive to provide additional conditions for the `if` directive.
|
|
509
|
-
|
|
510
|
-
### Core Components
|
|
511
|
-
|
|
512
|
-
- Implemented evaluator for audio statements, to execute conditional statements.
|
|
513
|
-
- Fixed `group` resolution and export issues.
|
|
514
|
-
- Implemented `Global Store` debugger to inspect variables by module for build command.
|
|
515
|
-
- Organized `TokenKind` and `StatementKind` enums for better clarity and maintainability.
|
|
516
|
-
- Refactored audio interpreter to handle the new syntax and directives.
|
|
517
|
-
- Refactored lexer to handle new directives and improve tokenization.
|
|
518
|
-
- Refactored parser to handle new directives and improve parsing logic.
|
|
519
|
-
- Added support for `call` and `spawn` execution of imported groups.
|
|
520
|
-
- Enforced scoped resolution of groups in `spawn` and `call` (must be imported in current module).
|
|
521
|
-
|
|
522
|
-
## Version 0.0.1-alpha.7 (2025-07-11)
|
|
523
|
-
|
|
524
|
-
## Examples
|
|
525
|
-
|
|
526
|
-
- Added examples in `examples` folder (group, loop, variables, index).
|
|
527
|
-
|
|
528
|
-
## Structure
|
|
529
|
-
|
|
530
|
-
- Moved `rust/audio` folder to `rust/core/audio` to better organize the project structure.
|
|
531
|
-
|
|
532
|
-
### Core Components
|
|
533
|
-
|
|
534
|
-
- Implemented `group` directive to define groups of sounds.
|
|
535
|
-
- Implemented `call` directive to call a group of sounds.
|
|
536
|
-
- Implemented `spawn` directive to spawn a group of sounds in parallel.
|
|
537
|
-
- Implemented `sleep` directive to pause execution for a specified duration.
|
|
538
|
-
- Patched line and column tracking in the lexer to ensure correct indentation handling.
|
|
539
|
-
- Patched string lexing advancing to handle first character correctly.
|
|
540
|
-
|
|
541
|
-
## Version 0.0.1-alpha.5 (2025-07-05)
|
|
542
|
-
|
|
543
|
-
### Syntax
|
|
544
|
-
|
|
545
|
-
- Fixed block parsing issues caused by missing or incorrect `Indent` / `Dedent` token detection.
|
|
546
|
-
- Indentation handling now triggers correctly at each newline.
|
|
547
|
-
- Improved reliability of nested blocks (e.g., inside `loop`) with consistent `Dedent` termination.
|
|
548
|
-
|
|
549
|
-
### Core Components
|
|
550
|
-
|
|
551
|
-
- Added full **WebAssembly (WASM)** support — Devalang can now be compiled for browser or Node.js environments.
|
|
552
|
-
- Prepared the ground for future IDE integrations (e.g., VSCode extension) by stabilizing core syntax parsing.
|
|
553
|
-
|
|
554
|
-
## Version 0.0.1-alpha.4 (2025-07-03)
|
|
555
|
-
|
|
556
|
-
### Audio Engine
|
|
557
|
-
|
|
558
|
-
- Integrated Audio Engine to handle audio playback and rendering.
|
|
559
|
-
- Implemented Audio Player to play audio files.
|
|
560
|
-
- Added support for audio playback with the `play` command.
|
|
561
|
-
|
|
562
|
-
### Commands
|
|
563
|
-
|
|
564
|
-
- Implemented `play` command to play Devalang files.
|
|
565
|
-
|
|
566
|
-
- Added `--watch` option to watch for changes in files and automatically rebuild and play them. (once)
|
|
567
|
-
- Added `--repeat` option to repeat the playback of the audio file. (infinite)
|
|
568
|
-
|
|
569
|
-
Note : You cannot use `--watch` and `--repeat` options together. Use `--repeat` instead.
|
|
570
|
-
|
|
571
|
-
## Version 0.0.1-alpha.3 (2025-07-01)
|
|
572
|
-
|
|
573
|
-
- /!\ Major refactor of the project structure and module system /!\
|
|
574
|
-
- Refactored module system to support multiple modules and submodules.
|
|
575
|
-
- Patched all directives to be compatible with the new project structure.
|
|
576
|
-
- Prepared for the upcoming audio engine integration and sound rendering capabilities.
|
|
577
|
-
- Updated documentation to reflect the new project structure and features.
|
|
578
|
-
|
|
579
|
-
## Version 0.0.1-alpha.2 (2025-06-26)
|
|
580
|
-
|
|
581
|
-
### Commands
|
|
582
|
-
|
|
583
|
-
- Implemented `init` command to initialize a new Devalang project.
|
|
584
|
-
- Implemented `template` command to manage templates.
|
|
585
|
-
- Added `list` subcommand to list available templates.
|
|
586
|
-
- Added `info` subcommand to show information about a specific template.
|
|
587
|
-
- Implemented `watch` subcommand for the `build` and `check` command to watch for changes in files and automatically rebuild or check them.
|
|
588
|
-
|
|
589
|
-
### Core Components
|
|
590
|
-
|
|
591
|
-
- Implemented Config manager to handle configuration files.
|
|
592
|
-
- Added support for `.devalang` configuration file as a TOML file.
|
|
593
|
-
- Implemented File System watcher to monitor file changes.
|
|
594
|
-
- Implemented Template manager to handle templates and their metadata.
|
|
595
|
-
|
|
596
|
-
### Syntax
|
|
597
|
-
|
|
598
|
-
- Added support for built-in triggers for `.snare`, `.hihat`, `.clap`, `.tom`, `.crash`, `.ride`, `.synth`, `.bass`, and `.pad`.
|
|
599
|
-
|
|
600
|
-
## Version 0.0.1-alpha.1 (2025-06-25)
|
|
601
|
-
|
|
602
|
-
### Syntax
|
|
603
|
-
|
|
604
|
-
- Added support for `@import` directive to import other Devalang files.
|
|
605
|
-
- Added support for `@export` directive to export variables and functions.
|
|
606
|
-
- Added support for `@load` directive to load external resources.
|
|
607
|
-
- Added support for `bpm` directive to set the beats per minute.
|
|
608
|
-
- Added support for `bank` directive to define a bank of sounds.
|
|
609
|
-
- Added support for `loop` directive to define loops in the code.
|
|
610
|
-
|
|
611
|
-
### Commands
|
|
612
|
-
|
|
613
|
-
- Implemented `check` command to check the syntax of Devalang files.
|
|
614
|
-
- Implemented `build` command to build the Abstract Syntax Tree (AST) of Devalang files.
|
|
615
|
-
|
|
616
|
-
### Core Components
|
|
617
|
-
|
|
618
|
-
- Implemented Lexer to tokenize Devalang source code.
|
|
619
|
-
- Implemented Parser to parse the tokens and build the AST.
|
|
620
|
-
- Implemented Preprocessor to handle directives and preprocess the source code.
|
|
621
|
-
- Implemented Debugger to debug Devalang code.
|
|
622
|
-
- Implemented Builder to build the final output from the AST.
|