ligo/gitlab-pages/docs/contributors/big-picture/vendors.md

22 lines
1.5 KiB
Markdown
Raw Normal View History

---
id: vendors
title: Vendors
---
Next to LIGOs main pipeline, we use some other libraries, that are in the folder `vendors`.
## ligo-utils
This, quite expectedly, defines utilities that are used in LIGO.
There are three kinds of utilities, corresponding to their dependencies.
`tezos-utils` contain utilities that depend on some Tezos libraries.
`proto-alpha-utils` contain utilities that depend on the compilation of some Tezos protocol. It is very big and thus cant be compiled in JS. This is because of a dependency to this that we dont have LIGO in the browser yet.
`simple-utils` contain most utilities. For instance, in `simple-utils` are `X_list` and `X_option`, that extend the `List` module and the `option` type found in `Pervasives`.
Of particular interest in `simple-utils` is `trace.ml`, a module used pervasively in LIGOs code-base. It deals with exceptions (and soon enough debugging annotations) in a functional manner. It offers a lot of utilities to build, combine and propagate exceptions. Given its used everywhere, that it relies on some advanced features of OCaml (higher order functions, ppx preprocessing) and that it exposes **a lot** of functions, its a good idea to look at this files documentation.
## tezos-modded
`tezos-modded` is a modded version of Tezos. There are modifications in it that are quite useful (exposing more functions from the protocol, giving more options to functions already defined), but not integrated yet.
It should in the end be integrated into the Tezos protocol, but until then, we use this.