{"id":13608937,"url":"https://github.com/jondgoodwin/cone","last_synced_at":"2025-04-05T06:08:02.884Z","repository":{"id":28022290,"uuid":"104402759","full_name":"jondgoodwin/cone","owner":"jondgoodwin","description":"Cone Programming Language","archived":false,"fork":false,"pushed_at":"2022-12-12T07:46:46.000Z","size":24542,"stargazers_count":535,"open_issues_count":5,"forks_count":18,"subscribers_count":21,"default_branch":"master","last_synced_at":"2025-03-29T05:08:47.462Z","etag":null,"topics":["compiler","concurrency","cone","memory-management","programming-language","systems-language","type-safety","web3d","webassembly"],"latest_commit_sha":null,"homepage":null,"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/jondgoodwin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-09-21T21:55:04.000Z","updated_at":"2025-03-19T01:45:04.000Z","dependencies_parsed_at":"2023-01-14T07:57:52.506Z","dependency_job_id":null,"html_url":"https://github.com/jondgoodwin/cone","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/jondgoodwin%2Fcone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jondgoodwin%2Fcone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jondgoodwin%2Fcone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jondgoodwin%2Fcone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jondgoodwin","download_url":"https://codeload.github.com/jondgoodwin/cone/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247294539,"owners_count":20915340,"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":["compiler","concurrency","cone","memory-management","programming-language","systems-language","type-safety","web3d","webassembly"],"created_at":"2024-08-01T19:01:31.178Z","updated_at":"2025-04-05T06:08:02.866Z","avatar_url":"https://github.com/jondgoodwin.png","language":"C","readme":"# Cone Programming Language\nCone is a fast, fit, friendly, and safe systems programming language.\nIt features:\n\n- Do-it-your-way memory management\n- Versatile type system (incl. variant types and slices)\n- Memory, thread \u0026 type safe\n- Extensive code reuse features\n- Lean, native runtime\n- Concise, readable syntax\n\nThe Cone compiler is currently under development.\nThe current status and next steps are documented in [PLAN.md][plan].\n\n## Documentation and Other Resources\n\n - [Cone web site](http://cone.jondgoodwin.com)\n - [Web-based playground][playground], offering pre-built examples in a drop-down\n - [Cone Language Reference][coneref] documentation\n - [Programming Linguistics blog](http://pling.jondgoodwin.com)\n \nThe [Cone home repository](https://github.com/jondgoodwin/conehome)\noffers a rudimentary build environment for Cone programs,\nincluding the Congo build tool and additional example Cone programs.\n\n## Language Features\n\nWhen finished, Cone will support these features:\n\n- Safely manage memory your way\n  - Lexical, single-owner strategy for performance\n  - Ref-counted or tracing GC for flexibility\n  - Lifetime-constrained references for performance/simplicity\n  - Custom allocators (pools/arenas) for performance\n- Lightweight concurrency\n  - Co-routines, threads and actors\n  - Lockless and locked permissions for safe data sharing\n- Compile-time memory, type, and concurrency safety\n- Robust type system\n  - Sum types, structs, arrays, slices, ranges, aliases\n  - struct subtyping via trait, \u0026 delegated inheritance\n  - Attach methods to any nominal type\n- Modules, macros, templates and meta-programming\n- Extensible pattern matching\n  - 'match' blocks using custom match methods\n  - Content extraction during matching\n- Functions, Methods and Closures\n  - Multiple return values and implicit return\n  - Computed properties\n- 'with' block for context management\n- Concise, readable code:\n  - 'this'-implied prefix operators for method cascading, etc.\n  - Operator overloading\n  - Type inference\n  - Parallel assignment\n  - Auto-detected off-side rule\n  - Blocks and 'if' are expressions\n- Unicode-aware (UTF8) text strings and variable names\n- Fast compilation and convenient packaging\n\n## Building (Windows)\n\nA Visual Studio C++ solution can be created using the Cone.vcxproj project file.\nThe generated object and executable files are created relative to the location of the \nsolutions file. \n\nThe build depends on [LLVM 13][llvm] being installed and libs/includes found at $(LLVMDIR).\n\nBuilding LLVM on Windows can be a pain. Some notes:\n\n1. Download llvm-13.0.0.src.tar.xz from https://github.com/llvm/llvm-project/releases \n2. Extract the src to a path having no spaces (e.g., D:\\libs\\llvm-13.0.0.src)\n3. Make sure you have a recent version of CMake (which has CMake-GUI)\n4. Use CMake-GUI to configure. Fill in the source folder (above) and a new target folder (D:\\libs\\llvm-13.0.0.build) and hit Configure button\n   - When it asks if build folder should be created, say Yes\n   - When it prompts for a generator, specify the Visual Studio version installed (e.g., 15).\n   - In next drop down, select \"Win32\" to build 32-bit compiler.\n5. In CMake-Gui, change defaults if you want (e.g., 32-bit target triple is i686-pc-win32), and then hit \"Generate\" button.\n6. From build folder, double clicked on llvm.sln file to open Visual Studio. \n   - Select Release, and then build ALL_BUILD\n   - Select Debug, and then build ALL_BUILD. (fails if not enough memory, shut all pgms off)\n7. Copy llvm-c from llvm-13.0.0.src/include to llvm-13.0.0.build/include\n8) In command prompt: setx LLVMDIR d:\\libs\\llvm-13.0.0.build\\\n\n## Building (Linux and WSL in Windows)\n\nTo build on Linux:\n\n\tsudo apt-get install llvm-13-dev\n\tcmake .\n\tmake\n\nNote: Sometimes, it is necessary to custom-build LLVM, e.g.:\n\n\tmkdir llvm\n\tcd llvm\n\tsvn co http://llvm.org/svn/llvm-project/llvm/trunk llvm-src\n\tcd llvm-src/tools\n\tsvn co http://llvm.org/svn/llvm-project/cfe/trunk clang\n\tsvn co http://llvm.org/svn/llvm-project/lld/trunk lld\n\tcd ../..\n\tmkdir llvm-build\n\tcd llvm-build\n\tCC=clang CXX=clang++ cmake -G \"Unix Makefiles\" -DLLVM_BUILD_LLVM_DYLIB=ON -DCMAKE_INSTALL_PREFIX=/llvm/wasm -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly /llvm/llvm-src\n\tmake\n\tmake install\n\n## Building (Mac OS)\n\nTo build on Mac OS:*\n\n\tbrew install --with-toolchain llvm\n\tllvm-config --bindir\n\nCMake will auto-detect LLVM, so all you should need to do:\n\n\tcmake .\n\tmake\n\nMore detailed instructions: https://github.com/git-yledu/cone-misc/blob/main/install_cone_on_mac.md\n\n## License\n\nThe Cone programming language compiler is distributed under the terms of the MIT license. \nSee LICENSE and COPYRIGHT for details.\n\n[3dweb]: http://cone.jondgoodwin.com/web3d.html\n[gmm]: http://jondgoodwin.com/pling/gmm.pdf\n[plan]: https://github.com/jondgoodwin/cone/blob/master/PLAN.md\n[coneref]: http://cone.jondgoodwin.com/coneref/index.html\n[showcase]: http://cone.jondgoodwin.com/coneref/showcase.html\n[playground]: http://cone.jondgoodwin.com/play/index.html\n[examples]: http://github.com/jondgoodwin/cone/tree/master/text\n[acorn]: https://github.com/jondgoodwin/acornvm\n[acornref]: http://web3d.jondgoodwin.com/acorn\n[llvm]: https://llvm.org/\n\n[hello]: http://cone.jondgoodwin.com/play/index.html?gist=f55a8caa2605a11223437167730c53af\n[pi]: http://cone.jondgoodwin.com/play/index.html?gist=4510655502edcde9d50d185cfd7f3c2e\n[perm]: http://cone.jondgoodwin.com/play/index.html?gist=96ecaecb4827c2b9e6aaad35feb2bfd1\n[struct]: http://cone.jondgoodwin.com/play/index.html?gist=cd702c7c1ffc8f97d7762735d04fd9de\n","funding_links":[],"categories":["Embed-Script/VM/","Uncategorized","Other","C"],"sub_categories":["Lua","Uncategorized"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjondgoodwin%2Fcone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjondgoodwin%2Fcone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjondgoodwin%2Fcone/lists"}