-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' of https://github.com/kneorain/helix
- Loading branch information
Showing
94 changed files
with
20,001 additions
and
432 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
# To get started with Dependabot version updates, you'll need to specify which | ||
# package ecosystems to update and where the package manifests are located. | ||
# Please see the documentation for all configuration options: | ||
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file | ||
|
||
version: 2 | ||
updates: | ||
- package-ecosystem: "pip" # See documentation for possible values | ||
directory: "/" # Location of package manifests | ||
schedule: | ||
interval: "weekly" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
# For most projects, this workflow file will not need changing; you simply need | ||
# to commit it to your repository. | ||
# | ||
# You may wish to alter this file to override the set of languages analyzed, | ||
# or to provide custom queries or build logic. | ||
# | ||
# ******** NOTE ******** | ||
# We have attempted to detect the languages in your repository. Please check | ||
# the `language` matrix defined below to confirm you have the correct set of | ||
# supported CodeQL languages. | ||
# | ||
name: "CodeQL" | ||
|
||
on: | ||
push: | ||
branches: [ "main" ] | ||
pull_request: | ||
branches: [ "main" ] | ||
schedule: | ||
- cron: '26 18 * * 4' | ||
|
||
jobs: | ||
analyze: | ||
name: Analyze | ||
# Runner size impacts CodeQL analysis time. To learn more, please see: | ||
# - https://gh.io/recommended-hardware-resources-for-running-codeql | ||
# - https://gh.io/supported-runners-and-hardware-resources | ||
# - https://gh.io/using-larger-runners | ||
# Consider using larger runners for possible analysis time improvements. | ||
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }} | ||
timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }} | ||
permissions: | ||
# required for all workflows | ||
security-events: write | ||
|
||
# only required for workflows in private repositories | ||
actions: read | ||
contents: read | ||
|
||
strategy: | ||
fail-fast: false | ||
matrix: | ||
language: [ 'python' ] | ||
# CodeQL supports [ 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift' ] | ||
# Use only 'java-kotlin' to analyze code written in Java, Kotlin or both | ||
# Use only 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both | ||
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support | ||
|
||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v4 | ||
|
||
# Initializes the CodeQL tools for scanning. | ||
- name: Initialize CodeQL | ||
uses: github/codeql-action/init@v3 | ||
with: | ||
languages: ${{ matrix.language }} | ||
# If you wish to specify custom queries, you can do so here or in a config file. | ||
# By default, queries listed here will override any specified in a config file. | ||
# Prefix the list here with "+" to use these queries and those in the config file. | ||
|
||
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs | ||
# queries: security-extended,security-and-quality | ||
|
||
|
||
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). | ||
# If this step fails, then you should remove it and run the build manually (see below) | ||
- name: Autobuild | ||
uses: github/codeql-action/autobuild@v3 | ||
|
||
# ℹ️ Command-line programs to run using the OS shell. | ||
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun | ||
|
||
# If the Autobuild fails above, remove it and uncomment the following three lines. | ||
# modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. | ||
|
||
# - run: | | ||
# echo "Run, Build Application using script" | ||
# ./location_of_script_within_repo/buildscript.sh | ||
|
||
- name: Perform CodeQL Analysis | ||
uses: github/codeql-action/analyze@v3 | ||
with: | ||
category: "/language:${{matrix.language}}" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
# Helix | ||
## An experimental language to interop with Python, C, C++, and Rust | ||
<p align="center"> | ||
| <a href="#introduction">Why?</a> | | ||
<a href="#table-of-contents">Goals</a> | | ||
<a href="#project-status">Status</a> | | ||
<a href="#goals">Goals</a> | | ||
<a href="#getting-started">Getting started</a> | | ||
</p> | ||
|
||
## Introduction | ||
Helix is an experimental language designed for seamless interoperability with Python, C, C++, and Rust. The project aims to provide developers with a fast, efficient, and easy-to-use language that can leverage the power of existing code and libraries in these languages. With its clean syntax and robust features, Helix aims to simplify the process of writing and maintaining code while maximizing performance. | ||
|
||
--- | ||
<div> | ||
<img src="assets/example_1.png" width="450" align="right" | ||
alt="Code Example"> | ||
</a> | ||
<a href="#"><img src="assets/bumper.png"></a> | ||
</div> | ||
|
||
**Fast and Interoperable** | ||
- Helix offers high performance and interoperability with Python, C, C++, and Rust, allowing developers to seamlessly integrate code from these languages. | ||
- Developers can leverage existing libraries and codebases while benefiting from Helix's simplicity and efficiency. | ||
- With a focus on speed and efficiency, Helix enables developers to write fast and efficient code with ease. | ||
|
||
**Simple and easy to use** | ||
- Helix features a clean and intuitive syntax, making it easy for developers to write and understand code. | ||
- The language prioritizes simplicity and readability, ensuring that developers can quickly grasp its concepts and write maintainable code. | ||
|
||
**Rich Feature Set** | ||
- Helix provides a rich set of features including variables, functions, control flow, data types, classes, and more. | ||
- Support for advanced language constructs such as generics, inheritance, and operator overloading is planned, further enhancing Helix's versatility. | ||
- The language aims to strike a balance between power and simplicity, offering developers the tools they need without unnecessary complexity. | ||
|
||
|
||
<img src="assets/example_3.png" width="450" | ||
alt="Code Example"> | ||
</a> | ||
|
||
## Project status | ||
Helix is currently in the early stages of development, with a target for a working prototype by March 2024. The project encompasses various aspects, including language implementation, features, and syntax. | ||
|
||
As of now, the project has the following structure and features: | ||
|
||
#### Language Implementation | ||
- [x] Lexer | ||
- [x] Parser | ||
- [x] Abstract Syntax Tree (AST) | ||
- [x] Error Handling | ||
- [ ] Type Checking | ||
- [ ] Transpiler | ||
|
||
#### Language Features | ||
- [ ] Variables | ||
- [x] Functions | ||
- [ ] Control Flow | ||
- [ ] Data Types | ||
- [x] Classes | ||
- [x] Generics | ||
- [x] Inheritance | ||
- [ ] Operator Overloading | ||
- Interop: | ||
- [ ] Python | ||
- [ ] C | ||
- [ ] C++ | ||
- [ ] Rust | ||
- [ ] Standard Library | ||
- [ ] Package Manager | ||
- [ ] Documentation | ||
- [ ] Testing | ||
- [ ] Benchmarking | ||
- [ ] Profiling | ||
- [ ] Debugging | ||
- [x] Error Handling | ||
- [ ] Memory Management | ||
- [ ] Concurrency | ||
|
||
#### Language Syntax | ||
- [x] Comments | ||
- [x] Variables | ||
- [x] Functions | ||
- [x] Control Flow | ||
- [x] Data Types | ||
- [x] Classes | ||
- [x] Inheritance | ||
- [x] Operator Overloading | ||
- [x] Interop | ||
|
||
The project is actively being developed, with ongoing work to implement remaining features and enhance existing functionality. Contributions and feedback are welcomed as we progress towards the goal of creating a powerful and versatile language. | ||
|
||
## Goals | ||
The Helix project aims to achieve the following goals: | ||
|
||
- **Interoperability**: Helix will provide seamless interoperability with Python, C, C++, and Rust, allowing developers to integrate code from these languages with ease. | ||
- **Performance**: The language will prioritize speed and efficiency, enabling developers to write fast and efficient code without sacrificing simplicity. | ||
- **Simplicity**: Helix will feature a clean and intuitive syntax, making it easy for developers to write and understand code. | ||
- **Rich Feature Set**: The language will offer a rich set of features including variables, functions, control flow, data types, classes, and more, providing developers with the tools they need to write powerful code. | ||
- **Documentation**: Helix will provide comprehensive documentation to help developers learn the language and make the most of its features. | ||
- **Testing and Benchmarking**: The project will include robust testing and benchmarking tools to ensure the reliability and performance of the language. | ||
- **Community Involvement**: The Helix project will encourage community involvement, welcoming contributions, feedback, and collaboration to help improve the language. | ||
- **Standard Library**: Helix will include a standard library with a wide range of functions and modules to support common programming tasks. | ||
- **Package Manager**: The language will feature a package manager to help developers discover, install, and manage third-party libraries and tools. | ||
- **Debugging and Profiling**: Helix will provide tools for debugging and profiling code to help developers identify and fix issues and optimize performance. | ||
- **Memory Management**: The language will include memory management features to help developers manage memory efficiently and avoid memory leaks and other issues. | ||
- **Concurrency**: Helix will support concurrency to enable developers to write efficient, parallel code for multi-core and distributed systems. | ||
- **Error Handling**: The language will provide robust error handling features to help developers write reliable and resilient code. | ||
|
||
--- | ||
|
||
# Getting started | ||
To get started with Helix, you can follow the steps below: | ||
|
||
1. Clone the Helix repository from GitHub: | ||
```bash | ||
git clone https://github.com/kneorain/helix | ||
``` | ||
2. Navigate to the project directory: | ||
3. Install the required dependencies: | ||
```bash | ||
pip install -r requirements.txt | ||
``` | ||
|
||
> **Warning:** Helix is currently in the early stages of development and is not yet ready for production use. The project is under active development, and breaking changes may occur. We recommend using Helix for experimental purposes only and providing feedback to help improve the language. |
Binary file not shown.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
0.0.2-alpha.p | ||
1212 |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Oops, something went wrong.