{"id":17493610,"url":"https://github.com/nsailor/spaceada","last_synced_at":"2026-04-10T21:02:07.018Z","repository":{"id":72730209,"uuid":"88402289","full_name":"nsailor/SpaceAda","owner":"nsailor","description":"A small subset of Ada targeting embedded systems.","archived":false,"fork":false,"pushed_at":"2017-04-17T10:27:11.000Z","size":27,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-10T06:57:21.772Z","etag":null,"topics":["ada","compiler","embedded","gnat","gnatprove","llvm","parser","rust"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nsailor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-04-16T09:01:53.000Z","updated_at":"2024-10-26T13:50:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"39369e45-0412-4e3b-aee5-20cc3c5eef3b","html_url":"https://github.com/nsailor/SpaceAda","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nsailor/SpaceAda","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nsailor%2FSpaceAda","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nsailor%2FSpaceAda/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nsailor%2FSpaceAda/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nsailor%2FSpaceAda/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nsailor","download_url":"https://codeload.github.com/nsailor/SpaceAda/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nsailor%2FSpaceAda/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31658964,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-10T17:19:37.612Z","status":"ssl_error","status_checked_at":"2026-04-10T17:19:13.364Z","response_time":98,"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":["ada","compiler","embedded","gnat","gnatprove","llvm","parser","rust"],"created_at":"2024-10-19T12:08:49.045Z","updated_at":"2026-04-10T21:02:06.989Z","avatar_url":"https://github.com/nsailor.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SpaceAda\n\nSpaceAda is an attempt to create a very simple language resembling Ada, targeting embedded architectures.\nIt's specification should be very simple so that programs written in it can be easily verified and statically analyzed.\n\nThe main idea is that SpaceAda programs can be analyzed using SPARK on a desktop platform, and then compiled by `spadac` for any LLVM architecture, including AVR microcontrollers.\n\nThis will enable Arduino to run SPARK-proven code.\n\n## Core Features\n#### Comments\nComments begin with a `--` and span the entire line.\n\n### Syntax\nSpaceAda supports simple procedures and functions. A procedure is defined using the following syntax:\n\n```\nprocedure Print_Int(X : in Integer);\n\nprocedure Print_Sum(X : in Integer; Y : in Integer) is\n\tSum : Integer;\nbegin\n\tSum := X + Y;\n\tPrint_Int(Sum);\nend Print_Sum;\n```\n\nAll statements end with a semicolon.\nFunctions can be defined in a similar manner:\n\n```\nfunction Square(X : in Integer) return Integer is\nbegin\n\treturn X * X;\nend Square;\n\nfunction Average(A : in Float; B : in Float) return Float is\nbegin\n\treturn A * B * 0.5;\nend Average;\n```\n\nThe first version of SpaceAda will support only the `Integer` and `Float` data types.\n\n## Usage\n\nIn order to use the runtime functions declared in `code.spad`, you need to link the object file\nproduced by the compiler with `spada-rt.c`. A typical compilation sequence might look like this:\n\n```\nspadac sample.spad -o sample.o\nclang -c spada-rt.c -o spada-rt.o\nclang sample.o spada-rt.o -o sample\n./sample\n```\n\n### Installation\nTo build `spadac` you will need a recent version of Rust.\nDue to the quick nature of Rust's development, we recommend\nalways using the latest version of the language.\nThe only dependency you need to install manually is the LLVM\ndevelopment libraries.\n\nOn macOS, you can use Homebrew with `brew install llvm`.\nOn Ubuntu, `sudo apt-get install llvm-dev` should be enough.\n\nOnce you clone the repository, you can use `cargo` to build `spadac`:\n\n```\ncargo build\ncargo install\n```\n\nThis shouldn't take longer than a couple of minutes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnsailor%2Fspaceada","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnsailor%2Fspaceada","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnsailor%2Fspaceada/lists"}