From f88ce312327e7663589bf34876c649386cd87596 Mon Sep 17 00:00:00 2001
From: Frama-CI Bot <frama-ci-bot@frama-c.com>
Date: Thu, 26 Oct 2023 16:02:03 +0000
Subject: [PATCH] [release] prepare 28.0~beta-nickel

On behalf of "Andre Maroneze" <andre.maroneze@cea.fr> (@maroneze)
---
 _events/framac-28.0-beta.md                   |  35 ++
 _fc-versions/nickel.md                        |  44 ++
 download/acsl-1.20.pdf                        |   3 +
 .../acsl-implementation-28.0-beta-Nickel.pdf  |   3 +
 .../aorai-example-28.0-beta-Nickel.tar.gz     |   3 +
 download/aorai-manual-28.0-beta-Nickel.pdf    |   3 +
 download/e-acsl/e-acsl-1.19.pdf               |   4 +-
 ...e-acsl-implementation-28.0-beta-Nickel.pdf |   3 +
 .../e-acsl/e-acsl-manual-28.0-beta-Nickel.pdf |   3 +
 download/eva-manual-28.0-beta-Nickel.pdf      |   3 +
 download/frama-c-28.0-beta-Nickel-api.tar.gz  |   3 +
 download/frama-c-28.0-beta-Nickel.tar.gz      |   3 +
 ...frama-c-server-28.0-beta-Nickel-api.tar.gz |   3 +
 download/hello-28.0-beta-Nickel.tar.gz        |   3 +
 download/metrics-manual-28.0-beta-Nickel.pdf  |   3 +
 ...gin-development-guide-28.0-beta-Nickel.pdf |   3 +
 download/rte-manual-28.0-beta-Nickel.pdf      |   3 +
 download/user-manual-28.0-beta-Nickel.pdf     |   3 +
 download/wp-manual-28.0-beta-Nickel.pdf       |   3 +
 html/installations/nickel.md                  | 532 ++++++++++++++++++
 20 files changed, 661 insertions(+), 2 deletions(-)
 create mode 100644 _events/framac-28.0-beta.md
 create mode 100644 _fc-versions/nickel.md
 create mode 100644 download/acsl-1.20.pdf
 create mode 100644 download/acsl-implementation-28.0-beta-Nickel.pdf
 create mode 100644 download/aorai-example-28.0-beta-Nickel.tar.gz
 create mode 100644 download/aorai-manual-28.0-beta-Nickel.pdf
 create mode 100644 download/e-acsl/e-acsl-implementation-28.0-beta-Nickel.pdf
 create mode 100644 download/e-acsl/e-acsl-manual-28.0-beta-Nickel.pdf
 create mode 100644 download/eva-manual-28.0-beta-Nickel.pdf
 create mode 100644 download/frama-c-28.0-beta-Nickel-api.tar.gz
 create mode 100644 download/frama-c-28.0-beta-Nickel.tar.gz
 create mode 100644 download/frama-c-server-28.0-beta-Nickel-api.tar.gz
 create mode 100644 download/hello-28.0-beta-Nickel.tar.gz
 create mode 100644 download/metrics-manual-28.0-beta-Nickel.pdf
 create mode 100644 download/plugin-development-guide-28.0-beta-Nickel.pdf
 create mode 100644 download/rte-manual-28.0-beta-Nickel.pdf
 create mode 100644 download/user-manual-28.0-beta-Nickel.pdf
 create mode 100644 download/wp-manual-28.0-beta-Nickel.pdf
 create mode 100644 html/installations/nickel.md

diff --git a/_events/framac-28.0-beta.md b/_events/framac-28.0-beta.md
new file mode 100644
index 00000000..5a15d7a0
--- /dev/null
+++ b/_events/framac-28.0-beta.md
@@ -0,0 +1,35 @@
+---
+layout: default
+date: "26-10-2023"
+short_title: Frama-C 28.0~beta (Nickel)
+title: Beta release of Frama-C 28.0~beta (Nickel)
+link: /fc-versions/nickel.html
+---
+
+Frama-C 28.0~beta (Nickel) is out. Download it [here](/fc-versions/nickel.html).
+
+Main changes with respect to Frama-C 27.0 (Cobalt) include:
+
+#### Kernel
+- Frama-C can now generate more default clauses (in particular terminates and exits)
+- Removed deprecated options `-no-type` and `-no-obj`
+
+#### Alias
+- New plugin Alias, implements a points-to analysis
+
+#### E-ACSL
+- More efficient code arithmetic calculations
+
+#### Eva
+- Support for simple `\let` bindings
+- Removed deprecated Db.Value API
+- Fixed unsoundness about initialization with goto and switch
+
+#### WP
+- New ACSL extensions for defining automatic proof strategies
+- WP generates default exits and terminates, removed old options `-wp-*-terminate`
+- Fixed cache for interactive provers
+
+#### Ivette
+- Basic component for WP
+- Many bug fixes
diff --git a/_fc-versions/nickel.md b/_fc-versions/nickel.md
new file mode 100644
index 00000000..788b9abc
--- /dev/null
+++ b/_fc-versions/nickel.md
@@ -0,0 +1,44 @@
+---
+layout: version
+number: 28
+name: Nickel
+beta: true
+releases:
+- number: 0
+  categories:
+  - name: Frama-C v28.0~beta Nickel
+    files:
+    - name: Source distribution
+      link: /download/frama-c-28.0-beta-Nickel.tar.gz
+      help: Compilation instructions
+      help_link: /html/installations/nickel.html
+    - name: User manual
+      link: /download/user-manual-28.0-beta-Nickel.pdf
+    - name: Plug-in development guide
+      link: /download/plugin-development-guide-28.0-beta-Nickel.pdf
+      help: Hello plug-in tutorial archive
+      help_link: /download/hello-28.0-beta-Nickel.tar.gz
+    - name: API Documentation
+      link: /download/frama-c-28.0-beta-Nickel-api.tar.gz
+    - name: Server API Documentation
+      link: /download/frama-c-server-28.0-beta-Nickel-api.tar.gz
+    - name: ACSL 1.20 (Nickel implementation)
+      link: /download/acsl-implementation-28.0-beta-Nickel.pdf
+  - name: Plug-in Manuals
+    sort: true
+    files:
+    - name: Aoraï manual
+      link: /download/aorai-manual-28.0-beta-Nickel.pdf
+      help: Aoraï example
+      help_link: /download/aorai-example-28.0-beta-Nickel.tar.gz
+    - name: Metrics manual
+      link: /download/metrics-manual-28.0-beta-Nickel.pdf
+    - name: Rte manual
+      link: /download/rte-manual-28.0-beta-Nickel.pdf
+    - name: Eva manual
+      link: /download/eva-manual-28.0-beta-Nickel.pdf
+    - name: WP manual
+      link: /download/wp-manual-28.0-beta-Nickel.pdf
+    - name: E-ACSL manual
+      link: /download/e-acsl/e-acsl-manual-28.0-beta-Nickel.pdf
+---
diff --git a/download/acsl-1.20.pdf b/download/acsl-1.20.pdf
new file mode 100644
index 00000000..26407a8c
--- /dev/null
+++ b/download/acsl-1.20.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:40a81f744d0e8e42733b115e5948ce2ac831a2b3dcc813a27f2924db7d2664a6
+size 2028114
diff --git a/download/acsl-implementation-28.0-beta-Nickel.pdf b/download/acsl-implementation-28.0-beta-Nickel.pdf
new file mode 100644
index 00000000..a16d2538
--- /dev/null
+++ b/download/acsl-implementation-28.0-beta-Nickel.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b44807df706a759d4eeb0e252662aee46c890c2e6d2f4a7dc6cdd95120d65036
+size 2033183
diff --git a/download/aorai-example-28.0-beta-Nickel.tar.gz b/download/aorai-example-28.0-beta-Nickel.tar.gz
new file mode 100644
index 00000000..3c80cda1
--- /dev/null
+++ b/download/aorai-example-28.0-beta-Nickel.tar.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a1d7e40ab249a649263267df43d16237bb7ba0176f15d842adf9d99ef66aa126
+size 1279
diff --git a/download/aorai-manual-28.0-beta-Nickel.pdf b/download/aorai-manual-28.0-beta-Nickel.pdf
new file mode 100644
index 00000000..654e2996
--- /dev/null
+++ b/download/aorai-manual-28.0-beta-Nickel.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0cc5bf36fbd7a0ce6d9b7a218a425b71f506cce8e8365317f839ba11e03d02f3
+size 1332704
diff --git a/download/e-acsl/e-acsl-1.19.pdf b/download/e-acsl/e-acsl-1.19.pdf
index 1945b2af..1ce05ef5 100644
--- a/download/e-acsl/e-acsl-1.19.pdf
+++ b/download/e-acsl/e-acsl-1.19.pdf
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:d2ebf58199a2d20d1c9947249ca4540367702e6c9868946005eb9fb01b22a4a4
-size 1271968
+oid sha256:18e5ffb49173b01ca466f3c96a92495006bb0abf7c7ddb706667b59f7517b54e
+size 1271965
diff --git a/download/e-acsl/e-acsl-implementation-28.0-beta-Nickel.pdf b/download/e-acsl/e-acsl-implementation-28.0-beta-Nickel.pdf
new file mode 100644
index 00000000..1c388fc6
--- /dev/null
+++ b/download/e-acsl/e-acsl-implementation-28.0-beta-Nickel.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8f3bf8402f420eb53651c4023e782de64e23c1ea9651d7ebbaaa61a0c374313f
+size 1329753
diff --git a/download/e-acsl/e-acsl-manual-28.0-beta-Nickel.pdf b/download/e-acsl/e-acsl-manual-28.0-beta-Nickel.pdf
new file mode 100644
index 00000000..ef99dc4d
--- /dev/null
+++ b/download/e-acsl/e-acsl-manual-28.0-beta-Nickel.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bc3880f07bb58153bd9c975e098a517441796f14c27a549439cea931c5fa1133
+size 1370303
diff --git a/download/eva-manual-28.0-beta-Nickel.pdf b/download/eva-manual-28.0-beta-Nickel.pdf
new file mode 100644
index 00000000..b1cdc189
--- /dev/null
+++ b/download/eva-manual-28.0-beta-Nickel.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1b4decbefc2910297e749a11822616039bbe82d79e06fd468da8d88c789e6610
+size 2555774
diff --git a/download/frama-c-28.0-beta-Nickel-api.tar.gz b/download/frama-c-28.0-beta-Nickel-api.tar.gz
new file mode 100644
index 00000000..b37be516
--- /dev/null
+++ b/download/frama-c-28.0-beta-Nickel-api.tar.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8f830c20845f2d7ddef4cf951a2b8bc71dbfb810ebb96c72982ec421412905fd
+size 4694850
diff --git a/download/frama-c-28.0-beta-Nickel.tar.gz b/download/frama-c-28.0-beta-Nickel.tar.gz
new file mode 100644
index 00000000..ec7acad7
--- /dev/null
+++ b/download/frama-c-28.0-beta-Nickel.tar.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0c80dae8074fcb3f6a33d7a41faf9939a2a336478a8d2c79e20e2d7bab953735
+size 8068829
diff --git a/download/frama-c-server-28.0-beta-Nickel-api.tar.gz b/download/frama-c-server-28.0-beta-Nickel-api.tar.gz
new file mode 100644
index 00000000..c4e55681
--- /dev/null
+++ b/download/frama-c-server-28.0-beta-Nickel-api.tar.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d30e2f6f109103daaa7e29fea5047dd166f58e81b330af39933f8690488f9510
+size 40635
diff --git a/download/hello-28.0-beta-Nickel.tar.gz b/download/hello-28.0-beta-Nickel.tar.gz
new file mode 100644
index 00000000..1ef1ca4c
--- /dev/null
+++ b/download/hello-28.0-beta-Nickel.tar.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec
+size 20
diff --git a/download/metrics-manual-28.0-beta-Nickel.pdf b/download/metrics-manual-28.0-beta-Nickel.pdf
new file mode 100644
index 00000000..4f9e5115
--- /dev/null
+++ b/download/metrics-manual-28.0-beta-Nickel.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e42ec8302275a3c91924dbde5f0e810f48b81e09972773eddc13ccdcd7067c34
+size 1394593
diff --git a/download/plugin-development-guide-28.0-beta-Nickel.pdf b/download/plugin-development-guide-28.0-beta-Nickel.pdf
new file mode 100644
index 00000000..db24e809
--- /dev/null
+++ b/download/plugin-development-guide-28.0-beta-Nickel.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:123d8d2bbd878c198c7ac82e128c4e236c4b28de89e483193618a7698ac08768
+size 1973005
diff --git a/download/rte-manual-28.0-beta-Nickel.pdf b/download/rte-manual-28.0-beta-Nickel.pdf
new file mode 100644
index 00000000..4a5b04a4
--- /dev/null
+++ b/download/rte-manual-28.0-beta-Nickel.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d08a2026ffc324aae0288dbd413e0caec08672bf4fa2d04fa7f054122fab649d
+size 1285296
diff --git a/download/user-manual-28.0-beta-Nickel.pdf b/download/user-manual-28.0-beta-Nickel.pdf
new file mode 100644
index 00000000..c8933d7c
--- /dev/null
+++ b/download/user-manual-28.0-beta-Nickel.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b07176a2b2247602e8f2ca648466b286b357da68a3755f4ad150b478837df5e6
+size 2460333
diff --git a/download/wp-manual-28.0-beta-Nickel.pdf b/download/wp-manual-28.0-beta-Nickel.pdf
new file mode 100644
index 00000000..989b92d7
--- /dev/null
+++ b/download/wp-manual-28.0-beta-Nickel.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dfb47cff4eb7173d8917d95c3e51394a48654adf53b647a819626789ddbbdd66
+size 1896114
diff --git a/html/installations/nickel.md b/html/installations/nickel.md
new file mode 100644
index 00000000..0cfa9342
--- /dev/null
+++ b/html/installations/nickel.md
@@ -0,0 +1,532 @@
+---
+layout: installation_page
+version: nickel
+title: Installation instructions for Frama-C 28.0~beta (Nickel)
+---
+# Installing Frama-C  (released on 2023-10-26)
+
+- [Installing Frama-C](#installing-frama-c)
+    - [Table of Contents](#table-of-contents)
+    - [Installing Frama-C via opam](#installing-frama-c-via-opam)
+        - [Installing opam](#installing-opam)
+        - [Installing Frama-C from opam repository](#installing-frama-c-from-opam-repository)
+        - [Installing Custom Versions of Frama-C](#installing-custom-versions-of-frama-c)
+        - [Installing Frama-C on Windows via WSL](#installing-frama-c-on-windows-via-wsl)
+        - [Installing Frama-C on macOS](#installing-frama-c-on-macos)
+    - [Installing Frama-C via your Linux distribution (Debian/Ubuntu/Fedora)](#installing-frama-c-via-your-linux-distribution-debianubuntufedora)
+    - [Compiling from source](#compiling-from-source)
+        - [Quick Start](#quick-start)
+        - [Full Compilation Guide](#full-compilation-guide)
+- [Testing the Installation](#testing-the-installation)
+    - [Available resources](#available-resources)
+        - [Executables: (in `/INSTALL_DIR/bin`)](#executables-in-install_dirbin)
+        - [Shared files: (in `/INSTALL_DIR/share/frama-c` and subdirectories)](#shared-files-in-install_dirshareframa-c-and-subdirectories)
+        - [Documentation files: (in `/INSTALL_DIR/share/frama-c/doc`)](#documentation-files-in-install_dirshareframa-cdoc)
+        - [Object files: (in `/INSTALL_DIR/lib/frama-c`)](#object-files-in-install_dirlibframa-c)
+        - [Plugin files: (in `/INSTALL_DIR/lib/frama-c/plugins`)](#plugin-files-in-install_dirlibframa-cplugins)
+        - [Man files: (in `/INSTALL_DIR/share/man/man1`)](#man-files-in-install_dirsharemanman1)
+- [Installing Additional Frama-C Plugins](#installing-additional-frama-c-plugins)
+- [Frama-C additional tools](#frama-c-additional-tools)
+    - [HAVE FUN WITH FRAMA-C!](#have-fun-with-frama-c)
+
+## Installing Frama-C via opam
+
+[opam](http://opam.ocaml.org/) is the OCaml package manager. Every Frama-C
+release is made available via an opam package.
+
+First you need to install opam, then you may install Frama-C using opam.
+
+### Installing opam
+
+Several Linux distributions already include an `opam` package.
+
+macOS has opam through Homebrew.
+
+Windows users can install opam via WSL (Windows Subsystem for Linux).
+
+If your system does not have an opam package >= 2, you can use the provided
+opam binaries available at:
+
+http://opam.ocaml.org/doc/Install.html
+
+### Installing Frama-C from opam repository
+
+The Frama-C package in opam is called `frama-c`, which includes both the
+command-line `frama-c` executable and the graphical interface `frama-c-gui`.
+
+`frama-c` has some non-OCaml dependencies, such as Gtk and GMP. On most
+systems, `opam`'s `depext` mechanism can take care of installing these
+external dependencies. As of version
+2.1.0, `depext` is [directly included](https://opam.ocaml.org/blog/opam-2-1-0/#Seamless-integration-of-System-dependencies-handling-a-k-a-quot-depexts-quot)
+in `opam`, so that the following command should install everything, at
+least if your OS is supported by `depext` (and you have administrative
+rights):
+
+    opam install frama-c
+
+For older `opam` versions, you have to install it
+separately and call it explicitly with the following commands, before
+installing Frama-C as above. Again, installing the external dependencies
+requires administrative rights.
+
+    # install Frama-C's dependencies with pre-2.1.0 opam
+    opam install depext
+    opam depext frama-c
+
+If there are errors due to missing external dependencies, opam may emit a
+message indicating which packages to install. If this is not sufficient,
+there may be missing dependencies in opam's `depext` tool. In this case,
+you may [create a Gitlab issue](https://git.frama-c.com/pub/frama-c/issues/new)
+indicating your distribution and error message.
+
+### Configuring provers for Frama-C/WP
+
+Frama-C/WP uses the [Why3](http://why3.lri.fr/) platform to run external provers
+for proving ACSL annotations.
+The Why3 platform and the Alt-Ergo prover are automatically installed _via_ opam
+when installing Frama-C.
+
+Other recommended, efficient provers are CVC4 and Z3.
+They can be used as replacement or combined with Alt-Ergo.
+Actually, you can use any prover supported by Why3 in combination with Frama-C/WP.
+
+Most provers are available on all platforms. After their installation,
+Why3 must be configured to make them available for Frama-C/WP:
+
+```shell
+why3 config detect
+```
+
+### Reference configuration
+
+See file [reference-configuration.md](reference-configuration.md)
+for a set of packages that is known to work with this version of Frama-C.
+
+### Installing Custom Versions of Frama-C
+
+If you have a **non-standard** version of Frama-C available
+(with proprietary extensions, custom plugins, etc.),
+you can use opam to install Frama-C's dependencies and compile your
+own sources directly:
+
+    # optional: remove the standard frama-c package if it was installed
+    opam remove --force frama-c
+
+    # install Frama-C's dependencies
+    opam install depext # only for opam < 2.1.0
+    opam depext frama-c # only for opam < 2.1.0
+    opam install --deps-only frama-c [--with-test]
+
+    # install custom version of frama-c
+    opam pin add --kind=path frama-c <dir>
+
+where `<dir>` is the root of your unpacked Frama-C archive.
+See `opam pin` for more details. The option `--with-test` is optional and
+is necessary only if you want to be able to execute the tests available in
+the frama-c repository.
+
+If your extensions require other libraries than the ones already used
+by Frama-C, they must of course be installed as well.
+
+### Installing Frama-C on Windows via WSL
+
+Frama-C is developed on Linux, but it can be installed on Windows using the
+Windows Subsystem for Linux (WSL).
+
+**Note**: if you have WSL2 (Windows 11), you can run the graphical interface
+          directly, thanks to WSLg. If you are using WSL 1, you need to install
+          an X server for Windows, such as VcXsrv
+          (see section "Running the Frama-C GUI on WSL").
+
+#### Prerequisites: WSL + a Linux distribution
+
+To enable WSL on Windows, you may follow these instructions
+(we tested with Ubuntu 20.04 LTS;
+other distributions/versions should also work,
+but the instructions below may require some modifications).
+
+https://docs.microsoft.com/en-us/windows/wsl/install
+
+Notes:
+
+- older builds of Windows 10 and systems without access to the
+  Microsoft Store may have no compatible Linux packages.
+- in WSL 1, Frama-C/WP cannot use Why3 because of some missing features in WSL
+  support, thus using WSL 2 is **highly recommended**.
+
+#### Installing opam and Frama-C on WSL
+
+To install opam, some packages are required. The following commands can be
+run to update the system and install those packages:
+
+```
+sudo apt update
+sudo apt upgrade
+sudo apt install make m4 gcc opam gnome-icon-theme
+```
+
+Then opam can be set up using these commands:
+
+```
+opam init --disable-sandboxing --shell-setup
+eval $(opam env)
+opam install -y depext
+```
+
+You can force a particular Ocaml version during `opam init` by using the option
+`-c <version>` if needed. For instance, you can try installing the OCaml version
+mentioned in the [reference configuration](reference-configuration.md).
+
+Now, to install Frama-C, run the following commands, which will use `apt` to
+install the dependencies of the opam packages and then install them:
+
+```
+opam depext --install -y lablgtk3 lablgtk3-sourceview3
+opam depext --install -y frama-c
+```
+
+#### Running the Frama-C GUI on WSL
+
+If you have WSL2: a known issue with some versions of Frama-C, lablgtk3 and
+Wayland requires prefixing the command running the Frama-C GUI with
+`GDK_BACKEND=x11`, as in:
+
+    GDK_BACKEND=x11 frama-c-gui <options>
+
+If you have WSL 1: WSL 1 does not support graphical user interfaces directly.
+If you want to run Frama-C's GUI, you need to install an X server,
+such as VcXsrv or Cygwin/X. We present below how to install VcXsrv.
+
+First, install VcXsrv from:
+
+https://sourceforge.net/projects/vcxsrv/
+
+The default installation settings should work.
+
+Now run VcXsrv from the Windows menu (it is named XLaunch), the firewall
+must authorize both "Public" and "Private" domains. On the first configuration
+screen, select "Multiple Windows". On the second:
+
+- keep "Start no client" selected,
+- keep "Native opengl" selected,
+- select "Disable access control".
+
+Now specific settings must be provided in WSL. you can put the export commands
+in your `~/.bashrc` file, so this is done automatically when starting WSL.
+
+##### WSL 1
+
+The Xserver is ready. From WSL, run:
+
+```
+export LIBGL_ALWAYS_INDIRECT=1
+export DISPLAY=:0
+frama-c-gui
+```
+
+##### WSL 2
+
+```
+export LIBGL_ALWAYS_INDIRECT=1
+export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2; exit;}'):0.0
+frama-c-gui
+```
+
+### Installing Frama-C on macOS
+
+[opam](https://opam.ocaml.org) works perfectly on macOS via
+[Homebrew](https://brew.sh).
+We highly recommend to rely on it for the installation of Frama-C.
+
+1. Install *required* general macOS tools for OCaml:
+
+    ```shell
+    brew install opam
+    ```
+
+   Do not forget to `opam init` and `eval $(opam env)` for a proper
+   opam installation (if not already done before).
+
+2. Set up a compatible OCaml version (replace `<version>` with the version
+   indicated in the [reference configuration](#reference-configuration)):
+
+    ```shell
+    opam switch create <version>
+    ```
+
+3. Install Frama-C:
+
+    ```shell
+    opam install frama-c
+    ```
+
+   Opam may ask for the administrator password to handle required system
+   dependencies.
+
+   **It is likely that, at this point, opam will fail due to some Homebrew
+   packages and pkg-config.** The error messages should indicate what you need
+   to do, e.g.:
+
+    ```shell
+    For pkg-config to find zlib you may need to set:
+      export PKG_CONFIG_PATH="/usr/local/opt/zlib/lib/pkgconfig"
+    ```
+
+    After setting such environment variables, re-running `opam install frama-c`
+    should work. If you still have issues, try manually installing the required
+    packages (via `brew install <package>`) and then re-installing Frama-C.
+    **Note**: opam packages prefixed with `conf-` only check if the
+    corresponding system package is findable. If you cannot install some
+    `conf-` package, the solution will likely involve Homebrew and/or setting
+    environment variables, not opam.
+
+4. Install the new Frama-C graphical interface (Ivette).
+
+   **The traditional GTK-based Frama-C GUI no longer works on macOS!**
+
+   You need to use Ivette, the new Frama-C graphical interface.
+   Instructions on installing and running it are presented by opam when
+   the `frama-c` package is installed. Follow them to get Ivette running.
+
+
+## Installing Frama-C via your Linux distribution (Debian/Ubuntu/Fedora)
+
+**NOTE**: Distribution packages are updated later than opam packages,
+          so if you want access to the most recent versions of Frama-C,
+          opam is currently the recommended approach.
+
+Also note that it is **not** recommended to mix OCaml packages installed by
+your distribution with packages installed via opam. When using opam,
+we recommend uninstalling all `ocaml-*` packages from your distribution, and
+then installing, exclusively via opam, an OCaml compiler and all the OCaml
+packages you need. This ensures that only those versions will be in the PATH.
+
+The advantage of using distribution packages is that dependencies are almost
+always handled by the distribution's package manager. The disadvantage is that,
+if you need some optional OCaml package that has not been packaged in your
+distribution (e.g. `landmarks`, which is distributed via opam), it may be very
+hard to install it, since mixing opam and non-opam packages often fails
+(and is **strongly** discouraged).
+
+Debian/Ubuntu: `apt-get install frama-c`
+
+Fedora: `dnf install frama-c`
+
+Arch Linux: `pikaur -S frama-c`
+
+## Compiling from source
+
+**Note**: These instructions are no longer required in the vast majority
+          of cases. They are kept here mostly for historical reference.
+
+### Quick Start
+
+1. Install [opam](http://opam.ocaml.org/) and use it to get all of Frama-C's
+   dependencies (including some external ones):
+
+        opam install depext # only for opam < 2.1.0
+        opam depext frama-c # only for opam < 2.1.0
+        opam install --deps-only frama-c
+
+   If not using [opam](http://opam.ocaml.org/), you will need to install
+   the Frama-C dependencies by yourself. The `opam` file in the Frama-C
+   .tar.gz lists the required dependencies (e.g. `ocamlfind`, `ocamlgraph`,
+   `zarith`, etc.). A few of these dependencies are optional, only required
+   for the graphical interface: `lablgtk`, `conf-gnomecanvas` and
+   `conf-gtksourceview` (or the equivalent Gtk+3 packages).
+
+2. On Linux-like distributions:
+
+        make RELEASE=yes && make install
+
+    See section *Installation* below for options.
+
+3. On Windows+Cygwin:
+
+        make RELEASE=yes && make install
+
+4. The binary `frama-c` (and `frama-c-gui` if you have lablgtk2) is now installed.
+
+### Full Compilation Guide
+
+#### Frama-C Requirements
+
+See the `opam` file, section `depends`, for compatible OCaml versions and
+required dependencies (except for those related to `lablgtk`, which are
+required for the GUI but otherwise optional).
+
+To install the required dependencies, you can use opam v2.1
+or higher to do the following (assuming you are in frama-c
+root source folder):
+
+1. `opam switch create frama-c ocaml-base-compiler.4.13.1`
+   to create a compatible opam switch
+1. `opam pin . -n` to pin to the latest development version
+1. `opam install --deps-only .` will fetch and build all
+   relevant dependencies
+
+#### Compilation
+
+There are basically two compilation modes: development and release.
+
+Typing `make` builds in development mode, this is a shortcut for:
+```
+dune build @install
+```
+
+Typing `make RELEASE=yes` builds in release mode, this is a shortcut for:
+```
+dune build @install --release --promote-install-files=false
+```
+
+For more precise build configuration, use directly the `dune` command.
+
+#### Testing
+
+Basic tests can be executed using:
+
+```
+make run-ptests
+make default-tests
+```
+
+**Beware!** If the tests fail due to JSON output, it is likely because of the
+Yojson package version. Make sure that your `opam` dependencies have been
+installed with the option `--with-test`
+(see [Installing Custom Versions of Frama-C](#installing-custom-versions-of-frama-c)).
+
+#### Installation
+
+Type `make install` (depending on the installation directory, this may require
+superuser privileges. The installation directory is chosen through the variable
+`PREFIX`). This is a shortcut for:
+
+```
+dune install
+```
+
+The Makefile (and dune) supports the `DESTDIR` variable, that can be used to
+configure the location of the installation.
+
+#### API Documentation
+
+For plugin developers, the API documentation of the Frama-C kernel and
+distributed plugins is available in the `_build/default/_doc/_html` directory
+after running:
+
+```
+make doc
+```
+
+or:
+
+```
+dune build @doc
+```
+
+#### Uninstallation
+
+Type `make uninstall` to remove Frama-C and all the installed plugins.
+(Depending on the installation directory, this may require superuser
+privileges.)
+
+
+# Testing the Installation
+
+This step is optional.
+
+Download some test files:
+
+    export PREFIX_URL="https://git.frama-c.com/pub/frama-c/raw/master/tests/value"
+    wget -P test ${PREFIX_URL}/CruiseControl.c
+    wget -P test ${PREFIX_URL}/CruiseControl_const.c
+    wget -P test ${PREFIX_URL}/CruiseControl.h
+    wget -P test ${PREFIX_URL}/CruiseControl_extern.h
+    wget -P test ${PREFIX_URL}/scade_types.h
+    wget -P test ${PREFIX_URL}/config_types.h
+    wget -P test ${PREFIX_URL}/definitions.h
+
+Then test your installation by running:
+
+    frama-c -eva test/CruiseControl*.c
+    # or (if frama-c-gui is available)
+    frama-c-gui -eva test/CruiseControl*.c
+
+# Available resources
+
+Once Frama-C is installed, the following resources should be installed and
+available:
+
+## Executables: (in `/INSTALL_DIR/bin`)
+
+- `frama-c`
+- `frama-c-gui`       if available
+- `frama-c-config`    lightweight wrapper used to display configuration paths
+- `frama-c-hdrck`     header checking tool for Frama-C
+- `frama-c-ptests`    testing tool for Frama-c
+- `frama-c-wtests`    testing tool for Frama-c
+- `frama-c-script`    utilities related to analysis parametrization
+
+## Shared files: (in `/INSTALL_DIR/share/frama-c` and subdirectories)
+
+- some `.h` and `.c` files used as preludes by Frama-C
+- some `Makefiles` used to compile dynamic plugins
+- some `.rc` files used to configure Frama-C
+- some image files used by the Frama-C GUI
+- some files for Frama-C/plug-in development (autocomplete scripts,
+  Emacs settings, scripts for running Eva, ...)
+- an annotated C standard library (with ACSL annotations) in `libc`
+- plugin-specific files (in directories `wp`, `e-acsl`, etc.)
+
+## Object files: (in `/INSTALL_DIR/lib/frama-c`)
+
+- object files used to compile dynamic plugins
+
+## Plugin files: (in `/INSTALL_DIR/lib/frama-c/plugins`)
+
+- object files of available dynamic plugins
+
+## Man files: (in `/INSTALL_DIR/share/man/man1`)
+
+- `man` files for `frama-c` (and `frama-c-gui` if available)
+
+
+# Installing Additional Frama-C Plugins
+
+Plugins may be released independently of Frama-C.
+
+The standard way for installing them should be:
+
+    dune build @install && dune install
+
+Plugins may have their own custom installation procedures.
+Consult their specific documentation for details.
+
+# Frama-C additional tools
+
+A few additional tools that are unnecessary for most users might be useful for
+plugin developers. These tools are:
+- `frama-c-lint`, used for checking coding conventions
+- `frama-c-hdrck`, used for checking file license headers
+
+They can be installed either by pinning them via Opam:
+
+```
+opam pin tools/lint
+opam pin tools/hdrck
+```
+
+Or by compiling/installing Frama-C manually in developer mode:
+```
+FRAMAC_DEVELOPER=yes make
+FRAMAC_DEVELOPER=yes make install
+
+# Or:
+make -C tools/<the-tool>
+make -C tools/<the-tool> install
+```
+
+For convenience, `FRAMAC_DEVELOPER` can be exported globally.
+
+
+# HAVE FUN WITH FRAMA-C!
-- 
GitLab