diff --git a/src/script_opt/ZAM/README.md b/src/script_opt/ZAM/README.md index 9d2ac86c72..a1313a6dd3 100644 --- a/src/script_opt/ZAM/README.md +++ b/src/script_opt/ZAM/README.md @@ -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%, 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. -
## Known Issues Here we list various issues with using script optimization, including both -deficiencies (problems to eventually fix) and incompatibilities (differences -in behavior from the default of script interpretation, not necessarily -fixable). For each, the corresponding list is roughly ordered from -you're-most-likely-to-care-about-it to you're-less-likely-to-care, though -of course this varies for different users. +deficiencies (things that don't work as well as you might like) +and incompatibilities (differences in behavior from the default +of script interpretation).
-### Deficiencies to eventually fix: +### Deficiencies: -* Error messages in compiled scripts have diminished identifying +* Run-time error messages in compiled scripts have diminished identifying information. * 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 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 -of the expression are modified by compiled scripts. +* When printing scripts (such as in some error messages), the names of +variables often reflect internal temporaries rather than the original +variables.
@@ -77,30 +71,11 @@ of the expression are modified by compiled scripts. * 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 different.
-### 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++`). - -
- - ## Script Optimization Options 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`.| |`profile-ZAM` | Generate to _stdout_ a ZAM execution profile. (Requires configuring with `--enable-debug`.)| |`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.|