Commit 674aeb6e authored by Elias2049's avatar Elias2049
Browse files

fixing conflicts

parents 6e41e853 4e6863cb
title=opam 2.0.0 release and repository upgrade
authors=Raja Boujbel,Louis Gesbert
date=2018-09-18
category=Tooling
tags=opam
We are happy to announce the final release of [opam 2.0.0](https://github.com/ocaml/opam/releases/tag/2.0.0).
A few weeks ago, we released a [last release candidate](https://opam.ocaml.org/blog/opam-2-0-0-rc4) to be later promoted to 2.0.0, synchronised with the [opam package repository](https://github.com/ocaml/opam-repository) [upgrade](https://opam.ocaml.org/blog/opam-2-0-0-repo-upgrade-roadmap/).
You are encouraged to update as soon as you see fit, to continue to get package updates: opam 2.0.0 supports the older formats, and 1.2.2 will no longer get regular updates. See the [Upgrade Guide](http://opam.ocaml.org/2.0-preview/doc/Upgrade_guide.html) for details about the new features and changes.
The website opam.ocaml.org has been updated, with the full 2.0.0 documentation pages. You can still find the documentation for the previous versions in the corresponding menu.
Package maintainers should be aware of the following:
- the master branch of the [opam package repository](https://github.com/ocaml/opam-repository) is now in the 2.0.0 format
- package submissions must accordingly be made in the 2.0.0 format, or using the new version of `opam-publish` (2.0.0)
- anything that was merged into the repository in 1.2 format has been automatically updated to the 2.0.0 format
- the 1.2 format repository has been forked to its own branch, and will only be updated for critical fixes
For custom repositories, the [advice](https://opam.ocaml.org/blog/opam-2-0-0-repo-upgrade-roadmap/#Advice-for-custom-repository-maintainers) remains the same.
---
Installation instructions (unchanged):
1. From binaries: run
```shell-session
sh <(curl -sL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh)
```
or download manually from [the Github "Releases" page](https://github.com/ocaml/opam/releases/tag/2.0.0) to your PATH. In this case, don't forget to run `opam init --reinit -ni` to enable sandboxing if you had version 2.0.0~rc manually installed.
2. From source, using opam:
```shell-session
opam update; opam install opam-devel
```
(then copy the opam binary to your PATH as explained, and don't forget to run `opam init --reinit -ni` to enable sandboxing if you had version 2.0.0~rc manually installed)
3. From source, manually: see the instructions in the [README](https://github.com/ocaml/opam/tree/2.0.0-rc4#compiling-this-repo).
We hope you enjoy this new major version, and remain open to [bug reports](https://github.com/ocaml/opam/issues) and [suggestions](https://github.com/ocaml/opam/issues).
> NOTE: this article is cross-posted on [opam.ocaml.org](https://opam.ocaml.org/blog/) and [ocamlpro.com](http://www.ocamlpro.com/category/blog/).
......@@ -45,5 +45,5 @@ opam update; opam install opam-devel
We hope you enjoy this new major version, and remain open to [bug reports](https://github.com/ocaml/opam/issues) and [suggestions](https://github.com/ocaml/opam/issues).
> NOTE: this article is cross-posted on [opam.ocaml.org](https://opam.ocaml.org/blog/) and [ocamlpro.com](http://www.ocamlpro.com/category/blog/).
> NOTE: this article is cross-posted on [opam.ocaml.org](https://opam.ocaml.org/blog/) and [ocamlpro.com](/blog).
......@@ -46,4 +46,5 @@ opam update; opam install opam-devel
We hope you enjoy this new major version, and remain open to [bug reports](https://github.com/ocaml/opam/issues) and [suggestions](https://github.com/ocaml/opam/issues).
> NOTE: this article is cross-posted on [opam.ocaml.org](https://opam.ocaml.org/blog/) and [ocamlpro.com](http://www.ocamlpro.com/category/blog/).
> NOTE: this article is cross-posted on [opam.ocaml.org](https://opam.ocaml.org/blog/) and [ocamlpro.com](/blog).
......@@ -59,5 +59,5 @@ opam update; opam install opam-devel
We hope you enjoy this new minor version, and remain open to [bug reports](https://github.com/ocaml/opam/issues) and [suggestions](https://github.com/ocaml/opam/issues).
> NOTE: this article is cross-posted on [opam.ocaml.org](https://opam.ocaml.org/blog/) and [ocamlpro.com](http://www.ocamlpro.com/category/blog/).
> NOTE: this article is cross-posted on [opam.ocaml.org](https://opam.ocaml.org/blog/) and [ocamlpro.com](/blog).
......@@ -35,5 +35,5 @@ opam update; opam install opam-devel
We hope you enjoy this new major version, and remain open to [bug reports](https://github.com/ocaml/opam/issues) and [suggestions](https://github.com/ocaml/opam/issues).
> NOTE: this article is cross-posted on [opam.ocaml.org](https://opam.ocaml.org/blog/) and [ocamlpro.com](http://www.ocamlpro.com/category/blog/).
> NOTE: this article is cross-posted on [opam.ocaml.org](https://opam.ocaml.org/blog/) and [ocamlpro.com](/blog).
......@@ -50,5 +50,5 @@ opam update; opam install opam-devel
We hope you enjoy this new minor version, and remain open to [bug reports](https://github.com/ocaml/opam/issues) and [suggestions](https://github.com/ocaml/opam/issues).
> NOTE: this article is cross-posted on [opam.ocaml.org](https://opam.ocaml.org/blog/) and [ocamlpro.com](http://www.ocamlpro.com/category/blog/).
> NOTE: this article is cross-posted on [opam.ocaml.org](https://opam.ocaml.org/blog/) and [ocamlpro.com](/blog).
......@@ -14,10 +14,7 @@ and to professionals, advised a dozen projects, developed tools and
libraries, made some improvements and extensions to the official Tezos
node, and conducted several private deployments of the Tezos ledger.
<blockquote style="background: rgb(17,106,133); color: white; padding: 30px;">
For an overview of OCamlPro’s blockchain activities see
<a href="https://www.ocamlpro.com/blockchain">https://www.ocamlpro.com/blockchain</a>
</blockquote>
> For an overview of OCamlPro’s blockchain activities see [here](/blog/category/blockchains)
## TzScan: A complete Block Explorer for Tezos
......@@ -41,9 +38,7 @@ private Tezos networks. TzScan’s development has been initiated in
September 2017. It represents today an enormous investment, that the
Tezos Foundation helped partially fund in July 2018.
<blockquote style="background: rgb(17,106,133); color: white; padding: 30px;">
Contact us for support, advanced features, advertisement, or if you need a private deployment of the TzScan infrastructure.
</blockquote>
> Contact us for support, advanced features, advertisement, or if you need a private deployment of the TzScan infrastructure.
## Liquidity: a Smart Contract Language for Tezos
......@@ -66,10 +61,7 @@ model-checking and deductive program verification to investigate this
feature. We are now searching for funding opportunities to keep
developing and maintaining Liquidity.
<blockquote style="background: rgb(17,106,133); color: white; padding: 30px;">
See our <a href="https://www.liquidity-lang.org/edit">online
editor</a> to get started ! Contact us if you need support, training,
writing or in-depth analysis of your smart contracts. </blockquote>
> See our [online editor](https://www.liquidity-lang.org/edit) to get started ! Contact us if you need support, training, writing or in-depth analysis of your smart contracts.
## Techelson: a testing framework for Michelson and Liquidity
......@@ -82,9 +74,7 @@ here](https://ocamlpro.github.io/techelson/user_doc/). An example on
how to use it with Liquidity is detailed in [this
post](https://adrienchampion.github.io/blog/tezos/techelson/with_liquidity/index.html).
<blockquote style="background: rgb(17,106,133); color: white; padding: 30px;">
Contact us to customize the engine to suit your own needs!
</blockquote>
> Contact us to customize the engine to suit your own needs!
## IronTez: an optimized Tezos node by OCamlPro
......@@ -99,7 +89,7 @@ transactions and every 10 minutes otherwise, etc.).
A simplified version of IronTez has already been made public to allow
testing its [improved storage system,
Ironmin](https://ocamlpro.com/2019/02/04/improving-tezos-storage-gitlab-branch-for-testers/),
Ironmin](/blog/2019_02_04_improving_tezos_storage_gitlab_branch_for_testers),
showing a 10x reduction in storage. Some TzScan.io nodes are also
using versions of IronTez. We’ve also successfully deployed it along
with TzScan for a big foreign company to experiment with private
......@@ -107,6 +97,5 @@ blockchains. We are searching for projects and funding opportunities
to keep developing and maintaining this optimized version of the Tezos
node.
<blockquote style="background: rgb(17,106,133); color: white; padding:
30px;"> Don’t hesitate to contact us if you want to deploy a
blockchain with IronTez, or for more information ! </blockquote>
> Don’t hesitate to contact us if you want to deploy a blockchain with IronTez, or for more information !
......@@ -44,5 +44,5 @@ opam update; opam install opam-devel
We hope you enjoy this new minor version, and remain open to [bug reports](https://github.com/ocaml/opam/issues) and [suggestions](https://github.com/ocaml/opam/issues).
> NOTE: this article is cross-posted on [opam.ocaml.org](https://opam.ocaml.org/blog/) and [ocamlpro.com](http://www.ocamlpro.com/category/blog/).
> NOTE: this article is cross-posted on [opam.ocaml.org](https://opam.ocaml.org/blog/) and [ocamlpro.com](/blog).
......@@ -5,10 +5,10 @@ category=OCaml
tags=ocaml, highlights, cheat-sheets
[![A look back on OCaml since 2011](assets/img/ocaml-2011-e1600870731841.jpeg)](https://www.ocamlpro.com/2019/09/20/a-look-back-on-ocaml/)
[![A look back on OCaml since 2011](assets/img/ocaml-2011-e1600870731841.jpeg)](/blog/2019_09_20_look_back_ocaml_since_2011)
As you already know if you’ve read [our last blogpost](http://ocamlpro.com/2019/09/13/updated-cheat-sheets-ocaml-language-and-ocaml-standard-library/), we have updated our OCaml cheat sheets starting with the language and stdlib ones. We know some of you have students to initiate in September and we wanted these sheets to be ready for the start of the school year! We’re working on more sheets for OCaml tools like opam or Dune and important libraries such as ~~Obj~~ Lwt or Core. Keep an eye on our blog or the [repo on GitHub](https://github.com/OCamlPro/ocaml-cheat-sheets) to follow all the updates.
As you already know if you’ve read [our last blogpost](/blog/2019_09_13_updated_cheat_sheets_language_stdlib_2), we have updated our OCaml cheat sheets starting with the language and stdlib ones. We know some of you have students to initiate in September and we wanted these sheets to be ready for the start of the school year! We’re working on more sheets for OCaml tools like opam or Dune and important libraries such as ~~Obj~~ Lwt or Core. Keep an eye on our blog or the [repo on GitHub](https://github.com/OCamlPro/ocaml-cheat-sheets) to follow all the updates.
......
......@@ -5,9 +5,9 @@ category=Tooling
tags=opam,documentation,cheat-sheets
[![The Opam 2.0 cheatsheet, with a new theme!](assets/img/logo_opam_blue.png)](https://www.ocamlpro.com/2020/01/10/opam-2-0-cheatsheet/)
[![The Opam 2.0 cheatsheet, with a new theme!](assets/img/logo_opam_blue.png)](/blog/2020_01_10_opam_2.0_cheat_sheet)
[Earlier](http://ocamlpro.com/2019/09/13/updated-cheat-sheets-ocaml-language-and-ocaml-standard-library/), we dusted-off our Language and Stdlib cheatsheets, for teachers and students. With more time, we managed to design an Opam 2.0 cheat-sheet we are proud of. It is organized into two pages:
[Earlier](/blog/2019_09_13_updated_cheat_sheets_language_stdlib_2), we dusted-off our Language and Stdlib cheatsheets, for teachers and students. With more time, we managed to design an Opam 2.0 cheat-sheet we are proud of. It is organized into two pages:
......@@ -22,8 +22,8 @@ Moreover, with the help of listings, we tried the use of colors for better reada
* The Opam cheatsheet in [black & white](https://ocamlpro.com/wp-content/uploads/2020/01/ocaml-opam-bw.pdf)
* The Opam cheatsheet in [colour](https://ocamlpro.com/wp-content/uploads/2019/11/ocaml-opam.pdf).
* The Opam cheatsheet in [black & white](https://ocamlpro.github.io/ocaml-cheat-sheets/ocaml-opam-bw.pdf)
* The Opam cheatsheet in [colour](https://ocamlpro.github.io/ocaml-cheat-sheets/ocaml-opam.pdf).
......@@ -37,6 +37,5 @@ In any case do not hesitate to send us your suggestions on [github](https://gith
Happy hacking!
> Note: If you come to one of our [training sessions](/training-ocamlpro/), you’ll get a free cheatsheet! Isn’t that a bargain?
> Note: If you come to one of our [training sessions](http://ocamlpro.com/training-ocamlpro/), you’ll get a free cheatsheet! Isn’t that a bargain?
......@@ -53,6 +53,6 @@ opam update; opam install opam-devel
We hope you enjoy this new minor version, and remain open to [bug reports](https://github.com/ocaml/opam/issues) and [suggestions](https://github.com/ocaml/opam/issues).
> NOTE: this article is cross-posted on [opam.ocaml.org](https://opam.ocaml.org/blog/) and [ocamlpro.com](http://www.ocamlpro.com/category/blog/).
> NOTE: this article is cross-posted on [opam.ocaml.org](https://opam.ocaml.org/blog/) and [ocamlpro.com](/blog).
......@@ -24,7 +24,7 @@ On the OCaml compiler side, we also worked with Leo on two new features: functor
* These new features are described on the new [RFC repository](https://github.com/ocaml/RFCs/pull/11) for OCaml (a [similar idea](https://github.com/ocaml/ocaml/issues/5283) was suggested and implemented in 2011 by Fabrice Le Fessant).
* The implementation is available on GitHub for both [functorized packs](https://github.com/OCamlPro-Couderc/ocaml/tree/functorized-packs) and [recursive packs](https://github.com/OCamlPro-Couderc/ocaml/tree/recursive-units+pack-cleanup). Be aware that both are based on an old version of OCaml for now, but should be in sync with the current trunk in the near future.
* See also Vincent's [OCamlPro’s compiler team work update](https://ocamlpro.com/2019/08/30/ocamlpros-compiler-team-work-update/) of August 2019.
* See also Vincent's [OCamlPro’s compiler team work update](/blog/2019_08_30_ocamlpros_compiler_team_work_update) of August 2019.
*This work is allowed thanks to Jane Street's funding.*
......@@ -59,21 +59,21 @@ All these new features – among others – will be integrated in the 2.1.0 rele
#### OCaml Expert trainings for professional programmers
We proposed in 2019 some [OCaml expert training](https://ocamlpro.com/course-ocaml-expert/) specially designed for developers who want to use advanced features and master all the open-source tools and libraries of OCaml.
We proposed in 2019 some [OCaml expert training](/course_ocaml_expert) specially designed for developers who want to use advanced features and master all the open-source tools and libraries of OCaml.
> The "Expert" OCaml course is for already experienced OCaml programmers to better understand advanced type system possibilities (objects, GADTs), discover GC internals, write "compiler-optimizable" code. These sessions are also an opportunity to come discuss with our OPAM & Flambda lead developers and core contributors in Paris.
Next session: 3-4 March 2020, Paris [(registration)](https://ocamlpro.com/forms/preinscriptions-formation-ocaml/)
Next session: 3-4 March 2020, Paris [(registration)](https://www.ocamlpro.com/pre-inscription-a-une-session-de-formation-inter-entreprises/)
#### Our cheat-sheets on OCaml, the stdlib and opam
*Work of Thomas Blanc, Raja Boujbel and Louis Gesbert*
Thomas announced the release of our up-to-date cheat-sheets for the [OCaml language, standard library](https://ocamlpro.com/2019/09/13/updated-cheat-sheets-ocaml-language-and-ocaml-standard-library/) and [opam](https://ocamlpro.com/wp-content/uploads/2019/11/ocaml-opam.pdf). Our original cheat-sheets were dating back to 2011. This was an opportunity to update them after the [many changes](https://ocamlpro.com/2019/09/13/updated-cheat-sheets-ocaml-language-and-ocaml-standard-library/) in the language, library and ecosystem overall.
Thomas announced the release of our up-to-date cheat-sheets for the [OCaml language, standard library](/blog/2019_09_13_updated_cheat_sheets_language_stdlib_2) and [opam](https://ocamlpro.github.io/ocaml-cheat-sheets/ocaml-opam.pdf). Our original cheat-sheets were dating back to 2011. This was an opportunity to update them after the [many changes](/blog/2019_09_13_updated_cheat_sheets_language_stdlib_2) in the language, library and ecosystem overall.
>Cheat-sheets are helpful to refer to, as an overview of the documentation when you are programming, especially when you’re starting in a new language. They are meant to be printed and pinned on your wall, or to be kept in handy on a spare screen. *They come in handy when your [rubber duck](https://rubberduckdebugging.com/) is rubbish at debugging your code!*
More details on [Thomas' blog post](https://ocamlpro.com/2019/09/13/updated-cheat-sheets-ocaml-language-and-ocaml-standard-library/)
More details on [Thomas' blog post](/blog/2019_09_13_updated_cheat_sheets_language_stdlib_2)
#### Open Source Tooling and Web IDEs
......@@ -95,11 +95,11 @@ In 2018, we welcomed five new engineers with a background in formal methods. The
### Release of Alt-Ergo 2.3.0, and version 2.0.0 (free)
After the release of [Alt-Ergo 2.2.0](https://ocamlpro.com/2018/04/23/release-of-alt-ergo-2-2-0/) (with a new front-end that supports the SMT-LIB 2 language, extended prenex polymorphism, implemented as a standalone library) came the version 2.3.0 in 2019 with new features : dune support, ADT / algebraic datatypes, improvement of the if-then-else and let-in support, improvement of the data types.
After the release of [Alt-Ergo 2.2.0](/blog/2018_04_23_release_of_alt_ergo_2_2_0) (with a new front-end that supports the SMT-LIB 2 language, extended prenex polymorphism, implemented as a standalone library) came the version 2.3.0 in 2019 with new features : dune support, ADT / algebraic datatypes, improvement of the if-then-else and let-in support, improvement of the data types.
* More information on the [Alt-Ergo SMT Solver](https://alt-ergo.ocamlpro.com/)
* Albin Coquereau defended his PhD thesis in Decembre 2019 "Improving performance of the SMT solver Alt-Ergo with a better integration of efficient SAT solver"
* We participated in the SMT-COMP 2019 during the 22nd SAT conference. The results of the competition are detailed [here.](https://ocamlpro.com/2019/07/09/alt-ergo-participation-to-the-smt-comp-2019/)
* We participated in the SMT-COMP 2019 during the 22nd SAT conference. The results of the competition are detailed [here.](/blog/2019_07_09_alt_ergo_participation_to_the_smt_comp_2019)
### The launch of the Alt-Ergo Users' Club
......@@ -126,8 +126,8 @@ Following the launch of Dune network, the Love language for smart-contracts was
The OCaml & Rust combo *should* be a candidate for any ambitious software project!
* A Rust-based UI for memprof: we started in 2019 to work in collaboration with the memprof developer team on a Rust based UI for memprof. See Pierre and Albin's exposé at the [JFLA2020](https://jfla.inria.fr/jfla2020.html)'s "Gardez votre mémoire fraiche avec Memthol" (Pierre Chambart , Albin Coquereau and Jacques-Henri Jourdan)
* [Rust training](https://ocamlpro.com/rust-vocational-training/) : *Rust borrows heavily from functional programming languages to provide very expressive abstraction mechanisms. Because it is a systems language, these mechanisms are almost always zero-cost. For instance, polymorphic code has no runtime cost compared to a monomorphic version.This concern for efficiency also means that Rust lets developers keep a very high level of control and freedom for optimizations. Rust has no Garbage Collection or any form of runtime memory inspection to decide when to free, allocate or re-use memory. But because manual memory management is almost universally regarded as dangerous, or at least very difficult to maintain, the Rust compiler has a borrow-checker which is responsible for i) proving that the input program is memory-safe (and thread-safe), and ii) generating a safe and “optimal” allocation/deallocation strategy. All of this is done at compile-time.*
* Next sessions: April 20-24th 2020 [(registration)](https://ocamlpro.com/forms/preinscriptions-formation-ocaml/)
* [Rust training](/course_rust_vocational_training) : *Rust borrows heavily from functional programming languages to provide very expressive abstraction mechanisms. Because it is a systems language, these mechanisms are almost always zero-cost. For instance, polymorphic code has no runtime cost compared to a monomorphic version.This concern for efficiency also means that Rust lets developers keep a very high level of control and freedom for optimizations. Rust has no Garbage Collection or any form of runtime memory inspection to decide when to free, allocate or re-use memory. But because manual memory management is almost universally regarded as dangerous, or at least very difficult to maintain, the Rust compiler has a borrow-checker which is responsible for i) proving that the input program is memory-safe (and thread-safe), and ii) generating a safe and “optimal” allocation/deallocation strategy. All of this is done at compile-time.*
* Next sessions: April 20-24th 2020 [(registration)](https://www.ocamlpro.com/pre-inscription-a-une-session-de-formation-inter-entreprises/)
## OCamlPro around the world
......@@ -146,13 +146,13 @@ Now let's jump into the new year 2020, with a team keeping expanding, and new pr
Many people ask us about what happened in 2018! That was an incredibly active year on blockchain-related achievements, and at that time we were hoping to attract clients that would be interested in our blockchain expertise.
But that is [history](https://ocamlpro.com/wp-content/uploads/2020/01/Flyer_Blockchains_OSIS2017ok.pdf) now! Still interested? Check the [Origin Labs](https://www.origin-labs.com/) team and their partner [The Garage](https://www.thegara.ge/) on [Dune Network](https://dune.network)!
But that is [history](https://files.ocamlpro.com/Flyer_Blockchains_OSIS2017ok.pdf) now! Still interested? Check the [Origin Labs](https://www.origin-labs.com/) team and their partner [The Garage](https://www.thegara.ge/) on [Dune Network](https://dune.network)!
For the [record](https://ocamlpro.com/2019/04/29/blockchains-at-ocamlpro-an-overview/):
For the [record](/blog/2019_04_29_blockchains_at_ocamlpro_an_overview):
* (April 2019) We had started Techelson: a testing framework for Michelson and Liquidity
* (Nov 2018) [An Introduction to Tezos RPCs: Signing Operations](https://ocamlpro.com/2018/11/21/an-introduction-to-tezos-rpcs-signing-operations/) / [An Introduction to Tezos RPCs: a Basic Wallet](https://ocamlpro.com/2018/11/15/an-introduction-to-tezos-rpcs-a-basic-wallet/) / [Liquidity Tutorial: A Game with an Oracle for Random Numbers](https://ocamlpro.com/2018/11/06/liquidity-tutorial-a-game-with-an-oracle-for-random-numbers/) / [First Open-Source Release of TzScan](https://ocamlpro.com/2018/11/08/first-open-source-release-of-tzscan/)
* (Oct 2018) [OCamlPro’s TZScan grant proposal accepted by the Tezos Foundation – joint press release&nbsp;](https://ocamlpro.com/2018/10/17/ocamlpros-tzscan-grant-proposal-accepted-by-the-tezos-foundation-joint-press-release/)
* (Nov 2018) [An Introduction to Tezos RPCs: Signing Operations](/blog/2018_11_21_an_introduction_to_tezos_rpcs_signing_operations) / [An Introduction to Tezos RPCs: a Basic Wallet](/blog/2018_11_15_an-introduction_to_tezos_rpcs_a_basic_wallet) / [Liquidity Tutorial: A Game with an Oracle for Random Numbers](/blog/2018_11_06_liquidity_tutorial_a_game_with_an_oracle_for_random_numbers) / [First Open-Source Release of TzScan](/blog/2018_11_08_first_open_source_release_of_tzscan)
* (Oct 2018) [OCamlPro’s TZScan grant proposal accepted by the Tezos Foundation – joint press release](/blog/2018_10_17_ocamlpros_tzscan_grant_proposal_accepted_by_the_tezos_foundation_joint_press_release)
* (Jul 2018) [OCamlPro’s Tezos block explorer TzScan’s last updates](/blog/2018_07_20_new_updates_on_tzscan_2)
* (Feb 2018) [Release of a first version of TzScan.io, a Tezos block explorer](https://ocamlpro.com/2018/02/14/release-of-a-first-version-of-tzscan-io-a-tezos-block-explorer/) / [OCamlPro’s Liquidity-lang demo at JFLA2018 – a smart-contract design language](https://ocamlpro.com/2018/11/06/liquidity-tutorial-a-game-with-an-oracle-for-random-numbers/) . We were developing [Liquidity](https://www.liquidity-lang.org/), a high level smart contract language, human-readable, purely functional, statically-typed, which syntax was very close to the OCaml syntax.
* (Feb 2018) [Release of a first version of TzScan.io, a Tezos block explorer](/blog/2018_02_14_release_of_a_first_version_of_tzscan_io_a_tezos_block_explorer) / [OCamlPro’s Liquidity-lang demo at JFLA2018 – a smart-contract design language](/blog/2018_11_06_liquidity_tutorial_a_game_with_an_oracle_for_random_numbers) . We were developing [Liquidity](https://www.liquidity-lang.org/), a high level smart contract language, human-readable, purely functional, statically-typed, which syntax was very close to the OCaml syntax.
* To garner interest and adoption, we also developed the online editor [Try Liquidity](https://www.liquidity-lang.org/edit). Smart-contract developers could design contracts interactively, directly in the browser, compile them to Michelson, run them and deploy them on the alphanet network of Tezos. Future plans included a full-fledged web-based IDE for Liquidity. Worth mentioning was a neat feature: decompiling a Michelson program back to its Liquidity version, whether it was generated from Liquidity code or not.
......@@ -4,7 +4,7 @@ date=2020-03-23
category=OCaml
tags=ocaml,highlights,GC
[![An in-depth Look at OCaml’s new "Best-fit" Garbage Collector Strategy](assets/img/logo_round_ocaml_search.png)](https://www.ocamlpro.com/2020/03/23/ocaml-new-best-fit-garbage-collector/)
[![An in-depth Look at OCaml’s new "Best-fit" Garbage Collector Strategy](assets/img/logo_round_ocaml_search.png)](/blog/2020_03_23_in_depth_look_at_best_fit_gc)
The Garbage Collector probably is OCaml’s greatest unsung hero. Its pragmatic approach allows us to allocate without much fear of efficiency loss. In a way, the fact that most OCaml hackers know little about it is a good sign: you want a runtime to gracefully do its job without having to mind it all the time.
......
......@@ -36,4 +36,5 @@ opam update; opam install opam-devel
We hope you enjoy this new minor version, and remain open to [bug reports](https://github.com/ocaml/opam/issues) and [suggestions](https://github.com/ocaml/opam/issues).
> NOTE: this article is cross-posted on [opam.ocaml.org](https://opam.ocaml.org/blog/) and [ocamlpro.com](http://www.ocamlpro.com/category/blog/).
> NOTE: this article is cross-posted on [opam.ocaml.org](https://opam.ocaml.org/blog/) and [ocamlpro.com](/blog).
......@@ -139,4 +139,4 @@ Thanks for trying it out, and hoping you enjoy!
> NOTE: this article is cross-posted on
[opam.ocaml.org](https://opam.ocaml.org/blog/) and
[ocamlpro.com](http://www.ocamlpro.com/category/blog/).
[ocamlpro.com](/blog).
......@@ -4,9 +4,8 @@ date=2020-05-19
category=Blockchains
tags=blockains,solidity,parser
<!-- [![Solidity Logo](assets/img/solidity-cover.png "A Solidity parser in OCaml with Menhir")](https://www.ocamlpro.com/2020/05/19/ocaml-solidity-parser-with-menhir/) -->
<p align="center" >
<a href="https://www.ocamlpro.com/2020/05/19/ocaml-solidity-parser-with-menhir/">
<a href="/blog/2020_05_19_ocaml_solidity_parser_with_menhir">
<img width="420" height="420" alt="Solidity Logo" title="A Solidity parser in OCaml with Menhir" src="assets/img/solidity-cover.png">
</a>
</p>
......
......@@ -44,7 +44,7 @@ The question needs to be clarified: what *is* an industrial programming language
#### Formal methods being one of OCamlPro’s areas of expertise, in what way do you think OCaml is suited for the SMT domain?
Tools like SMT solvers are mainly symbolic data manipulation software that allow you to analyze, transform, and reason about logical formulas. OCaml is made for that. There is also a more “computational” side to these tools, which requires precise programming of data structures as well as efficient memory management. OCaml, with its extremely [efficient garbage collector](https://www.ocamlpro.com/2020/03/23/ocaml-new-best-fit-garbage-collector/) (GC), is particularly suited for this kind of development. SMT solvers are tools that also need to be very reliable because errors are difficult to find and are potentially very harmful. OCaml’s type system contributes to the reliability of these tools.
Tools like SMT solvers are mainly symbolic data manipulation software that allow you to analyze, transform, and reason about logical formulas. OCaml is made for that. There is also a more “computational” side to these tools, which requires precise programming of data structures as well as efficient memory management. OCaml, with its extremely [efficient garbage collector](/blog/2020_03_23_in_depth_look_at_best_fit_gc) (GC), is particularly suited for this kind of development. SMT solvers are tools that also need to be very reliable because errors are difficult to find and are potentially very harmful. OCaml’s type system contributes to the reliability of these tools.
> “*SMT solvers are nowadays essential in software engineering*”
......@@ -54,7 +54,7 @@ Alt-Ergo is a software for proving logical formulas automatically (without human
#### In what way developing this software in OCaml benefits Alt-Ergo over its competitors?
It makes it more reliable, since an SMT solver, like any program, can have bugs. Most of Alt-Ergo is written in a purely functional programming style, i.e. only using immutable data structures. One of the advantages of this programming style is that it allowed us to formally prove the main components of Alt-Ergo (for example, its kernel was formalized using the Coq proof assistant, which would have been impossible with a language like C++) without sacrificing efficiency thanks to a very good garbage collector and OCaml’s very powerful persistent data structure library. We made use of OCaml’s module system, particularly functors and recursive modules, to conceive a very modular code, making it maintainable and easily extensible. OCaml allowed us to create [an SMT solver just as efficient as CVC4 or Z3 for program verification](https://ocamlpro.com/2019/07/09/alt-ergo-participation-to-the-smt-comp-2019/), but with a total number of lines of code divided by three or four.This obviously does not guarantee that Alt-Ergo has zero bugs, but it really helps us in fixing any if they are found.
It makes it more reliable, since an SMT solver, like any program, can have bugs. Most of Alt-Ergo is written in a purely functional programming style, i.e. only using immutable data structures. One of the advantages of this programming style is that it allowed us to formally prove the main components of Alt-Ergo (for example, its kernel was formalized using the Coq proof assistant, which would have been impossible with a language like C++) without sacrificing efficiency thanks to a very good garbage collector and OCaml’s very powerful persistent data structure library. We made use of OCaml’s module system, particularly functors and recursive modules, to conceive a very modular code, making it maintainable and easily extensible. OCaml allowed us to create [an SMT solver just as efficient as CVC4 or Z3 for program verification](/blog/2019_07_09_alt_ergo_participation_to_the_smt_comp_2019), but with a total number of lines of code divided by three or four.This obviously does not guarantee that Alt-Ergo has zero bugs, but it really helps us in fixing any if they are found.
#### What is your opinion on SMT solvers and the current state of the art of SMT?
......
......@@ -4,9 +4,9 @@ date=2020-06-09
category=Blockchains
tags=blockchain,smart contracts,love,liquidity
<!-- [![Liquidity & Love](assets/img/liq-love-1.png "A Dune Love story: From Liquidity to Love")](https://www.ocamlpro.com/2020/06/09/a-dune-love-story-from-liquidity-to-love/) -->
<div align="center">
<a href="https://www.ocamlpro.com/2020/06/09/a-dune-love-story-from-liquidity-to-love/">
<a href="/blog/2020_06_09_a_dune_love_story_from_liquidity_to_love">
<img width="900" height="900" alt="Liquidity & Love" title="A Dune Love story: From Liquidity to Love" src="assets/img/liq-love-1.png">
</a>
</div>
......
......@@ -10,7 +10,7 @@ OCamlPro has a long history of dedicated efforts to support the development of t
Packs in the OCaml ecosystem are kind of an outdated concept (options `-pack` and `-for-pack` in the [OCaml manual](https://caml.inria.fr/pub/docs/manual-ocaml/comp.html)), and their main utility has been overtaken by the introduction of [module aliases](https://caml.inria.fr/pub/docs/manual-ocaml/modulealias.html) in OCaml 4.02. What if we tried to redeem them and give them a new youth and utility by adding the possibility to generate functors or recursive packs?
This blog post covers the [functor units and functor packs](https://github.com/ocaml/RFCs/pull/11), while the next one will be centered around [recursive packs](https://github.com/ocaml/RFCs/pull/20). Both RFCs are currently developed by JaneStreet and OCamlPro. This idea was initially introduced by [functor packs](https://www.ocamlpro.com/2011/08/10/packing-and-functors/) (Fabrice Le Fessant) and later generalized by [functorized namespaces](https://ocaml.org/meetings/ocaml/2014/ocaml2014_8.pdf) (Pierrick Couderc et al.).
This blog post covers the [functor units and functor packs](https://github.com/ocaml/RFCs/pull/11), while the next one will be centered around [recursive packs](https://github.com/ocaml/RFCs/pull/20). Both RFCs are currently developed by JaneStreet and OCamlPro. This idea was initially introduced by [functor packs](/blog/2011_08_10_packing_and_functors) (Fabrice Le Fessant) and later generalized by [functorized namespaces](https://ocaml.org/meetings/ocaml/2014/ocaml2014_8.pdf) (Pierrick Couderc et al.).
## Packs for the masses
......
......@@ -6,7 +6,7 @@ tags=ocaml
![](assets/img/train.jpg)
This blog post and the previous one about [functor packs](https://www.ocamlpro.com/?p=3947) covers two RFCs currently developed by OCamlPro and Jane Street. We previously introduced functor packs, a new feature adding the possiblity to compile packs as functors, allowing the user to implement functors as multiple source files or even parameterized libraries.
This blog post and the previous one about [functor packs](/blog/2020_09_24_rehabilitating_packs_using_functors_and_recursivity_part_1) covers two RFCs currently developed by OCamlPro and Jane Street. We previously introduced functor packs, a new feature adding the possiblity to compile packs as functors, allowing the user to implement functors as multiple source files or even parameterized libraries.
In this blog post, we will cover the other aspect of the packs rehabilitation: allowing anyone to implement recursive compilation units using packs (as described formally in the [RFC#20](https://github.com/ocaml/RFCs/pull/20)). Our previous post introduced briefly how packs were compiled and why we needed some bits of closure conversion to effectively implement big functors. Once again, to implement recursive packs we will need to encode modules through this technique, as such we advise the reader to check at least the introduction and the compilation part of functor packs.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment