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.
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.
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.
Version 9.25:
Highlights in this release include:
This release fixes problems with argument handling, some unintended results of the security fixes to the SAFER file access restrictions (specifically accessing ICC profile files), and some additional security issues over the recent 9.24 release.
Note: The ps2epsi utility does not, and cannot call Ghostscript with the -dSAFER command line option. It should never be called with input from untrusted sources.
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.
As well as Ghostscript itself, jbig2dec has had a significant amount of work improving its robustness in the face of out specification files.
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.
Version 9.24:
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.
As well as Ghostscript itself, jbig2dec has had a significant amount of work improving its robustness in the face of out specification files.
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.
Version 9.23:
Ghostscript now has a family of 'pdfimage' devices (pdfimage8, pdfimage24 and pdfimage32) which produce rendered output wrapped up as an image in a PDF. Additionally, there is a 'pclm' device which produces PCLm format output.
There is now a ColorAccuracy parameter allowing the user to decide between speed or accuracy in ICC color transforms.
JPEG Passthrough: devices which support it can now receive the 'raw' JPEG stream from the interpreter. The main use of this is the pdfwrite/ps2write family of devices that can now take JPEG streams from the input file(s) and write them unchanged to the output (thus avoiding additional quantization effects).
PDF transparency performance improvements
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).
We have continued the focus on code hygiene in this release cleaning up security issues, ignored return values, and compiler warnings.
The usual round of bug fixes, compatibility changes, and incremental improvements.
Highlights in this release include:
* Ghostscript can now consume and produce (via the pdfwrite device) PDF 2.0 compliant files.
* The main focus of this release has been security and code cleanliness. Hence many AddressSanitizer, Valgrind and Coverity issues have been addressed.
* The usual round of bug fixes, compatibility changes, and incremental improvements.
This is the fifteenth full release in the stable 9.x series.
Highlights in this release include:
* pdfwrite now preserves annotations from input PDFs (where possible).
* The GhostXPS interpreter now provides the pdfwrite device with the data it requires to emit a ToUnicode CMap: thus allowing fully searchable PDFs to be created from XPS input (in the vast majority of cases).
* Ghostscript now allows the default color space for PDF transparency blends.
* The Ghostscript/GhostPDL configure script now has much better/fuller support for cross compiling.
* The tiffscaled and tiffscaled4 devices can now use ETS (Even Tone Screening)
* The toolbin/pdf_info.ps utility can now emit the PDF XML metadata.
* Ghostscript has a new scan converter available (currently optional, but will become the default in a near future release). It can be enabled by using the command line option: '-dSCANCONVERTERTYPE=2'. This new implementation provides vastly improved performance with large and complex paths.
* The usual round of bug fixes, compatibility changes, and incremental improvements.
Remove Makefile.common that is not used by anything, despite
a comment to the contrary.
Highlights in this release include:
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. Incompatible changes
The planned device API tidy did not happen for this release,
due to time pressures, but we still intend to undertake the
following: We plan to somewhat tidy up the device API. We intend
to remove deprecated device procs (methods/function pointers)
and change the device API so every device proc takes a graphics
state parameter (rather than the current scheme where only a
very few procs take an imager state parameter). This should
serve as notice to anyone maintaining a Ghostscript device
outside the canonical source tree that you may (probably will)
need to update your device(s) when these changes happen. Devices
using only the non-deprecated procs should be trivial to update.
* New custom PJL (near) equivalents for pdfmark and setdistillerparams.
* Metadata pdfmark is now implemented.
* An experimental, rudimentary raster trapping implementation implementation has been added to the Ghostscript graphics library.
* The halftone threshold array generation tools (part of toolbin/halftone) have been improved with thresh_remap which allows folding the transfer function (AKA toner response curve (TRC)) into the threshold array so that highlights are improved. Further, gen_stochastic has improved support for minimum dot size and shape.
* Plus the usual round of bug fixes, compatibility changes, and incremental improvements.
A substantial revision of the build system and GhostPDL directory structure, meaning the GhostPCL and GhostXPS "products" are now built by the Ghostscript build system "proper" rather than having their own builds which called the Ghostscript build system for certain parts of the builds.
Ghostscript-only users should not be affected by this change.
For users of the PCL and XPS interpreters (collectively downloaded as "GhostPDL") there is a new, "flatter" directory structure and only one configure and one make invocation to build all the products. There are also some executable default name changes to bring the PCL and XPS binaries in line with the Ghostscript ones. All executables now end up in the "bin" directory (or build specific variant thereof, e.g. "debugbin"). The PCL executable, by default, is now "gpcl6" on Unix like systems and "gpcl6win??.exe" (where "??" is either "32" or "64"). The XPS executable remains "gxps" on Unix-like systems, but similarly becomes "gxpswin??.exe" on Windows.
Those using scripts or other automated processes will need to take steps to cope with these changes.
A new method of internally inserting devices into the device chain has been developed, named "device subclassing". This allows suitably written devices to be more easily and consistently as "filter" devices.
The first fruit of this is a new implementation of the "-dFirstPage"/"-dLastPage" feature which functions a device filter in the Ghostscript graphics library, meaning it works consistently with all input languages.
The "ghostpdl.inf" file, provided to simplify installing a Postscript printer configure to produce output to suit Ghostscript's "pdfwrite" device is now available as a digitally signed version: "ghostpdl.cat".
Plus the usual round of bug fixes, compatibility changes, and incremental improvements.
* "LockColorants" command line option for tiffsep and psdcmyk devices. Specifying -dLockColorants will restrict those devices to only the colorants list on the command line (thus: -c "<< /SeparationColorNames [ /Cyan /Magenta /Yellow /Black /Violet /Orange] /SeparationOrder [ /Cyan /Magenta /Yellow /Black /Violet /Orange]>> setpagedevice"), rather than allowing the devices to add new colorants as encountered in the input. This is, obviously, preferable for real printers, where only a certain of inks will be available.
* Improved high level devices handling of Forms. Whilst High level devices (eg pdfwrite) already checked Forms to see if they are duplicates, and if so use the initial definition. However, this does not improve performance, since the Form PaintProc still needs to be executed for each instance of the Form, and the matching algorithm could, in very odd circumstances, be defeated. The new implementation benefits both causes, meaning the second and subsequent invocation of the form need not re-run the PaintProc, and removes the heurisic aspect of the reuse detection.
* New URW+ fonts in which the families NimbusMono, NimbusRoman and NimbusSans have been augmented with production quality Greek and Cyrillic glyphs. These correspond to our substitutes for the PDF base 14 fonts.
* Plus the usual round of bug fixes, compatibility changes, and incremental improvements.
Ghostscript now supports the PDF security handler revision 6.
The pdfwrite and ps2write (and related) devices can now be forced to "flatten" glyphs into "basic" marking operations (rather than writing fonts to the output), by giving the -dNoOutputFonts command line option (defaults to "false")
PostScript programs can now use get_params or get_param to determine if a page contains color markings by reading the pageneutralcolor state from the device (so whether the page is "color" or "mono").
Note that this is only accurate when in clist mode, so -dMaxBitmap=0 and -dGrayDetection=true should both be used.
The pdfwrite device now supports Link annotations with GoTo and GoToR actions
The pdfwrite device now supports BMC/BDC/EMC pdfmarks
Regarding the new color management for the pdfwrite device introduced in the previous release, the proscription on using the new color management when producing PDF/A-1 compliant files is now lifted.
To reiterate, also, with the new color management implementation, using the UseCIEColor option is strongly discouraged.
For further information on the new pdfwrite color management, see: Color Conversion and Management
Plus the usual round of bug fixes, compatibility changes, and incremental improvement
pdfwrite now uses the same color management engine as Ghostscript rendering devices (by default LCMS2). This provides much better control over color conversion and color management generally, but will result in some small color differences when compared to the old system.
It is no longer necessary to specify UseCIEColor (and we very much encourage you not to do this) or the ProcessColorModel if you want to convert a PDF file to a specific color space, simply set the ColorConversionStrategy appropriately.
We do not expect any major problems to arise with this new code, but for the duration of this release a new switch -dPDFUseOldCMS is available which will restore the old color management. See: Color Conversion and Management
Please note that due to constraints of the PDF/A-1 specification, the new color management does not yet apply when producing PDF/A files.
A new device 'eps2write' has been added which allows for the creation of EPS files using the ps2write device instead of the old (deprecated and removed) pswrite device. This produces considerably better quality EPS files than the old epswrite device which is now also deprecated and will be removed in a future release.
ps2write now has a feature to allow customisation of the output for specific devices. Please see PSDocOptions and PSPageOptions described in ps2ps2.htm Additional Distiller Params
Ghostscript now reduces memory usage when processing PDF files that use transparency and output is to display devices such as Windows display or x11 (i.e. devices that are strictly full framebuffer devices), and to high level vector devices that cannot reproduce the PDF transparency model, such as the ps2write device or pdfwrite when 'flattening' to PDF 1.3 or earlier (-dCompatibilityLevel=1.3). This uses banding (clist) files to render the transparent areas in bands to reduce memory use, and unlike the existing page level banding, this is hidden from the target device.
Ghostscript can now collect information for pages in temp files (in Ghostscript's clist format), then render and output pages for the job in arbitrary order, including normal, reverse, odd, even, or any order or subset of the pages. This is controlled with the --saved-page=___ option. (Note that this only applies to rendering devices, and not high level devices such as pdfwrite and ps2write.) See: Deferred Page Rendering
The Ghostscript device architecture has been extended so that, when rendering bands into multiple threads, it is now possible to perform post-processing in multiple threads, such as downscale, post-render halftoning, or compression. Previously, post processing was only possible in the single main thread. This can improve performance significantly.
Ghostscript has a new "pwgraster" output device for PWG Raster output
The CUPS device now has improved support for PPD-less printing
Plus the usual round of bug fixes, compatibility changes, and incremental improvements.
* Background printing (BGPrint) is a new feature allowing an accumulated page clist to be rendered by one or more rendering threads whilst the interpreter (in the "main" thread) continues to accumulate the subsequent page's clist. For certain classes of file this can result in a useful performance increase.
* GrayDetection allows suitably written devices to detect "color" input in near neutral tones (i.e. near monochrome) and to convert "on-the-fly" to pure grayscale, whilst retaining the ability to print full color on demand. This is primarily aimed at workflows where saving ink (especially color inks) is required.
* LittleCMS2 and libpng have both been updated to the latest versions.
* Support has been added to build the Ghostscript DLL for WinRT for x86, x64 and ARM (Requires MS Visual Studio 2012 Pro).
* Processing of Windows command line arguments into UTF8 (as presaged a few releases ago) has been enhanced and enabled by default.
* The URW Postscript font set has been updated to the latest version, fixing many compatibility problems with the Adobe fonts.
* Plus the usual round of bug fixes, compatibility changes, and incremental improvements.
* Background printing (BGPrint) is a new feature allowing an accumulated page clist to be rendered by one or more rendering threads whilst the interpreter (in the "main" thread) continues to accumulate the subsequent page's clist. For certain classes of file this can result in a useful performance increase.
* GrayDetection allows suitably written devices to detect "color" input in near neutral tones (i.e. near monochrome) and to convert "on-the-fly" to pure grayscale, whilst retaining the ability to print full color on demand. This is primarily aimed at workflows where saving ink (especially color inks) is required.
* LittleCMS2 and libpng have both been updated to the latest versions.
* Support has been added to build the Ghostscript DLL for WinRT for x86, x64 and ARM (Requires MS Visual Studio 2012 Pro).
* Processing of Windows command line arguments into UTF8 (as presaged a few releases ago) has been enhanced and enabled by default.
* The URW Postscript font set has been updated to the latest version, fixing many compatibility problems with the Adobe fonts.
* Plus the usual round of bug fixes, compatibility changes, and incremental improvements.