{"id":13683557,"url":"https://github.com/shiika-lang/shiika","last_synced_at":"2025-04-30T13:31:21.782Z","repository":{"id":38124712,"uuid":"112225642","full_name":"shiika-lang/shiika","owner":"shiika-lang","description":"A statically-typed programming language","archived":false,"fork":false,"pushed_at":"2024-03-15T04:34:29.000Z","size":2684,"stargazers_count":219,"open_issues_count":51,"forks_count":15,"subscribers_count":8,"default_branch":"main","last_synced_at":"2024-05-18T23:19:44.124Z","etag":null,"topics":["language","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/shiika-lang.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","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}},"created_at":"2017-11-27T17:17:45.000Z","updated_at":"2024-07-17T19:13:35.843Z","dependencies_parsed_at":"2022-07-11T21:31:05.982Z","dependency_job_id":"b00f16b3-2dda-47f9-b845-08bcddaf1b56","html_url":"https://github.com/shiika-lang/shiika","commit_stats":null,"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shiika-lang%2Fshiika","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shiika-lang%2Fshiika/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shiika-lang%2Fshiika/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shiika-lang%2Fshiika/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shiika-lang","download_url":"https://codeload.github.com/shiika-lang/shiika/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224212260,"owners_count":17274383,"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":["language","rust"],"created_at":"2024-08-02T13:02:15.399Z","updated_at":"2024-11-12T03:31:26.936Z","avatar_url":"https://github.com/shiika-lang.png","language":"Rust","funding_links":[],"categories":["Rust","Uncategorized"],"sub_categories":["Uncategorized"],"readme":"# ![logo](shiika_logo_small.png) Shiika\n\nShiika is a programming language that makes me most productive.\n\n- Easy to write like Ruby or Python\n- Static type checking (Null safety!)\n- Object-oriented but has enums and pattern-matching\n- Written in Rust, compiles to single binary via LLVM IR\n\n## Concept\n\nMost of the static typing languages, such as C++/Java/Scala/Go/Swift/Kotlin/Rust, etc. are designed for execution speed. However what I want a \"lightweight\" static typing language to make application faster.\n\n### Design policy\n\n- Easiness over performance\n  - Shiika is a glue language. Use Rust (or C, etc.) for performance-critical parts and load it as a library\n- Easy to learn\n  - There may be more than one way to do it, but not too many.\n\n### Comparison to [Crystal](https://crystal-lang.org/)\n\nShiika has lots in common with Crystal. However:\n\n- In Shiika, type annotation of method parameters are mandatory. This helps reading programs written by others\n- Shiika has only one class `Int` for integers (cf. `Int8`, `Int16`, `Int32` in Crystal)\n- Shiika does not have union types. The type system is more similar to languages such as Rust, Java or Swift (this isn't good or bad; just a difference)\n\n## Example\n\n```\nclass A\n  def fib(n: Int) -\u003e Int\n    if n \u003c 3\n      1\n    else\n      fib(n-1) + fib(n-2)\n    end\n  end\nend\np A.new.fib(34)\n```\n\nSee `examples/*.sk` for more.\n\n## Install\n\n→ [install.md](./doc/guide/src/install.md)\n\n## Documents\n\n- [Language Guide](./doc/guide/src/SUMMARY.md)\n- [Language Specification](./doc/spec/src/SUMMARY.md)\n- [Development Guide](./doc/shg/src/SUMMARY.md)\n\n## Status\n\nEarly-alpha; capable of solving algorithmic problems like [Advent of Code](https://github.com/yhara/adventofcode) but a lot more stdlib is needed for practical application.\n\n### Features already implemented\n\n- Classes, Modules, Enums\n- Basic Generics\n- Basic pattern-matching\n- Anonymous function\n- Core classes - Object, Array, String, Bool, Int, Float, Dict, Maybe, Class, Metaclass\n\nSee [tests/sk/](https://github.com/shiika-lang/shiika/tree/master/tests/sk) and\n[examples/](https://github.com/shiika-lang/shiika/tree/master/examples) for more.\n\n### Features not yet implemented\n\n- Something like Ruby's `require`\n- Type inference\n- More stdlib like `Time`, `File`, etc.\n\nSee [Issues](https://github.com/shiika-lang/shiika/issues) for more.\n\n### Roadmap\n\n- v0.10.0~\n  - Type system: Upper and lower bound\n  - Type system: Variance specifier\n  - Syntax: `.try!`\n  - Semantics: Non-local return\n  - Built-in: Bignum, Rational?\n  - Built-in: Dir, Process\n  - Built-in: Split Array and MutableArray?\n  - Simple package system (`shiika build`)\n- After v1.0.0\n  - Some meta-programming feature (like Crystal?)\n  - Some mechanics for parallel computation\n\n## Supported platform\n\n- Tested on Mac, Linux(Ubuntu) and Windows\n- May not work on 32bit environment\n\n## Hacking\n\nSee [install.md](./doc/guide/src/install.md)\n\n### Run tests\n\n```\n$ cargo test\n```\n\nOnly integration tests (test/sk/\\*.sk):\n\n```\n$ cargo test --test integration_test\n```\n\nSpecific file under test/sk/ (eg. string.sk):\n\n```\n$ FILTER=string cargo test --test integration_test\n```\n\nWith logging enabled\n\n```\n$ RUST_LOG='trace' cargo test\n```\n\n## License\n\nMIT\n\n## Contact\n\nhttps://github.com/shiika-lang/shiika/issues\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshiika-lang%2Fshiika","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshiika-lang%2Fshiika","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshiika-lang%2Fshiika/lists"}