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