@@ -71,6 +71,7 @@ Summary -- release highlights
7171* :ref: `PEP 761: Discontinuation of PGP signatures <whatsnew314-pep761 >`
7272* :ref: `PEP 765: Disallow return/break/continue that exit a finally block <whatsnew314-pep765 >`
7373* :ref: `PEP 768: Safe external debugger interface for CPython <whatsnew314-pep768 >`
74+ * :ref: `PEP 784: Adding Zstandard to the standard library <whatsnew314-pep784 >`
7475* :ref: `A new type of interpreter <whatsnew314-tail-call >`
7576* :ref: `Syntax highlighting in PyREPL <whatsnew314-pyrepl-highlighting >`,
7677 and color output in :ref: `unittest <whatsnew314-color-unittest >`,
@@ -232,6 +233,51 @@ See :pep:`768` for more details.
232233
233234(Contributed by Pablo Galindo Salgado, Matt Wozniski, and Ivona Stojanovic in :gh: `131591 `.)
234235
236+ .. _whatsnew314-pep784 :
237+
238+ PEP 784: Adding Zstandard to the standard library
239+ -------------------------------------------------
240+
241+ The new ``compression `` package contains modules :mod: `!compression.lzma `,
242+ :mod: `!compression.bz2 `, :mod: `!compression.gzip ` and :mod: `!compression.zlib `
243+ which re-export the :mod: `lzma `, :mod: `bz2 `, :mod: `gzip ` and :mod: `zlib `
244+ modules respectively. The new import names under ``compression `` are the
245+ canonical names for importing these compression modules going forward. However,
246+ the existing modules names have not been deprecated. Any deprecation or removal
247+ of the existing compression modules will occur no sooner than five years after
248+ the release of 3.14.
249+
250+ The new :mod: `!compression.zstd ` module provides compression and decompression
251+ APIs for the Zstandard format via bindings to `Meta's zstd library
252+ <https://facebook.github.io/zstd/> `__. Zstandard is a widely adopted, highly
253+ efficient, and fast compression format. In addition to the APIs introduced in
254+ :mod: `!compression.zstd `, support for reading and writing Zstandard compressed
255+ archives has been added to the :mod: `tarfile `, :mod: `zipfile `, and
256+ :mod: `shutil ` modules.
257+
258+ Here's an example of using the new module to compress some data:
259+
260+ .. code-block :: python
261+
262+ from compression import zstd
263+ import math
264+
265+ data = str (math.pi).encode() * 20
266+
267+ compressed = zstd.compress(data)
268+
269+ ratio = len (compressed) / len (data)
270+ print (f " Achieved compression ratio of { ratio} " )
271+
272+ As can be seen, the API is similar to the APIs of the :mod: `!lzma ` and
273+ :mod: `!bz2 ` modules.
274+
275+ (Contributed by Emma Harper Smith, Adam Turner, Gregory P. Smith, Tomas Roun,
276+ Victor Stinner, and Rogdham in :gh: `132983 `)
277+
278+ .. seealso ::
279+ :pep: `768 `.
280+
235281
236282.. _whatsnew314-remote-pdb :
237283
907953 (Contributed by Irit Katriel in :gh: `123958 `.)
908954
909955* The ``repr() `` output for AST nodes now includes more information.
910- (Contributed by Tomas R in :gh: `116022 `.)
956+ (Contributed by Tomas Roun in :gh: `116022 `.)
911957
912958* :func: `ast.parse `, when called with an AST as input, now always verifies
913959 that the root node type is appropriate.
0 commit comments