{"id":13493905,"url":"https://github.com/panicinc/icarus","last_synced_at":"2026-01-06T03:55:25.762Z","repository":{"id":166079133,"uuid":"628090917","full_name":"panicinc/icarus","owner":"panicinc","description":"Swift, C, C++, and Objective-C Support for Nova","archived":false,"fork":false,"pushed_at":"2024-09-06T23:05:58.000Z","size":21281,"stargazers_count":73,"open_issues_count":13,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-28T05:03:33.263Z","etag":null,"topics":["c","cpp","editor","extension","nova","objc","objective-c","swift"],"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/panicinc.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}},"created_at":"2023-04-14T22:27:52.000Z","updated_at":"2024-12-08T20:44:59.000Z","dependencies_parsed_at":null,"dependency_job_id":"6882c5dd-b281-4a9d-90dd-f81486273401","html_url":"https://github.com/panicinc/icarus","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panicinc%2Ficarus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panicinc%2Ficarus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panicinc%2Ficarus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panicinc%2Ficarus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/panicinc","download_url":"https://codeload.github.com/panicinc/icarus/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246037322,"owners_count":20713395,"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":["c","cpp","editor","extension","nova","objc","objective-c","swift"],"created_at":"2024-07-31T19:01:19.921Z","updated_at":"2026-01-06T03:55:25.718Z","avatar_url":"https://github.com/panicinc.png","language":"C++","readme":"# Icarus\n\nIcarus is a [Nova](https://nova.app) extension providing **Swift**, **C**, **C++**, and **Objective-C** language support.\n\n## Getting Started\n\nIf you're just looking to use the Icarus extension, you can download it from the Extension Library [directly within Nova](nova://extension?id=panic.Icarus).\n\nIcarus adds:\n\n- 🖍️ **Syntax highlighting**, symbolication, and code folding using Tree-sitter grammars\n- 🧪 **Language intelligence**, completions, issues, and more via SourceKit-LSP\n- 🐛 **Debugging** via LLDB both locally and on supported remote platforms\n\n![Icarus screenshot](screenshot.png)\n\nIntelligence is provided using [SourceKit-LSP](https://github.com/apple/sourcekit-lsp) from the Swift open-source project. This language server provides support for Swift natively and uses `clangd` behind the scenes for C-family languages.\n\nDebugging is supported using _LLDB.framework_, distributed with both Apple's Xcode tools and the standalone Swift toolchain.\n\nThe Icarus project consists of several parts:\n\n- A Nova extension bundle\n- A debug adapter written in Swift\n- Several [Tree-sitter](https://tree-sitter.github.io/tree-sitter/) grammars precompiled as macOS dynamic libraries\n- Custom queries for those grammars to add syntax highlighting, symbolication, code folding, etc.\n- Some JavaScript code for interfacing with the Nova extension runtime\n\n## Contributing\n\nSubmitting feedback on Icarus is welcomed via GitHub issues in this project. Please take the following considerations into account when filing or replying to issues:\n\n- Try and be clear and concise.\n- Avoid combining multiple unrelated topics into a single issue.\n- When reporting issues, include step-by-step reproduction cases.\n- Consider including screenshots or screen recordings when applicable.\n- Include environment details, such as operating system, Nova version, toolchain version, etc.\n- While casual conversation, joking, and asides are fine in threaded discussions, avoid overuse when it is not appropriate for the situation.\n\nIf you would like to contribute directly to the Icarus project, you are welcomed to clone this repository and submit pull requests with improvements and fixes.\n\nCode contributions should be formatted in accordance and consistency with the rest of the project, which (with occasional exception) takes its styling practices from the examples of the wider Swift open-source community:\n\n- [Swift Contribution Guidelines](https://www.swift.org/contributing/)\n- [Swift API Design Guidelines](https://www.swift.org/documentation/api-design-guidelines/)\n- [Swift Style Guide (third-party)](https://google.github.io/swift/)\n\nAll pull requests will be reviewed by the core team at Panic before being merged into the main branch.\n\n## Building\n\nOut of the box, a copy of this repository requires only that the debug adapter (`LLDBAdapter`) be built from source using Swift Package Manager and placed in the `Executables/` directory of the `Icarus.novaextension` bundle. If this is not done, everything else will work, but attempts to invoke the debugger will fail.\n\nTo build the debug adapter, you can either use the built-in Nova tasks for the DebugAdapter subproject directory or invoke SwiftPM directly:\n\n```shell\ncd DebugAdaptor\nswift build --product LLDBAdapter --configuration release\ncp .build/release/LLDBAdapter ../Icarus.novaextension/Executables/LLDBAdapter\n```\n\nOnce this is done, the extension bundle can be loaded into Nova as a development extension for testing.\n\n## Community\n\nIcarus is part of [Panic's](https://panic.com) open-source initiatives. We highly value the diversity of the community and encourage developers from all walks of life, skillsets, and backgrounds to contribute.\n\nPanic is dedicated to providing a harassment-free experience for everyone, regardless of gender identity and expression, sexual orientation, disability, mental illness, neurotype, physical appearance, body, age, race, ethnicity, nationality, language, or religion. We do not tolerate harassment of participants in any form. We reserve the right to ban users from our initiatives at any time and for any reason.\n\nIf you have questions or concerns, do not hesitate to contact us via `github@panic.com`.\n\n## Why The Name?\n\nThe Swift logo and mascot is of a diving swallow. Icarus is the name of a character from an ancient Greek legend whose father fashioned wings of feather and wax so the two might escape a prison. When Icarus flew too close to the sun, the wax melted and he fell into the sea. Swallow, wings, sea (as in \"C\"), and dev tools that might fly too close to the sun. Too much?\n\nOh, and the logo is a reference to Hades from Supergiant Games.\n\n## Acknowledgements\n\nThe following components are or were utilized in some way or another for the Icarus project:\n\n- [tree-sitter-c](https://github.com/tree-sitter/tree-sitter-c), for C parsing support\n- [tree-sitter-cpp](https://github.com/tree-sitter/tree-sitter-cpp), for C++ parsing support\n- [tree-sitter-swift](https://github.com/alex-pinkus/tree-sitter-swift), for Swift parsing support\n- [tree-sitter-objc](https://github.com/amaanq/tree-sitter-objc), for Objective-C parsing support\n- [tree-sitter-objcpp](https://github.com/panicinc/tree-sitter-objcpp), for Objective-C++ parsing support, itself a derivative of the tree-sitter-cpp and tree-sitter-objc projects\n- [tree-sitter-make](https://github.com/alemuller/tree-sitter-make), for Makefile parsing support\n- [tree-sitter-cmake](https://github.com/uyha/tree-sitter-cmake), for CMake parsing support\n- [SourceKit-LSP](https://github.com/apple/sourcekit-lsp), for language intelligence\n- [codelldb](https://github.com/vadimcn/codelldb), for conceptual reference on interfacing with LLDB in a debug adapter\n\n","funding_links":[],"categories":["C++"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpanicinc%2Ficarus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpanicinc%2Ficarus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpanicinc%2Ficarus/lists"}