Releases: kyamagu/skia-python
v138.0
More than 4 years since v87. Many additions. See README.m116 all the way to README.m138 in the release notes directory for detailed changes.
IMPORTANT: Linux users: libEGL.so (from mesa-libEGL, libglvnd, or your graphic card's vendor e.g. NVidia) is required to be present on Linux hosts.
There is a small Migration Guide for upgrading from v87.
What's Changed
- Use python 3.11, and install libEGL for docs by @HinTak in #335
- Python 3.8 EOL on github CI by @HinTak in #337
- V138.0 release by @HinTak in #341
Full Changelog: v138.0rc1...v138.0
v87.9
Since m87.8, added GrGLInterface.MakeEGL and GrGLInterface.MakeGLX for explicitly choosing GLX or EGL opengl initialization, and native build for both Aarch64 Linux and Arm64 Windows. Numpy 2.3.0 is required for Arm64 windows.
IMPORTANT: Starting v138rc1/v87.9rc1, libEGL.so (from mesa-libEGL, libglvnd, or your graphic card's vendor e.g. NVidia) is required to be present on Linux hosts.
Since v879rc1, updated Numpy dependency from 2.3.0rc1 to Numpy 2.3.0 , and documentation-related changes.
Full Changelog: v87.8...v87.9
v138.0 rc1 release
m138 includes a lot of changes in the CI build machinery, OpenGL,
shader effects, and API coverage closer to other Skia bindings
(Skia4Delphi and SkiaSharp). We now offers arm64 window wheels for windows 11. On Linux, we now offer OpenGL initializaion with EGL as an option (in addition to the GLX default). IMPORTANT: The presence of libEGL.so
(part of mesa-libEGL / libglvnd-egl) is now a requirement on Linux.
arm64 windows requires Numpy 2.3.0rc1 .
There are examples of using OpenGL with skia-python in
GLFW, SDL2, SDL3, WX, GTK3, GTK4, QT5, QT6 at
https://github.com/HinTak/skia-python-examples/ .
README.m138 contains a longer description.
There is a v87.9 rc1 which contains only the arm64 window wheels for windows 11 and linux EGL addition.
What's Changed
- M138 public by @HinTak in #331
- Use ubuntu-22.04-arm host instead of ubuntu-22.04 for aarch64 builds by @HinTak in #314
- M137 public by @HinTak in #321
- Runtime effect additions by @HinTak in #322
- Canvas draw text on path by @HinTak in #329
- EGL contexts in GRDirectContext.MakeGL, mark2 by @HinTak in #303
- Surface colortype init+doc additions by @HinTak in #324
Full Changelog: v136.b13...v138.0rc1
v87.9 rc1
Since m87.8, added GrGLInterface.MakeEGL and GrGLInterface.MakeGLX for explicitly choosing GLX or EGL opengl initialization, and
native build for both Aarch64 Linux and Arm64 Windows. Numpy 2.3.0rc1 is required for Arm64 windows.
IMPORTANT: Starting v138rc1/v87.9rc1, libEGL.so (from mesa-libEGL, libglvnd, or your graphic card's vendor e.g. NVidia) is required to be present on Linux hosts.
Full Changelog: v87.8...v87.9rc1
v87.8
manylinux_2_28, newer compiler update and speeding up aarch64 builds; no functionality change.
Full Changelog: v87.7...v87.8
v136 beta 13 Release
-
skia.PDF.MakeDocument()
is rewritten to give old behavior.
Upstream'sSkPDFMetdata
has added 2 required fieldsjpegDecoder
andjpegEncoder
.
SkPDF::MakeDocument(SkWStream*)
now requires them supplied to make a reasonable PDF.
skia.PDF.Metadata()
(without arguments) is now initialized with Skia's built-in jpeg
encoder and decoder. The bareSkPDF::Metadata
constructor without jpeg
encoder/decoder set is not exposed to Python code at the moment. REVISIT when
there is valid usage of alternative jpeg encoder/decoder to the built-in. -
Removing a few @pytest.mark.skip's before @pytest.fixture.
They have no effect and now generates warning. Mistakenly added a while ago.
What's Changed
Full Changelog: v134.b12...v136.b13
v87.7
v134 beta 12 Release
Wheel building:
- Upgrading to manylinux_2_28 (from manylinux2014)
Bug fixes:
-
Adding a iter method to skia.Iter (compatibility with python 3.13.1)
-
Avoid intermittent segfault in Typeface.getKerningPairAdjustments()
Additions / Enhancements:
-
Binding SkFontMgr_New_Custom_Directory as FontMgr.New_Custom_Directory()
-
Binding skia::textlayout::TypefaceFontProvider as skia.textlayout.TypefaceFontProvider()
-
Binding skia::textlayout::StrutStyle as skia.textlayout.StrutStyle() class,
adding textlayout.ParagraphStyle.setStrutStyle() method,
and textlayout.TextStyle.setLetterSpacing / setWordSpacing methods.
What's Changed
- M134 public by @HinTak in #308
- cibuildwheel will default to manylinux_2_28 on 6th May 2025 - Let's d… by @HinTak in #285
- Binding SkFontMgr_New_Custom_Directory by @HinTak in #292
- Binding TypefaceFontProvider by @HinTak in #293
- Adding a iter method to skia.Iter by @HinTak in #296
StrutStyle
for leading/lineheight adjustment onParagraphStyle
+TextStyle.setLetterSpacing
andTextStyle.setWordSpacing
by @stenson in #299- M133 public by @HinTak in #302
New Contributors
Full Changelog: v132.b11...v134.b12
v132.0 beta 11 Release
Since m131:
-
PathEffect.{DashType, DashInfo, asADash}
withdrawn.
Upstream removed them from public API in m132. -
We now bundle a
icudtl.dat
for windows. This fixes windows-specific problems
with SkUnicode, libSkShaper, and SkParagraph. Thanks @MeetWq for the change.
Relevant CI tests re-enabled and added. -
Upstream's
SkNamedTransferFn::*
now available ascms.NamedTransferFn.*
,
andSkNamedGamut::*
ascms.NamedGamut.*
. These are used in RuntimeEffect-related
code. -
More overloads of
SkImage::makeShader
added, andSkImage::makeRawShader
added
asImage.makeRawShader
. -
We binds
SkRuntimeEffect
asskia.RuntimeEffect
. Added some helper classes:
SkV3
asskia.V3
,SkV4
asskia.V4
,
SkRuntimeEffect::Result
asRuntimeEffectResult
,
SkRuntimeEffect::ChildPtr
asRuntimeEffectChildPtr
,
SkRuntimeEffectBuilder
asRuntimeEffectBuilder
,
std::vector<SkRuntimeEffect::ChildPtr>
asVectorRuntimeEffectChildPtr
,
SkSpan<const SkRuntimeEffect::ChildPtr>
asSpanRuntimeEffectChildPtr
,
SkRuntimeEffectBuilder::BuilderUniform
asRuntimeEffectBuilderUniform
,
SkRuntimeEffectBuilder::BuilderChild
asRuntimeEffectBuilderChild
.
Details are subjected to change. We ported all 9 of current upstream SkSL c++ examples,
hosted elsewhere.
Since m130:
-
We now build for Mac OS 13 (12 deprecated at github), and support python 3.13
-
GL examples and tests updated, to restrict "Mac OS friendly" GL settings to Mac only.
Some Linux installations - specifically, inside github CI - are sensitive to those;
typical desktop linux boxes with real graphic cards seem not to be affected. -
PDF.StructureElementNode.fAdditionalNodeIds
withdrawn.
SkPDF::StructureElementNode::fAdditionalNodeIds
removed upstream.
What's Changed
- Sk runtime effect binding by @HinTak in #274
- Make GL version setting specific to Mac OS only by @HinTak in #267
- M131 public by @HinTak in #272
- M131 public py3.13 2nd try by @HinTak in #275
- V130.b10+py3.13 by @HinTak in #277
- Icudtl.dat fix try 2 by @HinTak in #279
- M132 public by @HinTak in #281
Full Changelog: v130.b10...v132.b11
v130.0 beta 10 Release
Since m129:
- Upstream removed
SkColorFilter::filterColor
, soColorFilter.filterColor
is now emulated.
Since m128 (last beta release):
-
We now build for Mac OS 11.0 (instead of 10.13; github CI warning)
-
We now bind uptream's experimental
skparagraph
module and theSkParagraph
class,
to provide multi-line text paragraph layout.
The functionality is under theskia.textlayout
namespace, asParagraph
, etc.-
There is a
FontMgr.OneFontMgr()
method which takes a font file or data, which returns
a font manager having knowledge of exactly one font.FontMgr.New_Custom_Empty()
has been
overloaded as an alias to this, too. -
The
SkUnicode
class is now available under python asskia.Unicode
.
The constructor is known to fail on windows - It is likely that downloading
aicudtl.dat
file, renaming from the versioned data-bin-{l,b}.zip in
https://github.com/unicode-org/icu/releases, is needed. Windows users please report
success/failure on this. -
There are two examples
shape_text.py
(a python port of upstream's example), and
skparagraph-example.py
hosted elsewhere. -
Note that the entire
skparagraph
module is still experimental and subjected to change.
Font choices on Linux are sensitive to LANG and FC_LANG, and you may need to set/unset
them for desired outcome.
See filed issue upstream for details and updates.
-
-
Improved preview of default arguments in function signatures
-
Some parametric tests involving
skia.SurfaceProps
removed during the m87->m116 changes
are re-added.
What's Changed
- Update README.md by @HinTak in #255
- Skparagraph binding by @HinTak in #258
- fix to pre-release CI cache management by @HinTak in #256
- M129 public by @HinTak in #260
- M130 public by @HinTak in #265
Full Changelog: v128.0b9...v130.b10