Skip to content

Unofficial Julia interface of monolish(That is Goma Goma Kyu KKyu)

License

Notifications You must be signed in to change notification settings

AtelierArith/gomalish

Repository files navigation

gomalish(Gomalish.jl)

Version Table

gomalish monolish julia
0.2.0 0.15.0 1.6.3
0.2.1 0.15.1 1.6.5
0.2.2 0.15.2 1.6.5
0.3.0 0.15.2 1.7.1
0.3.1 0.15.3 1.7.1
0.4.0 0.16.1 1.7.3
0.4.1 0.16.2 1.7.3
0.4.2 0.16.3 1.7.3
0.5.0 0.16.3 1.8.0

Remark:

This project is under construction. You will find that the development of this project requires at least a high level of C++ reading, writing, and design skills than I have. If you are an expert C++ programmer, you will notice that there is a lot of room for improvement in this project e.g.:

  • How to write/design a more sophisticated and professional C++ codes including CMakefile that help to wrap monolish API.
    • Should I create Julia module for each monolish::<blah-blah-namespace>?. Technically we could do ofc, but does it privide a good interfeace for Julian? Idk.
  • Type conversion between Julia and C++, design.
  • Format C++ code

Usage

TL;DR (今北産業)

$ git clone https://github.com/AtelierArith/gomalish && cd gomalish
$ make # to build Docker image
$ docker-compose run --rm julia julia -e 'using Pkg; Pkg.build(); Pkg.test()'

Developer workflow basics

  • Let's clone this repository via:
$ git clone https://github.com/AtelierArith/gomalish
$ cd gomalish
  • Execute make command to build an Docker image from Dockerfile we've prepared.
$ make
  • Open a Docker container via:
$ docker-compose run --rm julia bash
root@gomagoma99:/work#

In the following, we will assume we are living in the docker container with prompt root@gomagoma99:/work#. It is a good idea to view our code on VSCode with Visual Studio Code Remote - Containers.

  • To build a shared library libgomalish.so, cd deps directory and execute make.
root@gomagoma99:/work# cd deps
root@gomagoma99:/work/deps# make

You'll find work/deps/build/lib/libgomalish.so. Our repository gomalish provides C++ codes that wrap monolish API. See deps/monolish_<xxxx>.cpp, deps/monoish_module.hpp, deps/CMakeFiles to learn more. If you modified these C++ codes, please re-run make -C /work/deps again.

  • Let's call monolish API from Julia! Lots of examples are stored in /work/tests/runtests.jl. The following command will run the tests for our package Gomalish.jl.
root@gomagoma99:/work# julia -e 'using Pkg; Pkg.test()'

However, it is recommended to run tests on Pkg mode:

root@gomagoma99:/work# julia
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.7.3 (2022-05-06)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

julia> # press ]
julia> ]
(Gomalish) pkg>
(Gomalish) pkg> # This is the Pkg REPL. Let's enter `test` to run tests
(Gomalish) pkg> test
# some staff happens ...

Congrats! You have a complete understanding of Gomalish.jl.

What's next?

To move on to the next step, we recommend to take a look at these materials: