9.56.1
New PDF Interpreter is now enabled by default: See Changes Coming to the PDF Interpreter
libgs is now threadsafe
The PSD output devices now write ICC profiles to their output files for improved color fidelity.
Ghostscript/GhostPDL can now output Apple Raster and URF format image files: via the "appleraster" or "urf" output devices (using the cups implementation of those formats).
Version 9.55.0 (2021-09-27)
Highlights in this release include:
This release includes the fix for the %pipe% security issue (CVE-2021-3781).
New PDF Interpreter: This is an entirely new implementation written in C (rather than PostScript, as before). For a full discussion of this change and reasons for it see: Changes Coming to the PDF Interpreter.
In this (9.55.0) release, the new PDF interpreter is disabled by default in Ghostscript, but can be used by specifying -dNEWPDF. We hope to make it the default in 9.56.0, and fully deprecate the PostScript implementation shortly after that (depending on the feedback we get).
This also allows us to offer a new executable (gpdf, or gpdfwin??.exe on Windows) which is purely for PDF input. For this release, those new binaries are not included in the "install" make targets, nor in the Windows installers (they will be from 9.56.0 onwards).
We would ask that as many users as possible take the opportunity to test with the new PDF implementation (i.e. using -dNEWPDF on your gs command line), and discuss any problems with us, before the new implementation becomes the default.
The pdfwrite device now supports "passthrough" for JPX/JPG2000 data images (as well as the already supported JPEG/DCT Encoded). That means that if no rescaling or color conversion of the image data is required, the encoded/compressed image data from the input file will be written unchanged to the output, preventing potential image degradation caused by decompressing and recompressing.
The Ghostscript/GhostPDL demo apps for C, C#, Java and Python have all had improvements and the C#/Java/Python language bindings have now been documented, see Ghostscript Language Bindings
The Zugferd compliant PDF generating definitions (lib/zugferd.ps) have been updated and expanded to support the current version (2.1.1) of the Zugferd spec, and optionally different versions of the specification.
The PCL/m output devices now support Duplex/Tumble.
The internal support for "n-up" style simple imposition (introduced in 9.54.0) has been extended and improved for better support across all input formats.
Ghostscript now supports object specific halftone - for example, different halftones can be specified for text and images, reflecting the differing needs of rendering those two types of object.
Our efforts in code hygiene and maintainability continue.
The usual round of bug fixes, compatibility changes, and incremental improvements.
(9.53.0) We have added the capability to build with the Tesseract OCR engine. In such a build, new devices are available (pdfocr8/pdfocr24/pdfocr32) which render the output file to an image, OCR that image, and output the image "wrapped" up as a PDF file, with the OCR generated text information included as "invisible" text (in PDF terms, text rendering mode 3).
The 9.54.0 release is a maintenance release, and also adds new functionality.
Highlights in this release include:
Overprint simulation is now available to all output devices, allowing quality previewing/proofing of PostScript and PDF jobs that rely on overprint. See the -dOverprint option documentation in: Overprint
The "docxwrite" device adds the ability to output to Microsoft Word "docx" format. See: docxwrite
The pdfwrite device is now capable of using the Tesseract OCR engine when it is built into Ghostscript to improve searchability and copy and paste functionality when the input lacks the metadata for that purpose. See: UseOCR
Ghostscript/GhostPDL now includes a "map text to black" function, where text drawn by an input job (except when drawn using a Type 3 font) can be forced to draw in solid black. See: BlackText
Ghostscript/GhostPDL now supports simple N-up imposition "internally". See: NupControl
Our efforts in code hygiene and maintainability continue.
The usual round of bug fixes, compatibility changes, and incremental improvements.
(9.53.0) We have added the capability to build with the Tesseract OCR engine. In such a build, new devices are available (pdfocr8/pdfocr24/pdfocr32) which render the output file to an image, OCR that image, and output the image "wrapped" up as a PDF file, with the OCR generated text information included as "invisible" text (in PDF terms, text rendering mode 3).
Mainly due to time constraints, we only support including Tesseract from source included in our release packages, and not linking to Tesseract/Leptonica shared libraries. Whether we add this capability will be largely dependent on community demand for the feature.
9.53.3:
A crash (or silent, erroneous exit) on 64 bit Windows and other LLP64 type environments.
What appears to be a compiler optimiser bug in 64 bit Windows builds with Visual Studio 2019
A crash related to management of ICC profile objects
A crash on SPARC hardware due to an alignment mismatch in the bitmap cache
A parameter type mismatch that would cause Ghostcript to error out during initialisation, which affected 64 big, big endian architectures.
An expected side effect of another change that prevented multithreaded rendering and background rendering from working correctly.
Changelog:
Version 9.53.2 (2020-09-25)
Highlights in this release include:
The 9.53.2 release is primarily maintenance.
Three issues arose with 9.53.0/1 that prompted the release of
a .2 patch:
A crash (or silent, erroneous exit) on 64 bit Windows and
other LLP64 type environments.
A parameter type mismatch that would cause Ghostcript to
error out during initialisation, which affected 64 big,
big endian architectures.
An expected side effect of another change that prevented
multithreaded rendering and background rendering from
working correctly.
Details of those can be found in the changelog.
The most obvious change is the (re-)introduction of the patch
level to the version number, this helps facilitate a revised
policy on handling security related issues.
To clarify: in the event we decide to release a patch revision,
it will replace the release with the previous patch number.
Release notes, highlights and warnings will remain the same,
except for the addition of whatever fix(es) prompted the patch.
Our efforts in code hygiene and maintainability continue.
We have added the capability to build with the Tesseract OCR
engine. In such a build, new devices are available
(pdfocr8/pdfocr24/pdfocr32) which render the output file to an
image, OCR that image, and output the image "wrapped" up as a
PDF file, with the OCR generated text information included as
"invisible" text (in PDF terms, text rendering mode 3).
Due to some patches to the Tesseract sources that are required
(integrated upstream, but awaiting release), time constraints,
and the experimental nature of the feature, we only support
including Tesseract from source, not linking to Tesseract shared
libraries. Whether we add this capability will be largely
dependant on community demand for the feature.
See Enabling OCR for more details.
We have added Python bindings for the gsapi interface, can be
found in demos/python. These are experimental, and we welcome
feedback from interested developers.
For those integrating Ghostscript/GhostPDL via the gsapi
interface, we have added new capabilities to that, specifically
in terms of setting and interrogating device parameters. These,
along with the existing interface calls, are documented in:
Ghostscript Interpreter API
IMPORTANT: In consultation with a representative of (OpenPrinting)
it is our intention to deprecate and, in the not distant future,
remove the OpenPrinting Vector/Raster Printer Drivers (that
is, the opvp and oprp devices).
If you rely on either of these devices, please get in touch
with us, so we can discuss your use case, and revise our plans
accordingly.
IMPORTANT: We have forked LittleCMS2 into LittleCMS2mt (the
"mt" indicating "multi-thread"). LCMS2 is not thread safe and
cannot be made thread safe without breaking the ABI. Our fork
will be thread safe and include performance enhancements (these
changes have all be been offered and rejected upstream). We
will maintain compatibility between Ghostscript and LCMS2 for
a time, but not in perpetuity. If there is sufficient interest,
our fork will be available as its own package separately from
Ghostscript (and MuPDF).
The usual round of bug fixes, compatibility changes, and
incremental improvements.
pkgsrc changes (for fonts/ghostscript-cidfonts-ryumin):
- Add SUBST_NOOP_OK.ttf_path, at least for the default `cidfmap-adobe' that's a
noop
Changes:
9.53.0
======
Highlights in this release include:
- The 9.53.0 release is primarily maintenance.
- The most obvious change is the (re-)introduction of the patch level to the
version number, this helps facilitate a revised policy on handling security
related issues.
- Our efforts in code hygiene and maintainability continue.
- We have added the capability to build with the Tesseract OCR engine. In
such a build, new devices are available (pdfocr8/pdfocr24/pdfocr32) which
render the output file to an image, OCR that image, and output the image
"wrapped" up as a PDF file, with the OCR generated text information
included as "invisible" text (in PDF terms, text rendering mode 3).
Due to some patches to the Tesseract sources that are required (integrated
upstream, but awaiting release), time constraints, and the experimental
nature of the feature, we only support including Tesseract from source, not
linking to Tesseract shared libraries. Whether we add this capability will
be largely dependant on community demand for the feature.
- We have added Python bindings for the gsapi interface, can be found in
demos/python. These are experimental, and we welcome feedback from
interested developers.
- For those integrating Ghostscript/GhostPDL via the gsapi interface, we have
added new capabilities to that, specifically in terms of setting and
interrogating device parameters. These, along with the existing interface
calls, are documented in: Ghostscript Interpreter API
- IMPORTANT: In consultation with a representative of (OpenPrinting) it is
our intention to deprecate and, in the not distant future, remove the
OpenPrinting Vector/Raster Printer Drivers (that is, the opvp and oprp
devices).
If you rely on either of these devices, please get in touch with us, so we
can discuss your use case, and revise our plans accordingly.
- IMPORTANT: We have forked LittleCMS2 into LittleCMS2mt (the "mt" indicating
"multi-thread"). LCMS2 is not thread safe and cannot be made thread safe
without breaking the ABI. Our fork will be thread safe and include
performance enhancements (these changes have all be been offered and
rejected upstream). We will maintain compatibility between Ghostscript and
LCMS2 for a time, but not in perpetuity. If there is sufficient interest,
our fork will be available as its own package separately from Ghostscript
(and MuPDF).
- The usual round of bug fixes, compatibility changes, and incremental
improvements.
Version 9.52:
Highlights in this release include:
The 9.52 release replaces the 9.51 release after a problem was reported with 9.51 which warranted the quick turnaround. Thus, like 9.51, 9.52 is primarily a maintenance release, consolidating the changes we introduced in 9.50.
We have continued our work on code hygiene for this release, with a focus on the static analysis tool Coverity (from Synopsys, Inc) and we have now adopted a policy of maintaining zero Coverity issues in the Ghostscript/GhostPDL source base.
IMPORTANT: In consultation with a representative of (OpenPrinting) it is our intention to deprecate and, in the not distant future, remove the OpenPrinting Vector/Raster Printer Drivers (that is, the opvp and oprp devices).
If you rely on either of these devices, please get in touch with us, so we can discuss your use case, and revise our plans accordingly.
IMPORTANT: We have forked LittleCMS2 into LittleCMS2mt (the "mt" indicating "multi-thread"). LCMS2 is not thread-safe, and cannot be made thread-safe without breaking the ABI. Our fork will be thread-safe and include performance enhancements (these changes have all be been offered and rejected upstream). We will maintain compatibility between Ghostscript and LCMS2 for a time, but not in perpetuity. If there is sufficient interest, our fork will be available as its own package separately from Ghostscript (and MuPDF).
The usual round of bug fixes, compatibility changes, and incremental improvements.
The bundled lcms2mt was still accidentally picked up making packages
linked against graphics/lcms2 aborting (e.g. ImageMagick) when handling
format that used ghostscript-agpl.
PKGREVISION++
Changes:
Version 9.50 (2019-09-30)
Highlights in this release include:
* The change to version 9.50 (rather than the intended 9.28) follows
recognition of the extent and importance of the file access control
redesign/reimplementation outlined below.
* The file access control capability (enable with -dSAFER) has been
completely rewritten, with a ground-up rethink of the design. For more
details, see: SAFER.
It is important to note that -dSAFER now only enables the file access
controls, and no longer applies restrictions to standard Postscript
functionality (specifically, restrictions on setpagedevice. If your
application relies on these Postscript restrictions, see OLDSAFER, and
please get in touch, as we do plan to remove those Postscript restrictions
unless we have reason not to.
IMPORTANT: File access controls are now enabled by default. In order to run
Ghostscript without these controls, see NOSAFER
Important Note for Windows Users: See below under Incompatible Changes
* IMPORTANT: We are in the process of forking LittleCMS. LCMS2 is not thread
safe, and cannot be made thread safe without breaking the ABI. Our fork
will be thread safe, and include performance enhancements (these changes
have all be been offered and rejected upstream). We will maintain
compatibility between Ghostscript and LCMS2 for a time, but not in
perpetuity. Our fork will be available as its own package separately from
Ghostscript (and MuPDF).
* The usual round of bug fixes, compatibility changes, and incremental
improvements.
* Special thanks to Akira Kakuto, Paul Wessel, William Bader, Nelson H. F.
Beebe and everyone else who put time and effort into testing this new
release.
For a list of open issues, or to report problems, please visit
bugs.ghostscript.com.
Incompatible changes
* There are a couple of subtle incompatibilities between the old and new
SAFER implementations. Firstly, as mentioned above, SAFER now leaves
standard Postcript functionality unchanged (except for the file access
limitations). Secondly, the interaction with save/restore operations,
see SAFER.
Important Note for Windows Users:
The file/path pattern matching is case sensitive, even on Windows. This is
a change in behaviour compared to the old code which, on Windows, was case
insensitive. This is in recognition of changes in Windows behaviour, in
that it now supports (although does not enforce) case sensitivity.
* The following is not strictly speaking new to 9.50, as not much has changed
since 9.27 in this area, but for those who don't upgrade with every
release:
The process of "tidying" the Postscript name space should have removed only
non-standard and undocumented operators. Nevertheless, it is possible that
any integrations or utilities that rely on those non-standard and
undocumented operators may stop working, or may change behaviour.
If you encounter such a case, please contact us (either the #ghostscript
IRC channel, or the gs-devel mailing list would be best), and we'll work
with you to either find an alternative solution or return the previous
functionality, if there is genuinely no other option.
One case we know this has occurred is GSView 5 (and earlier). GSView 5
support for PDF files relied upon internal use only features which are no
longer available. GSView 5 will still work as previously for Postscript
files. For PDF files, users are encouraged to look at MuPDF.
The latest version of ghostscript-agpl calls functions that were
introduced in freetype2 version 2.10.0, and the build fails when
building against an earlier version.
Version 9.27:
Highlights in this release include:
We have extensively cleaned up the Postscript name space: removing access to internal and/or undocumented Postscript operators, procedures and data. This has benefits for security and maintainability.
We have added a new "product": "gpdl". This is a rethink/redesign of the old "language_switch" product (pspcl6), and includes all the interpreters we develop based on the Ghostscript graphics library: Postscript, PDF, PCL6, PXL and XPS. This is experimental, and should be considered of beta testing quality, and thus is not built by default: it can be built by using the "experimental" target.
gpdl uses a heuristic to judge the file type being passed to it. In general, it supports most of the widely used command line options for each interpreter, but compatibility is not complete (the practicalities of swapping interpreters means it is unlikely that full parity of command line options will be possible).
Fontmap can now reference invidual fonts in a TrueType Collection for font subsitution. Previously, a Fontmap entry could only reference a TrueType collection and use the default (first) font. Now, the Fontmap syntax allows for specifying a specific index in a TTC. See the comments at the top of (the default) Fontmap.GS for details.
IMPORTANT: We are in the process of forking LittleCMS. LCMS2 is not thread safe, and cannot be made thread safe without breaking the ABI. Our fork will be thread safe, and include performance enhancements (these changes have all be been offered and rejected upstream). We will maintain compatibility between Ghostscript and LCMS2 for a time, but not in perpetuity. Our fork will be available as its own package separately from Ghostscript (and MuPDF).
The usual round of bug fixes, compatibility changes, and incremental improvements.
Copy the utf8 option from ghostscript-gpl, which is just bl3ing on
libiconv. Leave it off for now (unlike -gpl).
Perhaps it should be default on, and perhaps it should be always
enabled and not even an option.
There was a vestigial conditional-on-cups-option commented-out
inclusion of the cups bl3. But, programs that link against libgs do
not need the cups includes/libs, and cups is not a dependency of those
programs.
Remove bundled openjpeg in WRKSRC, add a dependency to openjpeg and pass
`--enable-openjpeg' in order to always link to pkgsrc one instead of the
ghostscript bundled one.
Bump PKGREVISION.
- Add \todo about a4 not being valid for PAPERSIZE
- Add PAPERSIZE to BUILD_DEFS
- Add \todo about jpeg2000 bl3 that is commented out without explanation
- GC undefined and unused PLIST.cidfmap
No real change intended, other than BUILD_DEFS. Ride recent
PKGREVISION++.
This is basically a port of the cups option code from
../ghostscript-gpl. Since the last GPL3 gs release, some programs
have migrated to the cups-filters package. Thus, they are no longer
installed by cups, and the option is much simpler.
I verified that the cups driver appears in "gs -h", but have not
tested it.
While the option defaults to off, I bumped PKGREVISION anyway.
Changes:
Version 9.26 (2018-11-20)
Highlights in this release include:
- Security issues have been the primary focus of this release,
including solving several (well publicised) real and potential
exploits.
PLEASE NOTE: We strongly urge users to upgrade to this latest
release to avoid these issues.
- IMPORTANT: We are in the process of forking LittleCMS. LCMS2
is not thread safe, and cannot be made thread safe without breaking
the ABI. Our fork will be thread safe, and include performance
enhancements (these changes have all be been offered and rejected
upstream). We will maintain compatibility between Ghostscript
and LCMS2 for a time, but not in perpetuity. Our fork will be
available as its own package separately from Ghostscript (and
MuPDF).
- Thanks to Man Yue Mo of Semmle Security Research Team, Jens
Mu:ller of Ruhr-Universita:t Bochum and Tavis Ormandy of Google's
Project Zero for their help to identify specific security
issues.
- The usual round of bug fixes, compatibility changes,
and incremental improvements.
For a list of open issues, or to report problems, please visit
bugs.ghostscript.com.