{"id":48119349,"url":"https://github.com/cybellereaper/selene","last_synced_at":"2026-04-04T16:18:13.003Z","repository":{"id":318161760,"uuid":"1068952010","full_name":"cybellereaper/selene","owner":"cybellereaper","description":"An experimental programming language frontend in Go with a lexer, Pratt parser, AST, interpreter, and tooling (formatter, transpiler, LSP). Built for prototyping, embedding, and exploring language design.","archived":false,"fork":false,"pushed_at":"2026-03-01T09:08:50.000Z","size":1760,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-01T12:46:04.265Z","etag":null,"topics":["bytecode","compiler-frontend","dsl","embedded-language","go","golang","interpreter","language-design","language-server","lexer-parser","programming-language","scripting-language","transpiler"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cybellereaper.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-03T07:03:33.000Z","updated_at":"2026-03-01T09:07:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"415dd96e-1b74-4c7d-ab3e-b650291ce965","html_url":"https://github.com/cybellereaper/selene","commit_stats":null,"previous_names":["cybellereaper/selenelang","cybellereaper/selene"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cybellereaper/selene","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cybellereaper%2Fselene","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cybellereaper%2Fselene/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cybellereaper%2Fselene/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cybellereaper%2Fselene/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cybellereaper","download_url":"https://codeload.github.com/cybellereaper/selene/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cybellereaper%2Fselene/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31405700,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T10:20:44.708Z","status":"ssl_error","status_checked_at":"2026-04-04T10:20:06.846Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bytecode","compiler-frontend","dsl","embedded-language","go","golang","interpreter","language-design","language-server","lexer-parser","programming-language","scripting-language","transpiler"],"created_at":"2026-04-04T16:18:11.522Z","updated_at":"2026-04-04T16:18:12.994Z","avatar_url":"https://github.com/cybellereaper.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/cybellereaper/selenelang/blob/main/assets/logo-design-1.png\" width=\"512\" alt=\"Moon orbit animation\" /\u003e\n\u003c/p\u003e \n\n\u003c!-- \u003ch1 align=\"center\"\u003eSelene Language Toolkit\u003c/h1\u003e --\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/cybellereaper/selenelang/actions/workflows/go-tests.yml\"\u003e\u003cimg src=\"https://github.com/cybellereaper/selenelang/actions/workflows/go-tests.yml/badge.svg\" alt=\"Go Tests\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://pkg.go.dev/github.com/cybellereaper/selenelang\"\u003e\u003cimg src=\"https://pkg.go.dev/badge/github.com/cybellereaper/selenelang.svg\" alt=\"Go Reference\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Table of contents\n\n1. [Orbit overview](#orbit-overview)\n2. [Quick launch](#quick-launch)\n3. [CLI star chart](#cli-star-chart)\n4. [Example nebula](#example-nebula)\n5. [Documentation constellations](#documentation-constellations)\n6. [Embedding rocket fuel](#embedding-rocket-fuel)\n7. [Repository map](#repository-map)\n8. [Contributing meteors](#contributing-meteors)\n\n---\n\n## Orbit overview\n\nSelene is an experimental programming-language frontend written in Go. It packages the full toolchain needed to prototype new language ideas: a lexer, a Pratt parser that produces rich abstract syntax trees (ASTs), an interpreter-grade runtime, a bytecode compiler and virtual machine, an opinionated formatter, and an ergonomic CLI. Use Selene to iterate on language design, embed the runtime inside Go applications, or publish tooling such as language servers and transpilers.\n\n\u003c!-- \u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExazllM2JwOW5jM2lmMzc5a2FnaGcxZHBua2p5cmNwYm9sOWp2NmZuYSZlcD12MV9naWZzX3NlYXJjaCZjdD1n/3oEjI6SIIHBdRxXI40/giphy.gif\" width=\"320\" alt=\"Stars swirling animation\" /\u003e\n\u003c/div\u003e --\u003e\n\n## Quick launch\n\n\u003e 🚀 **Launch checklist:** Go 1.25.1+, a POSIX shell, and curiosity.\n\n### Download a release build\n\nPrebuilt archives live on the [GitHub Releases](https://github.com/cybellereaper/selenelang/releases) page for Linux, macOS, and Windows.\nGrab the archive that matches your platform, unpack it, and place the `selene` (or `selene.exe`) binary somewhere on your `PATH`:\n\n```bash\n# Linux / macOS\ntar -xzf selene-linux-amd64.tar.gz\nsudo install selene-linux-amd64/selene /usr/local/bin/selene\n\n# Windows (PowerShell)\nExpand-Archive selene-windows-amd64.zip\nMove-Item selene-windows-amd64\\selene.exe \"C:\\\\Program Files\\\\Selene\\\\selene.exe\"\n```\n\n### Build from source\n\n```bash\ngit clone https://github.com/cybellereaper/selenelang.git\ncd selenelang\ngo mod tidy\ngo build ./...\ngo install ./cmd/selene\n```\n\nFire up the CLI to verify either install path:\n\n```bash\nselene --help\n```\n\n### First flight\n\nCreate a simple program in `examples/fundamentals/hello.selene`:\n\n```selene\n// examples/fundamentals/hello.selene\nlet greeting: String = \"Hello\";\n\nfn greet(name: String): String =\u003e greeting + \", \" + name;\n\nfn main() {\n    print(greet(\"Selene\"));\n}\n```\n\nRun it through each propulsion system:\n\n```bash\nselene run examples/fundamentals/hello.selene\nselene run --vm examples/fundamentals/hello.selene\nselene run --jit examples/fundamentals/hello.selene\n```\n\n### Formatter + tests\n\nPolish every script and exercise the curated gallery:\n\n```bash\nselene fmt -w examples\nselene test --mode all --verbose\n```\n\n## CLI star chart\n\n| Command | Purpose |\n| --- | --- |\n| `selene run \u003cfile\u003e` | Interpret a script directly, or add `--vm` / `--jit` for alternate backends. |\n| `selene tokens \u003cfile\u003e` | Print the token stream emitted by the lexer. |\n| `selene fmt [-w] \u003cpath\u003e` | Format Selene sources in place or to STDOUT. |\n| `selene build --out \u003cfile\u003e \u003cinput\u003e` | Compile a script to bytecode and write the chunk to disk. |\n| `selene transpile --lang go --out \u003cfile\u003e \u003cinput\u003e` | Generate Go scaffolding for the given Selene module. |\n| `selene test --mode all --verbose` | Execute curated examples through the interpreter, VM, and JIT pipelines. |\n| `selene deps add/list/verify` | Manage vendored dependencies with cryptographic checksums. |\n| `selene init \u003cmodule\u003e` | Scaffold a new workspace with a manifest, documentation skeleton, and starter source file. |\n| `selene lsp` | Launch the Language Server Protocol endpoint used by editors and the VS Code extension. |\n\n### Dependency management upgrades\n\nThe `deps add` subcommand can now source code directly from a Git repository, making it much easier to vendor Selene packages without crafting a staging directory first. Provide a module path and version, and (optionally) a `--source` URL if it differs from the module identifier:\n\n```bash\nselene deps add github.com/selene-lang/richmath v1.0.0 --source https://github.com/selene-lang/richmath.git\n```\n\nSelene will clone the tagged release into `vendor/`, compute the checksum, and update both `selene.toml` and `selene.lock`. You can still point `--path` at local sources when working offline—the flag remains available for advanced workflows.\n\n## Example nebula\n\nThe `examples/` directory is now organized by theme so you can warp directly to the scenario you need:\n\n```\nexamples/\n  fundamentals/     Language basics (hello world, math, strings, flow control)\n  modularity/       Modules, packages, and dependency management\n  runtime/          Concurrency, error handling, and condition dispatch\n  showcase/         Guided language tour that touches the whole surface area\n  tooling/          VM, recursion, and extension-method experiments\n  types-patterns/   Structs, enums, interfaces, contracts, and pattern matching\n```\n\nRun any script with `selene run path/to/example.selene` or stress-test them all via `selene test --mode all --verbose`.\n\n## Documentation constellations\n\n- The `docs/` folder powers a GitHub Pages site and mirrors the new structure: `guides/`, `integration/`, `reference/`, and `showcase/`.\n- Start with [Guides → Getting started](docs/guides/getting-started.md) or [Guides → Language tour](docs/guides/language-tour.md).\n- Dive into the [Reference](docs/reference/) for a formal catalog of syntax and semantics.\n- Launch the [Example showcase](docs/showcase/) to view animated callouts for each script category.\n\n## Embedding rocket fuel\n\nExecute Selene code from your own Go programs by wiring together the lexer, parser, and runtime:\n\n```go\npackage main\n\nimport (\n    \"fmt\"\n    \"os\"\n\n    \"github.com/cybellereaper/selenelang/internal/lexer\"\n    \"github.com/cybellereaper/selenelang/internal/parser\"\n    \"github.com/cybellereaper/selenelang/internal/runtime\"\n)\n\nfunc main() {\n    script, err := os.ReadFile(\"examples/fundamentals/hello.selene\")\n    if err != nil {\n        panic(err)\n    }\n\n    l := lexer.New(string(script))\n    p := parser.New(l)\n    program := p.ParseProgram()\n    if errs := p.Errors(); len(errs) \u003e 0 {\n        panic(errs)\n    }\n\n    rt := runtime.New()\n    if _, err := rt.Run(program); err != nil {\n        panic(err)\n    }\n\n    fmt.Println(\"script executed successfully\")\n}\n```\n\nFrom here you can extend the runtime with new built-ins, feed compiled bytecode into the VM, or export diagnostics into your own editor integrations.\n\n## Development\n\nSelene targets the Go 1.25.1 toolchain and includes a convenience `Makefile` to keep routine workflows fast:\n\n```bash\n# see the available tasks\nmake help\n\n# format, vet, and test the codebase (tests run with the race detector and shuffling enabled)\nmake fmt\nmake vet\nmake test\n\n# keep module metadata tidy and produce coverage artifacts\nmake tidy\nmake coverage\n\n# check for known vulnerabilities (requires govulncheck)\nmake vulncheck\n```\n\nThese commands wrap the standard Go tooling so contributors get consistent formatting, vetting, and testing locally and in CI.\n\n## Repository map\n\n```\nassets/             Project artwork and supporting images\ncmd/selene/         Command-line entry point and subcommand wiring\ndocs/\n  guides/           Tutorials and onboarding material\n  integration/      Embedding walkthroughs for Go applications\n  reference/        Language reference for syntax and semantics\n  showcase/         Animated example gallery\nexamples/\n  fundamentals/     Core language building blocks\n  modularity/       Module/package patterns\n  runtime/          Advanced flow control \u0026 concurrency\n  showcase/         The all-in-one language tour\n  tooling/          VM + developer tooling playgrounds\n  types-patterns/   Type system + pattern matching demonstrations\ninternal/           Lexer, parser, runtime, JIT, VM, and supporting packages\nselene.toml         Project manifest describing modules, docs, and dependencies\nselene.lock         Locked dependency checksums for reproducible vendors\nvendor/             Vendored Selene packages with verified hashes\nvscode-extension/   VS Code extension wrapping the language server and syntax assets\n```\n\n## Contributing meteors\n\nSelene already implements a broad runtime surface area, but there is room for continued iteration: richer standard libraries, deeper tooling integrations, additional bytecode targets, and community-driven language features. Contributions, issues, and experiments are welcome—clone the repository, open pull requests, and share what you build with Selene.\n\n\u003e 💡 Pro tip: run `selene fmt -w .` and `selene test --mode all --verbose` before submitting changes to keep the galaxy shining.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcybellereaper%2Fselene","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcybellereaper%2Fselene","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcybellereaper%2Fselene/lists"}