# Ann: SWI-Prolog 8.1.16

**URL:** <https://swi-prolog.discourse.group/t/ann-swi-prolog-8-1-16/1501>\
**Category:** Releases\
**Created:** [November 13, 2019, 3:19pm UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-1-16/1501 "2019-11-13T15:19:21Z")\
**Posts on this page:** 1\
**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:** [November 13, 2019, 3:19pm UTC](https://swi-prolog.discourse.group/t/ann-swi-prolog-8-1-16/1501/1 "2019-11-13T15:19:22Z")

</div>

Dear SWI-Prolog user,

I’m happy to announce the release of SWI-Prolog 8.1.16. This version  
comes with a couple of important patches and completion of the new  
config file structure. Highlights:

- Fixed Error in standard order of terms related to `[]`, ISO  
latin 1 and wide atoms. May result in wrong sort results for  
lists that contain all three.
- Possibly memory corruption due to freeing tables (tabling)  
caused by a write-after-free bug.
- Possibly memory corruption due to freeing temporary modules  
as used by the Pengine implementation.
- Avoid creating config directories if the parent directory is  
not owned by the process. This notably avoids creating  
directories owned by root if the system is executed under  
`sudo`.

MODIFIED: the system no longer considers a directory `lib` below the  
working directory as a library. See below.

```
Enjoy --- Jan

```

P.s. virustotal gives one false positive. We’ll see how Google is going to handle this.

# SWI-Prolog Changelog since version 8.1.15

- FIXED: Single threaded compilation

- FIXED: When removing predicates from a temporary module we can  
destroy the indexes early. This saves time and memory and avoids a  
write-after-free bug.

- FIXED: Avoid writing to a freed allocation pool.

- DOC: Issue#401: duplicate docs for guitracer/0. Also updated docs  
for trace/2.

- ENHANCED: Removed sinh and cosh functions from ifprolog emulation as  
these are built in.

- DOC: Issue#379: absolute\_file\_name/3 on directories.

- FIXED: Issue#516: library(progman) string compatibility. Paulo  
Moura. Also reenables installing this library on Windows.

- FIXED: Issue#92: `[]` was ordered between ISO-latin-1 and wide atoms,  
which could lead to inconsistent ordering. Now, the ordering  
is blobs @\< reserved symbols @\< text atoms

- FIXED: check\_config\_files/0: old location of packs is  
~/lib/swipl/pack. Paulo Moura.

- CONFIG: check\_installation/0: check for config files. Added  
update\_config\_files/0 to move config files to their new location.

- ENHANCED: Avoid creating config files and directories below directories  
not owned by the process

- ADDED: ‘$my\_file’/1 to check that the user running the current process  
owns a given file.

- MODIFIED: Stop handling `lib` below the current directory as  
a library directory. Loading from local files should be  
considered a security risk. You can keep using this by adding  
user:file\_search\_path(library, lib).

- BUILD: Use `-f none` for manual build steps to avoid dependencies on  
the personal init file.

- PPA: Added eoan to list of distributions

## Package http

- ADDED: http\_reply\_dirindex/3 and directory\_index/2: option  
name(Callable) to hook the name cell creation.

## Package pldoc

- FIXED: issue#470: get source links for unqualified predicates from  
the system’s main sources. Falco Nogatz.

## Package xpce

- ENHANCED: Prevent creating a config dir below a directory not owned  
by the process.
