[m-rev.] for review: update backends page on website
Julien Fischer
jfischer at opturion.com
Wed Jan 19 16:34:45 AEDT 2022
For review by anyone.
Note to reviewers: the content for the remaining backends has not changed,
although I have reformatted the source file.
---------------------
Update the backends page on the website
The changes are:
- delete references to Erlang, bytecode, assembler and old .NET backends.
- delete the pull quote; it no longer conveys any useful information.
- do not distinguish between "mature" and "beta" quality backends.
- use flexbox based layout.
about/include/backends.inc:
Make the above changes.
css/common.css:
Redo the two column layout we used on the backends page using
flexbox.
Julien.
diff --git a/about/include/backends.inc b/about/include/backends.inc
index eba4864..f23995f 100644
--- a/about/include/backends.inc
+++ b/about/include/backends.inc
@@ -1,155 +1,81 @@
<h2>About Mercury<span class="submenutitle">/ back-ends </span></h2>
<p>
-The Mercury implementation compiles to a wide variety of target
-languages on a wide variety of platforms.
-Several of these back-ends are quite mature, other have been
-released but are still immature, while others are under development.
+The Mercury implementation compiles to a wide variety of target languages on a
+wide variety of platforms.
</p>
-<p class="backendssubsec">
-Mature
-</p>
-
-<div style="float:left; max-width: 420px; margin-right: 50px;">
-<h3>Low level C.</h3>
-<p>
- Our original back-end. This one compiles
- Mercury source to low-level C code. It works by converting
- Mercury source into code for an abstract machine, and then
- converting the abstract machine instructions into C code
- with macros for the abstract machine registers and instructions.
- We use C's conditional compilation (<code>#ifdef</code>)
- to define these macros as either standard ANSI/ISO C code, or as
- GNU C code that makes uses of GNU C extensions such as
- global register variables, computed gotos, and inline assembler.
- </p><p>
- For more information on the low-level C back-end, see the
- <a href="<?php echo $root?>/documentation/papers.html">papers</a>
- section of the web site, in particular the papers titled "The
- execution algorithm of Mercury: an efficient purely declarative
- logic programming language", "Code generation for Mercury",
- and "Compiling logic programs to C using GNU C as a portable
- assembler".
-</p>
+<div class="backend-container">
+<div class="backend-item">
+ <h3>Low level C.</h3>
+ <p>
+ Our original back-end.
+ This one compiles Mercury source to low-level C code.
+ It works by converting Mercury source into code for an abstract machine, and
+ then converting the abstract machine instructions into C code with macros for
+ the abstract machine registers and instructions.
+ We use C's conditional compilation (<code>#ifdef</code>) to define these
+ macros as either standard ANSI/ISO C code, or as GNU C code that makes uses of
+ GNU C extensions such as global register variables, computed gotos, and inline
+ assembler.
+ </p>
+ <p>
+ For more information on the low-level C back-end, see the
+ <a href="<?php echo $root?>/documentation/papers.html">papers</a>
+ section of the web site, in particular the papers titled "The
+ execution algorithm of Mercury: an efficient purely declarative
+ logic programming language", "Code generation for Mercury",
+ and "Compiling logic programs to C using GNU C as a portable
+ assembler".
+ </p>
</div>
-<div style="float: left; max-width: 420px;">
-<h3>High level C.</h3>
- <p>
- This back-end compiles Mercury code to fairly high-level C
- code, more like the kind that a C programmer might write.
- </p>
- <p>
- For more information on the high-level C back-end see the
- <a href="<?php echo $root?>/documentation/papers.html">papers</a>
- section of the web site, in particular the paper titled
- "Compiling Mercury to high-level C code".
- </p>
-<div class="quote" style="max-width: 350px; float: left; margin: 20px 20px 20px 20px; border: 1px solid white;" align="left">
-<h2 style="font-size: 19px;color: #2e3192; font-style: italic;">
-“Several of these back-ends are quite mature, other have been released but are still immature, while others are under development.”
-</h2>
-</div>
+<div class="backend-item">
+ <h3>High level C.</h3>
+ <p>
+ This back-end compiles Mercury code to fairly high-level C code, more like
+ the kind that a C programmer might write.
+ </p>
+ <p>
+ For more information on the high-level C back-end see the
+ <a href="<?php echo $root?>/documentation/papers.html">papers</a>
+ section of the web site, in particular the paper titled
+ "Compiling Mercury to high-level C code".
+ </p>
</div>
-<div style="clear: left;"></div>
-<p class="backendssubsec">
-Beta-release quality
-</p>
-<div style="float: left; max-width: 260px; margin-right: 50px; border: 0px solid black">
- <h3>Java.</h3>
- <p>
- This back-end compiles Mercury to Java.
- </p>
- <p>
- The compiler support is complete,
- it includes good support for interfacing with Java
- (see the language reference manual for details),
- and the standard library is fairly reasonable.
- There is support for Mercury-level debugging, but there is
- not yet support for Mercury-level profiling.
- </p><p>
- For a guide to installing and using the Java grade, refer to
- README.Java and the User's Guide. You will need Mercury release 10.04
- or later.
- </p>
-</div>
-<div style="float: left; max-width: 260px; margin-right: 50px; border: 0px solid black">
- <h3>C#.</h3>
- <p>
- This back-end compiles Mercury to C#.
- </p>
- <p>
- The compiler support is complete,
- it includes good support for interfacing with C#
- (see the language reference manual for details),
- and the standard library is fairly reasonable.
- There is support for Mercury-level debugging, but there is
- not yet support for Mercury-level profiling.
- </p>
- <p>
- For a guide to installing and using the C# grade, refer to
- README.CSharp and the User's Guide. You will need Mercury release 11.01
- or later.
- </p>
- <div style="margin-bottom: 50px;"></div>
+<div class="backend-item">
+ <h3>Java.</h3>
+ <p>
+ This back-end compiles Mercury to Java.
+ </p>
+ <p>
+ The compiler support is complete, it includes good support for interfacing
+ with Java (see the language reference manual for details), and the standard
+ library is fairly reasonable.
+ There is support for Mercury-level debugging, but there is not yet support
+ for Mercury-level profiling.
+ </p>
+ <p>
+ For a guide to installing and using the Java grade, refer to README.Java and
+ the User's Guide. You will need Mercury release 10.04 or later.
+ </p>
</div>
-<div style="float: left; max-width: 260px; border: 0px solid black">
- <h3>Erlang.</h3>
- <p>
- This back-end compiles Mercury to Erlang.
- </p>
- <p>
- The compiler support is in good shape,
- it includes good support for interfacing with Erlang
- (see the language reference manual for details),
- and the standard library is fairly reasonable.
- There is support for Mercury-level debugging, but there is not
- yet support for Mercury-level profiling.
- </p>
- <p>
- For a guide to installing and using the Erlang grade, refer to
- README.Erlang and the User's Guide. You will need Mercury release 10.04
- or later.
- </p>
-</div>
-
-
-<div style="clear: left;"></div>
-<p class="backendssubsec">
-Dormant, not currently under development
-</p>
-<div style="float: left; max-width: 260px; margin-right: 50px;">
- <h3><a name="bytecode">Mercury byte-code.</a></h3>
- <p>
- We have our own bytecode format,
- a back-end which generates it, and an interpreter
- which runs it. This is designed to interoperate
- with our low-level C back-end. The main aim here
- is to get better turn-around time for debugging.
- </p>
- <p>
- This one still needs quite a bit of work to integrate it
- with the rest of the Mercury implementation.
- Read the source.
- </p>
+<div class="backend-item">
+ <h3>C#.</h3>
+ <p>
+ This back-end compiles Mercury to C#.
+ </p>
+ <p>
+ The compiler support is complete, it includes good support for interfacing
+ with C# (see the language reference manual for details), and the standard
+ library is fairly reasonable.
+ There is support for Mercury-level debugging, but there is not yet support
+ for Mercury-level profiling.
+ </p>
+ <p>
+ For a guide to installing and using the C# grade, refer to README.CSharp and
+ the User's Guide. You will need Mercury release 11.01 or later.
+ </p>
</div>
-<div style="float: left; max-width: 260px; margin-right: 50px;">
- <h3>Native code</h3>
- <p>
- We formerly had a back-end that compiled to assembler, using the GCC
- back-end. It had not been maintained for many years, so has been removed.
- </p>
-</div>
-<div style="float: left; max-width: 260px;">
- <h3>Microsoft's .NET</h3>
- <p>
- This back-end generates IL, the Intermediate Language
- used by Microsoft's .NET Common Language Runtime.
- </p>
- <p>
- Click <a href="<?php echo $root?>/about/dotnet.html">here</a> for more
- </p>
</div>
-
diff --git a/css/common.css b/css/common.css
index 375d719..02b7317 100644
--- a/css/common.css
+++ b/css/common.css
@@ -211,11 +211,16 @@ font-style: italic;
font-weight: bold;
}
-.backendssubsec{
-font-size: 16px;
-font-style: italic;
-margin-top: 30px;
-margin-bottom: 0;
+.backend-container {
+ display: flex;
+ flex-wrap: wrap;
+ column-gap: 5%;
+ justify-content: space-between;
+}
+
+.backend-item {
+ flex: 0 47%;
+ height: 100%;
}
pre{
More information about the reviews
mailing list