@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.
Files changed (345) hide show
  1. package/README.md +182 -152
  2. package/out-tsc/api.d.ts +180 -0
  3. package/out-tsc/api.d.ts.map +1 -0
  4. package/out-tsc/api.js +286 -0
  5. package/out-tsc/api.js.map +1 -0
  6. package/out-tsc/bin/index.d.ts +12 -0
  7. package/out-tsc/bin/index.d.ts.map +1 -0
  8. package/out-tsc/bin/index.js +20 -54
  9. package/out-tsc/bin/index.js.map +1 -0
  10. package/out-tsc/examples/basic-usage.d.ts +8 -0
  11. package/out-tsc/examples/basic-usage.d.ts.map +1 -0
  12. package/out-tsc/examples/basic-usage.js +113 -0
  13. package/out-tsc/examples/basic-usage.js.map +1 -0
  14. package/out-tsc/index.d.ts +19 -5
  15. package/out-tsc/index.d.ts.map +1 -0
  16. package/out-tsc/index.js +24 -6
  17. package/out-tsc/index.js.map +1 -0
  18. package/out-tsc/scripts/copy-wasm-dts.d.ts +7 -0
  19. package/out-tsc/scripts/copy-wasm-dts.d.ts.map +1 -0
  20. package/out-tsc/scripts/copy-wasm-dts.js +36 -32
  21. package/out-tsc/scripts/copy-wasm-dts.js.map +1 -0
  22. package/out-tsc/scripts/postinstall.d.ts +1 -0
  23. package/out-tsc/scripts/postinstall.d.ts.map +1 -0
  24. package/out-tsc/scripts/postinstall.js +4 -1
  25. package/out-tsc/scripts/postinstall.js.map +1 -0
  26. package/out-tsc/scripts/version/bump.d.ts +5 -1
  27. package/out-tsc/scripts/version/bump.d.ts.map +1 -0
  28. package/out-tsc/scripts/version/bump.js +114 -44
  29. package/out-tsc/scripts/version/bump.js.map +1 -0
  30. package/out-tsc/scripts/version/fetch.d.ts +12 -1
  31. package/out-tsc/scripts/version/fetch.d.ts.map +1 -0
  32. package/out-tsc/scripts/version/fetch.js +68 -24
  33. package/out-tsc/scripts/version/fetch.js.map +1 -0
  34. package/out-tsc/scripts/version/index.d.ts +6 -0
  35. package/out-tsc/scripts/version/index.d.ts.map +1 -0
  36. package/out-tsc/scripts/version/index.js +44 -22
  37. package/out-tsc/scripts/version/index.js.map +1 -0
  38. package/out-tsc/scripts/version/sync.d.ts +5 -1
  39. package/out-tsc/scripts/version/sync.d.ts.map +1 -0
  40. package/out-tsc/scripts/version/sync.js +78 -29
  41. package/out-tsc/scripts/version/sync.js.map +1 -0
  42. package/out-tsc/types.d.ts +68 -0
  43. package/out-tsc/types.d.ts.map +1 -0
  44. package/out-tsc/{core/types/value.js → types.js} +4 -0
  45. package/out-tsc/types.js.map +1 -0
  46. package/out-tsc/wasm.d.ts +8 -0
  47. package/out-tsc/wasm.d.ts.map +1 -0
  48. package/out-tsc/{core/index.js → wasm.js} +9 -6
  49. package/out-tsc/wasm.js.map +1 -0
  50. package/package.json +42 -42
  51. package/.cargo/config.toml +0 -2
  52. package/.devalang +0 -9
  53. package/.github/workflows/ci.yml +0 -103
  54. package/Cargo.toml +0 -84
  55. package/docs/CHANGELOG.md +0 -622
  56. package/docs/CONTRIBUTING.md +0 -101
  57. package/docs/ROADMAP.md +0 -38
  58. package/docs/TODO.md +0 -71
  59. package/examples/automation.deva +0 -42
  60. package/examples/bank.deva +0 -7
  61. package/examples/bus.deva +0 -10
  62. package/examples/chain.deva +0 -19
  63. package/examples/condition.deva +0 -20
  64. package/examples/duration.deva +0 -9
  65. package/examples/effect.deva +0 -2
  66. package/examples/events.deva +0 -12
  67. package/examples/filter.deva +0 -11
  68. package/examples/function.deva +0 -15
  69. package/examples/group.deva +0 -12
  70. package/examples/index.deva +0 -63
  71. package/examples/lfo.deva +0 -9
  72. package/examples/loop.deva +0 -10
  73. package/examples/pattern.deva +0 -8
  74. package/examples/plugin.deva +0 -16
  75. package/examples/routing.deva +0 -23
  76. package/examples/samples/hat-808.wav +0 -0
  77. package/examples/samples/kick-808.wav +0 -0
  78. package/examples/synth.deva +0 -24
  79. package/examples/synth_types.deva +0 -17
  80. package/examples/variables.deva +0 -9
  81. package/out-tsc/bin/project-version.json +0 -6
  82. package/out-tsc/core/functions/index.d.ts +0 -42
  83. package/out-tsc/core/functions/index.js +0 -87
  84. package/out-tsc/core/index.d.ts +0 -6
  85. package/out-tsc/core/types/index.d.ts +0 -4
  86. package/out-tsc/core/types/index.js +0 -20
  87. package/out-tsc/core/types/plugin.d.ts +0 -18
  88. package/out-tsc/core/types/plugin.js +0 -2
  89. package/out-tsc/core/types/result.d.ts +0 -27
  90. package/out-tsc/core/types/result.js +0 -2
  91. package/out-tsc/core/types/statement.d.ts +0 -106
  92. package/out-tsc/core/types/statement.js +0 -2
  93. package/out-tsc/core/types/value.d.ts +0 -43
  94. package/out-tsc/pkg/devalang_core.d.ts +0 -15
  95. package/out-tsc/pkg/devalang_core.js +0 -65
  96. package/out-tsc/pkg/devalang_core_bg.wasm.d.ts +0 -34
  97. package/out-tsc/scripts/version/copy-to-binary.d.ts +0 -1
  98. package/out-tsc/scripts/version/copy-to-binary.js +0 -79
  99. package/project-version.json +0 -6
  100. package/rust/bindings/Cargo.toml +0 -9
  101. package/rust/bindings/src/lib.rs +0 -86
  102. package/rust/cli/addon/commands.rs +0 -35
  103. package/rust/cli/addon/download.rs +0 -234
  104. package/rust/cli/addon/install.rs +0 -33
  105. package/rust/cli/addon/list.rs +0 -224
  106. package/rust/cli/addon/metadata.rs +0 -124
  107. package/rust/cli/addon/mod.rs +0 -8
  108. package/rust/cli/addon/remove.rs +0 -271
  109. package/rust/cli/addon/update.rs +0 -305
  110. package/rust/cli/addon/utils.rs +0 -109
  111. package/rust/cli/build/commands.rs +0 -153
  112. package/rust/cli/build/mod.rs +0 -2
  113. package/rust/cli/build/process.rs +0 -165
  114. package/rust/cli/check/mod.rs +0 -208
  115. package/rust/cli/discover/commands.rs +0 -275
  116. package/rust/cli/discover/config.rs +0 -109
  117. package/rust/cli/discover/fs.rs +0 -19
  118. package/rust/cli/discover/install.rs +0 -214
  119. package/rust/cli/discover/metadata.rs +0 -48
  120. package/rust/cli/discover/mod.rs +0 -5
  121. package/rust/cli/init/commands.rs +0 -88
  122. package/rust/cli/init/mod.rs +0 -1
  123. package/rust/cli/login/commands.rs +0 -124
  124. package/rust/cli/login/mod.rs +0 -1
  125. package/rust/cli/me/commands.rs +0 -52
  126. package/rust/cli/me/mod.rs +0 -1
  127. package/rust/cli/mod.rs +0 -12
  128. package/rust/cli/parser.rs +0 -320
  129. package/rust/cli/play/commands.rs +0 -375
  130. package/rust/cli/play/io.rs +0 -17
  131. package/rust/cli/play/mod.rs +0 -5
  132. package/rust/cli/play/process.rs +0 -159
  133. package/rust/cli/play/realtime.rs +0 -91
  134. package/rust/cli/play/utils.rs +0 -23
  135. package/rust/cli/telemetry/commands.rs +0 -22
  136. package/rust/cli/telemetry/event_creator.rs +0 -80
  137. package/rust/cli/telemetry/mod.rs +0 -3
  138. package/rust/cli/telemetry/send.rs +0 -51
  139. package/rust/cli/template/commands.rs +0 -69
  140. package/rust/cli/template/mod.rs +0 -1
  141. package/rust/cli/update/commands.rs +0 -6
  142. package/rust/cli/update/mod.rs +0 -1
  143. package/rust/config/driver.rs +0 -112
  144. package/rust/config/mod.rs +0 -3
  145. package/rust/config/ops.rs +0 -26
  146. package/rust/config/settings.rs +0 -101
  147. package/rust/core/audio/engine/driver.rs +0 -237
  148. package/rust/core/audio/engine/export.rs +0 -169
  149. package/rust/core/audio/engine/helpers.rs +0 -178
  150. package/rust/core/audio/engine/mod.rs +0 -56
  151. package/rust/core/audio/engine/notes/dsp.rs +0 -88
  152. package/rust/core/audio/engine/notes/mod.rs +0 -53
  153. package/rust/core/audio/engine/notes/params.rs +0 -294
  154. package/rust/core/audio/engine/sample/insert.rs +0 -300
  155. package/rust/core/audio/engine/sample/mod.rs +0 -40
  156. package/rust/core/audio/engine/sample/padding.rs +0 -170
  157. package/rust/core/audio/evaluator/condition.rs +0 -61
  158. package/rust/core/audio/evaluator/mod.rs +0 -9
  159. package/rust/core/audio/evaluator/numeric.rs +0 -152
  160. package/rust/core/audio/evaluator/rhs.rs +0 -16
  161. package/rust/core/audio/evaluator/string_expr.rs +0 -94
  162. package/rust/core/audio/interpreter/driver.rs +0 -574
  163. package/rust/core/audio/interpreter/mod.rs +0 -2
  164. package/rust/core/audio/interpreter/statements/arrow_call/interprete.rs +0 -179
  165. package/rust/core/audio/interpreter/statements/arrow_call/methods/chord.rs +0 -398
  166. package/rust/core/audio/interpreter/statements/arrow_call/methods/effects.rs +0 -323
  167. package/rust/core/audio/interpreter/statements/arrow_call/methods/mod.rs +0 -3
  168. package/rust/core/audio/interpreter/statements/arrow_call/methods/note.rs +0 -371
  169. package/rust/core/audio/interpreter/statements/arrow_call/mod.rs +0 -3
  170. package/rust/core/audio/interpreter/statements/arrow_call/types/arp.rs +0 -192
  171. package/rust/core/audio/interpreter/statements/arrow_call/types/mod.rs +0 -24
  172. package/rust/core/audio/interpreter/statements/arrow_call/types/pad.rs +0 -116
  173. package/rust/core/audio/interpreter/statements/arrow_call/types/pluck.rs +0 -97
  174. package/rust/core/audio/interpreter/statements/arrow_call/types/sub.rs +0 -100
  175. package/rust/core/audio/interpreter/statements/automate.rs +0 -16
  176. package/rust/core/audio/interpreter/statements/call.rs +0 -325
  177. package/rust/core/audio/interpreter/statements/condition.rs +0 -72
  178. package/rust/core/audio/interpreter/statements/function.rs +0 -24
  179. package/rust/core/audio/interpreter/statements/let_.rs +0 -36
  180. package/rust/core/audio/interpreter/statements/load.rs +0 -17
  181. package/rust/core/audio/interpreter/statements/loop_.rs +0 -115
  182. package/rust/core/audio/interpreter/statements/mod.rs +0 -12
  183. package/rust/core/audio/interpreter/statements/sleep.rs +0 -28
  184. package/rust/core/audio/interpreter/statements/spawn.rs +0 -302
  185. package/rust/core/audio/interpreter/statements/tempo.rs +0 -40
  186. package/rust/core/audio/interpreter/statements/trigger.rs +0 -242
  187. package/rust/core/audio/loader/mod.rs +0 -1
  188. package/rust/core/audio/loader/trigger.rs +0 -98
  189. package/rust/core/audio/mod.rs +0 -6
  190. package/rust/core/audio/player.rs +0 -70
  191. package/rust/core/audio/special/easing.rs +0 -189
  192. package/rust/core/audio/special/env.rs +0 -45
  193. package/rust/core/audio/special/math.rs +0 -134
  194. package/rust/core/audio/special/mod.rs +0 -9
  195. package/rust/core/audio/special/modulator.rs +0 -143
  196. package/rust/core/builder/mod.rs +0 -129
  197. package/rust/core/debugger/lexer.rs +0 -27
  198. package/rust/core/debugger/logs.rs +0 -52
  199. package/rust/core/debugger/mod.rs +0 -30
  200. package/rust/core/debugger/preprocessor.rs +0 -27
  201. package/rust/core/debugger/store.rs +0 -38
  202. package/rust/core/error/mod.rs +0 -269
  203. package/rust/core/lexer/driver.rs +0 -59
  204. package/rust/core/lexer/handler/arrow.rs +0 -82
  205. package/rust/core/lexer/handler/at.rs +0 -21
  206. package/rust/core/lexer/handler/brace.rs +0 -41
  207. package/rust/core/lexer/handler/colon.rs +0 -21
  208. package/rust/core/lexer/handler/comment.rs +0 -30
  209. package/rust/core/lexer/handler/dot.rs +0 -21
  210. package/rust/core/lexer/handler/driver.rs +0 -337
  211. package/rust/core/lexer/handler/identifier.rs +0 -47
  212. package/rust/core/lexer/handler/indent.rs +0 -66
  213. package/rust/core/lexer/handler/mod.rs +0 -15
  214. package/rust/core/lexer/handler/newline.rs +0 -23
  215. package/rust/core/lexer/handler/number.rs +0 -31
  216. package/rust/core/lexer/handler/operator.rs +0 -46
  217. package/rust/core/lexer/handler/parenthesis.rs +0 -41
  218. package/rust/core/lexer/handler/slash.rs +0 -21
  219. package/rust/core/lexer/handler/string.rs +0 -63
  220. package/rust/core/lexer/mod.rs +0 -3
  221. package/rust/core/lexer/token.rs +0 -91
  222. package/rust/core/mod.rs +0 -9
  223. package/rust/core/parser/driver/block.rs +0 -111
  224. package/rust/core/parser/driver/cursor.rs +0 -82
  225. package/rust/core/parser/driver/driver_impl.rs +0 -159
  226. package/rust/core/parser/driver/mod.rs +0 -6
  227. package/rust/core/parser/driver/parse_array.rs +0 -120
  228. package/rust/core/parser/driver/parse_map.rs +0 -247
  229. package/rust/core/parser/driver/parser.rs +0 -160
  230. package/rust/core/parser/handler/arrow_call.rs +0 -328
  231. package/rust/core/parser/handler/at.rs +0 -279
  232. package/rust/core/parser/handler/bank.rs +0 -104
  233. package/rust/core/parser/handler/condition.rs +0 -83
  234. package/rust/core/parser/handler/dot.rs +0 -148
  235. package/rust/core/parser/handler/identifier/automate.rs +0 -254
  236. package/rust/core/parser/handler/identifier/call.rs +0 -91
  237. package/rust/core/parser/handler/identifier/emit.rs +0 -70
  238. package/rust/core/parser/handler/identifier/function.rs +0 -113
  239. package/rust/core/parser/handler/identifier/group.rs +0 -89
  240. package/rust/core/parser/handler/identifier/let_.rs +0 -173
  241. package/rust/core/parser/handler/identifier/mod.rs +0 -55
  242. package/rust/core/parser/handler/identifier/on.rs +0 -107
  243. package/rust/core/parser/handler/identifier/print.rs +0 -49
  244. package/rust/core/parser/handler/identifier/sleep.rs +0 -96
  245. package/rust/core/parser/handler/identifier/spawn.rs +0 -91
  246. package/rust/core/parser/handler/identifier/synth.rs +0 -171
  247. package/rust/core/parser/handler/loop_.rs +0 -194
  248. package/rust/core/parser/handler/mod.rs +0 -9
  249. package/rust/core/parser/handler/pattern.rs +0 -97
  250. package/rust/core/parser/handler/tempo.rs +0 -105
  251. package/rust/core/parser/mod.rs +0 -3
  252. package/rust/core/parser/statement.rs +0 -10
  253. package/rust/core/plugin/loader.rs +0 -137
  254. package/rust/core/plugin/mod.rs +0 -2
  255. package/rust/core/plugin/runner/mod.rs +0 -11
  256. package/rust/core/plugin/runner/non_wasm.rs +0 -481
  257. package/rust/core/plugin/runner/wasm32.rs +0 -44
  258. package/rust/core/preprocessor/loader/inject.rs +0 -313
  259. package/rust/core/preprocessor/loader/loader_helpers.rs +0 -110
  260. package/rust/core/preprocessor/loader/mod.rs +0 -235
  261. package/rust/core/preprocessor/mod.rs +0 -4
  262. package/rust/core/preprocessor/module.rs +0 -55
  263. package/rust/core/preprocessor/processor/handlers.rs +0 -107
  264. package/rust/core/preprocessor/processor/mod.rs +0 -1
  265. package/rust/core/preprocessor/resolver/bank.rs +0 -49
  266. package/rust/core/preprocessor/resolver/call.rs +0 -124
  267. package/rust/core/preprocessor/resolver/condition.rs +0 -95
  268. package/rust/core/preprocessor/resolver/driver.rs +0 -324
  269. package/rust/core/preprocessor/resolver/function.rs +0 -69
  270. package/rust/core/preprocessor/resolver/group.rs +0 -122
  271. package/rust/core/preprocessor/resolver/let_.rs +0 -32
  272. package/rust/core/preprocessor/resolver/loop_.rs +0 -318
  273. package/rust/core/preprocessor/resolver/mod.rs +0 -16
  274. package/rust/core/preprocessor/resolver/pattern.rs +0 -95
  275. package/rust/core/preprocessor/resolver/spawn.rs +0 -99
  276. package/rust/core/preprocessor/resolver/synth.rs +0 -54
  277. package/rust/core/preprocessor/resolver/tempo.rs +0 -48
  278. package/rust/core/preprocessor/resolver/trigger.rs +0 -116
  279. package/rust/core/preprocessor/resolver/value.rs +0 -176
  280. package/rust/core/store/global.rs +0 -57
  281. package/rust/core/store/mod.rs +0 -1
  282. package/rust/lib.rs +0 -323
  283. package/rust/macros/Cargo.toml +0 -14
  284. package/rust/macros/src/lib.rs +0 -52
  285. package/rust/main.rs +0 -557
  286. package/rust/types/Cargo.toml +0 -11
  287. package/rust/types/src/addons.rs +0 -57
  288. package/rust/types/src/ast.rs +0 -202
  289. package/rust/types/src/config.rs +0 -82
  290. package/rust/types/src/lib.rs +0 -15
  291. package/rust/types/src/plugin.rs +0 -20
  292. package/rust/types/src/store.rs +0 -139
  293. package/rust/types/src/telemetry.rs +0 -85
  294. package/rust/utils/Cargo.toml +0 -29
  295. package/rust/utils/src/error.rs +0 -186
  296. package/rust/utils/src/file.rs +0 -477
  297. package/rust/utils/src/first_usage.rs +0 -97
  298. package/rust/utils/src/lib.rs +0 -9
  299. package/rust/utils/src/logger.rs +0 -200
  300. package/rust/utils/src/path.rs +0 -158
  301. package/rust/utils/src/signature.rs +0 -41
  302. package/rust/utils/src/spinner.rs +0 -20
  303. package/rust/utils/src/version.rs +0 -58
  304. package/rust/utils/src/watcher.rs +0 -46
  305. package/rust/web/api.rs +0 -5
  306. package/rust/web/auth.rs +0 -5
  307. package/rust/web/cdn.rs +0 -34
  308. package/rust/web/forge.rs +0 -5
  309. package/rust/web/mod.rs +0 -5
  310. package/rust/web/sso.rs +0 -5
  311. package/templates/minimal/.devalang +0 -5
  312. package/templates/minimal/README.md +0 -218
  313. package/templates/minimal/src/index.deva +0 -2
  314. package/templates/welcome/.devalang +0 -5
  315. package/templates/welcome/README.md +0 -218
  316. package/templates/welcome/samples/kick-808.wav +0 -0
  317. package/templates/welcome/src/index.deva +0 -61
  318. package/templates/welcome/src/variables.deva +0 -3
  319. package/tests/integration.rs +0 -21
  320. package/tests/rust/cli_check_build.rs +0 -21
  321. package/tests/rust/cli_help.rs +0 -12
  322. package/tests/rust/cli_template_list.rs +0 -10
  323. package/tests/rust/cli_version.rs +0 -11
  324. package/tests/typescript/index.spec.ts +0 -136
  325. package/tests/typescript/playhead.spec.ts +0 -36
  326. package/tests/typescript/render_e2e.spec.ts +0 -77
  327. package/tsconfig.json +0 -115
  328. package/typescript/bin/index.ts +0 -28
  329. package/typescript/core/functions/index.ts +0 -94
  330. package/typescript/core/index.ts +0 -6
  331. package/typescript/core/types/index.ts +0 -4
  332. package/typescript/core/types/plugin.ts +0 -19
  333. package/typescript/core/types/result.ts +0 -29
  334. package/typescript/core/types/statement.ts +0 -47
  335. package/typescript/core/types/value.ts +0 -29
  336. package/typescript/index.ts +0 -8
  337. package/typescript/pkg/devalang_core.d.ts +0 -4
  338. package/typescript/pkg/devalang_core.ts +0 -65
  339. package/typescript/scripts/copy-wasm-dts.ts +0 -41
  340. package/typescript/scripts/postinstall.ts +0 -85
  341. package/typescript/scripts/version/bump.ts +0 -44
  342. package/typescript/scripts/version/copy-to-binary.ts +0 -82
  343. package/typescript/scripts/version/fetch.ts +0 -18
  344. package/typescript/scripts/version/index.ts +0 -25
  345. 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.