documentation updates

This commit is contained in:
Vern Paxson 2023-06-16 16:54:46 -07:00 committed by Arne Welzel
parent bd30baf42f
commit ed828ec92b

View file

@ -41,35 +41,29 @@ the _Logging Framework_, for example, and thus you won't see much improvement.
* Those two factors add up to gains very often on the order of only 10-15%, * Those two factors add up to gains very often on the order of only 10-15%,
rather than something a lot more dramatic. rather than something a lot more dramatic.
* In addition, there are some
[types of scripts that currently can't be compiled](#Scripts-that-cannot-be-compiled),
and thus will remain interpreted. If your processing bottlenecks in such
scripts, you won't see much in the way of gains.
<br> <br>
## Known Issues ## Known Issues
Here we list various issues with using script optimization, including both Here we list various issues with using script optimization, including both
deficiencies (problems to eventually fix) and incompatibilities (differences deficiencies (things that don't work as well as you might like)
in behavior from the default of script interpretation, not necessarily and incompatibilities (differences in behavior from the default
fixable). For each, the corresponding list is roughly ordered from of script interpretation).
you're-most-likely-to-care-about-it to you're-less-likely-to-care, though
of course this varies for different users.
<br> <br>
### Deficiencies to eventually fix: ### Deficiencies:
* Error messages in compiled scripts have diminished identifying * Run-time error messages in compiled scripts have diminished identifying
information. information.
* The optimizer assumes you have ensured initialization of your variables. * The optimizer assumes you have ensured initialization of your variables.
If your script uses a variable that hasn't been set, the compiled code may If your script uses a variable that hasn't been set, the compiled code may
crash or behave aberrantly. You can use the `-u` command-line flag to find such potential usage issues. crash or behave aberrantly. You can use the `-u` command-line flag to find such potential usage issues.
* Certain complex "when" expressions may fail to reevaluate when elements * When printing scripts (such as in some error messages), the names of
of the expression are modified by compiled scripts. variables often reflect internal temporaries rather than the original
variables.
<br> <br>
@ -77,30 +71,11 @@ of the expression are modified by compiled scripts.
* ZAM ignores `assert` statements. * ZAM ignores `assert` statements.
* When printing scripts (such as in some error messages), the names of
variables often reflect internal temporaries rather than the original
variables.
* The `same_object()` BiF will always deem two non-container values as * The `same_object()` BiF will always deem two non-container values as
different. different.
<br> <br>
### Scripts that cannot be compiled:
The ZAM optimizer does not compile scripts that include "when" statements or
lambda expressions. These will take substantial work to support. It also
will not inline such scripts, nor will it inline scripts that are either
directly or indirectly recursive.
You can get a list of non-compilable scripts using
`-O ZAM -O report-uncompilable`. For recursive scripts, use
`-O report-recursive` (no `-O ZAM` required, since it doesn't apply to the
alternative optimization, `-O gen-C++`).
<br>
## Script Optimization Options ## Script Optimization Options
Users will generally simply use `-O ZAM` to invoke the script optimizer. Users will generally simply use `-O ZAM` to invoke the script optimizer.
@ -120,7 +95,7 @@ issues:
|`optimize-AST` | Optimize the (transform) AST; implies `xform`.| |`optimize-AST` | Optimize the (transform) AST; implies `xform`.|
|`profile-ZAM` | Generate to _stdout_ a ZAM execution profile. (Requires configuring with `--enable-debug`.)| |`profile-ZAM` | Generate to _stdout_ a ZAM execution profile. (Requires configuring with `--enable-debug`.)|
|`report-recursive` | Report on recursive functions and exit.| |`report-recursive` | Report on recursive functions and exit.|
|`report-uncompilable` | Report on uncompilable functions and exit.| |`report-uncompilable` | Report on uncompilable functions and exit. For ZAM, all functions should be compilable.|
|`xform` | Transform scripts to "reduced" form.| |`xform` | Transform scripts to "reduced" form.|
<br> <br>