#programming-language #unit-testing #interpreted #safe #interop #mocking #valid

no-std bin+lib jinko

jinko is a safe, small and fast programming language with Rust interoperability

9 releases

0.3.0-jinx7 Aug 26, 2022
0.3.0-jinx4 Jan 16, 2022
0.3.0-jinx3 Dec 28, 2021
0.2.1 Dec 8, 2021
0.1.1 Jan 27, 2021

#210 in Programming languages

Download history 8/week @ 2024-02-25 143/week @ 2024-03-31

143 downloads per month

Custom license

370KB
9K SLoC

Contains (ELF lib, 18KB) tests/fixtures/clib/lib.so

jinko

jinko is a small and safe interpreted language written in Rust, with integrated unit tests, mocking and FFI.

codecov

While jinko can't do a whole lot right now, it's growing fast! You can look at the roadmap in order to get an idea of what is in and what isn't. Most of the syntax is implemented at this point, but might not yet produce valid or convincing results.

Feel free to open an issue in order to get more information about the language or its usage!

Community

Feel free to come and chat about jinko on matrix!

Programming in jinko

The standard library is currently very small! It implements basic utilites such as an optional type or a string library.

Pull requests aiming at enhancing the stdlib are very welcome!

Installation

Installing from the release page

  • Download a release tarball from the releases page
  • Extract it somewhere temporarily: tar xzf jinko-vx.x.x.tar.gz

You can even use /tmp/ or any directory that you'll remove later. Every important file will be copied to its proper location.

  • Run ./install.sh This will create a .jinko folder in your home directory, in which the binary and libraries will get installed.

Installing from source

  • Simply run ./install.sh This will compile the interpreter in release mode and install it. A .jinko folder will be created in your home directory, in which the binary and libraries will get installed.

Do not forget to add $HOME/.jinko/bins to your path! This will enable you to launch jinko from anywhere.

While jinko is not yet available through various distribution package managers, we'd love to have this!

Running

Launch the REPL using jinko or run a file using jinko <file>!

You can use various command line options. They are available when running jinko -h

Contributing

Feel free to submit any observations, bug reports or questions as an issue

Checkout CONTRIBUTING.mdif you'd like to write some code!

The code is organized according to the structure defined in ARCHITECTURE.md.

I am open to mentoring requests and would love to assist you in getting started on the language.

Testing

To test jinko, simply run cargo test && ./tests/func_tests.sh. Note that in order to run functional tests, you need to have ft installed

Requirements

  • If a function does not return void, its return value should always be used.
  • Variables are immutable by default.
  • Tests should be an integral part of the language
    • This includes unit testing
    • This includes mocking
  • The language must be simple

Check out jinko's syntax!

For more information about how jinko is made, check out its design.

Thanks to

License

Licensed under GNU General Public License, version 2

Dependencies

~3–14MB
~150K SLoC