NEWS
changeset 70023 5aef4e9966c4
parent 70022 49e178cbf923
child 70026 6ae9505d693a
equal deleted inserted replaced
70022:49e178cbf923 70023:5aef4e9966c4
     2 =================================================
     2 =================================================
     3 
     3 
     4 (Note: Isabelle/jEdit shows a tree-view of the NEWS file in Sidekick.)
     4 (Note: Isabelle/jEdit shows a tree-view of the NEWS file in Sidekick.)
     5 
     5 
     6 
     6 
     7 New in this Isabelle version
     7 New in Isabelle2019 (June 2019)
     8 ----------------------------
     8 -------------------------------
     9 
     9 
    10 *** General ***
    10 *** General ***
    11 
       
    12 * Old-style {* verbatim *} tokens are explicitly marked as legacy
       
    13 feature and will be removed soon. Use \<open>cartouche\<close> syntax instead, e.g.
       
    14 via "isabelle update_cartouches -t" (available since Isabelle2015).
       
    15 
    11 
    16 * The font family "Isabelle DejaVu" is systematically derived from the
    12 * The font family "Isabelle DejaVu" is systematically derived from the
    17 existing "DejaVu" collection, with variants "Sans Mono", "Sans", "Serif"
    13 existing "DejaVu" collection, with variants "Sans Mono", "Sans", "Serif"
    18 and styles "Normal", "Bold", "Italic/Oblique", "Bold-Italic/Oblique".
    14 and styles "Normal", "Bold", "Italic/Oblique", "Bold-Italic/Oblique".
    19 The DejaVu base fonts are retricted to well-defined Unicode ranges and
    15 The DejaVu base fonts are retricted to well-defined Unicode ranges and
    26 * The Isabelle fonts render "\<inverse>" properly as superscript "-1".
    22 * The Isabelle fonts render "\<inverse>" properly as superscript "-1".
    27 
    23 
    28 * Old-style inner comments (* ... *) within the term language are no
    24 * Old-style inner comments (* ... *) within the term language are no
    29 longer supported (legacy feature in Isabelle2018).
    25 longer supported (legacy feature in Isabelle2018).
    30 
    26 
       
    27 * Old-style {* verbatim *} tokens are explicitly marked as legacy
       
    28 feature and will be removed soon. Use \<open>cartouche\<close> syntax instead, e.g.
       
    29 via "isabelle update_cartouches -t" (available since Isabelle2015).
       
    30 
    31 * Infix operators that begin or end with a "*" can now be paranthesized
    31 * Infix operators that begin or end with a "*" can now be paranthesized
    32 without additional spaces, eg "(*)" instead of "( * )".
    32 without additional spaces, eg "(*)" instead of "( * )". Minor
       
    33 INCOMPATIBILITY.
    33 
    34 
    34 * Mixfix annotations may use cartouches instead of old-style double
    35 * Mixfix annotations may use cartouches instead of old-style double
    35 quotes, e.g. (infixl \<open>+\<close> 60). The command-line tool "isabelle update -u
    36 quotes, e.g. (infixl \<open>+\<close> 60). The command-line tool "isabelle update -u
    36 mixfix_cartouches" allows to update existing theory sources
    37 mixfix_cartouches" allows to update existing theory sources
    37 automatically.
    38 automatically.
    38 
    39 
    39 * ML setup commands (e.g. 'setup', 'method_setup', 'parse_translation')
    40 * ML setup commands (e.g. 'setup', 'method_setup', 'parse_translation')
    40 need to provide a closed expression -- without trailing semicolon. Minor
    41 need to provide a closed expression -- without trailing semicolon. Minor
    41 INCOMPATIBILITY.
    42 INCOMPATIBILITY.
    42 
    43 
    43 * Command keywords of kind thy_decl / thy_goal may be more specifically
       
    44 fit into the traditional document model of "definition-statement-proof"
       
    45 via thy_defn / thy_stmt / thy_goal_defn / thy_goal_stmt.
       
    46 
       
    47 
    44 
    48 *** Isabelle/jEdit Prover IDE ***
    45 *** Isabelle/jEdit Prover IDE ***
    49 
       
    50 * The jEdit File Browser is more prominent in the default GUI layout of
       
    51 Isabelle/jEdit: various virtual file-systems provide access to Isabelle
       
    52 resources, notably via "favorites:" (or "Edit Favorites").
       
    53 
       
    54 * Action "isabelle-export-browser" points the File Browser to the theory
       
    55 exports of the current buffer, based on the "isabelle-export:" virtual
       
    56 file-system. The directory view needs to be reloaded manually to follow
       
    57 ongoing document processing.
       
    58 
       
    59 * Action "isabelle-session-browser" points the File Browser to session
       
    60 information, based on the "isabelle-session:" virtual file-system. Its
       
    61 entries are structured according to chapter / session names, the open
       
    62 operation is redirected to the session ROOT file.
       
    63 
       
    64 * System option "jedit_text_overview" allows to disable the text
       
    65 overview column.
       
    66 
    46 
    67 * Fonts for the text area, gutter, GUI elements etc. use the "Isabelle
    47 * Fonts for the text area, gutter, GUI elements etc. use the "Isabelle
    68 DejaVu" collection by default, which provides uniform rendering quality
    48 DejaVu" collection by default, which provides uniform rendering quality
    69 with the usual Isabelle symbols. Line spacing no longer needs to be
    49 with the usual Isabelle symbols. Line spacing no longer needs to be
    70 adjusted: properties for the old IsabelleText font had "Global Options /
    50 adjusted: properties for the old IsabelleText font had "Global Options /
    71 Text Area / Extra vertical line spacing (in pixels): -2", now it
    51 Text Area / Extra vertical line spacing (in pixels): -2", now it
    72 defaults to 0.
    52 defaults to 0.
    73 
    53 
    74 * Improved sub-pixel font rendering (especially on Linux), thanks to
    54 * The jEdit File Browser is more prominent in the default GUI layout of
    75 OpenJDK 11.
    55 Isabelle/jEdit: various virtual file-systems provide access to Isabelle
       
    56 resources, notably via "favorites:" (or "Edit Favorites").
       
    57 
       
    58 * Action "isabelle-export-browser" points the File Browser to the theory
       
    59 exports of the current buffer, based on the "isabelle-export:" virtual
       
    60 file-system. The directory view needs to be reloaded manually to follow
       
    61 ongoing document processing.
       
    62 
       
    63 * Action "isabelle-session-browser" points the File Browser to session
       
    64 information, based on the "isabelle-session:" virtual file-system. Its
       
    65 entries are structured according to chapter / session names, the open
       
    66 operation is redirected to the session ROOT file.
    76 
    67 
    77 * Support for user-defined file-formats via class isabelle.File_Format
    68 * Support for user-defined file-formats via class isabelle.File_Format
    78 in Isabelle/Scala (e.g. see isabelle.Bibtex.File_Format), configured via
    69 in Isabelle/Scala (e.g. see isabelle.Bibtex.File_Format), configured via
    79 the shell function "isabelle_file_format" in etc/settings (e.g. of an
    70 the shell function "isabelle_file_format" in etc/settings (e.g. of an
    80 Isabelle component).
    71 Isabelle component).
    81 
    72 
       
    73 * System option "jedit_text_overview" allows to disable the text
       
    74 overview column.
       
    75 
    82 * Command-line options "-s" and "-u" of "isabelle jedit" override the
    76 * Command-line options "-s" and "-u" of "isabelle jedit" override the
    83 default for system option "system_heaps" that determines the heap
    77 default for system option "system_heaps" that determines the heap
    84 storage directory for "isabelle build". Option "-n" is now clearly
    78 storage directory for "isabelle build". Option "-n" is now clearly
    85 separated from option "-s".
    79 separated from option "-s".
       
    80 
       
    81 * Update to OpenJDK 11, which is the current long-term support line
       
    82 after Java 8. It provides a very different font renderer, with improved
       
    83 sub-pixel font rendering.
    86 
    84 
    87 
    85 
    88 *** Document preparation ***
    86 *** Document preparation ***
    89 
    87 
    90 * Document markers are formal comments of the form \<^marker>\<open>marker_body\<close> that
    88 * Document markers are formal comments of the form \<^marker>\<open>marker_body\<close> that
   100 reversed list of tags in the presentation context.
    98 reversed list of tags in the presentation context.
   101 
    99 
   102 
   100 
   103 *** Isar ***
   101 *** Isar ***
   104 
   102 
   105 * More robust treatment of structural errors: begin/end blocks take
       
   106 precedence over goal/proof.
       
   107 
       
   108 * Implicit cases goal1, goal2, goal3, etc. have been discontinued
   103 * Implicit cases goal1, goal2, goal3, etc. have been discontinued
   109 (legacy feature since Isabelle2016).
   104 (legacy feature since Isabelle2016).
   110 
   105 
       
   106 * More robust treatment of structural errors: begin/end blocks take
       
   107 precedence over goal/proof. This is particularly relevant for the
       
   108 headless PIDE session and server.
       
   109 
       
   110 * Command keywords of kind thy_decl / thy_goal may be more specifically
       
   111 fit into the traditional document model of "definition-statement-proof"
       
   112 via thy_defn / thy_stmt / thy_goal_defn / thy_goal_stmt.
       
   113 
   111 
   114 
   112 *** HOL ***
   115 *** HOL ***
   113 
       
   114 * Formal Laurent series and overhaul of Formal power series 
       
   115 in session HOL-Computational_Algebra.
       
   116 
       
   117 * Exponentiation by squaring in session HOL-Library; used for computing
       
   118 powers in class monoid_mult and modular exponentiation in session
       
   119 HOL-Number_Theory.
       
   120 
       
   121 * More material on residue rings in session HOL-Number_Theory:
       
   122 Carmichael's function, primitive roots, more properties for "ord".
       
   123 
       
   124 * The functions \<Union>, \<Inter>, \<Squnion>, \<Sqinter>
       
   125 (not the corresponding binding operators) now have the same precedence
       
   126 as any other prefix function symbol.  Minor INCOMPATIBILITY.
       
   127 
       
   128 * Slightly more conventional naming schema in structure Inductive.
       
   129 Minor INCOMPATIBILITY.
       
   130 
       
   131 * Various _global variants of specification tools have been removed.
       
   132 Minor INCOMPATIBILITY, prefer combinators Named_Target.theory_map[_result]
       
   133 to lift specifications to the global theory level.
       
   134 
   116 
   135 * Command 'export_code' produces output as logical files within the
   117 * Command 'export_code' produces output as logical files within the
   136 theory context, as well as formal session exports that can be
   118 theory context, as well as formal session exports that can be
   137 materialized via command-line tools "isabelle export" or "isabelle build
   119 materialized via command-line tools "isabelle export" or "isabelle build
   138 -e" (with 'export_files' in the session ROOT). Isabelle/jEdit also
   120 -e" (with 'export_files' in the session ROOT). Isabelle/jEdit also
   163 
   145 
   164 * Code generation for Haskell: code includes for Haskell must contain
   146 * Code generation for Haskell: code includes for Haskell must contain
   165 proper module frame, nothing is added magically any longer.
   147 proper module frame, nothing is added magically any longer.
   166 INCOMPATIBILITY.
   148 INCOMPATIBILITY.
   167 
   149 
   168 * Code generation: slightly more conventional syntax for
   150 * Code generation: slightly more conventional syntax for 'code_stmts'
   169 'code_stmts' antiquotation.  Minor INCOMPATIBILITY.
   151 antiquotation. Minor INCOMPATIBILITY.
   170 
   152 
   171 * The simplifier uses image_cong_simp as a congruence rule. The historic
   153 * Theory List: the precedence of the list_update operator has changed:
   172 and not really well-formed congruence rules INF_cong*, SUP_cong*,
   154 "f a [n := x]" now needs to be written "(f a)[n := x]".
   173 are not used by default any longer.  INCOMPATIBILITY; consider using
   155 
   174 declare image_cong_simp [cong del] in extreme situations.
   156 * The functions \<Union>, \<Inter>, \<Squnion>, \<Sqinter> (not the corresponding binding operators)
   175 
   157 now have the same precedence as any other prefix function symbol. Minor
   176 * INF_image and SUP_image are no default simp rules any longer.
   158 INCOMPATIBILITY.
   177 INCOMPATIBILITY, prefer image_comp as simp rule if needed.
       
   178 
   159 
   179 * Simplified syntax setup for big operators under image. In rare
   160 * Simplified syntax setup for big operators under image. In rare
   180 situations, type conversions are not inserted implicitly any longer
   161 situations, type conversions are not inserted implicitly any longer
   181 and need to be given explicitly. Auxiliary abbreviations INFIMUM,
   162 and need to be given explicitly. Auxiliary abbreviations INFIMUM,
   182 SUPREMUM, UNION, INTER should now rarely occur in output and are just
   163 SUPREMUM, UNION, INTER should now rarely occur in output and are just
   183 retained as migration auxiliary. INCOMPATIBILITY.
   164 retained as migration auxiliary. INCOMPATIBILITY.
   184 
   165 
   185 * Theory List: the precedence of the list_update operator has changed:
   166 * The simplifier uses image_cong_simp as a congruence rule. The historic
   186 "f a [n := x]" now needs to be written "(f a)[n := x]".
   167 and not really well-formed congruence rules INF_cong*, SUP_cong*, are
   187 
   168 not used by default any longer. INCOMPATIBILITY; consider using declare
   188 * Theory "HOL-Library.Multiset": the <Union># operator now has the same
   169 image_cong_simp [cong del] in extreme situations.
   189 precedence as any other prefix function symbol.
   170 
   190 
   171 * INF_image and SUP_image are no default simp rules any longer.
   191 * Retired lemma card_Union_image; use the simpler card_UN_disjoint instead.
   172 INCOMPATIBILITY, prefer image_comp as simp rule if needed.
   192 
       
   193 * Facts sum_mset.commute and prod_mset.commute renamed to sum_mset.swap
       
   194 and prod_mset.swap, similarly to sum.swap and prod.swap.
       
   195 INCOMPATIBILITY.
       
   196 
   173 
   197 * Strong congruence rules (with =simp=> in the premises) for constant f
   174 * Strong congruence rules (with =simp=> in the premises) for constant f
   198 are now uniformly called f_cong_simp, in accordance with congruence
   175 are now uniformly called f_cong_simp, in accordance with congruence
   199 rules produced for mappers by the datatype package. INCOMPATIBILITY.
   176 rules produced for mappers by the datatype package. INCOMPATIBILITY.
   200 
   177 
   201 * Sledgehammer:
   178 * Retired lemma card_Union_image; use the simpler card_UN_disjoint
   202   - The URL for SystemOnTPTP, which is used by remote provers, has
   179 instead. INCOMPATIBILITY.
   203     been updated.
   180 
   204   - The machine-learning-based filter MaSh has been optimized to take
   181 * Facts sum_mset.commute and prod_mset.commute have been renamed to
   205     less time (in most cases).
   182 sum_mset.swap and prod_mset.swap, similarly to sum.swap and prod.swap.
   206 
   183 INCOMPATIBILITY.
   207 * SMT: reconstruction is now possible using the SMT solver veriT.
   184 
   208 
   185 * ML structure Inductive: slightly more conventional naming schema.
   209 * HOL-Library.Simps_Case_Conv: case_of_simps now supports overlapping 
   186 Minor INCOMPATIBILITY.
   210 and non-exhaustive patterns and handles arbitrarily nested patterns.
   187 
   211 It uses on the same algorithm as HOL-Library.Code_Lazy, which assumes
   188 * ML: Various _global variants of specification tools have been removed.
   212 sequential left-to-right pattern matching. The generated
   189 Minor INCOMPATIBILITY, prefer combinators
       
   190 Named_Target.theory_map[_result] to lift specifications to the global
       
   191 theory level.
       
   192 
       
   193 * Theory HOL-Library.Simps_Case_Conv: 'case_of_simps' now supports
       
   194 overlapping and non-exhaustive patterns and handles arbitrarily nested
       
   195 patterns. It uses on the same algorithm as HOL-Library.Code_Lazy, which
       
   196 assumes sequential left-to-right pattern matching. The generated
   213 equation no longer tuples the arguments on the right-hand side.
   197 equation no longer tuples the arguments on the right-hand side.
   214 INCOMPATIBILITY.
   198 INCOMPATIBILITY.
       
   199 
       
   200 * Theory HOL-Library.Multiset: the <Union># operator now has the same
       
   201 precedence as any other prefix function symbol.
       
   202 
       
   203 * Session HOL-Library and HOL-Number_Theory: Exponentiation by squaring,
       
   204 used for computing powers in class "monoid_mult" and modular
       
   205 exponentiation.
       
   206 
       
   207 * Session HOL-Computational_Algebra: Formal Laurent series and overhaul
       
   208 of Formal power series.
       
   209 
       
   210 * Session HOL-Number_Theory: More material on residue rings in
       
   211 Carmichael's function, primitive roots, more properties for "ord".
   215 
   212 
   216 * Session HOL-SPARK: .prv files are no longer written to the
   213 * Session HOL-SPARK: .prv files are no longer written to the
   217 file-system, but exported to the session database. Results may be
   214 file-system, but exported to the session database. Results may be
   218 retrieved with the "isabelle export" command-line tool like this:
   215 retrieved with the "isabelle export" command-line tool like this:
   219 
   216 
   220   isabelle export -x "*:**.prv" HOL-SPARK-Examples
   217   isabelle export -x "*:**.prv" HOL-SPARK-Examples
   221 
   218 
       
   219 * Sledgehammer:
       
   220   - The URL for SystemOnTPTP, which is used by remote provers, has been
       
   221     updated.
       
   222   - The machine-learning-based filter MaSh has been optimized to take
       
   223     less time (in most cases).
       
   224 
       
   225 * SMT: reconstruction is now possible using the SMT solver veriT.
       
   226 
   222 
   227 
   223 *** ML ***
   228 *** ML ***
   224 
       
   225 * Local_Theory.reset is no longer available in user space. Regular
       
   226 definitional packages should use balanced blocks of
       
   227 Local_Theory.open_target versus Local_Theory.close_target instead,
       
   228 or the Local_Theory.subtarget(_result) combinator. Rare INCOMPATIBILITY.
       
   229 
       
   230 * Original PolyML.pointerEq is retained as a convenience for tools that
       
   231 don't use Isabelle/ML (where this is called "pointer_eq").
       
   232 
       
   233 * ML evaluation (notably via commands 'ML' and 'ML_file') is subject to
       
   234 option ML_environment to select a named environment, such as "Isabelle"
       
   235 for Isabelle/ML, or "SML" for official Standard ML. It is also possible
       
   236 to move toplevel bindings between environments, using a notation with
       
   237 ">" as separator. For example:
       
   238 
       
   239   declare [[ML_environment = "Isabelle>SML"]]
       
   240   ML \<open>val println = writeln\<close>
       
   241 
       
   242   declare [[ML_environment = "SML"]]
       
   243   ML \<open>println "test"\<close>
       
   244 
       
   245   declare [[ML_environment = "Isabelle"]]
       
   246   ML \<open>println\<close>  \<comment> \<open>not present\<close>
       
   247 
       
   248 The Isabelle/ML function ML_Env.setup defines new ML environments. This
       
   249 is useful to incorporate big SML projects in an isolated name space, and
       
   250 potentially with variations on ML syntax (existing ML_Env.SML_operations
       
   251 observes the official standard).
       
   252 
       
   253 * ML antiquotation @{master_dir} refers to the master directory of the
       
   254 underlying theory, i.e. the directory of the theory file.
       
   255 
       
   256 * ML antiquotation @{verbatim} inlines its argument as string literal,
       
   257 preserving newlines literally. The short form \<^verbatim>\<open>abc\<close> is particularly
       
   258 useful.
       
   259 
   229 
   260 * Command 'generate_file' allows to produce sources for other languages,
   230 * Command 'generate_file' allows to produce sources for other languages,
   261 with antiquotations in the Isabelle context (only the control-cartouche
   231 with antiquotations in the Isabelle context (only the control-cartouche
   262 form). The default "cartouche" antiquotation evaluates an ML expression
   232 form). The default "cartouche" antiquotation evaluates an ML expression
   263 of type string and inlines the result as a string literal of the target
   233 of type string and inlines the result as a string literal of the target
   273 
   243 
   274 The ML function Generate_File.generate writes all generated files from a
   244 The ML function Generate_File.generate writes all generated files from a
   275 given theory to the file-system, e.g. a temporary directory where some
   245 given theory to the file-system, e.g. a temporary directory where some
   276 external compiler is applied.
   246 external compiler is applied.
   277 
   247 
       
   248 * ML evaluation (notably via commands 'ML' and 'ML_file') is subject to
       
   249 option ML_environment to select a named environment, such as "Isabelle"
       
   250 for Isabelle/ML, or "SML" for official Standard ML. It is also possible
       
   251 to move toplevel bindings between environments, using a notation with
       
   252 ">" as separator. For example:
       
   253 
       
   254   declare [[ML_environment = "Isabelle>SML"]]
       
   255   ML \<open>val println = writeln\<close>
       
   256 
       
   257   declare [[ML_environment = "SML"]]
       
   258   ML \<open>println "test"\<close>
       
   259 
       
   260   declare [[ML_environment = "Isabelle"]]
       
   261   ML \<open>println\<close>  \<comment> \<open>not present\<close>
       
   262 
       
   263 The Isabelle/ML function ML_Env.setup defines new ML environments. This
       
   264 is useful to incorporate big SML projects in an isolated name space, and
       
   265 potentially with variations on ML syntax (existing ML_Env.SML_operations
       
   266 observes the official standard).
       
   267 
       
   268 * ML antiquotation @{master_dir} refers to the master directory of the
       
   269 underlying theory, i.e. the directory of the theory file.
       
   270 
       
   271 * ML antiquotation @{verbatim} inlines its argument as string literal,
       
   272 preserving newlines literally. The short form \<^verbatim>\<open>abc\<close> is particularly
       
   273 useful.
       
   274 
       
   275 * Local_Theory.reset is no longer available in user space. Regular
       
   276 definitional packages should use balanced blocks of
       
   277 Local_Theory.open_target versus Local_Theory.close_target instead, or
       
   278 the Local_Theory.subtarget(_result) combinator. Rare INCOMPATIBILITY.
       
   279 
       
   280 * Original PolyML.pointerEq is retained as a convenience for tools that
       
   281 don't use Isabelle/ML (where this is called "pointer_eq").
       
   282 
   278 
   283 
   279 *** System ***
   284 *** System ***
   280 
   285 
   281 * The command-line option "isabelle build -e" retrieves theory exports
   286 * Update to Java 11: the current long-term support version of OpenJDK.
   282 from the session build database, using 'export_files' in session ROOT
       
   283 entries.
       
   284 
       
   285 * The system option "system_heaps" determines where to store the session
       
   286 image of "isabelle build" (and other tools using that internally).
       
   287 Former option "-s" is superseded by option "-o system_heaps".
       
   288 INCOMPATIBILITY in command-line syntax.
       
   289 
       
   290 * The command-line tool "isabelle update" uses Isabelle/PIDE in
       
   291 batch-mode to update theory sources based on semantic markup produced in
       
   292 Isabelle/ML. Actual updates depend on system options that may be enabled
       
   293 via "-u OPT" (for "update_OPT"), see also $ISABELLE_HOME/etc/options
       
   294 section "Theory update". Theory sessions are specified as in "isabelle
       
   295 dump".
       
   296 
       
   297 * The command-line tool "isabelle update -u control_cartouches" changes
       
   298 antiquotations into control-symbol format (where possible): @{NAME}
       
   299 becomes \<^NAME> and @{NAME ARG} becomes \<^NAME>\<open>ARG\<close>.
       
   300 
       
   301 * Support for Isabelle command-line tools defined in Isabelle/Scala.
       
   302 Instances of class Isabelle_Scala_Tools may be configured via the shell
       
   303 function "isabelle_scala_tools" in etc/settings (e.g. of an Isabelle
       
   304 component).
       
   305 
       
   306 * Session directory $ISABELLE_HOME/src/Tools/Haskell provides some
       
   307 source modules for Isabelle tools implemented in Haskell, notably for
       
   308 Isabelle/PIDE.
       
   309 
       
   310 * Isabelle server command "use_theories" supports "nodes_status_delay"
       
   311 for continuous output of node status information. The time interval is
       
   312 specified in seconds; a negative value means it is disabled (default).
       
   313 
       
   314 * Isabelle Server command "use_theories" terminates more robustly in the
       
   315 presence of structurally broken sources: full consolidation of theories
       
   316 is no longer required.
       
   317 
       
   318 * OCaml tools and libraries are now accesed via ISABELLE_OCAMLFIND,
       
   319 which needs to point to a suitable version of "ocamlfind" (e.g. via
       
   320 OPAM, see below). INCOMPATIBILITY: settings variables ISABELLE_OCAML and
       
   321 ISABELLE_OCAMLC are no longer supported.
       
   322 
       
   323 * Support for managed installations of Glasgow Haskell Compiler and
       
   324 OCaml via the following command-line tools:
       
   325 
       
   326   isabelle ghc_setup
       
   327   isabelle ghc_stack
       
   328 
       
   329   isabelle ocaml_setup
       
   330   isabelle ocaml_opam
       
   331 
       
   332 The global installation state is determined by the following settings
       
   333 (and corresponding directory contents):
       
   334 
       
   335   ISABELLE_STACK_ROOT
       
   336   ISABELLE_STACK_RESOLVER
       
   337   ISABELLE_GHC_VERSION
       
   338 
       
   339   ISABELLE_OPAM_ROOT
       
   340   ISABELLE_OCAML_VERSION
       
   341 
       
   342 After setup, the following Isabelle settings are automatically
       
   343 redirected (overriding existing user settings):
       
   344 
       
   345   ISABELLE_GHC
       
   346 
       
   347   ISABELLE_OCAMLFIND
       
   348 
       
   349 The old meaning of these settings as locally installed executables may
       
   350 be recovered by purging the directories ISABELLE_STACK_ROOT /
       
   351 ISABELLE_OPAM_ROOT, or by resetting these variables in
       
   352 $ISABELLE_HOME_USER/etc/settings.
       
   353 
       
   354 * Update to Java 11: the latest long-term support version of OpenJDK.
       
   355 
       
   356 * System option "checkpoint" has been discontinued: obsolete thanks to
       
   357 improved memory management in Poly/ML.
       
   358 
   287 
   359 * Update to Poly/ML 5.8 allows to use the native x86_64 platform without
   288 * Update to Poly/ML 5.8 allows to use the native x86_64 platform without
   360 the full overhead of 64-bit values everywhere. This special x86_64_32
   289 the full overhead of 64-bit values everywhere. This special x86_64_32
   361 mode provides up to 16GB ML heap, while program code and stacks are
   290 mode provides up to 16GB ML heap, while program code and stacks are
   362 allocated elsewhere. Thus approx. 5 times more memory is available for
   291 allocated elsewhere. Thus approx. 5 times more memory is available for
   363 applications compared to old x86 mode (which is no longer used by
   292 applications compared to old x86 mode (which is no longer used by
   364 Isabelle). The switch to the x86_64 CPU architecture also avoids
   293 Isabelle). The switch to the x86_64 CPU architecture also avoids
   365 compatibility problems with Linux and macOS, where 32-bit applications
   294 compatibility problems with Linux and macOS, where 32-bit applications
   366 are gradually phased out.
   295 are gradually phased out.
       
   296 
       
   297 * System option "checkpoint" has been discontinued: obsolete thanks to
       
   298 improved memory management in Poly/ML.
       
   299 
       
   300 * System option "system_heaps" determines where to store the session
       
   301 image of "isabelle build" (and other tools using that internally).
       
   302 Former option "-s" is superseded by option "-o system_heaps".
       
   303 INCOMPATIBILITY in command-line syntax.
       
   304 
       
   305 * Session directory $ISABELLE_HOME/src/Tools/Haskell provides some
       
   306 source modules for Isabelle tools implemented in Haskell, notably for
       
   307 Isabelle/PIDE.
       
   308 
       
   309 * The command-line tool "isabelle build -e" retrieves theory exports
       
   310 from the session build database, using 'export_files' in session ROOT
       
   311 entries.
       
   312 
       
   313 * The command-line tool "isabelle update" uses Isabelle/PIDE in
       
   314 batch-mode to update theory sources based on semantic markup produced in
       
   315 Isabelle/ML. Actual updates depend on system options that may be enabled
       
   316 via "-u OPT" (for "update_OPT"), see also $ISABELLE_HOME/etc/options
       
   317 section "Theory update". Theory sessions are specified as in "isabelle
       
   318 dump".
       
   319 
       
   320 * The command-line tool "isabelle update -u control_cartouches" changes
       
   321 antiquotations into control-symbol format (where possible): @{NAME}
       
   322 becomes \<^NAME> and @{NAME ARG} becomes \<^NAME>\<open>ARG\<close>.
       
   323 
       
   324 * Support for Isabelle command-line tools defined in Isabelle/Scala.
       
   325 Instances of class Isabelle_Scala_Tools may be configured via the shell
       
   326 function "isabelle_scala_tools" in etc/settings (e.g. of an Isabelle
       
   327 component).
       
   328 
       
   329 * Isabelle Server command "use_theories" supports "nodes_status_delay"
       
   330 for continuous output of node status information. The time interval is
       
   331 specified in seconds; a negative value means it is disabled (default).
       
   332 
       
   333 * Isabelle Server command "use_theories" terminates more robustly in the
       
   334 presence of structurally broken sources: full consolidation of theories
       
   335 is no longer required.
       
   336 
       
   337 * OCaml tools and libraries are now accesed via ISABELLE_OCAMLFIND,
       
   338 which needs to point to a suitable version of "ocamlfind" (e.g. via
       
   339 OPAM, see below). INCOMPATIBILITY: settings variables ISABELLE_OCAML and
       
   340 ISABELLE_OCAMLC are no longer supported.
       
   341 
       
   342 * Support for managed installations of Glasgow Haskell Compiler and
       
   343 OCaml via the following command-line tools:
       
   344 
       
   345   isabelle ghc_setup
       
   346   isabelle ghc_stack
       
   347 
       
   348   isabelle ocaml_setup
       
   349   isabelle ocaml_opam
       
   350 
       
   351 The global installation state is determined by the following settings
       
   352 (and corresponding directory contents):
       
   353 
       
   354   ISABELLE_STACK_ROOT
       
   355   ISABELLE_STACK_RESOLVER
       
   356   ISABELLE_GHC_VERSION
       
   357 
       
   358   ISABELLE_OPAM_ROOT
       
   359   ISABELLE_OCAML_VERSION
       
   360 
       
   361 After setup, the following Isabelle settings are automatically
       
   362 redirected (overriding existing user settings):
       
   363 
       
   364   ISABELLE_GHC
       
   365 
       
   366   ISABELLE_OCAMLFIND
       
   367 
       
   368 The old meaning of these settings as locally installed executables may
       
   369 be recovered by purging the directories ISABELLE_STACK_ROOT /
       
   370 ISABELLE_OPAM_ROOT, or by resetting these variables in
       
   371 $ISABELLE_HOME_USER/etc/settings.
   367 
   372 
   368 
   373 
   369 
   374 
   370 New in Isabelle2018 (August 2018)
   375 New in Isabelle2018 (August 2018)
   371 ---------------------------------
   376 ---------------------------------