Commit a871e03c authored by Dario Pinto's avatar Dario Pinto
Browse files

Add a bunch of FR articles + mappings + fix sabotage

parent b1ccbdb0
......@@ -8,6 +8,8 @@ type article =
; url : string
}
exception ContentDoesntExistSoPleaseRaiseA404
let alt_ergo_footer =
{|
> ### **About Alt-Ergo**
......@@ -296,7 +298,7 @@ let links_to_home_pages =
</a>
</p>
</div>
<div class="col-4">
<div class="col-4">
<p class="toplinks">
<a href="/blog/category">
Categories
......@@ -394,9 +396,12 @@ let given_category category =
(fun article -> String.equal (normalize_url article.category) category)
articles_by_date
in
let category = (List.hd articles_of_category).category in
Format.asprintf {|<h1 id="page-title">Articles on %s</h1>%s%a@.|} category
links_to_home_pages pp_blog_posts articles_of_category
match articles_of_category with
| [] -> raise ContentDoesntExistSoPleaseRaiseA404
| _l ->
let category = (List.hd articles_of_category).category in
Format.asprintf {|<h1 id="page-title">Articles on %s</h1>%s%a@.|} category
links_to_home_pages pp_blog_posts articles_of_category
(** [given_author ocp_author] Displays the list of articles written by a given
[ocp_author] *)
......@@ -410,13 +415,16 @@ let given_author ocp_author =
article.authors )
articles_by_date
in
let authors = (List.hd articles_of_author).authors in
let author =
List.find (fun auth -> String.equal (normalize_url auth) ocp_author) authors
in
( Format.asprintf {|<h1 id="page-title">Articles by %s</h1>%s%a@.|} author
links_to_home_pages pp_blog_posts articles_of_author
, author )
match articles_of_author with
| [] -> raise ContentDoesntExistSoPleaseRaiseA404
| _l ->
let authors = (List.hd articles_of_author).authors in
let author =
List.find (fun auth -> String.equal (normalize_url auth) ocp_author) authors
in
( Format.asprintf {|<h1 id="page-title">Articles by %s</h1>%s%a@.|} author
links_to_home_pages pp_blog_posts articles_of_author
, author )
(** [given_tag tag] Displays the list of articles tagged with given [tag] *)
let given_tag tag =
......@@ -429,13 +437,16 @@ let given_tag tag =
article.tags )
articles_by_date
in
let tag =
List.find
(fun t -> String.equal (normalize_tag t) tag)
(List.hd articles_with_tag).tags
in
Format.asprintf {|<h1 id="page-title">Articles tagged with %s</h1>%s%a@.|} tag
links_to_home_pages pp_blog_posts articles_with_tag
match articles_with_tag with
| [] -> raise ContentDoesntExistSoPleaseRaiseA404
| _l ->
let tag =
List.find
(fun t -> String.equal (normalize_tag t) tag)
(List.hd articles_with_tag).tags
in
Format.asprintf {|<h1 id="page-title">Articles tagged with %s</h1>%s%a@.|} tag
links_to_home_pages pp_blog_posts articles_with_tag
(** [category_home] This is the home page for all available categories on the
Blog, along with number of articles of given category *)
......
title=Introduction aux RPCs dans Tezos : exemple d’un portefeuille (wallet) simple
authors=Fabrice Le Fessant
date=2018-11-20
category=Blockchains
tags=tezos,rpc,fr
Dans cet article technique, nous introduisons brièvement les RPCs dans Tezos à travers un exemple simple montrant comment le client Tezos
interagit avec le noeud lors d’une instruction de transfert. Les RPCs de Tezos sont des requêtes HTTP (GET ou POST) auxquelles les noeuds Tezos
répondent dans un fichier au format JSON. Elles sont la seule façon pour les wallets d’interagir avec [Read more…](/2018/11/15/an-introduction-to-tezos-rpcs-a-basic-wallet/)
title=Tezos et OCamlPro
authors=Fabrice Le Fessant
date=2019-01-31
category=Blockchains
tags=tezos,OCamlPro,fr
Tezos est aujourd’hui un projet open source, un réseau international développé par des équipes sur plus de cinq continents. Dans la genèse du
projet, l’entreprise française OCamlPro, qui développe encore aujourd’hui de nombreux projets liés à Tezos (TZscan, Liquidity, etc.), a
joué un rôle particulièrement important. C’est en effet en son sein que des ingénieurs-chercheurs ont posé les premières pierres du code, en
étroite collaboration avec Arthur Breitman, l’architecte du projet, et DLS pendant plusieurs années. Nous nous réjouissons aujourd’hui de
l’essor qu’a pris le projet.
Arthur et OCamlPro
(publication conjointe)
title=Optimisation du stockage dans Tezos : une branche de test sur Gitlab
authors=Fabrice Le Fessant
date=2019-02-04
category=Blockchains
tags=tezos,optimisation,fr
Ce troisième article consacré à l’amélioration du stockage dans Tezos fait suite à l’annonce de la mise à disposition d’une image docker pour
les beta testeurs souhaitant essayer notre système de stockage et garbage collector.
Voir [Improving Tezos Storage : Gitlab branch for testers](/2019/02/04/improving-tezos-storage-gitlab-branch-for-testers/)
title=Release de Techelson, moteur de tests pour Michelson et Liquidity
authors=Adrien Champion
date=2019-03-05
category=Blockchains
tags=techelson,fr
Nous sommes fiers d’annoncer la première release de Techelson, moteur d’exécution de tests pour Michelson. Les programmeurs Liquidity peuvent également l’utiliser.
Voir [Techelson, a test execution engine for Michelson](/2019/03/05/techelson-a-test-execution-engine-for-michelson/).
title=Résultats de la SMT-Comp 2019 pour Alt-Ergo
authors=Albin Coquereau
date=2019-07-10
category=Formal Methods
tags=alt-ergo,fr
Les résultats de la compétition SMT-COMP 2019 ont été publiés au whorkshop&nbsp; SMT de la [22e conférence SAT](https://smt2019.galois.com/). Nous étions fiers d’y participer pour la deuxième année consécutive, surtout depuis qu’Alt-Ergo [prend en charge](/2019/02/11/whats-new-for-alt-ergo-in-2018-here-is-a-recap/) le standard [SMT-LIB 2](https://smtlib.cs.uiowa.edu/).
> Alt-Ergo est un SAT solveur open-source maintenu et distribué par OCamlPro, et financé entre autres grâce à plusieurs projets de R&D collaborative (BWare, SOPRANO, Vocal, LChip).
> Si vous êtes un utilisateur d’Alt-Ergo, songez à rejoindre le [Club des Utilisateurs d’Alt-Ergo](https://alt-ergo.ocamlpro.com/#club)! L’histoire de ce logiciel remonte à 2006, où il est né de recherches académiques conjointes entre Inria et le CNRS dans le laboratoire du LRI. Il est depuis septembre 2013 maintenu, développé&nbsp; et distribué par OCamlPro (voir l’historique des [versions passées](https://alt-ergo.ocamlpro.com/#releases)).
> *Si vous êtes curieux des activités d’OCamlPro dans le domaine des méthodes formelles, vous pouvez lire le court témoignage d’un [client heureux](http://ocamlpro.com/clients-partners/#mitsubishi-merce).*
Voir [](/2019/07/09/alt-ergo-participation-to-the-smt-comp-2019/)
......@@ -2,7 +2,7 @@ title=Réunion annuelle du Club des utilisateurs d’Alt-Ergo
authors=Aurore Dromby
date=2020-03-03
category=Formal Methods
tags=alt-ergo
tags=alt-ergo,fr
![Alt-Ergo meeting](assets/img/altergo-meeting.jpeg)
![Logo Alt-Ergo](../assets/img/logo_altergo.png)
......@@ -23,4 +23,4 @@ Nos membres sont particulièrement intéressés par les points suivants :
– L’amélioration du support de l’arithmétique non linéaire dans Alt-Ergo
Ces fonctionnalités sont maintenant nos principales priorités. Pour suivre nos avancement et les nouveautés, n’hésitez pas à lire nos [articles](category/formal_methods) sur ce blog.
\ No newline at end of file
Ces fonctionnalités sont maintenant nos principales priorités. Pour suivre nos avancement et les nouveautés, n’hésitez pas à lire nos [articles](category/formal_methods) sur ce blog.
......@@ -2,7 +2,7 @@ title=Tutoriel Format
authors=OCamlPro
date=2020-06-01
category=Trainings
tags=tutoriel,format,documentation
tags=tutoriel,format,documentation,fr
*Article écrit par Mattias.*
......
......@@ -2,7 +2,7 @@ title=[Interview] Sylvain Conchon rejoint OCamlPro
authors=Aurore Dombry
date=2020-06-05
category=OCamlPro
tags=formal methods,interview,sylvain,conchon
tags=formal methods,interview,sylvain,conchon,fr
![](/blog/assets/img/picture_sylvainconchon.jpg)
......
......@@ -2,7 +2,7 @@ title=Réunion annuelle du Club des utilisateurs d’Alt-Ergo 2021
authors=OCamlPro
date=2021-04-29
category=Formal Methods
tags=alt-ergo
tags=alt-ergo,fr
La troisième réunion annuelle du Club des utilisateurs d’Alt-Ergo a eu lieu le 1er avril ! Cette réunion annuelle est l’endroit idéal pour passer en revue les besoins de chaque partenaire concernant Alt-Ergo. Nous avons eu le plaisir de recevoir nos partenaires pour discuter de la feuille de route concernant les développements et les améliorations futures d’Alt-Ergo.
......
title=Verification for Dummies: SMT and Induction
authors=Adrien Champion
date=2021-10-14
category=Formal Methods
tags=trainings,smt,formal logic
- Adrien Champion [adrien.champion@ocamlpro.com](mailto:adrien.champion@ocamlpro.com)
- [](http://creativecommons.org/licenses/by-sa/4.0/) This work is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/).
These posts broadly discusses *induction* as a *formal verification* technique, which here really means *formal program verification*. I will use concrete, runnable examples whenever possible. Some of them can run directly in a browser, while others require to run small easy-to-retrieve tools locally. Such is the case for pretty much all examples dealing directly with induction.
The next chapters discuss the following notions:
- formal logics and formal frameworks;
- SMT-solving: modern, *low-level* verification building blocks;
- declarative transition systems;
- transition system unrolling;
- BMC and induction proofs over transition systems;
- candidate strengthening.
The approach presented here is far from being the only one when it comes to program verification. It happens to be relatively simple to
understand, and I believe that familiarity with the notions discussed here makes understanding other approaches significantly easier.
This book thus hopes to serve both as a relatively deep dive into the specific technique of SMT-based induction, as well as an example of the technical challenges inherent to both developing and using automated proof engines.
Some chapters contain a few pieces of Rust code. Usually to provide a runnable version of a system under discussion, or to serve as example of actual code that we want to encode and verify. Some notions of Rust could definitely help in places, but this is not mandatory (probably).
Read more here: [](https://github.com/rust-lang/this-week-in-rust/pull/2479)[https://ocamlpro.github.io/verification_for_dummies/](https://ocamlpro.github.io/verification_for_dummies/)
......@@ -68,31 +68,19 @@ We cater to very specific needs. For example, we can translate a “black box”
<h3 align="center"><a href="https://alt-ergo.ocamlpro.com/">Alt-Ergo</a></h3>
<p class="p_index_center">An SMT solver for software verification</p>
</div>
<<<<<<< HEAD
<div class="col-6 col-lg-3">
<p><img class="img_products" src="assets/img/logo_dune_gimp.png"/></p>
<h3 align="center"><a href="https://dunscan.io/">DunScan</a></h3>
<p class="p_index_center">The Dune network explorer</p>
<h3 align="center">
<p><img class="img_products" src="assets/img/logo_dune_gimp.png"/></p>
<h3 align="center"><a href="https://dunscan.io/">DunScan</a> &amp; <a href="https://tzscan.io/">TzScan</a></h3></h3>
<p class="p_index_center">Blockchain explorers</p>
</div>
</div>
<div class="row">
<div class="col-6 col-lg-3">
<p><img class="img_products" src="assets/img/logo_love_gimp.png"/></p>
<h3 align="center"><a href="https://dune.network/docs/dune-node-next/love-doc/reference/love.htmlo/">LOVE</a></h3>
<p class="p_index_center">A smart-contract language for the Dune Network blockchain</p>
=======
<div class="col-lg-3">
<h3 align="center"><a href="https://dunscan.io/">DunScan</a> & <a href="https://tzscan.io/">TzScan</a></h3>
<p>Blockchain explorers</p>
</div>
</div>
<div class="row">
<div class="col-lg-3">
<h3 align="center"><a href="https://dune.network/docs/dune-node-next/love-doc/reference/love.htmlo/">LOVE & Liquidity</a></h3>
<p>Smart-contract languages for the Dune Network & Tezos blockchains</p>
>>>>>>> ocp/master
<h3 align="center">
<p><img class="img_products" src="assets/img/logo_love_gimp.png"/></p>
<a href="https://dune.network/docs/dune-node-next/love-doc/reference/love.htmlo/">LOVE & Liquidity</a></h3>
<p class="p_index_center">Smart-contract languages for the Dune Network & Tezos blockchains</p>
</div>
<div class="col-6 col-lg-3">
<p><img class="img_products" src="assets/img/logo_tezos.svg" /></p>
......@@ -104,18 +92,11 @@ We cater to very specific needs. For example, we can translate a “black box”
<h3 align="center"><a href="https://gitlab.com/o-labs/solidity-parser-ocaml">Solidity parser</a></h3>
<p class="p_index_center">A Solidity Parser in OCaml with Menhir</p>
</div>
<<<<<<< HEAD
<div class="col-6 col-lg-3">
<p><img class="img_products" src="assets/img/logo_tzscan_gimp.jpg"/></p>
<h3 align="center"><a href="https://tzscan.io/">TZScan</a></h3>
<p class="p_index_center">The Tezos network explorer</p>
=======
<div class="col-lg-3">
<p><img src="assets/img/optal.png"/></p>
<h3 align="center"><a href="http://optal.ocamlpro.com/">Optal</a></h3>
<p>A language for linear optimisation</p>
<p class="p_index_center">A language for linear optimisation</p>
>>>>>>> ocp/master
</div>
</div>
<br />
......
......@@ -163,13 +163,17 @@ let () =
let title = title content in
Dream.html (render_unsafe ~title ~content ()) )
; Dream.get "/blog/category/:cat" (fun request ->
let content = Blog.given_category (Dream.param "cat" request) in
match Blog.given_category (Dream.param "cat" request) with
| exception Blog.ContentDoesntExistSoPleaseRaiseA404 ->
Dream.empty `Not_Found
| content ->
let title = title content in
Dream.html (render_unsafe ~title ~content ()) )
; Dream.get "/blog/authors/:author" (fun request ->
let content, authors =
Blog.given_author (Dream.param "author" request)
in
match Blog.given_author (Dream.param "author" request) with
| exception Blog.ContentDoesntExistSoPleaseRaiseA404 ->
Dream.empty `Not_Found
| content, authors ->
let title = title content in
Dream.html (render_unsafe ~title ~content ~authors ()) )
; Dream.get "/blog/:title" (fun request ->
......@@ -183,9 +187,10 @@ let () =
in
Dream.html (render_unsafe ~title ~content ~authors ~keywords ()) )
; Dream.get "/blog/tag/:tag" (fun request ->
let content=
Blog.given_tag (Dream.param "tag" request)
in
match Blog.given_tag (Dream.param "tag" request) with
| exception Blog.ContentDoesntExistSoPleaseRaiseA404 ->
Dream.empty `Not_Found
| content ->
let title = title content in
Dream.html (render_unsafe ~title ~content ()) )
; Dream.get "/blog" (fun _request ->
......@@ -213,6 +218,11 @@ let () =
let something = Dream.param "something" request in
let url = Format.sprintf "category/%s/" something in
redirect_loader "" url request)
(* REDIRECTS OLD CATEGORIES FR PAGES WITH TRAILING / *)
; Dream.get "/fr/category/:something/" (fun request ->
let something = Dream.param "something" request in
let url = Format.sprintf "fr/category/%s/" something in
redirect_loader "" url request)
(* REDIRECTS FR STATIC PAGES WITH TRAILING / *)
; Dream.get "/fr/:something/:something_else/" (fun request ->
let something = Dream.param "something" request in
......
......@@ -79,7 +79,7 @@ let old_to_new =
; ("/fr/author/vincent/", "?")
; ("/fr/author/alain/", "/blog/authors/alain_mebsout")
]
(*CATEGORIES*)
(* CATEGORIES EN *)
@ [ ("/category/ocaml-opam-tooling/", "/blog/category/tooling")
; ("/category/alt-ergo/", "/blog/category/formal_methods")
; ("/category/trainings/", "/blog/category/trainings")
......@@ -91,16 +91,29 @@ let old_to_new =
; ("/category/opam/", "/blog/category/tooling")
; ("/category/rust/", "/blog/category/rust")
; ("/category/ocaml/", "/blog/category/ocaml")
]
(* CATEGORIES FR *)
@ [ ("/fr/category/ocaml-opam-tooling-fr/", "/blog/category/tooling")
; ("/fr/category/alt-ergo-fr/", "/blog/category/formal_methods")
; ("/fr/category/formations/", "/blog/category/trainings")
; ("/fr/category/ocamlpro-fr/", "/blog/category/ocamlpro")
; ("/fr/category/blockchains-fr/", "/blog/category/blockchains")
; ("/fr/category/blog-fr/", "")
; ("/fr/category/flambda-fr/", "/blog/category/ocaml")
; ("/fr/category/a-la-une/", "/blog/category/ocamlpro")
; ("/fr/category/opam/", "/blog/category/tooling")
; ("/fr/category/rust/", "/blog/category/rust")
; ("/fr/category/ocaml-fr/", "/blog/category/ocaml")
]
(*TAGS*)
@ []
(* BLOG *)
@ [ ("/blog/", "/blog")
; ("/fr/blog-fr/", "/blog")
@ [ ( "/blog/", "/blog")
; ( "/fr/blog-fr/", "/blog")
; ( "/2011/05/06/ocaml-32bits-longval/"
, "/blog/2011_05_06_ocaml_32bits_longval" )
; ("/2011/06/03/ocaml-cheat-sheets/", "/blog/2011_06_03_ocaml_cheat_sheets")
; ("/2011/06/23/ocaml-and-windows/", "/blog/2011_06_23_ocaml_and_windows")
; ( "/2011/06/03/ocaml-cheat-sheets/", "/blog/2011_06_03_ocaml_cheat_sheets")
; ( "/2011/06/23/ocaml-and-windows/", "/blog/2011_06_23_ocaml_and_windows")
; ( "/2011/08/10/packing-and-functors/"
, "/blog/2011_08_10_packing_and_functors" )
; ( "/2012/08/08/profiling-ocaml-amd64-code-under-linux/"
......@@ -125,7 +138,7 @@ let old_to_new =
, "/blog/2013_07_01_news_from_may_and_june" )
; ( "/2013/07/11/better-inlining-progress-report/"
, "/blog/2013_07_11_better_inlining_progress_report" )
; ("/2013/08/05/news-from-july/", "/blog/2013_08_05_news_from_july")
; ( "/2013/08/05/news-from-july/", "/blog/2013_08_05_news_from_july")
; ( "/2013/09/04/ocamlpro-highlights-august-2013/"
, "/blog/2013_09_04_ocamlpro_highlights_august_2013" )
; ( "/2013/10/02/alt-ergo-ocamlpro-two-months-later/"
......@@ -156,7 +169,7 @@ let old_to_new =
, "/blog/2014_07_16_ocamlpro_highlights_may_june_2014" )
; ( "/2015/05/18/reduced-memory-allocations-with-ocp-memprof/"
, "/blog/2015_05_18_reduced_memory_allocations_with_ocp_memprof." )
; ("/2016/04/01/asm-ocaml/", "/blog/2016_04_01_asm_ocaml")
; ( "/2016/04/01/asm-ocaml/", "/blog/2016_04_01_asm_ocaml")
; ( "/2016/11/21/release-of-alt-ergo-1-30-with-experimental-support-for-models-generation/"
, "/blog/2016_11_21_release_of_alt_ergo_1_30_with_experimental_support_for_models_generation"
)
......@@ -171,14 +184,20 @@ let old_to_new =
, "/blog/2017_05_04_new_opam_features_opam_install_dir" )
; ( "/2017/05/11/new-opam-features-more-expressive-dependencies/"
, "/blog/2017_05_11_new_opam_features_more_expressive_dependencies" )
; ("/2018/01/15/2017-at-ocamlpro/", "/blog/2018_01_15_2017_at_ocamlpro")
; ("/2018/01/15/2017-at-ocamlpro-2/", "/blog/2018_01_15_2017_at_ocamlpro")
; ( "/2018/01/15/2017-at-ocamlpro/", "/blog/2018_01_15_2017_at_ocamlpro")
; ( "/2018/01/15/2017-at-ocamlpro-2/", "/blog/2018_01_15_2017_at_ocamlpro")
; ( "/2018/02/14/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"
)
; ("/fr/2018/02/14/une-premiere-version-de-notre-explorateur-de-blocs-tzscan-io/"
, "/blog/2018_02_14_release_of_a_first_version_of_tzscan_io_a_tezos_block_explorer"
)
; ( "/2018/02/08/liquidity-smart-contract-deploy-live-demo-on-tezos-alphanet-jfla2018/"
, "/blog/2018_02_08_liquidity_smart_contract_deploy_live_demo_on_tezos_alphanet_jfla2018"
)
; ("/fr/2018/02/08/notre-demo-live-de-deploiement-dun-smart-contrat-multisignature-ecrit-en-liquidity-sur-lalphanet-de-tezos-jfla2018/"
, "/blog/2018_02_08_liquidity_smart_contract_deploy_live_demo_on_tezos_alphanet_jfla2018"
)
; ( "/2018/02/08/ocamlpros-liquidity-lang-demo-at-jfla2018-a-smart-contract-design-language/"
, "/blog/2018_02_08_liquidity_smart_contract_deploy_live_demo_on_tezos_alphanet_jfla2018"
)
......@@ -198,6 +217,8 @@ let old_to_new =
, "/blog/2018_07_20_new_updates_on_tzscan_2" )
; ( "/2018/07/20/ocamlpros-tezos-block-explorer-tzscans-last-updates/"
, "/blog/2018_07_20_new_updates_on_tzscan_2" )
; ( "/fr/2018/07/20/ocamlpro-met-a-jour-son-block-explorer-tzscan-pour-tezos/"
, "/blog/2018_07_20_new_updates_on_tzscan_2" )
; ( "/2018/07/26/opam-2-0-0-rc4-final-is-out/"
, "/blog/2018_07_26_opam_2.0.0_rc4_final_is_out" )
; ( "/2018/09/19/opam-2-0-0-release-and-repository-upgrade/"
......@@ -205,38 +226,53 @@ let old_to_new =
; ( "/2018/10/17/ocamlpros-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"
)
; ("/fr/2018/11/01/communique-conjoint-la-fondation-tezos-octroie-une-bourse-tzscan-a-ocamlpro/"
, "/blog/2018_10_17_ocamlpros_tzscan_grant_proposal_accepted_by_the_tezos_foundation_joint_press_release")
; ( "/2018/11/06/liquidity-tutorial-a-game-with-an-oracle-for-random-numbers/"
, "/blog/2018_11_06_liquidity_tutorial_a_game_with_an_oracle_for_random_numbers"
)
; ( "/fr/2018/11/06/tutoriel-liquidity-creer-un-jeu-de-hasard-avec-un-oracle-generant-des-nombres-aleatoires/"
, "/blog/2018_11_06_liquidity_tutorial_a_game_with_an_oracle_for_random_numbers")
; ( "/2018/11/08/first-open-source-release-of-tzscan/"
, "/blog/2018_11_08_first_open_source_release_of_tzscan" )
; ( "/2018/11/15/an-introduction-to-tezos-rpcs-a-basic-wallet/"
, "/blog/2018_11_15_an-introduction_to_tezos_rpcs_a_basic_wallet" )
; ("/fr/2018/11/20/introduction-aux-rpcs-dans-tezos-exemple-dun-portefeuille-wallet-simple/"
, "/blog/2018_11_20_fr_introduction_aux_rpcs_dans_tezos_exemple_dun_portefeuille_wallet_simple")
; ( "/2018/11/21/an-introduction-to-tezos-rpcs-signing-operations/"
, "/blog/2018_11_21_an_introduction_to_tezos_rpcs_signing_operations" )
; ("/2018/12/14/opam-2-0-2-release/", "/blog/2018_12_12_opam_2.0.2_release")
; ( "/2018/12/14/opam-2-0-2-release/", "/blog/2018_12_12_opam_2.0.2_release")
; ( "/2019/01/15/improving-tezos-storage/"
, "/blog/2019_01_15_improving_tezos_storage" )
; ("/2019/01/29/tezos-and-ocamlpro/", "/blog/2019_01_29_tezos_and_ocamlpro")
; ( "/fr/2019/01/21/performances-de-tezos-ameliorations/"
, "/blog/2019_01_15_improving_tezos_storage")
; ( "/2019/01/29/tezos-and-ocamlpro/", "/blog/2019_01_29_tezos_and_ocamlpro")
; ( "/2019/01/30/improving-tezos-storage-update-and-beta-testing/"
, "/blog/2019_01_30_improving_tezos_storage_update_and_beta_testing" )
; ( "/fr/2019/01/31/tezos-et-ocamlpro/", "2019_01_31_fr_tezos_et_ocamlpro")
; ( "/2019/02/04/improving-tezos-storage-gitlab-branch-for-testers/"
, "/blog/2019_02_04_improving_tezos_storage_gitlab_branch_for_testers" )
; ( "/fr/2019/02/04/optimisation-du-stockage-dans-tezos-une-branche-de-test-sur-gitlab/"
, "/blog/2019_02_04_fr_optimisation_du_stockage_dans_tezos_une_branche_de_test_sur_gitlab")
; ( "/2019/02/11/whats-new-for-alt-ergo-in-2018-here-is-a-recap/"
, "/blog/2019_02_11_whats_new_for_alt_ergo_in_2018_here_is_a_recap" )
; ( "/2019/03/05/techelson-a-test-execution-engine-for-michelson/"
, "/blog/2019_03_05_techelson_a_test_execution_engine_for_michelson" )
; ( "/fr/2019/03/05/avenement-de-techelson-moteur-de-tests-pour-michelson-liquidity/"
, "/blog/2019_03_05_fr_release_de_techelson_moteur_de_tests_pour_michelson_et_liquidity")
; ( "/2019/03/05/signing-data-for-smart-contracts/"
, "/blog/2019_03_05_signing_data_for_smart_contracts" )
; ( "/2019/03/08/announcing-liquidity-version-1-0/"
, "/blog/2019_03_08_announcing_liquidity_version_1_0" )
; ( "/2019/03/09/release-liquidity-v1-smart-contracts-language/"
, "/blog/2019_03_09_release_liquidity_v1_smart_contracts_language" )
; ("/2019/04/10/opam-2-0-4-release/", "/blog/2019_04_10_opam_2.0.4_release")
; ( "/2019/04/10/opam-2-0-4-release/", "/blog/2019_04_10_opam_2.0.4_release")
; ( "/2019/04/29/blockchains-at-ocamlpro-an-overview/"
, "/blog/2019_04_29_blockchains_at_ocamlpro_an_overview" )
; ( "/2019/07/09/alt-ergo-participation-to-the-smt-comp-2019/"
, "/blog/2019_07_09_alt_ergo_participation_to_the_smt_comp_2019" )
; ( "/fr/2019/07/10/resultats-de-la-smt-comp-2019-pour-alt-ergo/"
, "/blog/2019_07_10_fr_résultats_de_la_smt_comp_2019_pour_alt_ergo")
; ("/2019/07/11/opam-2-0-5-release/", "/blog/2019_07_11_opam_2.0.5_release")
; ( "/2019/08/30/ocamlpros-compiler-team-work-update/"
, "/blog/2019_08_30_ocamlpros_compiler_team_work_update" )
......@@ -249,8 +285,8 @@ let old_to_new =
)
; ( "/2020/01/10/opam-2-0-cheatsheet/"
, "/blog/2020_01_10_opam_2.0_cheat_sheet" )
; ("/2020/01/16/opam-2-0-6-release/", "/blog/2020_01_16_opam_2.0.6_release")
; ("/2020/02/04/2019-at-ocamlpro/", "/blog/2020_02_04_2019_at_ocamlpro")
; ( "/2020/01/16/opam-2-0-6-release/", "/blog/2020_01_16_opam_2.0.6_release")
; ( "/2020/02/04/2019-at-ocamlpro/", "/blog/2020_02_04_2019_at_ocamlpro")
; ( "/2020/03/03/alt-ergo-userss-club-annual-meeting/"
, "/blog/2020_03_03_reunion_annuelle_du_club_des_utilisateurs_dalt_ergo"
)
......@@ -263,7 +299,7 @@ let old_to_new =
, "/blog/2020_04_21_opam_2.1.0_alpha_is_here" )
; ( "/2020/05/19/ocaml-solidity-parser-with-menhir/"
, "/blog/2020_05_19_ocaml_solidity_parser_with_menhir" )
; ("/fr/2020/06/01/tutoriel-format/", "/blog/2020_06_01_tutoriel_format")
; ( "/fr/2020/06/01/tutoriel-format/", "/blog/2020_06_01_tutoriel_format")
; ( "/2020/06/05/interview-sylvain-conchon-joins-ocamlpro/"
, "/blog/2020_06_05_interview_sylvain_conchon_joins_ocamlpro" )
; ( "/fr/2020/06/05/interview-sylvain-conchon-rejoint-ocamlpro/"
......@@ -280,9 +316,9 @@ let old_to_new =
, "/blog/2020_12_01_memthol_exploring_program_profiling" )
; ( "/2021/01/22/release-of-alt-ergo-2-4-0/"
, "/blog/2021_01_22_release_of_alt_ergo_2_4_0" )
; ("/2021/02/02/2020-at-ocamlpro/", "/blog/2021_02_02_2020_at_ocamlpro")
; ("/2021/02/09/opam-2-0-8-release/", "/blog/2021_02_08_opam_2.0.8_release")
; ("/2021/03/29/new-try-alt-ergo/", "/blog/2021_03_29_new_try_alt_ergo")
; ( "/2021/02/02/2020-at-ocamlpro/", "/blog/2021_02_02_2020_at_ocamlpro")
; ( "/2021/02/09/opam-2-0-8-release/", "/blog/2021_02_08_opam_2.0.8_release")
; ( "/2021/03/29/new-try-alt-ergo/", "/blog/2021_03_29_new_try_alt_ergo")
; ( "/2021/04/29/alt-ergo-users-club-annual-meeting-2021/"
, "/blog/2021_04_29_reunion_annuelle_du_club_des_utilisateurs_dalt_ergo_2021"
)
......@@ -290,12 +326,16 @@ let old_to_new =
, "/blog/2021_05_06_tutorial_format_module_of_ocaml" )
; ( "/2021/07/16/detecting-identity-functions-in-flambda/"
, "/blog/2021_07_16_detecting_identity_functions_in_flambda" )
; ( "/fr/2021/07/15/detection-de-fonctions-didentite-dans-flambda/"
, "/blog/2021_07_15_fr_detection_de_fonctions_didentite_dans_flambda." )
; ("/2021/08/05/opam-2-0-9-release/", "/blog/2021_08_03_opam_2.0.9_release")
; ( "/2021/08/05/opam-2-1-0-is-released/"
, "/blog/2021_08_04_opam_2.1.0_is_released" )
; ( "/2021/09/02/generating-static-and-portable-executables-with-ocaml/"
, "/blog/2021_09_02_generating_static_and_portable_executables_with_ocaml"
)
; ("/2021/10/14/verification-for-dummies-smt-and-induction/"
, "/blog/2021_10_14_verification_for_dummies_smt_and_induction")
]
@
(* FILES *)
......
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