{"id":50112220,"url":"https://github.com/blacklight-foundation/ultraviolet","last_synced_at":"2026-06-11T03:01:22.567Z","repository":{"id":355652905,"uuid":"1228648424","full_name":"blacklight-foundation/ultraviolet","owner":"blacklight-foundation","description":"A high-visibility, general purpose programing language for humans and AI.","archived":false,"fork":false,"pushed_at":"2026-06-05T20:06:07.000Z","size":5414,"stargazers_count":16,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-05T22:07:11.347Z","etag":null,"topics":["agentic-ai","ai","ai-agents","coding","compiler","programming-language","programming-languages","ultraviolet","vibe-coding"],"latest_commit_sha":null,"homepage":"https://ultraviolet-lang.org","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/blacklight-foundation.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":"SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":"CursiveCrow","custom":["https://ultraviolet-lang.org/sponsor/"]}},"created_at":"2026-05-04T08:22:32.000Z","updated_at":"2026-05-28T13:49:51.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/blacklight-foundation/ultraviolet","commit_stats":null,"previous_names":["blacklight-foundation/ultraviolet"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/blacklight-foundation/ultraviolet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blacklight-foundation%2Fultraviolet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blacklight-foundation%2Fultraviolet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blacklight-foundation%2Fultraviolet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blacklight-foundation%2Fultraviolet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/blacklight-foundation","download_url":"https://codeload.github.com/blacklight-foundation/ultraviolet/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blacklight-foundation%2Fultraviolet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34180147,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["agentic-ai","ai","ai-agents","coding","compiler","programming-language","programming-languages","ultraviolet","vibe-coding"],"created_at":"2026-05-23T13:03:02.037Z","updated_at":"2026-06-11T03:01:22.556Z","avatar_url":"https://github.com/blacklight-foundation.png","language":"C++","funding_links":["https://github.com/sponsors/CursiveCrow","https://ultraviolet-lang.org/sponsor/"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource\n      media=\"(prefers-color-scheme: dark)\"\n      srcset=\".github/assets/ultraviolet_darkmode_transparent.png\"\n    \u003e\n    \u003csource\n      media=\"(prefers-color-scheme: light)\"\n      srcset=\".github/assets/ultraviolet_lightmode_transparent.png\"\n    \u003e\n    \u003cimg\n      alt=\"Ultraviolet logo\"\n      src=\".github/assets/ultraviolet_lightmode_transparent.png\"\n      width=\"160\"\n    \u003e\n  \u003c/picture\u003e\n\u003c/p\u003e\n\n# Ultraviolet\n\n[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE.md)\n[![Compiler Release](https://img.shields.io/github/v/release/blacklight-foundation/ultraviolet?label=compiler\u0026sort=semver\u0026filter=v%2A\u0026logo=github)](https://github.com/blacklight-foundation/ultraviolet/releases)\n**Platform Status:** [![Linux](https://img.shields.io/github/actions/workflow/status/blacklight-foundation/ultraviolet/hello-verification-linux.yml?branch=main\u0026label=%20\u0026logo=linux)](https://github.com/blacklight-foundation/ultraviolet/actions/workflows/hello-verification-linux.yml?query=branch%3Amain) [![macOS](https://img.shields.io/github/actions/workflow/status/blacklight-foundation/ultraviolet/hello-verification-macos.yml?branch=main\u0026label=%20\u0026logo=apple)](https://github.com/blacklight-foundation/ultraviolet/actions/workflows/hello-verification-macos.yml?query=branch%3Amain) [![Windows](https://img.shields.io/github/actions/workflow/status/blacklight-foundation/ultraviolet/hello-verification-windows.yml?branch=main\u0026label=%20\u0026logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEgMi41IDcgMS43djZIMVYyLjVabTctLjkgNy0xdjdIOFYxLjZaTTEgOC41aDZ2NmwtNi0uOFY4LjVabTcgMGg3djdsLTctLjlWOC41WiIvPjwvc3ZnPg==)](https://github.com/blacklight-foundation/ultraviolet/actions/workflows/hello-verification-windows.yml?query=branch%3Amain)\n\nUltraviolet is a general-purpose systems programming language designed for **explicit authority**, **predictable execution behavior**, and **source code legibility** practical for code written by humans, generated by AI systems, and reviewed by humans.\n\nThe repository contains the language specification, bootstrap compiler, runtime libraries, developer tooling, and the conformance verification suite.\n\nUltraviolet is public alpha software. It is ready for inspection, early\nexperimentation, specification review, conformance work, and compiler/runtime\ncontributions. Do not treat it as a mature production dependency.\n\n---\n\n## Design Philosophy\n\nUltraviolet is structured around a small set of foundational rules that eliminate hidden costs and ambient risks:\n\n1. **One Correct Way**: Each semantic operation has exactly one accepted source form, unless alternate syntax changes capability, authority, ownership, synchronization, ABI behavior, or diagnostics.\n2. **Local Reasoning**: Mutability, authority, synchronization, movement, suspension, and dynamic checks are fully visible from the local syntax and the referenced procedure or type signature.\n3. **Explicit over Implicit**: Source constructs never conceal observable side effects, allocations, memory copy operations, synchronization blocks, suspension points, or unsafe behaviors.\n4. **Static by Default**: Strict static compilation checks are the default; dynamic verification, dispatch, allocation, copying, and foreign trust boundaries require explicit opt-in.\n\n---\n\n## Language Highlights \u0026 Examples\n\n### 1. Capability-Based Authority (No Ambient Effects)\nExternal side effects (I/O, network, system commands) require an explicit capability handle, typically introduced via the program's `Context` parameter.\n\n```ultraviolet\npublic procedure main(ctx: Context) -\u003e i32 {\n    let io: $IO = ctx.io\n\n    // Explicit dynamic effect invocation using the capability call operator (~\u003e)\n    let write_result: Outcome\u003c(), IoError\u003e = io~\u003ewrite_file(\n        \"output.txt\",\n        bytes::view_string(\"Hello, Ultraviolet!\")\n    )\n\n    return if write_result is {\n        @Value { 0 }\n        @Error { 1 }\n    }\n}\n```\n\n### 2. Modal Types (First-Class Typestate)\nState machines, connection protocols, and resource lifecycles are modeled directly using state-specific fields, procedures, and transitions.\n\n```ultraviolet\npublic modal Connection {\n    @Closed {\n        public transition connect(address: string@View) -\u003e @Connected {\n            // Transitions connection into the @Connected state\n            return Connection@Connected { address: address }\n        }\n    }\n\n    @Connected {\n        public address: string@View\n\n        public procedure send(~, data: bytes@View) -\u003e bool {\n            // Sending is only valid and accessible in the @Connected state\n            return true\n        }\n\n        public transition disconnect() -\u003e @Closed {\n            return Connection@Closed {}\n        }\n    }\n}\n```\n\n### 3. Scoped Memory (Arena \u0026 Frame Allocators)\nArena memory management is built directly into the language surface. Frames allow cheap, nested allocations that are automatically reclaimed upon scope exit.\n\n```ultraviolet\npublic procedure processData() -\u003e i32 {\n    var sum: i32 = 0\n    region as scratch {\n        // Allocate a value directly into the scratch region arena\n        let temp_array: Ptr\u003c[i32; 3]\u003e = scratch ^ [1, 2, 3]\n\n        // Scope-bound frame block allocates on a stack-like structure\n        frame {\n            let local_val: i32 = ^10\n            sum = local_val + temp_array[0]\n        } // Frame allocation is instantly reclaimed here\n    } // Entire scratch region is reclaimed here\n    return sum\n}\n```\n\n### 4. Concurrency\nShared memory across execution domains is governed by a **Static Key System** built directly into Ultraviolet's type system. Rather than relying on runtime mutexes or unsafe manual synchronization, shared variables (`shared T`) require static key acquisition.\n\n* **Key Propagation**: Passing a `shared` parameter propagates key authority up the call stack, avoiding inline block overhead.\n* **Key Acquisition**: Precise access boundaries can be declared using `%read` and `%write` blocks.\n* **Structured Concurrency**: Spawning asynchronously is managed with the `spawn` and `wait` primitives within execution domains (e.g. `parallel context~\u003ecpu()`), and loops are parallelized using `dispatch` blocks.\n* **Async Task States**: Async tasks are compiled into modal state machines with explicit, zero-cost suspension and resumption.\n\n```ultraviolet\n// Key authority is propagated statically via the 'shared' parameter signature\npublic procedure worker(counter: shared i32) -\u003e i32 {\n    var observed: i32 = 0\n    %write counter {\n        counter = counter + 1\n        observed = counter\n    }\n    return observed\n}\n\npublic procedure runConcurrency(context: Context) -\u003e i32 {\n    var counter: shared i32 = 0\n\n    // Structured parallel execution domain (CPU threadpool)\n    return parallel context~\u003ecpu() {\n        // Spawn concurrent tasks\n        let task_a: Spawned\u003ci32\u003e = spawn [name: \"worker-a\"] {\n            worker(counter)\n        }\n        let task_b: Spawned\u003ci32\u003e = spawn [name: \"worker-b\"] {\n            worker(counter)\n        }\n\n        // Statically structured await\n        (wait task_a) + (wait task_b)\n    }\n}\n```\n\n---\n\n## Project Organization\n\nThe repository is organized into three major sections:\n\n* [Docs/](Docs/): Contains the formal [Language Specification](Docs/SPECIFICATION.md), the source of truth for syntax, static/dynamic semantics, and ABI rules.\n* [Bootstrap/Ultraviolet/](Bootstrap/Ultraviolet/): The C++ implementation of the bootstrap compiler, runtime libraries, and linker integrations.\n* [HelloUltraviolet/](HelloUltraviolet/): A standalone conformance corpus and test reference surface containing physical fixtures, rejected/accepted specimens, and diagnostic audits.\n\n## Supported Public Alpha Targets\n\n| Host platform           | Target profile   | Release archive                    |\n| ----------------------- | ---------------- | ---------------------------------- |\n| Linux x86_64            | `x86_64-sysv`    | `ultraviolet-linux-x86_64.tar.gz`  |\n| Apple Silicon macOS 14+ | `aarch64-darwin` | `ultraviolet-macos-aarch64.tar.gz` |\n| Windows x86_64          | `x86_64-win64`   | `ultraviolet-windows-x86_64.zip`   |\n\n---\n\n## Installing the Compiler\n\nPublic alpha release builds can be installed from the command line. The default\ninstall command is `uv`. If Python's `uv` package manager is already detected,\nthe installer asks before taking over `uv`.\n\nCurrent public alpha release:\n[`v0.1.0-alpha`](https://github.com/blacklight-foundation/ultraviolet/releases/tag/v0.1.0-alpha).\n\nThe `ultraviolet-lang.org` short URLs are the intended stable install\nentrypoints once public site routing is available. The GitHub raw URLs below are\nthe release-pinned fallback and install the `v0.1.0-alpha` archive explicitly.\n\nLinux or Apple Silicon macOS, pinned to `v0.1.0-alpha`:\n\n```bash\nrelease=v0.1.0-alpha\ncurl -fsSL \"https://raw.githubusercontent.com/blacklight-foundation/ultraviolet/${release}/Tools/InstallUltraviolet.sh\" \\\n    | sh -s -- --version \"$release\"\n```\n\nWindows PowerShell, pinned to `v0.1.0-alpha`:\n\n```powershell\n$release = \"v0.1.0-alpha\"\n$script = irm \"https://raw.githubusercontent.com/blacklight-foundation/ultraviolet/$release/Tools/InstallUltraviolet.ps1\"\n\u0026 ([scriptblock]::Create($script)) -Version $release\n```\n\nThe root `install.sh` and `install.ps1` bootstrap entrypoints intentionally\ndefault to `ULTRAVIOLET_INSTALL_REF=main` so stable URLs can receive installer\nfixes without changing the release archive selected by the installer. For a\nfully pinned bootstrap path, set both the bootstrap ref and installer version:\n\n```bash\nrelease=v0.1.0-alpha\ncurl -fsSL \"https://raw.githubusercontent.com/blacklight-foundation/ultraviolet/${release}/install.sh\" \\\n    | ULTRAVIOLET_INSTALL_REF=\"$release\" \\\n      ULTRAVIOLET_INSTALL_VERSION=\"$release\" \\\n      sh\n```\n\n```powershell\n$release = \"v0.1.0-alpha\"\n$env:ULTRAVIOLET_INSTALL_REF = $release\n$env:ULTRAVIOLET_INSTALL_VERSION = $release\nirm \"https://raw.githubusercontent.com/blacklight-foundation/ultraviolet/$release/install.ps1\" | iex\n```\n\nThe installers place the compiler package under the user profile and add a small\nshim directory to the user `PATH` by default:\n\n* Linux package: `$HOME/.ultraviolet/current`\n* Linux shims: `$HOME/.ultraviolet/bin`\n* macOS package: `$HOME/.ultraviolet/current`\n* macOS shims: `$HOME/.ultraviolet/bin`\n* Windows package: `%LOCALAPPDATA%\\Ultraviolet\\current`\n* Windows shims: `%LOCALAPPDATA%\\Ultraviolet\\bin`\n\nIf Python `uv` is already installed, the recommended interactive choice is to\ninstall Ultraviolet as `uv` and preserve the existing Python command as `pyuv`.\nNoninteractive conflict installs use `uvc` unless the command mode is specified.\n\nLinux recommended `uv`/`pyuv` layout:\n\n```bash\nrelease=v0.1.0-alpha\ncurl -fsSL \"https://raw.githubusercontent.com/blacklight-foundation/ultraviolet/${release}/Tools/InstallUltraviolet.sh\" \\\n    | sh -s -- --version \"$release\" --use-uv\n```\n\nmacOS uses the same shell installer. Apple Silicon hosts require Xcode Command\nLine Tools so the packaged `clang++` driver can resolve the active SDK.\n\nWindows recommended `uv`/`pyuv` layout:\n\n```powershell\n$release = \"v0.1.0-alpha\"\n$script = irm \"https://raw.githubusercontent.com/blacklight-foundation/ultraviolet/$release/Tools/InstallUltraviolet.ps1\"\n\u0026 ([scriptblock]::Create($script)) -Version $release -UseUv\n```\n\nTo avoid modifying `PATH`, pass `--no-path` on Linux or set\n`$env:ULTRAVIOLET_INSTALL_NO_PATH = \"1\"` before running the Windows installer.\n\nRelease maintainers generate the archives consumed by the installers with:\n\n```bash\npython3 Tools/PackageRelease.py --check-release-assets\npython3 Tools/PackageRelease.py --platform all\n```\n\nPackaging copies only the manifest-listed release payload for each platform; it\ndoes not treat every file in the CMake `out` directory as release content.\nArchive metadata is normalized so unchanged payload bytes produce stable release\nhashes. The release asset check verifies that the standalone installers still\nrequest the archive names declared by the package manifest.\nLocal archive install probes verify the generated `.sha256` sidecar before\nextracting the archive, matching the public download path.\n\nThe public release must attach these files:\n\n* `ultraviolet-linux-x86_64.tar.gz`\n* `ultraviolet-linux-x86_64.tar.gz.sha256`\n* `ultraviolet-macos-aarch64.tar.gz`\n* `ultraviolet-macos-aarch64.tar.gz.sha256`\n* `ultraviolet-windows-x86_64.zip`\n* `ultraviolet-windows-x86_64.zip.sha256`\n\nCompiler release automation is label-driven. A merged PR with exactly one of\nthese labels controls the next main-branch release after Linux, macOS, and\nWindows HelloUltraviolet verification pass for the same commit:\n\n* `release: none` - publish no compiler release.\n* `release: canary` - build validation workflow artifacts with a canary version\n  such as `0.1.1-alpha.20260528.7f64337`; no GitHub Release or tag is created.\n* `release: patch` - publish the next patch alpha such as `v0.1.1-alpha`.\n* `release: minor` - publish the next alpha line such as `v0.2.0-alpha`.\n* `release: breaking` - publish the next alpha line and call out the breakage in\n  release notes.\n\nCompiler release tags use the `v*` namespace for patch and minor alpha releases.\nExtern payload releases use the `externs-*` namespace and are intentionally\nseparate.\n\n---\n\n## Building the Compiler from Source\n\nThe bootstrap compiler is written in C++ and built using CMake.\n\n### Prerequisites\n* **Windows**: Visual Studio 2022 with C++ support, CMake 4.0.1+, Python 3\n* **Linux**: GCC/Clang, Make, CMake 4.0.1+, Python 3\n* **macOS**: Apple Silicon Mac, Xcode Command Line Tools, CMake 4.0.1+, Python 3\n* **Repository checkout**: extern payloads restored with `Tools/FetchTargetExterns.py`\n\nThe macOS source build uses the same vendored-payload model as Linux and\nWindows. Before configuring, restore the payloads for the target host:\n\n```bash\npython3 Tools/FetchTargetExterns.py --target-profile x86_64-sysv\n# macOS: python3 Tools/FetchTargetExterns.py --target-profile aarch64-darwin\n```\n\n```powershell\npy -3 Tools\\FetchTargetExterns.py --target-profile x86_64-win64\n```\n\nThe macOS fetch restores:\n\n* `Bootstrap/extern/llvm/llvm-21.1.8-aarch64-darwin`\n* `Bootstrap/extern/icu/macos`\n\nThe package step copies the required macOS LLVM tools and ICU dylibs from those\n`Bootstrap/extern` roots into `Bootstrap/Ultraviolet/build/macos/out/macos/*`.\n\n### Build Steps\n\n1. Configure the project:\n   ```bash\n   cd Bootstrap/Ultraviolet\n   cmake --preset linux-release\n   # macOS: cmake --preset macos-release\n   # Windows: cmake --preset windows-release\n   ```\n\n2. Build and stage the release package:\n   ```bash\n   cmake --build --preset linux-release-package\n   # macOS: cmake --build --preset macos-release-package\n   # Windows: cmake --build --preset windows-release-package\n   ```\n\nUpon completion, the compiled command-line compiler is staged as `uv.exe`\n(Windows) or `uv` (Linux/macOS) under the preset build directory:\n* Windows: `Bootstrap/Ultraviolet/build/windows/out/uv.exe`\n* Linux: `Bootstrap/Ultraviolet/build/linux/out/uv`\n* macOS: `Bootstrap/Ultraviolet/build/macos/out/uv`\n\n---\n\n## Getting Started with Ultraviolet Projects\n\nOnce the `uv` compiler is on your path, you can create and build projects.\n\n### 1. Initialize a Project\nCreate a new directory and initialize a minimal Ultraviolet project structure:\n```bash\nuv init my_project\ncd my_project\n```\nThis generates the standard layout:\n```text\nUltraviolet.toml\nSource/\n  Main.uv\n```\n\n### 2. Build the Project\nTo compile your project, you must explicitly specify a **Target Profile** using the `--target-profile` CLI flag (or configure it in the `Ultraviolet.toml` manifest under `[toolchain].target_profile`):\n\n```bash\nuv build --target-profile x86_64-sysv  # Linux\nuv build --target-profile aarch64-darwin # Apple Silicon macOS\nuv build --target-profile x86_64-win64 # Windows\n```\n\n### 3. Run Project Tests\nUltraviolet supports native unit tests defined using `#test` blocks inside your code. Run them using:\n```bash\nuv test --target-profile x86_64-sysv\n# macOS: uv test --target-profile aarch64-darwin\n```\n\n---\n\n## Conformance \u0026 Conformance Testing\n\nThe [HelloUltraviolet](HelloUltraviolet/) directory is the release conformance surface for compiler and runtime behaviors. It acts as an integration-level gate before compiler updates are merged.\n\nFor public-alpha verification, run the verification runner from the repository root.\nThe verification checks the generated obligation ledger, generated HelloUltraviolet\ncatalog, package build, `uv build --check`, `uv build`, the executable corpus,\nthe audit corpus, source-native `#test` procedures, and the platform release\narchive install probe. On macOS it also validates Mach-O arm64 artifacts,\npackaged LLVM sidecar tools, bundled dylib load names, and required LC_RPATH\nentries with `file`, `otool -L`, and `otool -l`.\n\nOn Linux:\n\n```bash\npython3 Tools/RunHelloVerification.py --target-profile x86_64-sysv\n```\n\nOn Apple Silicon macOS:\n\n```bash\npython3 Tools/RunHelloVerification.py --target-profile aarch64-darwin\n```\n\nOn Windows, use an actual Windows Visual Studio Developer PowerShell:\n\n```powershell\npy -3 Tools\\RunHelloVerification.py --target-profile x86_64-win64\n```\n\nA successful public-alpha verification ends with:\n\n```text\nVerification result: PASS\nVerification transcript SHA256: ...\n```\n\nDo not use `ctest` as the release conformance gate. HelloUltraviolet is the\ntest suite for compiler and runtime behavior.\n\nManual diagnostic runs are still possible after a compiler package has been\nstaged:\n\n```bash\n./Bootstrap/Ultraviolet/build/linux/out/uv build HelloUltraviolet \\\n    --target-profile x86_64-sysv\n./HelloUltraviolet/Build/Binary/HelloUltraviolet\n./HelloUltraviolet/Build/Binary/HelloUltraviolet --audit\n./Bootstrap/Ultraviolet/build/linux/out/uv test HelloUltraviolet \\\n    --target-profile x86_64-sysv\n```\n\nOn macOS, use `Bootstrap/Ultraviolet/build/macos/out/uv` and\n`--target-profile aarch64-darwin`. The full verification also builds the macOS\nartifact fixture projects before validation so executable, static archive,\nhosted dylib, and external dylib import outputs are present and verified. To\nrun the macOS artifact validation gate directly after a build, use:\n\n```bash\npython3 Tools/VerifyReleaseArtifacts.py --platform macos\n```\n\n---\n\n## Community \u0026 Support\n\n- Questions: [GitHub Discussions](https://github.com/blacklight-foundation/ultraviolet/discussions)\n- Direct contact: [contact@blacklight.foundation](mailto:contact@blacklight.foundation)\n- Updates: [@blacklight_fdn on X](https://x.com/blacklight_fdn)\n- Contributing: [CONTRIBUTING.md](CONTRIBUTING.md)\n- Security vulnerabilities: [SECURITY.md](SECURITY.md)\n- Code of conduct: [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)\n- Sponsorship: [ultraviolet-lang.org/sponsor](https://ultraviolet-lang.org/sponsor/)\n\n---\n\n## License\n\nUltraviolet is licensed under the Apache License, Version 2.0. See [LICENSE.md](LICENSE.md) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblacklight-foundation%2Fultraviolet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblacklight-foundation%2Fultraviolet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblacklight-foundation%2Fultraviolet/lists"}