flipjump


Nameflipjump JSON
Version 1.2.2 PyPI version JSON
download
home_pagehttps://esolangs.org/wiki/FlipJump
SummaryThe single instruction language - Flip a bit, then Jump
upload_time2023-12-12 11:33:51
maintainer
docs_urlNone
authorTom Herman
requires_python>=3.8.1,<4.0.0
licenseBSD-2-Clause-Simplified
keywords esolang oisc assembly
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # FlipJump

[![Tests](https://github.com/tomhea/flip-jump/actions/workflows/tests.yml/badge.svg)](https://github.com/tomhea/flip-jump/actions/workflows/tests.yml)
[![PyPI - Version](https://img.shields.io/pypi/v/flipjump)](https://pypi.org/project/flipjump/)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![Checked with mypy](http://www.mypy-lang.org/static/mypy_badge.svg)](http://mypy-lang.org/)  
[![Website](https://img.shields.io/website?down_color=red&down_message=down&up_message=up&url=https%3A%2F%2Fesolangs.org%2Fwiki%2FFlipJump)](https://esolangs.org/wiki/FlipJump)
[![GitHub Discussions](https://img.shields.io/github/discussions/tomhea/flip-jump)](https://github.com/tomhea/flip-jump/discussions)
[![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/tomhea/flip-jump)](https://mango-dune-07a8b7110.1.azurestaticapps.net/?repo=Tomhea%2Fflip-jump)
[![GitHub](https://img.shields.io/github/license/tomhea/flip-jump)](LICENSE)

FlipJump is the simplest programing language.  
Yet, it can do **any modern computation**.

It's an Esoteric language ([FlipJump esolangs page](https://esolangs.org/wiki/FlipJump)), with just 1 operation `a;b`:  
- `not *a; jump b`

Which means - **Flip** a bit, then **Jump**.

The operation takes 2 memory addresses - it flips (inverts) the bit the first address points to, and jumps to (continue execution from) the second address. The next opcode is the two memory-addresses found right where you jumped to. You flip and jump again, and so on...  


This project includes a **Macro Assembler**, an **Interpreter**, and a **Thoroughly Tested Standard Library** for the FlipJump language.  
Additionally, it provides a [**Python Library**](https://pypi.org/project/flipjump/) that makes it easy to work with those components.

This prime numbers program was coded only with FlipJump ([source](programs/prime_sieve.fj)):
![Printing prime numbers using only FlipJump](resources/prime_sieve.gif)

## Hello, World!

<details>
  <summary>A simple hello-world flipjump program, not using the standard library:</summary>
(jump to the source code)

```c
// define macros that will be used later

// this macro exports the "IO" label to be a global label
def startup @ code_start > IO  {
    ;code_start
  IO:
    ;0              // the second op is reserved for Input/Output.
  code_start:
}

// this macro gets one parameter "bit", and uses the global label "IO".
def output_bit bit < IO {
    IO + bit;       // flipping IO+0 outputs 0; flipping IO+1 outputs 1.
}
def output_char ascii {
    // the next line will be unwinded into 8 output_bit macro-uses, each with a different parameter
    rep(8, i) output_bit ((ascii>>i)&1)
}

def end_loop @ loop_label {
    loop_label:
    ;loop_label     // a flipjump program finishes on a self loop
}


// The first lines of actual code:

    startup
    
    output_char 'H'
    output_char 'e'
    output_char 'l'
    output_char 'l'
    output_char 'o'
    output_char ','
    output_char ' '
    
    output_char 'W'
    output_char 'o'
    output_char 'r'
    output_char 'l'
    output_char 'd'
    output_char '!'
    
    end_loop

```

The source code can be found here: [hello_no-stl.fj](programs/print_tests/hello_no-stl.fj).

The FlipJump assembly supports a ```"Hello, World!"``` syntax for initializing a variable with a string value.
Look at the [hello_world.fj](programs/print_tests/hello_world.fj) program for more info.

Note that all of these macros are already implemented in the standard library (all in [runlib.fj](flipjump/stl/runlib.fj)):
- startup
- end_loop     (loop)
- output_char
- output       (for printing string consts, e.g. output "Hello, World!")
</details>


# How to install?

```shell
pip install flipjump
```

You can also install it with its extras:
- flipjump[**stats**]: support for viewing macro usage in an interactive graph.
- flipjump[**tests**]: all the testing libraries needed.
```shell
pip install flipjump[stats,tests]
```


Pycharm Extensions:
- Add <span style="color:orange">syntax highlighting</span> support for *.fj files - just import the [PycharmHighlighting.zip](ide-extensions/pycharm/PycharmHighlighting.zip) settings.
- Add a ctrl+shift+click (find fj-macro definition) functionality by using the [AutoHotKey script](ide-extensions/pycharm/fj-pycharm-def-finder.ahk).

# How to run?

Use the `fj` utility:
```shell
fj hello_world.fj
```

![Hello World in FlipJump](resources/hello.gif)

  - The --no-stl flag tells the assembler not to include the standard library. for example: `fj programs/print_tests/hello_no-stl.fj --no-stl`.
  - the `-w [WIDTH]` flag allows compiling the .fj files to a WIDTH-bits memory width. WIDTH is 64 by default.
  - You can use the `-o` flag to save the assembled file for later use too.
  - you can find all the different flags with `fj -h`.

You can also **[Test the project](tests/README.md#run-the-tests)** with the project's tests, and with your own tests.

You can also assemble and run separately:

```bash
fj --asm hello.fj -o hello_world.fjm
fj --run hello_world.fjm
```

- The first line will assemble your code.
- The second line will run your code.

You can also use the faster [cpp-based interpreter](https://github.com/tomhea/fji-cpp):

```bash
>>> fji hello.fjm -s
Hello, World!
```

### How to Debug?
Programs won't work on their first run. They just can't. That's why we support the next debugging flags.

- No debugging flags at all: Shows the last 10 executed addresses of tests that failed their run (i.e. finished not by looping). 
- `-d [PATH]`: Save debug information: Adds [very extensive label names](tests/README.md#example-label-name-youll-get-with-using---debuginfo-len), Which are like a "**macro-stack**" for each of the last executed address. (can be used with `--debug-ops-list LEN`)
- `--debug-ops-list LEN`: Shows the last _LEN_ executed addresses (instead of 10). (can be used with `-d`)
- `-b NAME [NAME ...]`: Places breakpoints at every specified label NAMEs (note that label names are long: [more information about labels](flipjump/README.md#generated-label-names)). (requires `-b`)
- `-B NAME [NAME ...]`: Places breakpoints at every label that contains one of the given NAMEs. (requires `-b`)

The debugger can single-step, read-memory, read flipjump variables (bit/hex/byte, and their vectors), continue, or skip forward a fixed number of opcodes.

# Get Started with FlipJump
- Install flipjump: `pip install flipjump`
- Write your flipjump program (use the [stl - standard library](flipjump/stl/README.md) macros).
  - For example: [print_dec.fj](programs/print_tests/print_dec.fj).
- assemble+run your program: `fj print_dec.fj`

### Example usage of the flipjump python library
```python
from pathlib import Path
from flipjump import assemble_and_run  # assemble, run_test_output, ...

fj_file_paths = [Path('path/to/main.fj'), Path('path/to/consts.fj')]
termination_statistics = assemble_and_run(fj_file_paths)
```

_You can also use the `flipjump.assemble_run_according_to_cmd_line_args(cmd_line_args=[...])`._


# Project Structure

**[flipjump](flipjump/README.md)** (assembler + interpreter source files):
  - [flipjump_cli.py](flipjump/flipjump_cli.py) - Main CLI script fot the FlipJump Assembler & Interpreter.
  - [fjm/](flipjump/fjm) - Tools for reading/writing .fjm (flip-jump-memory) files.
  - [interpreter/fjm_run.py](flipjump/interpretter/fjm_run.py) - Interpreter + debugger for assembled fj files.
  - [assembler/](flipjump/assembler) - Components for assembling FlipJump code.
    - [fj_parser.py](flipjump/assembler/fj_parser.py) - Pythonic lex/yacc parser.
    - [preprocessor.py](flipjump/assembler/preprocessor.py) - Unwinds all macros and reps (repetitions).
    - [assembler.py](flipjump/assembler/assembler.py) - Assembles macro-less fj files.
  - [more...](flipjump/README.md) - Additional project files and documentation.

**[flipjump/stl](flipjump/stl/README.md)** (standard library files - macros. The [stl readme](flipjump/stl/README.md#the-files) contains the list of all macros):
  - runlib.fj - Constants and initialization macros. Output constant strings.
  - [bit/](flipjump/stl/README.md#bit) - Directory of stl files. Macros for io/manipulating binary variables and vectors (i.e. numbers): math, logic, conditional jumps, pointers, casting, IO, ...
  - [hex/](flipjump/stl/README.md#hex) - Directory of stl files. Macros for io/manipulating hexadecimal variables and vectors (i.e. numbers): math, logic, conditional jumps, pointers, casting, IO, ...
  - mathlib.fj - Advanced math macros (mul/div).
  - casting.fj - Macros for casting between bit/hex.
  - ptrlib.fj - Macros for working with pointers, stacks, and functions.
  - conf.json - The list of the standard library files.

**[programs](programs)** (flipjump programs, used by the tests), for example:
  - [hello_world.fj](programs/print_tests/hello_world.fj) - Prints "hello world :)"
  - [calc.fj](programs/calc.fj) - A command-line calculator for 2 hex/dec numbers: ```a [+-*/%] b```.
  - [func_tests/](programs/func_tests) - Programs for testing function calls and stack operations.
  - [hexlib_tests/](programs/hexlib_tests) - Tests for all the hex macros, except the hex.pointers.
  - [quine16.fj](programs/quine16.fj) - A 16-bits quine by [lestrozi](https://github.com/lestrozi); when assembled with `-w16 -v0` - prints itself.
  - [pair_ns.fj](programs/concept_checks/pair_ns.fj) - Simulates the concept of a Class, by using a namespace.
  - [print_dec.fj](programs/print_tests/print_dec.fj) - Prints binary variables as decimals.
  - [multi_comp/](programs/multi_comp) - Simulates a big project (compilation of multiple files).

**[tests](tests/README.md)** (tests compiling+running the programs with the stl), for example:
  - compiled/ - The designated directory for the assembled tests files.
  - inout/ - Contains the .in and .out files for each test.
  - conftest.py - The pytest configuration file. The tests are being generated here.
  - test_fj.py - The base test functions for compilation and running ([how to run](tests/README.md#run-the-tests)).
  - conf.json - The tests groups+order lists.
  - [tests_tables/](tests/tests_tables)
    - test_compile_*.csv - Arguments for the compile tests ([compile test arguments format](tests/README.md#compile-csvs-format)).
    - test_run_*.csv - Arguments for the run tests ([run test arguments format](tests/README.md#run-csvs-format)).
    - xfail_*.csv - [xfail](https://docs.pytest.org/en/7.1.x/how-to/skipping.html#xfail-mark-test-functions-as-expected-to-fail) these tests.


# Read More - Extra Documentation

Take a look at the other READMEs:
* Read more about the [assembler/interpreter source files](flipjump/README.md).    
* Read more about [how to run the tests](tests/README.md).
* Read more about the [standard library](flipjump/stl/README.md).

A very extensive explanation can be found on the [GitHub wiki page](https://github.com/tomhea/flip-jump/wiki/Learn-FlipJump).

More detailed explanation and the **specifications of the FlipJump assembly** can be found on the [FlipJump esolangs page](https://esolangs.org/wiki/FlipJump).

If you are new to FlipJump and you want to learn how modern computation can be executed using FlipJump, and you want to jump onto your first flipjump code - Start by reading the [bit.xor](flipjump/stl/bit/logics.fj) and [bit.if](flipjump/stl/bit/cond_jumps.fj) macros. That's where the FlipJump magic begins.  
If you want to understand how the deep optimized hex macros work, understand how the next macros are implemented: [hex.exact_xor](flipjump/stl/hex/logics.fj), [hex.output](flipjump/stl/hex/output.fj), [hex.inc1](flipjump/stl/hex/math_basic.fj), and [hex.add](flipjump/stl/hex/math.fj) (understand the concept of the [lookup tables](https://esolangs.org/wiki/FlipJump#Lookup_Tables).

You can also write and run programs for yourself! It is just [that](README.md#how-to-run) easy :)

## Turing Complete?
As the language expects a finite memory, like most of today's programming languages, it's technically not Turing complete. 
Yet, It's very capable.

I wrote a [Brainfuck to Flipjump Compiler (bf2fj)](https://github.com/tomhea/bf2fj) to emphasize just that. 
Brainfuck is indeed Turing complete, and the compiler proves that flipjump can run any program that brainfuck runs (besides those that require an unbounded memory).

# Contribute

If you want to contribute to this project, read the [CONTRIBUTING.md](CONTRIBUTING.md) file, and take a look at the [I-Want-To-Contribute Thread](https://github.com/tomhea/flip-jump/discussions/148).

Actually, just writing your own flipjump programs and sharing them with the world is a great contribution to the community :)  
Take a look at what the [standard library](flipjump/stl/README.md) offers, and see some [example programs](programs) to get you inspired!

            

Raw data

            {
    "_id": null,
    "home_page": "https://esolangs.org/wiki/FlipJump",
    "name": "flipjump",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8.1,<4.0.0",
    "maintainer_email": "",
    "keywords": "esolang,oisc,assembly",
    "author": "Tom Herman",
    "author_email": "flipjumpproject@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/78/e6/c030c646fd6fc7691744d3afc9ab5f784ad0bb8f89f678cecb9f5554026e/flipjump-1.2.2.tar.gz",
    "platform": null,
    "description": "# FlipJump\n\n[![Tests](https://github.com/tomhea/flip-jump/actions/workflows/tests.yml/badge.svg)](https://github.com/tomhea/flip-jump/actions/workflows/tests.yml)\n[![PyPI - Version](https://img.shields.io/pypi/v/flipjump)](https://pypi.org/project/flipjump/)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![Checked with mypy](http://www.mypy-lang.org/static/mypy_badge.svg)](http://mypy-lang.org/)  \n[![Website](https://img.shields.io/website?down_color=red&down_message=down&up_message=up&url=https%3A%2F%2Fesolangs.org%2Fwiki%2FFlipJump)](https://esolangs.org/wiki/FlipJump)\n[![GitHub Discussions](https://img.shields.io/github/discussions/tomhea/flip-jump)](https://github.com/tomhea/flip-jump/discussions)\n[![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/tomhea/flip-jump)](https://mango-dune-07a8b7110.1.azurestaticapps.net/?repo=Tomhea%2Fflip-jump)\n[![GitHub](https://img.shields.io/github/license/tomhea/flip-jump)](LICENSE)\n\nFlipJump is the simplest programing language.  \nYet, it can do **any modern computation**.\n\nIt's an Esoteric language ([FlipJump esolangs page](https://esolangs.org/wiki/FlipJump)), with just 1 operation `a;b`:  \n- `not *a; jump b`\n\nWhich means - **Flip** a bit, then **Jump**.\n\nThe operation takes 2 memory addresses - it flips (inverts) the bit the first address points to, and jumps to (continue execution from) the second address. The next opcode is the two memory-addresses found right where you jumped to. You flip and jump again, and so on...  \n\n\nThis project includes a **Macro Assembler**, an **Interpreter**, and a **Thoroughly Tested Standard Library** for the FlipJump language.  \nAdditionally, it provides a [**Python Library**](https://pypi.org/project/flipjump/) that makes it easy to work with those components.\n\nThis prime numbers program was coded only with FlipJump ([source](programs/prime_sieve.fj)):\n![Printing prime numbers using only FlipJump](resources/prime_sieve.gif)\n\n## Hello, World!\n\n<details>\n  <summary>A simple hello-world flipjump program, not using the standard library:</summary>\n(jump to the source code)\n\n```c\n// define macros that will be used later\n\n// this macro exports the \"IO\" label to be a global label\ndef startup @ code_start > IO  {\n    ;code_start\n  IO:\n    ;0              // the second op is reserved for Input/Output.\n  code_start:\n}\n\n// this macro gets one parameter \"bit\", and uses the global label \"IO\".\ndef output_bit bit < IO {\n    IO + bit;       // flipping IO+0 outputs 0; flipping IO+1 outputs 1.\n}\ndef output_char ascii {\n    // the next line will be unwinded into 8 output_bit macro-uses, each with a different parameter\n    rep(8, i) output_bit ((ascii>>i)&1)\n}\n\ndef end_loop @ loop_label {\n    loop_label:\n    ;loop_label     // a flipjump program finishes on a self loop\n}\n\n\n// The first lines of actual code:\n\n    startup\n    \n    output_char 'H'\n    output_char 'e'\n    output_char 'l'\n    output_char 'l'\n    output_char 'o'\n    output_char ','\n    output_char ' '\n    \n    output_char 'W'\n    output_char 'o'\n    output_char 'r'\n    output_char 'l'\n    output_char 'd'\n    output_char '!'\n    \n    end_loop\n\n```\n\nThe source code can be found here: [hello_no-stl.fj](programs/print_tests/hello_no-stl.fj).\n\nThe FlipJump assembly supports a ```\"Hello, World!\"``` syntax for initializing a variable with a string value.\nLook at the [hello_world.fj](programs/print_tests/hello_world.fj) program for more info.\n\nNote that all of these macros are already implemented in the standard library (all in [runlib.fj](flipjump/stl/runlib.fj)):\n- startup\n- end_loop     (loop)\n- output_char\n- output       (for printing string consts, e.g. output \"Hello, World!\")\n</details>\n\n\n# How to install?\n\n```shell\npip install flipjump\n```\n\nYou can also install it with its extras:\n- flipjump[**stats**]: support for viewing macro usage in an interactive graph.\n- flipjump[**tests**]: all the testing libraries needed.\n```shell\npip install flipjump[stats,tests]\n```\n\n\nPycharm Extensions:\n- Add <span style=\"color:orange\">syntax highlighting</span> support for *.fj files - just import the [PycharmHighlighting.zip](ide-extensions/pycharm/PycharmHighlighting.zip) settings.\n- Add a ctrl+shift+click (find fj-macro definition) functionality by using the [AutoHotKey script](ide-extensions/pycharm/fj-pycharm-def-finder.ahk).\n\n# How to run?\n\nUse the `fj` utility:\n```shell\nfj hello_world.fj\n```\n\n![Hello World in FlipJump](resources/hello.gif)\n\n  - The --no-stl flag tells the assembler not to include the standard library. for example: `fj programs/print_tests/hello_no-stl.fj --no-stl`.\n  - the `-w [WIDTH]` flag allows compiling the .fj files to a WIDTH-bits memory width. WIDTH is 64 by default.\n  - You can use the `-o` flag to save the assembled file for later use too.\n  - you can find all the different flags with `fj -h`.\n\nYou can also **[Test the project](tests/README.md#run-the-tests)** with the project's tests, and with your own tests.\n\nYou can also assemble and run separately:\n\n```bash\nfj --asm hello.fj -o hello_world.fjm\nfj --run hello_world.fjm\n```\n\n- The first line will assemble your code.\n- The second line will run your code.\n\nYou can also use the faster [cpp-based interpreter](https://github.com/tomhea/fji-cpp):\n\n```bash\n>>> fji hello.fjm -s\nHello, World!\n```\n\n### How to Debug?\nPrograms won't work on their first run. They just can't. That's why we support the next debugging flags.\n\n- No debugging flags at all: Shows the last 10 executed addresses of tests that failed their run (i.e. finished not by looping). \n- `-d [PATH]`: Save debug information: Adds [very extensive label names](tests/README.md#example-label-name-youll-get-with-using---debuginfo-len), Which are like a \"**macro-stack**\" for each of the last executed address. (can be used with `--debug-ops-list LEN`)\n- `--debug-ops-list LEN`: Shows the last _LEN_ executed addresses (instead of 10). (can be used with `-d`)\n- `-b NAME [NAME ...]`: Places breakpoints at every specified label NAMEs (note that label names are long: [more information about labels](flipjump/README.md#generated-label-names)). (requires `-b`)\n- `-B NAME [NAME ...]`: Places breakpoints at every label that contains one of the given NAMEs. (requires `-b`)\n\nThe debugger can single-step, read-memory, read flipjump variables (bit/hex/byte, and their vectors), continue, or skip forward a fixed number of opcodes.\n\n# Get Started with FlipJump\n- Install flipjump: `pip install flipjump`\n- Write your flipjump program (use the [stl - standard library](flipjump/stl/README.md) macros).\n  - For example: [print_dec.fj](programs/print_tests/print_dec.fj).\n- assemble+run your program: `fj print_dec.fj`\n\n### Example usage of the flipjump python library\n```python\nfrom pathlib import Path\nfrom flipjump import assemble_and_run  # assemble, run_test_output, ...\n\nfj_file_paths = [Path('path/to/main.fj'), Path('path/to/consts.fj')]\ntermination_statistics = assemble_and_run(fj_file_paths)\n```\n\n_You can also use the `flipjump.assemble_run_according_to_cmd_line_args(cmd_line_args=[...])`._\n\n\n# Project Structure\n\n**[flipjump](flipjump/README.md)** (assembler + interpreter source files):\n  - [flipjump_cli.py](flipjump/flipjump_cli.py) - Main CLI script fot the FlipJump Assembler & Interpreter.\n  - [fjm/](flipjump/fjm) - Tools for reading/writing .fjm (flip-jump-memory) files.\n  - [interpreter/fjm_run.py](flipjump/interpretter/fjm_run.py) - Interpreter + debugger for assembled fj files.\n  - [assembler/](flipjump/assembler) - Components for assembling FlipJump code.\n    - [fj_parser.py](flipjump/assembler/fj_parser.py) - Pythonic lex/yacc parser.\n    - [preprocessor.py](flipjump/assembler/preprocessor.py) - Unwinds all macros and reps (repetitions).\n    - [assembler.py](flipjump/assembler/assembler.py) - Assembles macro-less fj files.\n  - [more...](flipjump/README.md) - Additional project files and documentation.\n\n**[flipjump/stl](flipjump/stl/README.md)** (standard library files - macros. The [stl readme](flipjump/stl/README.md#the-files) contains the list of all macros):\n  - runlib.fj - Constants and initialization macros. Output constant strings.\n  - [bit/](flipjump/stl/README.md#bit) - Directory of stl files. Macros for io/manipulating binary variables and vectors (i.e. numbers): math, logic, conditional jumps, pointers, casting, IO, ...\n  - [hex/](flipjump/stl/README.md#hex) - Directory of stl files. Macros for io/manipulating hexadecimal variables and vectors (i.e. numbers): math, logic, conditional jumps, pointers, casting, IO, ...\n  - mathlib.fj - Advanced math macros (mul/div).\n  - casting.fj - Macros for casting between bit/hex.\n  - ptrlib.fj - Macros for working with pointers, stacks, and functions.\n  - conf.json - The list of the standard library files.\n\n**[programs](programs)** (flipjump programs, used by the tests), for example:\n  - [hello_world.fj](programs/print_tests/hello_world.fj) - Prints \"hello world :)\"\n  - [calc.fj](programs/calc.fj) - A command-line calculator for 2 hex/dec numbers: ```a [+-*/%] b```.\n  - [func_tests/](programs/func_tests) - Programs for testing function calls and stack operations.\n  - [hexlib_tests/](programs/hexlib_tests) - Tests for all the hex macros, except the hex.pointers.\n  - [quine16.fj](programs/quine16.fj) - A 16-bits quine by [lestrozi](https://github.com/lestrozi); when assembled with `-w16 -v0` - prints itself.\n  - [pair_ns.fj](programs/concept_checks/pair_ns.fj) - Simulates the concept of a Class, by using a namespace.\n  - [print_dec.fj](programs/print_tests/print_dec.fj) - Prints binary variables as decimals.\n  - [multi_comp/](programs/multi_comp) - Simulates a big project (compilation of multiple files).\n\n**[tests](tests/README.md)** (tests compiling+running the programs with the stl), for example:\n  - compiled/ - The designated directory for the assembled tests files.\n  - inout/ - Contains the .in and .out files for each test.\n  - conftest.py - The pytest configuration file. The tests are being generated here.\n  - test_fj.py - The base test functions for compilation and running ([how to run](tests/README.md#run-the-tests)).\n  - conf.json - The tests groups+order lists.\n  - [tests_tables/](tests/tests_tables)\n    - test_compile_*.csv - Arguments for the compile tests ([compile test arguments format](tests/README.md#compile-csvs-format)).\n    - test_run_*.csv - Arguments for the run tests ([run test arguments format](tests/README.md#run-csvs-format)).\n    - xfail_*.csv - [xfail](https://docs.pytest.org/en/7.1.x/how-to/skipping.html#xfail-mark-test-functions-as-expected-to-fail) these tests.\n\n\n# Read More - Extra Documentation\n\nTake a look at the other READMEs:\n* Read more about the [assembler/interpreter source files](flipjump/README.md).    \n* Read more about [how to run the tests](tests/README.md).\n* Read more about the [standard library](flipjump/stl/README.md).\n\nA very extensive explanation can be found on the [GitHub wiki page](https://github.com/tomhea/flip-jump/wiki/Learn-FlipJump).\n\nMore detailed explanation and the **specifications of the FlipJump assembly** can be found on the [FlipJump esolangs page](https://esolangs.org/wiki/FlipJump).\n\nIf you are new to FlipJump and you want to learn how modern computation can be executed using FlipJump, and you want to jump onto your first flipjump code - Start by reading the [bit.xor](flipjump/stl/bit/logics.fj) and [bit.if](flipjump/stl/bit/cond_jumps.fj) macros. That's where the FlipJump magic begins.  \nIf you want to understand how the deep optimized hex macros work, understand how the next macros are implemented: [hex.exact_xor](flipjump/stl/hex/logics.fj), [hex.output](flipjump/stl/hex/output.fj), [hex.inc1](flipjump/stl/hex/math_basic.fj), and [hex.add](flipjump/stl/hex/math.fj) (understand the concept of the [lookup tables](https://esolangs.org/wiki/FlipJump#Lookup_Tables).\n\nYou can also write and run programs for yourself! It is just [that](README.md#how-to-run) easy :)\n\n## Turing Complete?\nAs the language expects a finite memory, like most of today's programming languages, it's technically not Turing complete. \nYet, It's very capable.\n\nI wrote a [Brainfuck to Flipjump Compiler (bf2fj)](https://github.com/tomhea/bf2fj) to emphasize just that. \nBrainfuck is indeed Turing complete, and the compiler proves that flipjump can run any program that brainfuck runs (besides those that require an unbounded memory).\n\n# Contribute\n\nIf you want to contribute to this project, read the [CONTRIBUTING.md](CONTRIBUTING.md) file, and take a look at the [I-Want-To-Contribute Thread](https://github.com/tomhea/flip-jump/discussions/148).\n\nActually, just writing your own flipjump programs and sharing them with the world is a great contribution to the community :)  \nTake a look at what the [standard library](flipjump/stl/README.md) offers, and see some [example programs](programs) to get you inspired!\n",
    "bugtrack_url": null,
    "license": "BSD-2-Clause-Simplified",
    "summary": "The single instruction language - Flip a bit, then Jump",
    "version": "1.2.2",
    "project_urls": {
        "Documentation": "https://github.com/tomhea/flip-jump/wiki",
        "Homepage": "https://esolangs.org/wiki/FlipJump",
        "Repository": "https://github.com/tomhea/flip-jump"
    },
    "split_keywords": [
        "esolang",
        "oisc",
        "assembly"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5df74ab41f8f171d9d238c63158929258b8f70a7ac5e8737857fbe4755ae757e",
                "md5": "cf180e3acb2f6bd693b30f2c3a860f43",
                "sha256": "9a7fb52209535964b94e27b12d260da632aa1412fbdefc0a54c67e027919477b"
            },
            "downloads": -1,
            "filename": "flipjump-1.2.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "cf180e3acb2f6bd693b30f2c3a860f43",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8.1,<4.0.0",
            "size": 101000,
            "upload_time": "2023-12-12T11:33:49",
            "upload_time_iso_8601": "2023-12-12T11:33:49.241805Z",
            "url": "https://files.pythonhosted.org/packages/5d/f7/4ab41f8f171d9d238c63158929258b8f70a7ac5e8737857fbe4755ae757e/flipjump-1.2.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "78e6c030c646fd6fc7691744d3afc9ab5f784ad0bb8f89f678cecb9f5554026e",
                "md5": "271ea31a621626772abbf5983734da22",
                "sha256": "f080bdf7468c94131f6859483a19da6f1e9b30d10671f8cf1e629443fc1763f2"
            },
            "downloads": -1,
            "filename": "flipjump-1.2.2.tar.gz",
            "has_sig": false,
            "md5_digest": "271ea31a621626772abbf5983734da22",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8.1,<4.0.0",
            "size": 83005,
            "upload_time": "2023-12-12T11:33:51",
            "upload_time_iso_8601": "2023-12-12T11:33:51.217137Z",
            "url": "https://files.pythonhosted.org/packages/78/e6/c030c646fd6fc7691744d3afc9ab5f784ad0bb8f89f678cecb9f5554026e/flipjump-1.2.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-12-12 11:33:51",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "tomhea",
    "github_project": "flip-jump",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "tox": true,
    "lcname": "flipjump"
}
        
Elapsed time: 0.18135s