{"id":13625682,"url":"https://github.com/ArachnidAbby/BCL","last_synced_at":"2025-04-16T10:33:00.268Z","repository":{"id":54480134,"uuid":"395135018","full_name":"ArachnidAbby/BCL","owner":"ArachnidAbby","description":"BCL Compiled Language (BCL)","archived":false,"fork":false,"pushed_at":"2025-01-21T00:16:42.000Z","size":9232,"stargazers_count":23,"open_issues_count":11,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-01-21T01:21:14.707Z","etag":null,"topics":["compiler","programming-language","python"],"latest_commit_sha":null,"homepage":"https://discord.gg/sShr7fMNFn","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ArachnidAbby.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":"contributing.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-08-11T22:55:42.000Z","updated_at":"2024-12-08T19:48:07.000Z","dependencies_parsed_at":"2023-10-02T01:50:59.793Z","dependency_job_id":"3fe0750f-47dd-4f3f-a425-370d00e9c20e","html_url":"https://github.com/ArachnidAbby/BCL","commit_stats":null,"previous_names":["arachnidabby/bcl"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArachnidAbby%2FBCL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArachnidAbby%2FBCL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArachnidAbby%2FBCL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArachnidAbby%2FBCL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ArachnidAbby","download_url":"https://codeload.github.com/ArachnidAbby/BCL/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249228274,"owners_count":21233852,"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","programming-language","python"],"created_at":"2024-08-01T21:01:59.472Z","updated_at":"2025-04-16T10:32:58.088Z","avatar_url":"https://github.com/ArachnidAbby.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"![BCL logo](docs/source/_static/experimental_BCL_LOGO.png)\n\n![Project Status](https://img.shields.io/badge/Project%20Status-In%20Development-orange?style=for-the-badge) ![GitHub last commit](https://img.shields.io/github/last-commit/spidertyler2005/BCL?style=for-the-badge) ![Discord](https://img.shields.io/discord/875155614202994761?style=for-the-badge)\n\n# What is BCL?\n\nBCL (BCL Compiled Language) is a compiled programming language that is inspired by python, rust, and other languages.\n\n# Installing via source\n\nTo do this you will need:\n- LLVM 14 (or LLVM11 if using alternative fork)\n- Conda\n- Python 3.11+\n- SetupTools (`pip install setuptools`)\n- Git (required for pip)\n- Visual Studio (When on windows)\n\n### Step 1\n\nClone the git repo\n\n### Step 2\n\nrun these commands\n\n#### Step 2.1 (ALL)\nThis is for all platforms.\n**There is only one linux exclusive command.**\n\n```sh\n# libs required to compile llvmlite from source/custom fork\n## linux gcc stuff, I couldn't get it to compile without this\nconda install -c conda-forge libstdcxx-ng=12\n## llvm14 install (change 14 to 11 if needed)\nconda install -y -q -c numba/label/dev llvmdev=\"14.*\" libxml2\n## llvm uses cmake\nconda install cmake\n```\n\n#### Step 2.2 (WINDOWS)\n\nInstalling llvm 11\n\n```sh\n# when using a different version of visual studio, do:\nset CMAKE_GENERATOR=Visual Studio 17 2022 # an example version of visual studio.\n# Install LLVM11. I haven't found a way to use 14 on windows.\npip install git+https://github.com/spidertyler2005/llvmlite.git\n```\n\n#### Step 2.2 (LINUX)\n\nInstalling llvmlite 14 or 11\n\n```sh\n# Installing custom llvmlite fork that has lld for linking (LLVM14)\npip install git+https://github.com/Hassium-Software/llvmlite-lld.git\n# Alternatively, if this doesn't work install (LLVM11)\npip install git+https://github.com/spidertyler2005/llvmlite.git\n```\n\n#### Step 2.3 (ALL)\n\ninstalling BCL\n\n```sh\n# Installing BCL\npip install .\n```\n\n### Step 3\n\nrun `bcl \u003csubcommand\u003e \u003cargs\u003e` to use BCL!\n\n### How to uninstall\n\nrun `pip uninstall Bens_Compiled_Language`\n\n# Example code\n\n```\n//  fizzbuzz program\n// ===================\n\nimport stdlib::*; // will later be an auto-import\n\ndefine main() {\n    for i in 0..100 {\n        // printf is in the language, could be used here too!\n        print(i);\n        print(' ');\n        if is_multiple(i, 3) {\n            print(\"fizz\");\n        }\n        if is_multiple(i, 5) {\n            print(\"buzz\");\n        }\n        println();\n    }\n}\n\ndefine is_multiple(value: i32, divider: i32) -\u003e bool {\n    return (value % divider) == 0;\n}\n```\n\n# State of the language\n\nThe language is *not* fit for production use. It is missing a very large number of features. Although, it is turing-complete.\n\n## Features\n\n- [x] codeblocks\n- [x] functions\n- [x] function returns\n- [x] function arguments\n- [x] variable declaration and assignment\n- [x] most Operators (now with 100% more bitwise ops)\n- [x] boolean operators\n- [x] if and else statements\n- [x] while loops\n- [x] floats\n- [x] variable type declaration\n- [x] variable assignment-operators (`+=`, `-=`, etc)\n- [x] Arrays\n- [x] for-loops (only with range literals rignt now)\n- [x] references\n- [ ] `const`ants\n- [x] structs\n- [x] struct functions\n- [x] struct methods\n- [x] struct operator overloading\n- [x] struct generic typing\n- [ ] protocol types\n- [x] generator functions/iterators\n- [x] `import` statement with the ability to import modules/packages (WIP, needs namespaces)\n- [x] compile a folder or file instead of hardcoded test string.\n- [x] heap allocation with garbage collection (`Box::\u003cT\u003e`)\n- [x] `malloc` and `free` functions (If you manage your own memory instead of using `Box::\u003cT\u003e`)\n- [ ] in-line assembly functionality.\n- [ ] make sys-calls\n- [x] ~~some access to llvm function directly. (notice: more can, and will, be added)~~ disabled temporarily\n- [ ] access to cpu registers.\n- [x] standard math library (VERY VERY WIP)\n- [x] string (literal)\n- [ ] strings (mutable)\n- [ ] vectors (WIP)\n- [x] stdio library (VERY WIP)\n- [x] run-time errors (Error type for errors as values., `Result::\u003cT, E\u003e`)\n- [x] Option type (`Optional::\u003cT\u003e`)\n- [x] namespaces\n- [x] enums\n\n\n# VSCode highlighting\n\nThere is a folder called `syntax_highlighting`, inside there is a vsix file which you can right click to install. Just note that it's a bit of a work in progress.\n\n# Documentation\n\nSphinx documentation can be found in the `docs` folder. Note that these docs are not up-to-date yet.\n\n## Stargazers over time\n[![Stargazers over time](https://starchart.cc/ArachnidAbby/BCL.svg?variant=adaptive)](https://starchart.cc/ArachnidAbby/BCL)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FArachnidAbby%2FBCL","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FArachnidAbby%2FBCL","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FArachnidAbby%2FBCL/lists"}