- Source:
src/(VM insrc/vm/, standard library insrc/library/, helpers insrc/helpers/). - Entry point:
src/arturo.nim. - Tests:
tests/(unit tests intests/unittests/, error cases intests/errors/). - Tools & scripts:
tools/(test runner, docs, benchmarking). - Binaries:
bin/(created on build). Docs and examples live indocs/andexamples/.
./build.nims— Build the Arturo binary tobin/arturo(default full build)../build.nims --mode:mini— Build a smaller “mini” release../build.nims --mode:web— Build a JS/Web target../build.nims --install— Install to~/.arturo/bin../build.nims test— Run the test suite (usestools/tester.art)../build.nims docs— Generate developer docs underdev-docs/.- Example:
./build.nims --who:dev --log --mode:fullfor a verbose dev build.
- Language: Nim. Indent with 4 spaces; keep lines readable.
- Modules/files: lowercase (e.g.,
parse.nim,exec.nim). - Types/consts:
PascalCase(export with*when public). - Procs/vars:
camelCase(export with*). - Prefer existing patterns in
src/vm/andsrc/library/. No trailing whitespace; keep imports minimal.
- Primary runner:
./build.nims test(wrapstools/tester.art). - Test pattern: pair an
.artscript with a matching.resexpected output intests/unittests/(e.g.,strings.art+strings.res). - Skips are handled by the runner based on build mode; aim for deterministic output.
- Optional Unitt config exists (
unitt.toml) for the externalunitttool.
- Commits: imperative mood, concise subject; reference issues (e.g.,
Fixes #123). Group related changes; include tests/docs when applicable. - PRs: follow
.github/pull_request_template.md. Provide a clear description, scope (type checkboxes), linked issues, and screenshots/logs when relevant. - Requirements: green CI across platforms, tests updated, no unrelated refactors. Branch from
master.
- Prereqs: Nim toolchain and a C/C++ compiler. Some features depend on system libs (e.g., SSL, WebKit on Linux).
- Use
--logwhen troubleshooting builds and--mode:miniwhen minimization is needed.