Programs

Here, I share all my programs.

When downloading something from my website, it might be wise to check whether the file actually came from me by checking the sha256 hash. Show hashes to check integrity.

Pyfwalo / compiler

This is the compiler for my own programming language, pyfwalo. It works pretty much like any other compiler: you run the program on the command prompt with source files as arguments and the program builds an executable. Running the compiler without any sources as input will give a list of available options.

By default, the compiler internally generates a C source file which it then compiles further with gcc. Alternatively, you can use clang with the -clang option or generate my custom bytecode with -v. More information about my bytecode can be found here. Unfortunately, the bytecode can only be run with a virtual machine that knows about the specific foreign procedures that are used in the output program. Below I do provide a simple virtual machine capable of running simple console applications. In the future, I might create a more complete virtual machine capable of running programs using my system library. Of course, using the C backend will generate the most efficient executable.

Because my compiler compiles through C, you will probably want to have either gcc or clang installed on your computer. On Linux you probably already have gcc, or if not you can install it through the package manager. On Windows, you can install either MinGW or you can install TDM-GCC. Also, I recommend the 64-bit version if your system is 64-bit, which it most likely is.

Downloads for pyfwalo / compiler

Downloads for virtual machine

System library

In order to build games or other complex applications, you will want to use a library to interface with the operating system. This library I created exposes a fairly direct interface to SDL2 and OpenGL 3.3. It also contains code for networking and supports reading/writing various image and sound formats, using the stb_image, stb_vorbis, drwav and drflac single header libraries, made by Sean Barrett (stb* libraries) and by David Reid (dr* libraries).

To use the library, include the system.pyf in your pyfwalo project and link with -l system. On linux, libsdl2 needs to be installed on your computer (it probably already is) and libsystem.so can be placed in the same folder as the executable. On windows you can place both SDL2.dll and system.dll in the same folder as the executable.

In case you want to compile this library from source, you will need to install the SDL2 development library. You can download this here or install from the package manager on linux. On windows, copy the include folder and the import library (libSDL2.dll.a) from SDL2 to the source of system.

Downloads for system library

Additional downloads for syntax highlighting in notepad programs

For xed or mousepad: place pyfwalo.lang inside ~/.local/share/gtksourceview-3.0/language-specs/

Ripjoku / code editor

This is a blend between a simple text editor and an IDE, with semantic highlighting and autocomplete for pyfwalo, C, C++ and GLSL.

code editor

Downloads for ripjoku / code editor

Rejopsa / scene editor

This is a general purpose scene editor, useful for creating levels and user interfaces for games.

scene editor screenshot 1 scene editor screenshot 2

Downloads for rejopsa / scene editor

Ksilypa / tetraspace visualizer

This program visualizes any shape in four spatial dimensions, using projection. For more information on higher dimensions, see my section on higher dimensions. The following images were created with this program:

tesseract 12,12-duoprism 24-cell 600-cell 120-cell cubical pyramid house 4,5-duoprism

Controls

Press V/B to select attributes to change:
  1. basic orientation
  2. rotation
  3. rotation speed
  4. scale
  5. render mode
  6. blend mode
  7. cull mode
  8. projection
  9. anaglyph
To change them, use M/N for discrete values and use I/K/J/L/U/O for continuous values.
For rotation and rotation speed, hold shift to rotate in a different set of planes.
R resets the current attribute to its default value.
C toggles free camera, which can be controlled using W/A/S/D/Q/E while holding the right mouse button.
T toggles automatic rotation.
G takes a screenshot and saves it as output.png
H takes many screenshots and saves the result as video/outputXXXX.png, with X a number from 0 to video_max_frames

Downloads for ksilypa / tetraspace visualizer

Pemzixa / random word generator

This is a command line tool to generate random words, following word structure of my conlang as described here.
These are the options:

By default, the program generates 64 words of 1-5 syllables, using the current time as seed.

Example output (run with -w 16 -s 2 3)

generating 16 words
seed 1594395513
----------
igebet
hesux
ofrega
vokaf
esuqok
dalaj
hilvleda
jenoji
akli
aroks
revesxom
blokni
vojfok
hizehip
xemi
depmorzlo

Downloads for pemzixa / random word generator