# `v0.1.0` - MVP

The MVP of the zink project, provides various tools for developing
EVM contracts with `rust` and `WASM`.

## Binaries

| name    | description                                                 |
| ------- | ----------------------------------------------------------- |
| `elko`  | Zink's package manager, can create and build zink project.  |
| `zinkc` | The zink compiler, can compile simple wasm to EVM bytecode. |

## Components

| name      | description                                               |
| --------- | --------------------------------------------------------- |
| `zinkgen` | Zink code generator                                       |
| `zinkc`   | Zink compiler                                             |
| `zink`    | Rust library for developing program with zink             |
| `zint`    | Basic test utils including evm wrapper for testing usages |
| `zinkup`  | Zink toolchain installer                                  |

## Functionality

We provide basic functionalities in `v0.1.0` to verify thoughts, the final target
of it is example `fibonaaci`, which means, everything used in the `fibonacci` example
now works!

For supporting nearly everything, plz keep tuned for `v0.3.0`.

### Arithmetic

`add`, `sub`, `mul` are available now, plus all comparison operand like `gt`, `lt`,
`ge`, `le`, `bitwise` also have implementations **operators like `shr` require the
order of the stack will have bugs**.

### Locals

The compilation of locals currently works without any hardcode, ideally, we don't
need to refactor it in the future!

### Calls

Same as locals, works without any hardcode, but some logic related to the jump table
need to be refactored after introducing `selector`.

### Control Flow

`if`, `else`, `block`, `loop`, `br_if` now works without any hardcode, need to add
`br_table`, `select`... to align wasm MVP in the future releases.