{"id":47899128,"url":"https://github.com/almide/almide-lander","last_synced_at":"2026-04-04T04:00:21.838Z","repository":{"id":347487566,"uuid":"1194217901","full_name":"almide/almide-lander","owner":"almide","description":"Cross-Language Package Lander — export Almide modules as native packages for Python, JS/TS, Swift, Ruby, C, and more","archived":false,"fork":false,"pushed_at":"2026-03-28T08:17:21.000Z","size":278,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-28T09:38:18.082Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"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/almide.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":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":"2026-03-28T04:01:16.000Z","updated_at":"2026-03-28T08:17:24.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/almide/almide-lander","commit_stats":null,"previous_names":["almide/almide-lander"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/almide/almide-lander","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/almide%2Falmide-lander","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/almide%2Falmide-lander/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/almide%2Falmide-lander/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/almide%2Falmide-lander/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/almide","download_url":"https://codeload.github.com/almide/almide-lander/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/almide%2Falmide-lander/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31387024,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T01:22:39.193Z","status":"online","status_checked_at":"2026-04-04T02:00:07.569Z","response_time":60,"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":[],"created_at":"2026-04-04T04:00:15.785Z","updated_at":"2026-04-04T04:00:21.830Z","avatar_url":"https://github.com/almide.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"almide-lander.jpeg\" alt=\"almide-lander\" width=\"480\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/almide/almide-lander/actions\"\u003e\u003cimg src=\"https://github.com/almide/almide-lander/actions/workflows/ci.yml/badge.svg\" alt=\"CI\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Export Almide modules as native packages for 21 languages.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Almide\" src=\"https://img.shields.io/badge/-Almide-d8d8dc?style=flat-square\u0026logo=data:image/png;base64,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\"\u003e\n  \u003cimg alt=\"Python\" src=\"https://img.shields.io/badge/-Python-3776AB?style=flat-square\u0026logo=python\u0026logoColor=white\"\u003e\n  \u003cimg alt=\"Go\" src=\"https://img.shields.io/badge/-Go%C2%A0%C2%A0%C2%A0%C2%A0-00ADD8?style=flat-square\u0026logo=go\u0026logoColor=white\"\u003e\n  \u003cimg alt=\"Ruby\" src=\"https://img.shields.io/badge/-Ruby%C2%A0%C2%A0-BB1200?style=flat-square\u0026logo=ruby\u0026logoColor=white\"\u003e\n  \u003cimg alt=\"Swift\" src=\"https://img.shields.io/badge/-Swift%C2%A0-F05138?style=flat-square\u0026logo=swift\u0026logoColor=white\"\u003e\n  \u003cimg alt=\"C#\" src=\"https://img.shields.io/badge/-C%23%C2%A0%C2%A0%C2%A0%C2%A0-239120?style=flat-square\u0026logo=dotnet\u0026logoColor=white\"\u003e\n  \u003cimg alt=\"Dart\" src=\"https://img.shields.io/badge/-Dart%C2%A0%C2%A0-00BFA6?style=flat-square\u0026logo=dart\u0026logoColor=white\"\u003e\n  \u003cimg alt=\"Kotlin\" src=\"https://img.shields.io/badge/-Kotlin-7F52FF?style=flat-square\u0026logo=kotlin\u0026logoColor=white\"\u003e\n  \u003cimg alt=\"Java\" src=\"https://img.shields.io/badge/-Java%C2%A0%C2%A0-ED8B00?style=flat-square\u0026logo=openjdk\u0026logoColor=white\"\u003e\n  \u003cimg alt=\"C++\" src=\"https://img.shields.io/badge/-C%2B%2B%C2%A0%C2%A0%C2%A0-00599C?style=flat-square\u0026logo=cplusplus\u0026logoColor=white\"\u003e\n  \u003cimg alt=\"Rust\" src=\"https://img.shields.io/badge/-Rust%C2%A0%C2%A0-F6B73C?style=flat-square\u0026logo=rust\u0026logoColor=black\"\u003e\n  \u003cbr\u003e\n  \u003cimg alt=\"JS\" src=\"https://img.shields.io/badge/-JS%C2%A0%C2%A0%C2%A0%C2%A0-F7DF1E?style=flat-square\u0026logo=javascript\u0026logoColor=black\"\u003e\n  \u003cimg alt=\"C\" src=\"https://img.shields.io/badge/-C%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0-A8B9CC?style=flat-square\u0026logo=c\u0026logoColor=black\"\u003e\n  \u003cimg alt=\"Zig\" src=\"https://img.shields.io/badge/-Zig%C2%A0%C2%A0%C2%A0-F7C948?style=flat-square\u0026logo=zig\u0026logoColor=black\"\u003e\n  \u003cimg alt=\"Nim\" src=\"https://img.shields.io/badge/-Nim%C2%A0%C2%A0%C2%A0-37775B?style=flat-square\u0026logo=nim\u0026logoColor=white\"\u003e\n  \u003cimg alt=\"Scala\" src=\"https://img.shields.io/badge/-Scala3-10B981?style=flat-square\u0026logo=scala\u0026logoColor=white\"\u003e\n  \u003cimg alt=\"Julia\" src=\"https://img.shields.io/badge/-Julia-9558B2?style=flat-square\u0026logo=julia\u0026logoColor=white\"\u003e\n  \u003cimg alt=\"Elixir\" src=\"https://img.shields.io/badge/-Elixir-4B275F?style=flat-square\u0026logo=elixir\u0026logoColor=white\"\u003e\n  \u003cimg alt=\"PHP\" src=\"https://img.shields.io/badge/-PHP%C2%A0%C2%A0%C2%A0-777BB4?style=flat-square\u0026logo=php\u0026logoColor=white\"\u003e\n  \u003cimg alt=\"Lua\" src=\"https://img.shields.io/badge/-Lua%C2%A0%C2%A0%C2%A0-2C2D72?style=flat-square\u0026logo=lua\u0026logoColor=white\"\u003e\n  \u003cimg alt=\"PowerShell\" src=\"https://img.shields.io/badge/-PowerShell-5391FE?style=flat-square\u0026logo=powershell\u0026logoColor=white\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/almide/almide\"\u003eAlmide\u003c/a\u003e ·\n  \u003ca href=\"https://github.com/almide/almide-bindgen\"\u003ealmide-bindgen\u003c/a\u003e ·\n  \u003ca href=\"https://github.com/almide/playground\"\u003ePlayground\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## What is this?\n\nWrite a library in Almide. Run one command. Use it from 21 languages.\n\n```bash\nalmide run src/main.almd -- --lang python mylib.almd\nalmide run src/main.almd -- --lang python,go,swift mylib.almd   # multiple at once\nalmide run src/main.almd -- --list                               # show all 21\nalmide run src/main.almd -- --dry-run --lang ruby mylib.almd     # preview\n```\n\nNo runtime. No VM. Almide disappears — only a native shared library and a pure language wrapper remain.\n\n## How it works\n\n```\nmylib.almd\n    │\n    ├─ [1/N] almide compile --json             → interface.json\n    ├─ [2/N] almide --target rust --repr-c     → source.rs + cargo build → .so/.dylib\n    └─ [3/N] bindgen.bindings.\u003clang\u003e.generate() → almide_mylib.py / .go / .swift / ...\n```\n\n## Architecture\n\n```\nalmide-bindgen (library, 21 generators)     almide-lander (this repo, CLI)\n├── src/mod.almd                            ├── almide.toml → depends on bindgen\n├── src/scaffolding.almd                    ├── src/main.almd → import bindgen\n└── src/bindings/ (21 .almd files)          └── test/ (51 tests)\n```\n\nEverything is written in Almide. No Python, no external tool dependencies.\n\n## Demo\n\n### 1. Write Almide\n\n```almide\n// mathlib.almd\nimport math\n\ntype Point = { x: Float, y: Float }\ntype Shape = Circle(Float) | Rect(Float, Float)\n\nfn distance(a: Point, b: Point) -\u003e Float = {\n  let dx = a.x - b.x\n  let dy = a.y - b.y\n  math.sqrt(dx * dx + dy * dy)\n}\n\nfn area(shape: Shape) -\u003e Float = match shape {\n  Circle(r) =\u003e math.pi() * r * r,\n  Rect(w, h) =\u003e w * h,\n}\n```\n\n### 2. Land it\n\n```bash\nalmide run src/main.almd -- --lang python mathlib.almd\n```\n\n```\n[1/3] Compiling interface from mathlib.almd...\n[2/3] Building shared library...\n  OK\n[3/3] Generating python binding...\n  almide_mathlib.py\n\nDone. Generated 1 binding(s) for mathlib.\n```\n\n### 3. Use it\n\n**Python**\n```python\nfrom almide_mathlib import Point, distance\ndistance(Point(x=0, y=0), Point(x=3, y=4))  # 5.0\n```\n\n**Go**\n```go\nd := almide.Distance(almide.Point{X: 0, Y: 0}, almide.Point{X: 3, Y: 4})\n```\n\n**Ruby**\n```ruby\nd = AlmideMathlib.distance(AlmideMathlib::Point.new(x: 0, y: 0), AlmideMathlib::Point.new(x: 3, y: 4))\n```\n\n**Swift**\n```swift\nlet d = Mathlib.distance(Point(x: 0, y: 0), Point(x: 3, y: 4))\n```\n\n**C#**\n```csharp\nvar d = Bridge.Distance(new Point(0, 0), new Point(3, 4));\n```\n\n**Dart**\n```dart\nfinal d = Mathlib.distance(Point(x: 0, y: 0), Point(x: 3, y: 4));\n```\n\n**Kotlin**\n```kotlin\nval d = Mathlib.distance(Point(0.0, 0.0), Point(3.0, 4.0))\n```\n\n**Java**\n```java\ndouble d = Mathlib.distance(new Point(0, 0), new Point(3, 4));\n```\n\n**C++**\n```cpp\nauto d = almide::distance(almide::Point{0, 0}, almide::Point{3, 4});\n```\n\n**Rust**\n```rust\nlet d = almide_mathlib::distance(Point { x: 0.0, y: 0.0 }, Point { x: 3.0, y: 4.0 });\n```\n\n**JavaScript**\n```javascript\nconst d = distance({x: 0, y: 0}, {x: 3, y: 4});  // 5.0\n```\n\n**C**\n```c\ndouble d = almide_distance(0, 0, 3, 4);\n```\n\n**Zig**\n```zig\nconst d = almide.distance(Point{ .x = 0, .y = 0 }, Point{ .x = 3, .y = 4 });\n```\n\n**Nim**\n```nim\nlet d = distance(Point(x: 0, y: 0), Point(x: 3, y: 4))\n```\n\n**Scala**\n```scala\nval d = Mathlib.distance(Point(0.0, 0.0), Point(3.0, 4.0))\n```\n\n**Julia**\n```julia\nd = distance(Point(0.0, 0.0), Point(3.0, 4.0))\n```\n\n**Elixir**\n```elixir\nd = AlmideMathlib.distance(%Point{x: 0.0, y: 0.0}, %Point{x: 3.0, y: 4.0})\n```\n\n**PHP**\n```php\n$d = AlmideMathlib::distance(new Point(0, 0), new Point(3, 4));\n```\n\n**Lua**\n```lua\nlocal d = almide.distance(Point.new(0, 0), Point.new(3, 4))\n```\n\n**PowerShell**\n```powershell\n$d = [AlmideMathlib]::Distance([Point]::new(0, 0), [Point]::new(3, 4))\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falmide%2Falmide-lander","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falmide%2Falmide-lander","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falmide%2Falmide-lander/lists"}