Today we are releasing Sigil-0.8.900 which really represents the first of the Sigil 0.9.0 pre releases whose eventual goal is to add epub3 support without disrupting epub2 editing.

To accomplish this, Sigil has had most of its internals torn out and rebuilt from scratch with new components including Google’s Gumbo html5 parser and the use of an embedded Python 3.4.3 interpreter with lxml to replace Xerces and Tidy which had some serious issues with potential ePub3 support. As such, we do expect users to run into corner cases we have not yet found ourselves. So please test this new release and report any irregularities you see so that we can quickly iron out any difficulties before continuing our development towards support for both ePub2 and ePub3.

In addition, due to Compiler/DLL literal hell on Windows we have been forced to mix a VS2013 built Sigil, and Qt with a VS 2010 built Python 3.4. Given that Python 3.4 is C based (not C++) and given all python memory allocation/deallocation never crosses over our Python embedded interface, this has not proven to be an issue under all of our testing. That said, once Qt 5.5.1 actually builds with VS2015 on Windows, we will move towards using a VS2015 built version of Sigil, Qt, and Python 3.5 to make sure all pieces of the Sigil app are compiled with the exact same compiler on Windows. On Linux and Mac OS X where the compiler designers actually understand the concept of backwards compatibility using versioned symbols, separation of exception handling, and etc, none of this is an issue.

Features:

  • Removed Tidy and replaced it with a combination of a specially modified Gumbo
    parser that supports html5

  • Removed Xerces, XercesExtras, Boost, and unused bundles.

  • Updated the source code to be compatible with the latest clang compiler by replacing all “undefined – behaviour” use of “Null” References with proper pointers across our entire codebase.

  • Completely revamped the build process to embed the Python 3.4 Interpreter
    inside of Sigil and integrate it in, including as site-packages:
    [lxml, bs4, PIL, regex, six, html5lib]. This will allow plugins
    that use the internal Python 3.X engine access to all of these
    specialized packages by default with no additional action
    needed by end users of their plugin.

  • Created our own version of BeautifulSoup4-4.4.0 called sigil_bs4 that
    fixes lxml namespace bugs, fixes serialization/prettyprinting of
    inline xhtml tags, and modifies the bs4 codebase so that a single
    source code works equally well on both Python 2.7 and Python 3.X

  • Replaced internal opf and ncx xml processing and cleaning with a
    combination of embedded Python 3.4, sigil_bs4 / lxml

  • We now build Hunspell as a shared library and added a ctypes interface to allow
    plugins to spellcheck

  • We now build our modified gumbo html5 parser as a shared library
    and provide a bs4 ctypes interface to it for easy xhtml processing
    in plugins that use either Python 2.7 or Python 3.X

  • Allowed plugins to auto-fix “text/html” media-types to “application/xhtml+xml”

  • Began the transition to allow for both epub2 and epub3 editing
    (Note: epub3 editing is still incomplete)

  • Converted Flightcrew to become a Sigil plugin and replace it with
    a simple and fast internal sanity checker.

  • Updated Hunspell dictionaries to be actual dictionaries and not just word lists for en_US and en_GB

  • Updated other dictionaries to their most current version to match what is used in LibreOffice 5

  • Fix issue #54 modified date using local numerials when it should be
    using Arabic numerals per the spec.

  • Set the book to modified when font’s are obfuscated.

  • Change FORCE_BUNDLED_COPIES build flag to USE_SYSTEM_LIBS.  This flips the meaning of the flag. Now USE_SYSTEM_LIBS will enable using system libraries. Also, SYSTEM_LIBS_REQUIRED was added which will fail the cmake configure if any system libraries are not found instead of falling back to the bundled copy. Finally, this makes the build more consistent for Windows and OS X users.

—-

See https://github.com/Sigil-Ebook/Sigil/releases/tag/0.8.900 to get Sigil-0.8.900.

One additional note: as Gumbo is an html5 aware library, Sigil will now replace named and numeric entities with their actual unicode characters. So you should make sure Sigil’s Preserve Entities Preferences settings includes   and any other named entities you want to keep as entities.