{"id":28823891,"url":"https://github.com/chrischtel/loom","last_synced_at":"2025-08-17T12:32:50.045Z","repository":{"id":297655897,"uuid":"997489587","full_name":"chrischtel/loom","owner":"chrischtel","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-15T21:57:54.000Z","size":282,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-15T23:27:18.964Z","etag":null,"topics":["compiler","llvm","loom","programming-language"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chrischtel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-06T16:02:33.000Z","updated_at":"2025-06-15T21:57:58.000Z","dependencies_parsed_at":"2025-06-06T17:38:32.433Z","dependency_job_id":null,"html_url":"https://github.com/chrischtel/loom","commit_stats":null,"previous_names":["chrischtel/loom"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/chrischtel/loom","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrischtel%2Floom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrischtel%2Floom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrischtel%2Floom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrischtel%2Floom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chrischtel","download_url":"https://codeload.github.com/chrischtel/loom/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrischtel%2Floom/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260660076,"owners_count":23043484,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["compiler","llvm","loom","programming-language"],"created_at":"2025-06-19T01:01:59.412Z","updated_at":"2025-08-17T12:32:50.028Z","avatar_url":"https://github.com/chrischtel.png","language":"C++","readme":"# Loom Programming Language\n\n[![CI](https://github.com/chrischtel/loom/actions/workflows/ci.yml/badge.svg)](https://github.com/chrischtel/loom/actions/workflows/ci.yml)\n[![Release](https://github.com/chrischtel/loom/actions/workflows/release.yml/badge.svg)](https://github.com/chrischtel/loom/actions/workflows/release.yml)\n[![Nightly](https://github.com/chrischtel/loom/actions/workflows/nightly.yml/badge.svg)](https://github.com/chrischtel/loom/actions/workflows/nightly.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\n**Structured Freedom**: A systems programming language that makes the safe, high-performance path the most ergonomic one, while providing clear escape hatches when you need to talk directly to the metal.\n\n## What is Loom?\n\nLoom is a modern systems programming language designed around the philosophy of **Structured Freedom**. It combines the performance and control of systems languages like C and Rust with the expressiveness and safety features of higher-level languages.\n\n### Core Paradigm: Structured Freedom\n\n- **Ergonomic Safety**: Safety features feel natural, not restrictive\n- **Pragmatic Performance**: Zero-cost abstractions are the default  \n- **Clarity Over Dogma**: Rules serve the developer, not the other way around\n- **Expressive Tooling**: Designed for an exceptional developer experience\n\n## Key Features\n\n### 🔒 **Memory Safety with Control**\n- Explicit ownership types (`*`, `\u0026`, `[]`) for precise memory management\n- Nullable types (`T?`) with pattern matching for null safety\n- Phantom types for compile-time resource state tracking\n\n### 🚀 **Performance-First Design**\n- Compiles to native executables with no runtime overhead\n- Zero-cost abstractions throughout\n- Direct system call access when needed\n\n### 🧩 **Expressive Type System**  \n- Generics with square bracket syntax: `List[T]`\n- Protocols (interfaces) with powerful constraints\n- Custom operators for domain-specific languages\n- Operator overloading with the `op` keyword\n\n### 🔄 **Modern Concurrency**\n- Grant-based permission system for safe concurrent access\n- Async/await with structured concurrency\n- Context management for implicit parameter passing\n\n### 📦 **Modular Architecture**\n- Unique module syntax: `@module` and `from @module take ...`\n- Fine-grained visibility control\n- Pipeline operators (`|\u003e`) for data transformation\n\n## Quick Example\n\n```loom\nstruct Point {\n    x: f64,\n    y: f64,\n}\n\n// Custom operators for domain expressiveness  \noperator `\u003c-\u003e` (left: Point, right: Point) f64 {\n    let dx = left.x - right.x;\n    let dy = left.y - right.y;\n    return sqrt(dx * dx + dy * dy);\n}\n\n// Generic function with protocol constraints\nfunc find_closest[T](points: List[T], target: T) T?\nrequires T: Comparable {\n    // Implementation with compile-time guarantees\n}\n\nfunc main() i32 {\n    let origin = Point(x: 0.0, y: 0.0);\n    let destination = Point(x: 3.0, y: 4.0);\n    \n    // Use custom operator\n    let distance = origin \u003c-\u003e destination;  // 5.0\n    \n    $$print(\"Distance calculated\");\n    return 0;\n}\n```\n\n## Installation\n\n### Quick Install (Recommended)\n\n**Linux/macOS:**\n```bash\ncurl -sSL https://raw.githubusercontent.com/chrischtel/loom/main/install.sh | bash\n```\n\n**Windows (PowerShell):**\n```powershell\niwr -useb https://raw.githubusercontent.com/chrischtel/loom/main/install.ps1 | iex\n```\n\n### Manual Download\n\nDownload pre-built binaries from the [releases page](https://github.com/chrischtel/loom/releases):\n\n- **Stable releases**: Latest stable version\n- **Pre-releases**: Alpha/beta versions with newest features  \n- **Nightly builds**: Daily builds from main branch (development)\n\n### Package Managers\n\nComing soon: Homebrew, Chocolatey, and Linux package repositories.\n\n### Build from Source\n\n**Prerequisites:**\n- CMake 3.20+\n- LLVM 17+\n- C++20 compatible compiler (Clang 14+, GCC 11+, MSVC 2022+)\n- Ninja (recommended) or Make\n\n**Build steps:**\n```bash\ngit clone https://github.com/chrischtel/loom.git\ncd loom\nmkdir build \u0026\u0026 cd build\ncmake .. -G Ninja\nninja\n```\n\n**Install:**\n```bash\nninja install  # or: cmake --install .\n```\n\n## Building and Usage\n\n### Compile Loom Programs\n```bash\n# Compile a program\nloom build example.loom\n\n# Run with debugging info\nloom build --verbose example.loom\n\n# Check syntax without compiling  \nloom check example.loom\n\n# Get help\nloom help\n\n# Show version information\nloom version\n```\n\n## Development Status\n\nLoom is in active development. The language specification is stable, with core features partially implemented. Std library is not yet available, but basic functionality is provided through the Loom compiler itself.\n\n\n\n## Philosophy in Action\n\nLoom isn't just another systems language. It's built on the belief that developers shouldn't have to choose between safety and performance, or between expressiveness and control. Every design decision serves the goal of making the right thing the easy thing, while keeping escape hatches available when you need them.\n\nWhether you're building operating systems, game engines, embedded software, or high-performance applications, Loom gives you the tools to express your intent clearly and efficiently.\n\n---\n\n**License**: MIT/Apache-2.0 dual-licensed STD-Library and Loom compiler GPL-3.0 licensed. \n**Status**: Active Development  \n**Contributions**: Welcome!\n\nThis is a learning project, so feedback and suggestions are welcome!\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchrischtel%2Floom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchrischtel%2Floom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchrischtel%2Floom/lists"}