Skip to content

Commit

Permalink
[scrape.yml] New OCaml Planet blog posts and videos (#2745)
Browse files Browse the repository at this point in the history
Co-authored-by: cuihtlauac <[email protected]>
  • Loading branch information
github-actions[bot] and cuihtlauac authored Oct 4, 2024
1 parent 8c0c109 commit f3af5ce
Show file tree
Hide file tree
Showing 3 changed files with 301 additions and 0 deletions.
12 changes: 12 additions & 0 deletions data/planet/frama-c/metacsl-v07-for-frama-c-290-copper.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
title: MetAcsl v0.7 for Frama-C 29.0~ Copper
description:
url: https://frama-c.com/fc-plugins/metacsl.html
date: 2024-10-03T00:00:00-00:00
preview_image:
authors:
- Frama-C
source:
---


246 changes: 246 additions & 0 deletions data/planet/ocamlpro/alt-ergo-26-is-out.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,246 @@
---
title: Alt-Ergo 2.6 is Out!
description: We are excited to announce the release of Alt-Ergo 2.6! Alt-Ergo is an
open-source automated prover used for formal verification in software development.
It is part of the arsenal behind static analysis frameworks such as TrustInSoft
Analyzer and Frama-C, and is one of the solvers behind Why3, a pla...
url: https://ocamlpro.com/blog/2024_09_01_alt_ergo_2_6_0_released
date: 2024-09-30T13:48:57-00:00
preview_image: https://ocamlpro.com/blog/assets/img/alt-ergo-8-colors.png
authors:
- "\n Basile Cl\xE9ment\n "
source:
---

<p></p>
<p>
</p><div class="figure">
<p>
<a href="https://ocamlpro.com/blog/assets/img/alt-ergo-8-colors-blank-bg.png">
<img src="https://ocamlpro.com/blog/assets/img/alt-ergo-8-colors-blank-bg.png" alt="The Alt-Ergo 2.6 release comes with many enhancements!">
</a>
</p><div class="caption">
The Alt-Ergo 2.6 release comes with many enhancements!
</div>
<p></p>
</div>
<p></p>
<p><strong>We are excited to announce the release of Alt-Ergo 2.6!</strong></p>
<p>Alt-Ergo is an open-source automated prover used for formal verification in
software development. It is part of the arsenal behind static analysis
frameworks such as TrustInSoft Analyzer and Frama-C, and is one of the
solvers behind Why3, a platform for deductive program verification. The newly
released version 2.6 brings new features and performance improvements.</p>
<p>Development on Alt-Ergo has accelerated significantly this past year, thanks to
the launch of the <a href="https://decysif.fr/en/">DéCySif</a> joint research project (i-Démo)
with AdaCore, Inria, OCamlPro and TrustInSoft. The improvements to bit-vectors
and algebraic data types in this release are sponsored by the Décysif project.</p>
<p>The highlights of Alt-Ergo 2.6 are:</p>
<ul>
<li>Support for reasoning and model generation with bit-vectors
</li>
<li>Model generation for algebraic data types
</li>
<li>Optimization with <code>(maximize)</code> and <code>(minimize)</code>
</li>
<li>FPA support is enabled by default and available in SMT-LIB format
</li>
<li>Binary releases now on GitHub
</li>
</ul>
<p>Alt-Ergo 2.6 also includes other improvements to the user interface (notably
the <code>set-option</code> SMT-LIB command), use of Dolmen as the default frontend for
SMT-LIB and native input, and many bug fixes.</p>
<h3>Bit-vectors</h3>
<p>In Alt-Ergo 2.5, we introduced built-in functions for the bit-vector
primitives from the SMT-LIB standard, but only provided limited reasoning
support. For Alt-Ergo 2.6, we set out to improve this reasoning support, and
have developed a new and improved relational theory for bit-vectors. This new
theory is based on an also new constraint propagation core that draws heavily
on the architecture of the Colibri solver (as in <a href="https://cea.hal.science/cea-01795779">Sharpening Constraint
Programming approaches for Bit-Vector Theory</a>), integrated into Alt-Ergo's
existing normalizing Shostak solver.</p>
<p>Bit-vectors are commonly used in verification of low-level code and in
cryptography, so improved support significantly enhances Alt-Ergo’s
applicability in these domains.</p>
<p>There are still areas of improvements, so please share any issue you encounter
with the bit-vector theory (or Alt-Ergo in general) via our
<a href="https://github.com/ocamlpro/alt-ergo/issues">issue tracker</a>.</p>
<p>To showcase improvements in Alt-Ergo 2.6, we compared it against the version
2.5 and industry-leading solvers Z3 and CVC5 on a dataset of bit-vector
problems collected from our partners in the DéCySif project. The (no BV)
variants for Alt-Ergo do not use the new bit-vector theory but instead an
axiomatization of bit-vector primitives provided by Why3. The percentages
represent the proportion of bit-vector problems solved successfully in each
configuration.</p>
<table class="table">
<thead>
<tr class="table-light text-center">
<th scope="col"></th>
<th scope="col" colspan="2">AE 2.5</th>
<th scope="col" colspan="2">AE 2.6</th>
<th scope="col">Z3 (4.12.5)</th>
<th scope="col">CVC5 (1.1.2)</th>
<th scope="col">Total</th>
</tr>
<tr>
<th scope="row"></th>
<td>(BV)</td>
<td>(no BV)</td>
<td>(BV)</td>
<td>(no BV)</td>
<td></td>
<td></td>
<td></td>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">#</th>
<td>4128</td>
<td>4870</td>
<td>6265</td>
<td>4940</td>
<td>5482</td>
<td>7415</td>
<td>9038</td>
</tr>
<tr>
<th scope="row">%</th>
<td>46%</td>
<td>54%</td>
<td>69%</td>
<td>54%</td>
<td>61%</td>
<td>82%</td>
<td>100%</td>
</tr>
</tbody>
</table>
<p>As the table shows, Alt-Ergo 2.6 significantly outperforms version 2.5, and the
new built-in bit-vector theory outperforms Why3's axiomatization. We even
surpass Z3 on this benchmark, a testament to the new bit-vector theory in
Alt-Ergo 2.6.</p>
<h3>Model Generation</h3>
<p>Bit-vector is not the only theory Alt-Ergo 2.6 improves upon. Model generation
was introduced in Alt-Ergo 2.5 with support for booleans, integers, reals,
arrays, enumerated types, and records. Alt-Ergo 2.6 extends this support to
bit-vector and arbitrary algebraic data types, which means that model
generation is now enabled for all the theories supported by Alt-Ergo.</p>
<p>Model generation allows users to extract concrete examples or counterexamples,
aiding in debugging and verification of their systems.</p>
<p>Model generation is also more robust in Alt-Ergo 2.6, with numerous bug fixes
and improvements for edge cases.</p>
<h3>Optimization</h3>
<p>Alt-Ergo 2.6 introduces optimization capabilities, available via SMT-LIB input
using OptiSMT primitives such as <code>(minimize)</code> and <code>(maximize)</code> and compatible
with Z3 and OptiMathSat. Optimization allows guiding the solver towards simpler
and smaller counterexamples, helping users find more concrete and realistic
scenarios to trigger a bug.</p>
<p>See some
<a href="https://ocamlpro.github.io/alt-ergo/latest/Optimization.html">examples</a> in the
documentation.</p>
<h3>SMT-LIB command support</h3>
<p>Alt-Ergo 2.6 supports more SMT-LIB syntax and commands, such as:</p>
<ul>
<li>The <code>(get-info :all-statistics)</code> command to obtain information about the
solver's statistics
</li>
<li>The <code>(reset)</code>, <code>(exit)</code> and <code>(echo)</code> commands
</li>
<li>The <code>(get-assignment)</code> command, as well as the <code>:named</code> attribute and
<code>:produce-assignments</code> option
</li>
</ul>
<p>See the <a href="https://smt-lib.org">SMT-LIB standard</a> for more details about these
commands.</p>
<h3>Floating-point theory</h3>
<p>In this release, we have made Alt-Ergo's <a href="https://ocamlpro.github.io/alt-ergo/next/Alt_ergo_native/05_theories.html#floating-point-arithmetic">floating-point
theory</a>
enabled by default: there is no need to provide the <code>--enable-theories fpa</code>
flag anymore. The theory can be disabled with <code>--disable-theories fpa,nra,ria</code>
(the <code>nra</code> and <code>ria</code> theories were automatically enabled along with the <code>fpa</code>
theory in Alt-Ergo 2.5).</p>
<p>We have also made the floating-point primitives available in the SMT-LIB
format as the indexed constant <code>ae.round</code> and the convenience <code>ae.float16</code>,
<code>ae.float32</code>, <code>ae.float64</code> and <code>ae.float128</code> functions; see the
<a href="https://ocamlpro.github.io/alt-ergo/v2.6.0/SMT-LIB_language/index.html#floating-point-arithmetic">documentation</a>.</p>
<h3>Dolmen is the new default frontend</h3>
<p>Introduced in Alt-Ergo 2.5, the Dolmen frontend has been rigorously tested for
regressions and is now the default for both <code>.smt2</code> and <code>.ae</code> files; the
<code>--frontend dolmen</code> flag that was introduced in Alt-Ergo 2.5 is no longer
necessary.</p>
<p>The Dolmen frontend is based on the <a href="https://github.com/gbury/dolmen">Dolmen</a>
library developed by Guillaume Bury at OCamlPro. It provides excellent support
for the SMT-LIB standard and is used to check validity of all new problems in
the SMT-LIB benchmark collection, as well as the results of the annual SMT-LIB
affiliated solver competition SMT-COMP.</p>
<p>The preferred input format for Alt-Ergo is now the SMT-LIB format. The legacy
<code>.ae</code> format is still supported, but is now deprecated and users are
encouraged to migrate to the SMT-LIB format if possible. Please <a href="mailto:[email protected]">reach
out</a> if you find any issue while migrating to
the SMT-LIB format.</p>
<p>As we announced when releasing Alt-Ergo 2.5, the legacy frontend (supports
<code>.ae</code> files only) is deprecated in Alt-Ergo 2.6, but it can still be
enabled with the <code>--frontend legacy</code> option. It will be removed entirely from
Alt-Ergo 2.7.</p>
<p>Parser extensions, such as the built-in AB-Why3 plugin, only work with the
legacy frontend, and will no longer work with Alt-Ergo 2.7. We are not
aware of any current users of either parser extensions or the AB-Why3 plugin:
if you need these features, please reach out to us on
<a href="https://github.com/ocamlpro/alt-ergo/issues">GitHub</a> or by
<a href="mailto:[email protected]">email</a> so that we can figure out a path
forward.</p>
<h3>Use of <code>dune-site</code> for plugins</h3>
<p>Starting with Alt-Ergo 2.6, we are using the plugin mechanism from
<code>dune-site</code> to replace the custom plugin loading <code>Dynlink</code>. Plugins now need
to be registered in the <code>(alt-ergo plugins)</code> site with the
<a href="https://dune.readthedocs.io/en/stable/reference/dune/plugin.html"><code>plugin</code> stanza</a>.</p>
<p>This does not impact users, but only impacts developers of Alt-Ergo plugins. See the
<a href="https://github.com/OCamlPro/alt-ergo/blob/next/src/plugins/fm-simplex/dune">dune file</a>
for Alt-Ergo's built-in FM-Simplex plugin for reference.</p>
<h3>Binary releases on GitHub</h3>
<p>Starting with Alt-Ergo 2.6, we will be providing binary releases on the
<a href="https://github.com/ocamlpro/alt-ergo/releases">GitHub Releases</a> page for
Linux (x86_64) and macOS (x86_64 and arm). These are released under the
same <a href="https://ocamlpro.github.io/alt-ergo/latest/About/licenses/index.html">licensing conditions</a> as the Alt-Ergo source code.</p>
<p>The binary releases are statically linked and have no dependencies, except
for system dependencies on macOS. They do not support dynamically loading
plugins.</p>
<h3>Performance</h3>
<p>For Alt-Ergo 2.6, our main focus of improvement in term of reasoning was on
bit-vectors and algebraic data types. Other theories also benefit from
broader performance improvements we made. On our internal
problem dataset, Alt-Ergo 2.6 is about 5% faster than Alt-Ergo 2.5 on the goals
they both prove.</p>
<h3>And more!</h3>
<p>This release also includes significant internal refactoring, notably
a rewrite from scratch of the interval domain. This improves the
accuracy of Alt-Ergo in handling interval arithmetic and facilitates mixed
operations involving integers and bit-vectors, resulting in shorter and more
reliable proofs.</p>
<p>See the complete changelog
<a href="https://ocamlpro.github.io/alt-ergo/v2.6.0/About/changes.html">here</a>.</p>
<p>We encourage you to try out Alt-Ergo 2.6 and share your experience or any
feedback on our <a href="https://github.com/OCamlPro/Alt-Ergo">GitHub</a> or by email at
<a href="mailto:[email protected]">[email protected]</a>. Your input will help
share future releases!</p>
<h3>Acknowledgements</h3>
<p>We thank the <a href="https://alt-ergo.ocamlpro.com/#club">Alt-Ergo Users' Club</a> members: AdaCore, the CEA, Thales,
Mitsubishi Electric R&amp;D Center Europe (MERCE) and TrustInSoft.</p>
<p>Special thanks to David Mentré and Denis Cousineau at MERCE for funding the
initial optimization work. MERCE has been a Member of the Alt-Ergo Users'
Club for four years. This partnership allowed Alt-Ergo to evolve and we hope
that more users will join the Club on our journey to make Alt-Ergo a must-have
tool.</p>
<div class="figure">
<div class="card-light blog-logos">
<img src="https://ocamlpro.com/assets/img/logo_adacore.svg" alt="AdaCore logo">
<img src="https://ocamlpro.com/blog/assets/img/cealist.png" alt="CEA list logo">
<img src="https://ocamlpro.com/assets/img/logo_thales.svg" alt="Thales logo" style="height: 24px;">
<img src="https://ocamlpro.com/assets/img/logo_merce.png" alt="Mitsubishi Electric logo">
<img src="https://ocamlpro.com/assets/img/logo_trustinsoft.svg" alt="TrustInSoft logo" style="height: 32px;">
</div>
<div class="caption">The dedicated members of our Alt-Ergo Club!</div>
</div>

Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
title: 'Introducing the Dune Developer Preview: A New Era for OCaml Development'
description: The Dune team is excited to announce the arrival of Dune Developer Preview,
a major milestone for OCaml development! We've been working hard improving
url: https://tarides.com/blog/2024-10-03-introducing-the-dune-developer-preview-a-new-era-for-ocaml-development
date: 2024-10-03T00:00:00-00:00
preview_image: https://tarides.com/blog/images/DDP-1360w~-GCJN60jJAv_blMzGyH5XQ.webp
authors:
- Tarides
source:
---

<p>The Dune team is excited to announce the arrival of <a href="https://discuss.ocaml.org/t/ann-dune-developer-preview-updates/15160/7">Dune Developer Preview</a>, a major milestone for OCaml development! We've been working hard improving Dune, and we're excited to introduce this new way to ease OCaml workflows. If you are an OCaml developer, this is the time to explore the future of package management and development yourself.</p>
<h3>Why the Wait?</h3>
<p>Our progress has been slower than anticipated because the Dune project is a complex endeavour. We’re committed to balancing support for existing OCaml users while introducing new workflows. While opam remains the stable workflow and isn't going away, a key difference is that the Dune Developer Preview showcases experimental workflows. We believe, once fully ready, this will be transformative for the community. Meanwhile, we continue to maintain opam and its infrastructure, ensuring the OCaml ecosystem remains robust, with recent updates like opam 2.2 bringing proper Windows support.</p>
<h3>Why the Change?</h3>
<p>We have listened over time to your feedback and learned that while functional, the existing tooling around OCaml can be quite cumbersome. Our mission is to make OCaml development easier, faster and more enjoyable, and Dune is now about to become that all-in-one tool which does just that. This separation will allow Dune to cut down on the complexity and make its development process much lighter.</p>
<p>The Developer Preview gives a sneak peek into these improvements and provides an opportunity for developers to get their hands on these tools before the official release.</p>
<h3>What's New in Dune?</h3>
<p>The Dune Developer Preview introduces several major changes in how OCaml developers will work. Probably the most notable change is that it includes package management right within Dune itself. No more juggling with multiple tools; Dune does it all in one go.</p>
<p>Accordingly, the new Dune comes as a binary. That means it no longer requires the usage of opam to install it. You can simply just install Dune within minutes, and you'll be off to a flying start. That gives you so much more time for actual development.</p>
<h3>Drawing Inspiration from the Best</h3>
<p>Throughout this process, we've drawn inspiration from other successful ecosystems. We learned from Rust, Go, and Erlang the power of letting developers test and provide feedback on a pre-general release, and we are doing the same with Dune: giving the OCaml community a chance to have their say in shaping up the final form of this tool. Your input will be invaluable in refining Dune and ensuring it meets your needs.</p>
<h3>Join the Beta</h3>
<p>We are looking for developers to participate in the Dune Developer Preview. Experienced developers can help us put the latest features of Dune through their paces so that we can fine-tune the workflow to be smooth and intuitive across a range of projects. Those new to OCaml can test the workflow from their perspective of working in other ecosystems. Whether you have been using OCaml for years or are new to the OCaml ecosystem, your input is crucial in helping us make Dune the recommended tool for OCaml development.</p>
<p>To become a beta tester, one only needs to download the <a href="https://preview.dune.build/">Dune Developer Preview</a>. You will get the very latest version and immediately start playing with the new workflows and package management features. Your feedback will help to further shape the future of OCaml tooling, and we want to hear your thoughts on everything from usability to performance enhancements.</p>
<h3>Measuring Success</h3>
<p>Our goal is clear: use OCaml with as little ceremony as possible, so we set a few key benchmarks to make that happen. First: via Dune, the user should be able to fire up a new project in less than 10 seconds with no extra tooling required. This level of speed makes all the difference during everyday hacking.</p>
<p>We also monitor general developer satisfaction with the new Dune workflows. For the Net Promoter Score, we will know how likely a user is to recommend Dune to other users. Our objective is to reach +80, which shows great approval and satisfaction within the community.</p>
<h3>What's Next?</h3>
<p>This is only the beginning of the Dune Developer Preview. We will regularly update and enhance it based on feedback from beta testers. This includes polishing the new Dune Toolchain feature in order to automatically manage OCaml versions and development tools, and exploring new distribution channels in order for Dune to be even easier to download and use.</p>
<p>This is huge for OCaml, and we are excited to have you along for the ride. Why wait? Download the <a href="https://preview.dune.build/">Dune Developer Preview</a> today, and give some of the new workflows a try before letting us know what you think. With your help, we can make Dune the go-to tool for all OCaml development.</p>
<p>We can't wait to hear from you — and happy coding!</p>
<blockquote>
<p>At Tarides, our commitment to open source drives everything we do. We prioritise fostering the OCaml community and <a href="https://github.com/sponsors/tarides">advancing the development of the OCaml language</a>. We enjoy collaborating with industry partners and developers to continually enhance OCaml's performance and capabilities.</p>
</blockquote>
<blockquote>
<p>Tarides is also ready to explore commercial opportunities related to OCaml. Whether you need training, support, or custom development, we can help you adopt OCaml 5 more effectively. Please <a href="https://tarides.com/contact/">contact us</a> to discuss how we can assist you.</p>
</blockquote>
<blockquote>
<p>Become a part of the OCaml community, explore the language, and contribute to its growth.</p>
</blockquote>

0 comments on commit f3af5ce

Please sign in to comment.