Simple, safe and compiled programming language.

The X Programming Language

Simple, safe and compiled programming language.

Table of Contents

Overview

The X programming language is compiled, static typed, fast, modern and simple.
Before the X source code is compiled, it is translated to C++ code and compiled from C++.
Transpiling to C++ only instead of compiling is also an option.
It aims to be advanced, readable and a good choice for systems programming.

Example X code;

fun main() {
  // ...
}

OS Support

Operating System State
Windows Not Yet
Linux Not Yet
MacOS Not yet

Contributing

Thanks for you want contributing to X!

The X project use issues for only bug reports and proposals.
To contribute, please read the contribution guidelines from here.
To discussions and questions, please use discussions.

All contributions to X, no matter how small or large, are welcome.
From a simple typo correction to a contribution to the code, all contributions are welcome and appreciated.
Before you start contributing, you should familiarize yourself with the following repository structure;

  • ast/ abstract syntax tree builder.
  • cmd/ main and compile files.
  • doc documentations.
  • lex/ lexer.
  • parser/ interpreter.
  • pkg/ utility packages.
  • xlib/ standard libraries.

License

X and standard library is distributed under the terms of the MIT license.
See license details.

Owner
The X Programming Language
Simple, safe and compiled programming language.
The X Programming Language
Comments
  • [BUG] Transpiler doesn't seem to work very well

    [BUG] Transpiler doesn't seem to work very well

    I tried to transpile the code in the document but doesn't seem to work. After transpiled the code, dist directory was created but the code wasn't converted to the .cpp file.

  • feat: merge the GitHub Actions workflows

    feat: merge the GitHub Actions workflows

    Things added/changed:

    • Merge the GitHub Actions workflows. This will:
      • Make things cleaner.
      • Run for all OSes on the same workflow.
      • Seamlessly check all jobs in one place (example).
      • Run directly on all pull requests and multiple branches.
  • [PROPOSAL] Create a `.github` repository

    [PROPOSAL] Create a `.github` repository

    Detailed description

    With a .github repository, you can:

    • Have a predefined issue, PR, and funding templates for all repositories. To avoid duplication, you can also have a Code of Conduct, contributing, and security policy. Licenses will not take effect on the other repositories.
      • This can be overridden if a particular repository has other templates.
    • Make a customized profile for the organization just like with GitHub users (example.
    • Include any links and information about Jule, as well as add images and add a .github-private for only the team members.

    Context

    IMO, this would make the GitHub organization much more elegant as well as give users the option to quickly check what the project is about.

    Possible implementation

    Add .github and .github-private repositories for organization customization.

    Additional information

    If you need any help with this, feel free to contact me via Discord: Panquesito7#3723

  • [PROPOSAL] Convert all issue templates to issue forms

    [PROPOSAL] Convert all issue templates to issue forms

    Proposal

    We should use the newly provided GitHub issue forms. These can prevent blank issues or issues without enough information. We can mark fields as optional or required, making things much more efficient, IMO.

    Check the official GitHub blog about this: https://github.blog/changelog/2021-06-23-issues-forms-beta-for-public-repositories/

    Additional

    I want to work on this. 🙂

  • [PROPOSAL] snake_case complete localization identifiers

    [PROPOSAL] snake_case complete localization identifiers

    https://github.com/jule-lang/jule/blob/main/localization/turkish.json#L121 https://github.com/jule-lang/jule/blob/main/localization/english.json#L22 https://github.com/jule-lang/jule/blob/main/localization/english.json#L23 https://github.com/jule-lang/jule/blob/main/localization/english.json#L24 https://github.com/jule-lang/jule/blob/main/localization/english.json#L25 https://github.com/jule-lang/jule/blob/main/localization/english.json#L87 https://github.com/jule-lang/jule/blob/main/localization/english.json#L50 https://github.com/jule-lang/jule/blob/main/localization/english.json#L59 https://github.com/jule-lang/jule/blob/main/localization/english.json#L67 https://github.com/jule-lang/jule/blob/main/localization/english.json#L68

    it may be better to put the word underline instead of compound

    current code

    "notimpl_trait_def": ...
    

    desired

    "not_impl_trait_def": ...
    
  • [BUG] GCC C++ (aka g++) compiler give errors for transpiled Jule code

    [BUG] GCC C++ (aka g++) compiler give errors for transpiled Jule code

    Hİ Mertcan! Well done, Jule is very nice programming language :) It's just wrong like this:

    main() {
        const a int32 = 5;
        var b int32 = 25;
        outln(div(b, a));
    }
    
    div(x float64, y float64) float64 {
      ret x / y;
    }
    

    As a result, g++ reports incorrect code:

    x.cxx: In function 'void _main()': x.cxx:205:15: error: '_b_a' was not declared in this scope; did you mean '_b'? 205 | _outln(_div(_b_a)); | ^~~~ | _b

  • [OTHER] Standard library doesn't follows Go's license

    [OTHER] Standard library doesn't follows Go's license

    What would you like to share?

    The some codes in the standard library are adapted from Go, but do not follow the license of Go and do not meet the requirements.

    Additional information

    No response

  • [PROPOSAL] Add a security policy

    [PROPOSAL] Add a security policy

    Detailed description

    For security reasons, when a vulnerability is found in the code, it should be reported to the maintainers/administrators rather than making an issue on GitHub; otherwise, everything could be exposed. It might be dangerous as well.

    More information at https://docs.github.com/es/code-security/getting-started/adding-a-security-policy-to-your-repository

    Context

    In case a vulnerability in the code is found, the users can check the security policy to know how to report vulnerabilities properly. This will also make it much easier for the maintainers as well for the users and the community using the code.

    Possible implementation

    No response

    Additional information

    If you need any help implementing this, let me know. 🙂

  • [BUG] foreach loop in string

    [BUG] foreach loop in string

    when i transpile this jule code, i get the decimal value of the chars in the "test" string:

    fn main() {
        let s = "test"
        for _, b in s {
            outln(b)
        }
    }
    
    // OUTPUT
    116
    101
    115
    116
    

    is this expected behavior, because it doesn't l like that in the docs?

  • [PROPOSAL] Add a PR template

    [PROPOSAL] Add a PR template

    Detailed description

    Add a pull request template to the repository to let maintainers know of the change easier and more.

    Context

    A pull request template will make it easier for the maintainers and PR creators as well to make sure they've done everything correctly and have added the required information.

    Possible implementation

    Add a PR template to the repository.

    Additional information

    No response

T# Programming Language. Something like Porth, Forth but written in Go. Stack-oriented programming language.

The T# Programming Language WARNING! THIS LANGUAGE IS A WORK IN PROGRESS! ANYTHING CAN CHANGE AT ANY MOMENT WITHOUT ANY NOTICE! Something like Forth a

Jun 29, 2022
Yayx programming language is begginer friendly programming language.
Yayx programming language is begginer friendly programming language.

Yayx Yayx programming language is begginer friendly programming language. What have yayx: Easy syntax Dynamic types Can be compiled to outhers program

Dec 27, 2021
Yayx programming language is begginer friendly programming language.

Yayx Yayx programming language is begginer friendly programming language. What have yayx: Easy syntax Dynamic types Can be compiled to outhers program

May 20, 2022
Pineapple Lang is a simple programming language demo implements by Go

Pineapple Lang is a simple programming language demo implements by Go. It includes a hand-written recursive descent parser and a simple interpreter, although the language is not even Turing-complete. But this repo's main goal is to give beginners of compilation principles a warm up and a simple look at how a programming language is built.

Dec 26, 2022
WindLang, A simple programming language built with golang 🍃
WindLang, A simple programming language built with golang 🍃

WindLang, A simple programming language built with golang ?? WindLang, A simple programming language built with golang ?? What is wind? Playground Coo

Dec 1, 2022
Gentee - script programming language for automation. It uses VM and compiler written in Go (Golang).

Gentee script programming language Gentee is a free open source script programming language. The Gentee programming language is designed to create scr

Dec 15, 2022
⛳ A minimal programming language inspired by Ink, JavaScript, and Python.

⛳ Golfcart My blog post: Creating the Golfcart Programming Language Getting Started Scope Rules Usage Building and tests Contributions License Golfcar

Sep 6, 2022
Monkey programming language project from 'Writing An Interpreter In Go'and 'Writing A Compiler In Go' Books
Monkey programming language project from 'Writing An Interpreter In Go'and 'Writing A Compiler In Go' Books

Monkey Monkey programming language ?? project from "Writing An Interpreter In Go

Dec 16, 2021
a dynamically typed, garbage collected, embeddable programming language built with Go

The agora programming language Agora is a dynamically typed, garbage collected, embeddable programming language. It is built with the Go programming l

Dec 30, 2022
Port of the lemon parser generator to the Go programming language

From the golang-nuts mailing list (with few modifications): --== intro ==-- Hi. I just want to announce a simple port of the lemon parser generator

Feb 17, 2022
An LL(1) parser generator for the Go programming language.

What is it? I have implemented an LL(1) parser generator for the Go programming language. I did this to build parse trees for my HAML parser. You can

Jan 18, 2022
PHP bindings for the Go programming language (Golang)

PHP bindings for Go This package implements support for executing PHP scripts, exporting Go variables for use in PHP contexts, attaching Go method rec

Dec 27, 2022
The Slick programming language is an s-expression surface syntax for Go.

The Slick programming language The Slick programming language is a Lisp/Scheme-style s-expression surface syntax for the Go programming language, with

Jan 8, 2023
A interpreter of SweetLang, is writed in Go Programming language.

SweetLang ( Soon ) A interpreter of SweetLang, is writed in Go Programming language. SweetLang is made with clarity and simplicity we try to make its

Oct 31, 2021
ReCT-Go-Compiler - A compiler for the ReCT programming language written in Golang

ReCT-Go-Compiler A compiler for the ReCT programming language written in Golang

Nov 30, 2022
ReCT-Go-Compiler - A compiler for the ReCT programming language written in Golang

ReCT-Go-Compiler A compiler for the ReCT programming language written in Golang

Nov 30, 2022
A dialect of Lisp extended to support concurrent programming, written in Go.

LispEx A dialect of Lisp extended to support concurrent programming. Overview LispEx is another Lisp Interpreter implemented with Go. The syntax, sema

Nov 22, 2022
Golem is a general purpose, interpreted scripting language.
Golem is a general purpose, interpreted scripting language.

The Golem Programming Language Golem is a general purpose, interpreted scripting language, that brings together ideas from many other languages, inclu

Sep 28, 2022
Scripting language for Go.

Minima Minima is an experimental interpreter written in Go (the language is called the same). We needed a way to massage our JSON data with a scriptin

Feb 11, 2022