liblouis 3.38.0 has been released

The liblouis developer team is proud to announce the liblouis release
3.38.0. The release is available for download at:

https://github.com/liblouis/liblouis/releases

Introduction
============

Liblouis is an open-source braille translator and back-translator. It
features support for computer, literary and math braille, supports
contracted and uncontracted translation for many, many languages [1]_.
It plays an important role in an open source accessibility stack and is
used by screenreaders such as NVDA, Orca and JAWS. A companion project
liblouisutdml [2]_ deals with formatting of braille.

Noteworthy changes in this release
==================================

This release is highlighted by a new Norwegian grade 3 contraction
table, the result of Lars Bjørndal's work implementing the revised
Braille Authority rules. The Swedish tables have been thoroughly renewed
and now also cover Sami and Elfdalian. Malayalam has been updated to
comply with the new Bharati Braille 2026 rules. Several security
vulnerabilities were fixed, and the documentation was improved.

I'd like to thank everybody for helping to bring liblouis forward.

For a detailed list of all the changes refer to the list of closed
issues [3]_.

Bug fixes
---------

-  Fix several memory safety issues:

   -  a heap-buffer-overflow in ``back_passDoAction`` thanks to Justin
      Stitt;
   -  a null pointer dereference in ``pattern_compile_expression``, a
      buffer overflow in ``_lou_logWidecharBuf``, null pointer
      dereferences in ``_lou_compileTranslationRule`` and
      ``_lou_compileDisplayRule``, a segfault in ``lou_compileString``,
      and missing length validation in ``_lou_backTranslate``, all
      thanks to FuzzAnything.

Braille table improvements
--------------------------

-  Major renewal of Swedish 6- and 8-dot tables, now reorganized to
   share common data. New tables for Sami and Elfdalian are also
   included, thanks to InsynScandinavia.
-  Updated Malayalam table with Bharati Braille 2026 rules, thanks to
   Jake Kyle.
-  Improvements to Hungarian forward and backward translation thanks to
   Attila Hammer.
-  Fix UK Grade 2 back-translation incorrectly expanding letter
   combinations such as ``bl`` and ``ac`` when they appear in the middle
   of a word, thanks to Kara Louise.
-  Fix a long-standing typo with ``begnum mt`` in all 5 Danish Grade 2
   tables, thanks to Bue Vester-Andersen.
-  Add a Norwegian table for Spanish text (``es-no.utb``), thanks to
   Bert Frees.
-  Add a Norwegian grade 3 contraction table implementing the revised
   Braille Authority rules, along with missing grade 2 contractions and
   minor fixes, thanks to Lars Bjørndal and Hans Anton Ålien.
-  Replace Estonian computer braille table ``et.ctb`` with the newer
   ``et-g0.utb``, thanks to Taniel Kirikal and Bert Frees.

Other changes
-------------

-  Updated documentation to clarify the differences between ``digit``,
   ``litdigit`` and ``numsign`` opcodes, thanks to Anthony Tibbs.

Backwards incompatible changes
------------------------------

-  The table compiler now rejects uppercase virtual dots (``A``..~F~);
   only the lowercase forms (``a``..~f~) are valid as documented.

New, renamed or removed tables
------------------------------

New
~~~

-  ``es-no.utb``
-  ``ovd-6g0.utb``
-  ``ovd-8g0.utb``
-  ``smi-6g0.utb``
-  ``smi-8g0.utb``
-  ``sv-6common.uti``
-  ``sv-6g0d.utb``
-  ``sv-6g0p.utb``
-  ``sv-6g1.uti``
-  ``sv-6g1d.ctb``
-  ``sv-6g2.uti``
-  ``sv-6g2d.ctb``
-  ``sv-8g0d.utb``
-  ``sv-8g0n.utb``
-  ``sv-8g1.uti``
-  ``sv-8g1d.ctb``
-  ``sv-8g1n.ctb``
-  ``sv-8g2.uti``
-  ``sv-8g2d.ctb``
-  ``sv-8g2n.ctb``
-  ``sv-phon.uti``

Renamed
~~~~~~~

-  None

Removed
~~~~~~~

-  ``et.ctb``

   -  use ``et-g0.utb`` instead

Next release
============

The next release will be published on August 31 2026 so please keep up
the excellent work and keep those improvements coming.

Share and Enjoy!

– Christian Egli, on behalf of the liblouis developers

Footnotes
=========

.. [1]
   https://github.com/liblouis/liblouis/tree/master/tables

.. [2]
   https://github.com/liblouis/liblouisutdml

.. [3]
   https://github.com/liblouis/liblouis/milestone/48?closed=1
