All Projects → the-xlang → x

the-xlang / x

Licence: BSD-3-Clause license
The Jule programming language

Programming Languages

go
31211 projects - #10 most used programming language
C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to x

CFortranTranslator
A translator from Fortran to C++. We provide statement-wise translation to improve readability.
Stars: ✭ 81 (+131.43%)
Mutual labels:  transpiler
sidef
A modern object-oriented programming language implemented in Perl.
Stars: ✭ 109 (+211.43%)
Mutual labels:  transpiler
lua-in-js
A Lua to JS transpiler / runtime
Stars: ✭ 37 (+5.71%)
Mutual labels:  transpiler
transpiler
ABAP to JS transpiler
Stars: ✭ 57 (+62.86%)
Mutual labels:  transpiler
foolang
A toy programming language.
Stars: ✭ 33 (-5.71%)
Mutual labels:  transpiler
purenix
Nix backend for PureScript. Transpile PureScript code to Nix.
Stars: ✭ 227 (+548.57%)
Mutual labels:  transpiler
phptojs
PHP-to-JavaScript transpiler
Stars: ✭ 29 (-17.14%)
Mutual labels:  transpiler
deqaf
Decaffeinate CSS stylesheets client-side
Stars: ✭ 30 (-14.29%)
Mutual labels:  transpiler
Craxe
Haxe to nim transpiler
Stars: ✭ 39 (+11.43%)
Mutual labels:  transpiler
claw-compiler
CLAW Compiler for Performance Portability
Stars: ✭ 38 (+8.57%)
Mutual labels:  transpiler
cotowali
A statically typed scripting language that transpile into POSIX sh
Stars: ✭ 551 (+1474.29%)
Mutual labels:  transpiler
kithon
Python to any languages transpiler
Stars: ✭ 33 (-5.71%)
Mutual labels:  transpiler
phpify
Compiles PHP modules for the browser with Uniter.
Stars: ✭ 18 (-48.57%)
Mutual labels:  transpiler
Gloa
Glóa - a statically typed language that compiles to Lua. *UNDER DEVELOPMENT*
Stars: ✭ 19 (-45.71%)
Mutual labels:  transpiler
schwalbe
"Transpiler" from the Schwalbe Programming Language to Swift
Stars: ✭ 28 (-20%)
Mutual labels:  transpiler
bfpile
Optimizing Brainfuck compiler, transpiler and interpreter
Stars: ✭ 19 (-45.71%)
Mutual labels:  transpiler
bashscript
TypeScript to bash transpiler. Because.
Stars: ✭ 37 (+5.71%)
Mutual labels:  transpiler
Sweet.apex
Next Generation of Apex Development
Stars: ✭ 43 (+22.86%)
Mutual labels:  transpiler
hexa
Compiler, standard library & backends
Stars: ✭ 74 (+111.43%)
Mutual labels:  transpiler
AutoWIG
Automatic Wrapper and Interface Generator
Stars: ✭ 107 (+205.71%)
Mutual labels:  transpiler

The Jule Programming Language

Website | Documentations | Contributing

Key Features

  • Simplicity and maintainability
  • Fast and scalable development
  • Performance-critical software
  • Memory safety
  • Immutability by default
  • As efficient and performance as C++
  • High C++ interoperability

Motivation

Jule is a statically typed compiled programming language designed for system development, building maintainable and reliable software. The purpose of Jule is to keep functionality high while maintaining a simple form and readability. It guarantees memory safety and does not contain undefined behavior. It also has a reference compiler with obsessions that encourage developers to build safe software.

Memory Safety and Management

The memory safety and the memory management is a major challenge in the C and C++ or similar programming languages. Jule has a reference-based memory management design to solve these issues. Jule guarantees memory safety and uses reference counting for memory management. An account-allocation is automatically released as soon as the reference count reaches zero. Please read the memory management documentations for more information about reference-counting approach of Jule.

Variables are immutable by default, and each variable is encouraged to be initialized at declaration. Safe Jule performs bounds checking and nil (aka null) checking. It is committed to no undefined behavior. Unsafe behaviors are encouraged to be done deliberately with unsafe scopes. Please read the Unsafe Jule documentations for more information about of Unsafe Jule.

C++ Interoperability

Jule is designed to be interoperable with C++. A C++ header file dependency can be added to the Jule code and its functions can be linked. It's pretty easy to write C++ code that is compatible with the Jule code compiled by the compiler. JuleC keeps all the C++ code it uses for Jule in its api directory. With the help of this API, it is very easy to write C++ codes that can be fully integrated into Jule.

    What is JuleC?

    JuleC is the name of the reference compiler for the Jule programming language. It is the original compiler of the Jule programming language. The features that JuleC has is a representation of the official and must-have features of the Jule programming language. This is sort of a standard for the Jule programming language and represents the minimum competency that unofficial compilers should have.

    Future Changes

    JuleC is in early development and currently iy can only be built from source. However, despite being in the early development stage, many algorithms (see the standard library) can be successfully implemented. It is planned to rewrite the compiler with Jule after reference compiler and standard library reaches sufficient maturity. JuleC has or is very close to many of the things Jule was intended to have, such as memory safety, properties, structures with methods and generics.

    A release is not expected until JuleC itself is developed with the Jule programming language. The syntax and language design of the Jule programming language has emerged and is not expected to undergo major changes. When the reference compiler is rewritten with Jule, it is thought that AST, Lexer and some packages will be included in the standard library. This will be a change that will cause the official compiler's project structure to be rebuilt. The reference compiler will probably use the standard library a lot. This will also allow developers to quickly develop tools for the language by leveraging Jule's standard library.

    There is an idea to include a package manager in JuleC as well, although it doesn't have it yet. Jule's modern understanding of language and convenience suggests that there should be a package manager that comes with the compiler. This package manager will provide management of non-standard library packages developed and published by the community. Jule's standard library only gets updates with compiler releases.

    The language and standard library will continue to evolve and change in the future but JuleC will guarantee stability since its first stable release. Some packages of the standard library (std::math, std::conv, std::unicode::utf8 or etc.) are almost complete and are not expected to undergo major changes.

    Documentations

    All documentation about Jule and JuleC is on the website.
    See Documentations

    To contribute website, documentations or something else, please use the website repository.

    Compiler and C++ Standard Support

    JuleC officially supports some C++ compilers. When you try to compile with these compilers, it promises that code can be compiled in the officially supported C++ standard. JuleC is committed to creating code according to the most ideal C++ standard it has adopted. Commits that the generated code can be compiled by C++ compilers that fully support this standard. Likewise, this commit is also available for the API of JuleC. Jule's ideal C++ standard is determined by the most ideal C++ standard, fully supported by officially supported C++ compilers.

    If you are getting a compiler error even though you are using the officially supported compiler and standard, please let us know with the Jule Issue Tracker. If you are trying to use a standard or compiler that is not officially supported, you can still contact us to find out about the problem. But keep in mind that since it's out of official support, it's likely that the maintainers won't take the effort to fix it.

    See Compiling Documentations for supported compilers and C++ standards.

    Platform Support

    Jule supports multiple platforms. It supports development on i386, amd64 architectures on Windows, Linux and Darwin platforms. JuleC undertakes that the code and standard library it produces will be compatible with all these platforms. All supported platforms by JuleC are documented in the Platform Support documentations.

    Building Project

    Website documentation for install from source.

    There are scripts prepared for compiling of JuleC.
    These scripts are written to run from the home directory.

    build scripts used for compile.
    brun scripts used for compile and execute if compiling is successful.

    Go to scripts directory

    JuleC aims to have a single main build file.
    JuleC is in development with the Go programming language.

    Building with Go Compiler

    Windows - PowerShell

    go build -o julec.exe -v cmd/julec/main.go
    

    Linux - Bash

    go build -o julec -v cmd/julec/main.go
    

    Run the above command in your terminal, in the Jule project directory.

    Project Build State

    Operating System State
    Windows
    Ubuntu
    Darwin

    Contributing

    Thanks for you want contributing to Jule!
    Every contribution, big or small, to Jule is greatly appreciated.

    The Jule 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.

    Code of Conduct

    See Code of Conduct

    License

    The JuleC and standard library is distributed under the terms of the BSD 3-Clause license.
    See License Details

    Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].