{"id":45473084,"url":"https://github.com/pabloosabaterr/Orn","last_synced_at":"2026-03-07T15:00:50.246Z","repository":{"id":282261237,"uuid":"948007405","full_name":"pabloosabaterr/Orn","owner":"pabloosabaterr","description":"A compiler for a typescript like, low level programming language.","archived":false,"fork":false,"pushed_at":"2026-02-28T16:58:36.000Z","size":2008,"stargazers_count":22,"open_issues_count":2,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-28T19:44:14.669Z","etag":null,"topics":["c","compiler"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pabloosabaterr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"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-03-13T15:41:09.000Z","updated_at":"2026-02-28T16:58:39.000Z","dependencies_parsed_at":"2025-03-13T16:39:34.161Z","dependency_job_id":"190ec870-7bb1-489a-89a9-2e4d4259a035","html_url":"https://github.com/pabloosabaterr/Orn","commit_stats":null,"previous_names":["blopaa/ctoasmmipstranspiler","blopaa/cinterpreter","blopaa/compiler","blopaa/orn","pabloosabaterr/orn"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pabloosabaterr/Orn","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pabloosabaterr%2FOrn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pabloosabaterr%2FOrn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pabloosabaterr%2FOrn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pabloosabaterr%2FOrn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pabloosabaterr","download_url":"https://codeload.github.com/pabloosabaterr/Orn/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pabloosabaterr%2FOrn/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30219234,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T14:02:48.375Z","status":"ssl_error","status_checked_at":"2026-03-07T14:02:43.192Z","response_time":53,"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":["c","compiler"],"created_at":"2026-02-22T13:00:39.106Z","updated_at":"2026-03-07T15:00:50.237Z","avatar_url":"https://github.com/pabloosabaterr.png","language":"C","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"# Orn Lang\n\n*A modern low-level programming language with clear error messages and fast builds*\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/orn.png\" alt=\"Orn Lang Logo\" width=\"120\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#why\"\u003eWhy?\u003c/a\u003e •\n  \u003ca href=\"#performance-architecture\"\u003ePerformance\u003c/a\u003e •\n  \u003ca href=\"#getting-started\"\u003eGetting Started\u003c/a\u003e •\n  \u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e •\n  \u003ca href=\"#documentation\"\u003eMore docs\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## Introduction\n\nApart from learning how compilers work because I love understanding how things run under the hood my idea with Orn is to create a strongly typed programming language with a clean and friendly syntax. Something that feels like TypeScript but also gives you the tools to work low-level with pointers and manual memory management\n\nI also want fast compilation and great error feedback because clear errors save time and make development smoother instead of spending hours trying to figure out some cryptic Exxxx message\n\nRight now Orn looks more like a scripting language with an imperative style but in the future I would love to add OOP like TypeScript does. It is far from done but that is the plan\n\n---\n\n## Why\n\nMany low-level languages have steep learning curves that intimidate developers coming from high-level backgrounds. Orn tries to bridge that gap by offering\n\n* **Modern syntax** – TypeScript-style type annotations with `const` and `let` that add a new layer of safety\n* **Clear error feedback** – Error messages are precise and tell you exactly what went wrong\n* **Low-level control** – Direct access to memory and performance-critical operations\n* **Compiled** – Runs fast instead of being interpreted like `js`, `ts` or `python`\n* **Strong type guarantees** – Minimize runtime surprises with a solid type system\n* **Gradual learning curve** – Start with high-level concepts and dive into low-level details as needed\n\n---\n\n## Performance Architecture\n\nOrn now builds projects module by module, resolving imports and generating optimized code:\n\n```\nEntry Module\n    │\n    ▼\nRead File\n    │\n    ▼\nModule Discovery \u0026 Imports ──► Recursive for dependencies\n    │\n    ▼\nLexical Analysis (lex)\n    │\n    ▼\nParsing (ASTGenerator)\n    │\n    ▼\nType Checking \u0026 Symbol Table\n    │\n    ▼\nExport Extraction (module interface)\n    │\n    ▼\nIR Generation\n    │\n    ▼\nIR Optimization (optional)\n    │\n    ▼\nAssembly Generation (.s)\n    │\n    ▼\nObject File Compilation (.o via gcc)\n    │\n    ▼\nLinking (gcc -no-pie -nostdlib)\n    │\n    ▼\nExecutable\n```\n\n**Notes:**\n\n* Modules are **topologically sorted** so dependencies compile first\n* **Interfaces** allow modules to know what imports provide\n* IR is **optimized per module** before generating assembly\n* Final executable is linked from all compiled modules\n\n---\n\n## Quick Start\n\n### Prerequisites\n\n* GCC or Clang\n* CMake (3.10+)\n* Git\n\n### Build\n\n```bash\ngit clone https://github.com/pabloosabaterr/Orn.git\ncd Orn\nmkdir build \u0026\u0026 cd build\ncmake ..\ncmake --build .\n```\n\n### Run\n\n```bash\n./orn --help\n```\n\nThis will show all available options and usage examples.\n\n---\n\n### Documentation\n\n- [Testing guide](docs/testing.md)\n\n## Usage\n\n### Example Program\n```typescript\nfn fibonacci(n: int) -\u003e int {\n    if (n \u003c= 1) {\n        return n;\n    };\n\n    return fibonacci(n-1) + fibonacci(n-2);\n}\n\nconst result: int = fibonacci(10);\nprint(result);\n```\n\n### Error Example\n\nOrn provides actionable error messages:\n```\nerror [E2005]: cannot assign to constant (x)\n  --\u003e source.orn:2:1\n   |\n 2 | x = 20;\n   | ^\n   |\n   = help: assignment to immutable value\n   = note: constants cannot be modified after initialization\n   = suggestion: use a mutable variable instead\n\nerror [E1001]: mismatched types (x)\n  --\u003e source.orn:2:11\n   |\n 2 | const x: int = \"hello\";\n   |                ^^^^^^^\n   |\n   = expected `int`, found `string`\n   = note: string literals cannot be assigned to int variables\n   = suggestion: change variable type or cast the value\n```\n\n---\n\n## Join Us\n\nWe welcome contributors and feedback!\n\n* Visit the [GitHub repository](https://github.com/pabloosabaterr/Orn)\n* Report issues on the [issue tracker](https://github.com/pabloosabaterr/Orn/issues)\n* Join our [Discord](https://discord.gg/E8qqVC9jcf)\n* If you want to contribute please read [Contribution guidelines](docs/CONTRIBUTING.md)\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eBuilt with ❤️ \u003c/strong\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpabloosabaterr%2FOrn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpabloosabaterr%2FOrn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpabloosabaterr%2FOrn/lists"}