# Ann: SWI-Prolog 8.3.24

**URL:** <https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-24/3935>\
**Category:** Releases\
**Created:** [May 10, 2021, 7:56am UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-24/3935 "2021-05-10T07:56:00Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![jan](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/jan/32/4_2.png) [@jan](https://swi-prolog.discourse.group/u/jan)\
**Post date:** [May 10, 2021, 7:56am UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-24/3935/1 "2021-05-10T07:56:00Z")

</div>

Dear SWI-Prolog user,

SWI-Prolog 8.3.24 is ready for download. Quite few things happened.

- @peter.ludemann did a lot of work improving the Google protocol  
buffer implementation.
- Various tabling enhancements:
  - MODIFIED: library(dialect/xsb/increval) is moved to library(increval)
  - Support to to monotonic tabling on external data sources rather than  
only on dynamic predicates.
  - Fix in monotonic propagation
  - Fixed a possible crash (invalid compiled table)

- Improved handling of errors and warnings for batch processing and  
`-c` compilation.
- Improved escape sequences when writing quoted atoms and strings.
- Fixed problem with nested reconsult (shows in expanded maplist/N  
being undefined on every even load).
- Added undo/1 to push goals onto the trail to be executed on  
backtracking.

Thanks for all the pull requests and comments.

```
Enjoy --- Jan

```

# SWI-Prolog Changelog since version 8.3.23

- FIXED: Issue#830: assertion failure in GUI debugger. Wouter Beek.

- TEST: Make a test fail if an error message is printed.

- FIXED: locale\_create/3: handling of `default` and `current_locale`.

- ADDED: Make the new on-error and on-warning options work both in  
normal mode and in compilation (`-c`) mode.

- ENHANCED: Handle underscores and minus the same when parsing  
compilation options for `-c`.

- ENHANCED: Enable color output when compiling

- ADDED: Prolog flags `on_error` and `on_warning` connected to  
commandline options.

- ADDED: Provide a (silent) message reporting the error and warning count  
while loading a file and document error handling during compilation.

- ADDED: statistics/2 and thread\_statistics/3 keys `warnings` and  
`errors`.

- ADDED: undo/1 to schedule goals to be called on backtracking.

- FIXED: Issue#110: Nested consult/1 on already loaded files (reconsult)  
did not do generation management correctly.

- MODIFIED: Renamed incr\_propagate\_answer/1 to incr\_propagate\_calls/1.  
Removed incr\_invalidate\_answer/1 (is incr\_invalidate\_calls/1).

- FIXED: Ensure a compiled trie never ends in I\_FAIL. This crashes  
the debugger.

- FIXED: vm\_list/1 for compiled tries.

- ADDED: incr\_propagate\_answer/1 and incr\_invalidate\_answer/1.

- MODIFIED: Move library(increval) from dialect/xsb to the core  
library. Code using the XSB emulation should run unmodified. Code that  
uses this library as `library(dialect/xsb/increval)` must be updated  
to load library(increval) or rely on autoloading.

- DOC: Updated stream\_property/2 for `representation_error`

- ADDED: Prolog flag `character_escapes_unicode`

- CLEANUP: Generalize fast access to boolean Prolog flags such that we  
can host more than 32.

- ENHANCED: Use Unicode classifiers for deciding on which characters  
to escape for quoted write.

- DOC: Escape sequences used for quoted write.

- MODIFIED: Make quoted write depend on `iswgraph()` rather than not  
quote any non-ascii character. Escaped characters are written as  
`\x<hex>\`.

- ADDED: code\_type/2: category `print`

- FIXED: Tighter checking correctness of sandbox declarations and fix  
wrong declaration for ‘$moded\_wrap\_tabled’/5 (was /4).

- DOC: stream\_property/2 representation\_errors property.

- DOC: Explain current status wrt dynamic and static linking.

- BUILD: Added `-DSWIPL_STATIC_LIB=ON` config option to also build  
a static library.

- BUILD: Use CMake `OBJECT` library as intermediate.

- ENHANCED: Issue#825: Error handling when goal\_expansion/2 binds a  
variable in `\+/1` or `;/2`.

- ADDED: Prolog flag `optimise_unify` to prevent moving unifications to  
the head. as these harm notably the source level debugger experience.

- FIXED: runtime change of det/1 property. Peter Ludemann.

- FIXED: Fresh table that depends on an invalid monotonic lazy table  
causes a permission error.

- DOC: “pinned” → “developed”

## Package clib

- ENHANCED: process\_create/3: better error message if executable could  
not be found.

## Package http

- DOC: Small touches & updates

## Package ltx2htm

- FIXED: Handling of empty cells to emit a `<td></td>`

## Package pengines

- FIXED: pengine\_property/2 in mode (+,+). David Tonhofer.

## Package protobufs

- ADDED: support for “packed”

- FIXED: UTF-8 processing for string(Tag,…) ADDED:  
signed64(Tag,…) for .proto types int32,int64

## Package sgml

- TEST: Silence expected error messages.

---

<div class="post-metadata">

**Author:** ![jan](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/jan/32/4_2.png) [@jan](https://swi-prolog.discourse.group/u/jan)\
**Post date:** [May 10, 2021, 9:17am UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-24/3935/2 "2021-05-10T09:17:41Z")

</div>

Unfortunately the patch that adds the possibility to generate a static library in addition to the dynamic one broke the PGO compilation (compiles fine, but there is no speedup as the PGO compiler options were not passed to the right CMake target). Pushed 309291ee4889abb55505979a33853857af662657 to address this.

---

<div class="post-metadata">

**Author:** ![jan](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/jan/32/4_2.png) [@jan](https://swi-prolog.discourse.group/u/jan)\
**Post date:** [June 6, 2021, 11:12am UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-24/3935/4 "2021-06-06T11:12:59Z")

</div>

Logic of the flag was negated ☹ Thanks.

---

<div class="post-metadata">

**Author:** ![swi](https://avatars.discourse-cdn.com/v4/letter/s/51bf81/32.png) [@swi](https://swi-prolog.discourse.group/u/swi)\
**Post date:** [June 6, 2021, 8:36pm UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-3-24/3935/6 "2021-06-06T20:36:55Z")

</div>

> [@anon95304481](#):
>
> **Simple Debug Aware Inline Utility**  
> Module Aware, But Without System Help  
> With Head Cleaning  
> [https://gist.github.com/jburse/f6ad8de5f2a2de54c3efdbbe654e8013#file-inline3-pl](https://gist.github.com/jburse/f6ad8de5f2a2de54c3efdbbe654e8013#file-inline3-pl)
> 
> Enjoy!

The license is rather restrictive, is this what you intend or it was just a copy and paste?
