Jump to content

paint.net 4.3 is now available!


Recommended Posts

This is a big release, with a lot of performance improvements across the whole app. Some of this is due to the migration from .NET Framework 4.8 to .NET 5, which may not sound like much but is actually a huge deal :) .NET 5 is a massive update to the .NET runtime, and brings a lot in terms of performance with its improved code generation (JIT). It also enables me to optimize code even further via the use of SIMD intrinsics (SSE* and AVX* on x86/x64, and AdvSIMD on ARM64), which I've started putting to good use. In addition, effects are faster, plugin loading is faster (especially for shapes), the Magic Wand and Paint Bucket tools are significantly faster, and overall performance is just plain better. Even installation and updating are faster because I was able to remove the "Optimizing performance" stage from setup (via ReadyToRun / crossgen instead of NGEN).

 

There was also a lot of work that went into how Paint.NET is built, packaged, downloaded, and installed. The older systems were showing their age and were not only long overdue for an upgrade but were actually starting to fall apart. This presented an opportunity to modernize things with a web-based downloader/installer, self-contained deployment (no more .NET to install!), portable ZIPs, and native ARM64 support.

 

One thorny topic that came up was the issue of plugin compatibility. There were many plugins, mostly older ones, that just did not survive the migration to .NET 5 due to various changes that were made in .NET to shed legacy shackles which were holding back progress. I'm happy to report that most of these plugins were coerced into working. Some plugins needed only simple accommodations, while many of them required going much further with literal hot patching of their byte code at load time to detour them away from crashes or other bad fates.

 

Now that the migration to .NET 5 is complete, Paint.NET will also be moving to .NET 6 in the very near future. It's due for its final release in November and you can expect a Paint.NET update shortly afterward. This will improve performance even further, and will be a simple upgrade.

 

This has been a 5-month long project, but it's finally time to download, install, and enjoy! 🍾 Big thanks to everyone who downloaded the alphas, reported bugs and broken plugins, and patiently suffered through various bugs and performance problems.

 

Get the update

  • Microsoft Store release
  • Classic Desktop release
    • Download the installer directly (web installer for all CPUs and OSes). This is the recommended download if you don't have Paint.NET installed. It can also be used to update the app.
    • If you already have it installed, you should be offered the update automatically within the next week or so, but you can also get it immediately by going to ⚙ Settings -> Updates -> Check Now.
    • Offline Installers and Portable ZIPs are available over on GitHub.

 

Changes since 4.2.16:

  • New: The app has been migrated to .NET 5, and performance has been greatly improved as a result.
  • New: ARM64 is now natively supported, which improves performance on devices such as the Surface Pro X.
  • New: .NET no longer needs to be installed on the system because the app now uses self-contained deployment.
  • New: Portable ZIPs are now available. Please note that portable installations do not currently update automatically.
  • Improved performance of most effects and other compute-intensive tasks by about 20% on average, due to .NET 5's improved code generation (JIT).
  • Improved startup performance for the Microsoft Store release. Previously, .NET Framework's NGEN was unavailable for Store apps, but now .NET 5 enables self-contained deployment along with ReadyToRun + crossgen, which serves the same purpose.
  • Improved performance: Many areas of the app have been optimized to use SIMD (SSE2/3/4.1, AVX2) on x86/x64:
    • Drawing on an image with a large number of layers is faster
    • Drawing with the Gradient Tool's alpha mode is faster
    • Drawing with the Recolor tool is faster
    • Drawing with the Eraser or Clone Stamp tool is faster when using a color whose alpha value is less than 255
    • Drawing with the Overwrite blend mode is faster
    • Drawing with the Shapes tool is faster, due to improved compositing performance
    • Drawing with a brush tool without antialiasing is faster
    • Tile compression has lower overhead due to being optimized for SSE2 and AVX2
    • Working with complex selections is faster
    • Many other optimizations all throughout the application and rendering engine
  • Improved performance of loading custom Shapes by ~16x on 2nd and subsequent app starts.
  • Improved performance of the Magic Wand tool by a substantial amount.
  • Improved performance of the Paint Bucket tool by a substantial amount.
  • Improved performance of the Paint Bucket when changing the color or certain other toolbar settings by not recalculating the stencil buffer for the filled area. Changes should now be visible immediately.
  • Improved performance of Polar Inversion by 3x, mostly as a corollary to fixing a bug that was causing hangs, and a little bit due to .NET 5.
  • Improved performance on systems without HyperThreading by reserving 1 core for the UI. Performance is also improved on systems with it by utilizing more of the logical cores.
  • Improved performance while installing or updating the app, due to no longer needing the "Optimizing performance for your system" stage (NGEN has been replaced with ReadyToRun via crossgen).
  • Improved memory usage when custom shapes are installed so they don't litter the heap with hundreds of thousands of boxed value types (e.g. floats and points).
  • Improved selection antialiasing quality by using a 4x4 super sampling filter instead of a 3x3 super sampling filter. The code has also been optimized to use SSSE3 on x86/x64.
  • Improved: Effect and File Type plugins can now be organized into folders. The plugin loader will recursively search for DLLs up to 1 folder deep.
  • Fixed a bug when saving with "Auto Detect" bit-depth which was causing fidelity loss on some images that already had 256 colors or less. This was reported here: https://forums.getpaint.net/topic/118401-images-already-with-256-or-fewer-colors-being-dithered-when-saved-with-palette/
  • Fixed: There were some issues with zooming in/out using the keyboard, where the anchoring point was not calculated correctly, causing the canvas to drift in the wrong direction.
  • Fixed the inability to use middle-mouse panning after using a selection tool and pressing delete before releasing the mouse button.
  • Improved: Plugins are now loaded into isolated AssemblyLoadContexts, which improves stability and resiliency to various problems with versioning, loading dependencies, plugin bugs, and incorrect plugin installation.
  • Fixed a crash when trying to draw a fixed-size rectangle selection that was larger than the image.
  • Fixed a bug with the Tolerance slider where both 58% and 59% would be displayed as 58%, due to a rounding issue. The correct value was actually being used, it just wasn't being displayed correctly.
  • Added a /disablePlugins command-line argument to aid in troubleshooting various issues with app startup and incorrect plugin installation.
  • New: Additional directories can now be specified for plugin discovery, which (e.g.) enables the use of OneDrive for storing plugins. See here for more info: https://forums.getpaint.net/topic/118583-feature-request-set-custom-app-files-plugins-folder/?do=findComment&comment=586013
    • Note that this does not work with the portable version of the app, but you can install plugins next to the app so it isn't necessary.
  • Updated the bundled AvifFileType plugin to v1.1.15.0, courtesy of @null54, which includes support for multi-layer AVIF files, and adds native support for ARM64. See the project's GitHub Releases page for more information.
  • Updated the bundled DdsFileTypePlus plugin to v1.10.10.0, courtesy of @null54, which adds native support for ARM64. See the project's GitHub Releases page for more information.
  • Updated the bundled WebPFileType plugin to v1.3.7.0, courtesy of @null54, which adds native support for ARM64. See the project's GitHub Releases page for more information.
  • Changed: FileType.IsReflexive() is now deprecated via [Obsolete], and is no longer honored. However, the Save Configuration dialog will no longer try to generate previews for FileTypes that do not specify any file extensions for loading, which is what this method was being used for.
  • Known Issue: Due to crashing, GPU accelerated effects (Gaussian Blur, Motion Blur, Radial Blur) on ARM64 will actually use the CPU for rendering.

Enjoy!

  • Like 5
  • Upvote 3

The Paint.NET Blog: https://blog.getpaint.net/

Donations are always appreciated! https://www.getpaint.net/donate.html

forumSig_bmwE60.jpg

Link to comment
Share on other sites

CodeLab v6.2 supporting Paint.NET v4.3+

- Update to .NET 5.0 (toe_head2001)
- Scripts can use C# 9.0 compiler syntax (toe_head2001)
- Use an AssemblyLoadContext when loading built scripts (Rick Brewster)
- Switch to ILRepack for building CodeLab (toe_head2001)
- Minor code refactoring and bug fixes (toe_head2001)

 

Download
 

https://boltbait.com/pdn/codelab/

 

I will update my web site in a few hours. Updated!

 

  • Like 2
  • Thanks 1
  • Upvote 1
Link to comment
Share on other sites

7 minutes ago, BoltBait said:

First bug report:

 

image.png

What's that?!

 

(Yes, I know what it is... I'm just surprised it made it into a production build.)

 

 

 

Actually I think that's a bug in the plugin loader. Bleh :) Thankfully it's harmless. I'll be sure to fix that for 4.3.1 of course.

The Paint.NET Blog: https://blog.getpaint.net/

Donations are always appreciated! https://www.getpaint.net/donate.html

forumSig_bmwE60.jpg

Link to comment
Share on other sites

19 hours ago, AndrewDavid said:

When a DLL is created in Codelab It is placed in a zipped folder that includes a batch file that places the effect in the old C:\Program Files\Effects Folder

@BoltBait's Codelab installer does the same thing.

 

Yeah, because that's how plugins work.

 

19 hours ago, AndrewDavid said:

Hidden features? They still get loaded and work.

 

Not exactly "hidden" because... that's how plugins work.

 

 

Link to comment
Share on other sites

@BoltBait @Rick Brewster added a new feature

 

For effects and file types, some of them need to be patched up at load time to be compatible with 4.3. If you remember from some of the previous alpha builds, I mentioned that I made a similar caching system for these types of plugins (as described above for Shapes). I later disabled it because I had concerns about its security. I've now re-enabled the cache, but only for plugins that are installed into the Documents folder -- not for plugins installed into the Program Files location.

 

So in essence they can be installed in two locations now.

PaintNetSignature.png.6bca4e07f5d738b2436f83d0ce1b876f.png

Link to comment
Share on other sites

It surfaces in codelab

 

Warning at line -63: Assuming assembly reference 'System.Drawing.Common, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' used by 'PaintDotNet.Effects' matches identity 'System.Drawing.Common, Version=5.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' of 'System.Drawing.Common', you may need to supply runtime policy (CS1702)

PaintNetSignature.png.6bca4e07f5d738b2436f83d0ce1b876f.png

Link to comment
Share on other sites

That's a valid warning, but it shouldn't cause any issues.  If you don't want to see the warning again, right click on it, and click 'Ignore'.

 

You can blame this version mismatch on Microsoft.

(September 25th, 2023)  Sorry about any broken images in my posts. I am aware of the issue.

bp-sig.png
My Gallery  |  My Plugin Pack

Layman's Guide to CodeLab

Link to comment
Share on other sites

2 hours ago, P1h3r1e3d13 said:

Since it says, “This effect should never make it in to a Final Release build”? 😆

 

I came here to report that same error, but it looks like you're on it.

 

It's a debug/test effect that guards against accidental inclusion in release builds. I spent a lot of time debugging and fixing plugins, and scrolling through this list of errors, but ... I missed this one error 😂👨🏼‍🚀 Thankfully it's completely harmless, just slightly weird -- especially if you don't have any other plugin errors.

The Paint.NET Blog: https://blog.getpaint.net/

Donations are always appreciated! https://www.getpaint.net/donate.html

forumSig_bmwE60.jpg

Link to comment
Share on other sites

53 minutes ago, ChillingTouch said:

Is it possible to show estimated download sizes here? Just for convenience.

 

2124571474_.png.38a56b8231c72efec33116a26120cd0b.png

 

Yeah I can look into that. What kind of Internet connection do you have? Did it download and install everything correctly?

The Paint.NET Blog: https://blog.getpaint.net/

Donations are always appreciated! https://www.getpaint.net/donate.html

forumSig_bmwE60.jpg

Link to comment
Share on other sites

17 minutes ago, Alek said:

Didn't you say there was going to be pressure sensitivity for the brush tool on 4.3 like a year ago? It would be a top for this software if paint.net can be used like that with a Graphic drawing tablet

 

Porting to .NET 5 became a much higher priority. Brush system revamp, including pressure sensitivity, is next on the list, after any small bugfixes that are needed for 4.3.

  • Upvote 1

The Paint.NET Blog: https://blog.getpaint.net/

Donations are always appreciated! https://www.getpaint.net/donate.html

forumSig_bmwE60.jpg

Link to comment
Share on other sites

On this new version 4.3, I am having issues with creating MSI installers. On an X64 machine, I can't create an X86 MSI and I need the MSI installers so I can silently deploy throughout my network and I do still have a few X86 machines. Any suggestions?

"This installer does not support the x64 CPU architecture."

Link to comment
Share on other sites

11 minutes ago, GuruGabe said:

On this new version 4.3, I am having issues with creating MSI installers. On an X64 machine, I can't create an X86 MSI and I need the MSI installers so I can silently deploy throughout my network and I do still have a few X86 machines. Any suggestions?

"This installer does not support the x64 CPU architecture."

 

Ahh yes, I missed that. For now you will have to create the x86 MSI on an x86 system (a virtual machine should suffice). I'll make sure this is fixed for the next update (4.3.1), which is looking like it'll need to be pushed out soon, so this should only be a one-time inconvenience. Thanks for reporting this.

The Paint.NET Blog: https://blog.getpaint.net/

Donations are always appreciated! https://www.getpaint.net/donate.html

forumSig_bmwE60.jpg

Link to comment
Share on other sites

Quote

Errors in the downloader cannot be copy pasted, just screenshotted.

 

Quite true, I'll fix that


As for the SSL/TLS error, have you configured your system in any particular way with respect to SSL/TLS? I seem to recall there may be a registry setting for forcing .NET to not permit the use of older versions of TLS or something. For now you can use the offline installer (links above), but I'd also like to get to the bottom of your error so I can fix it for anyone else who might bump into this.

 

7 hours ago, mark van tilburg said:

There is an ssl serror, the download/update server does not support tls 1.2?

 

paint-net-4-3-update-error.png

 

The Paint.NET Blog: https://blog.getpaint.net/

Donations are always appreciated! https://www.getpaint.net/donate.html

forumSig_bmwE60.jpg

Link to comment
Share on other sites

5 hours ago, Jeroen Oortwijn said:

Another downloader error:

 

191737530_Screenshot2021-09-23142022.png.bd5dfc26a0a498a1e1142d8507b5224f.png

 

I just fixed this and pushed out a new build of the web installer, so you can try again and it should work. (see also: https://forums.getpaint.net/topic/118670-app-crashes-when-trying-to-update-to-43/ )

 

  • Thanks 1

The Paint.NET Blog: https://blog.getpaint.net/

Donations are always appreciated! https://www.getpaint.net/donate.html

forumSig_bmwE60.jpg

Link to comment
Share on other sites

@Rick Brewster

 

arm64 version works nicely! Thanks.

 

BTW: There are also unlocked MS Windows 8.1 (and 8.0) arm32 OSes (RT). For them there is arm32 DotNET v5-0-10:

https://mega.nz/file/ycFUkZqY#Z2-iaGipmWbkVvQ5WZAJKflfHrC-ltUrC81TaCaxuAc

...distributed by MS via NuGet:

https://www.nuget.org/packages/Microsoft.NETCore.App.Runtime.win-arm/

https://www.nuget.org/packages/runtime.win-arm.Microsoft.NETCore.DotNetHost/

https://www.nuget.org/packages/runtime.win-arm.Microsoft.NETCore.DotNetAppHost/

https://www.nuget.org/packages/Microsoft.AspNetCore.App.Runtime.win-arm/

 

Current compiled arm32 Paint.NET is v3-01-4974-41578:

https://mega.nz/file/uEFWVDTT#xWvb8B8H9gaWAkjLz23Va_bGwDlAGbZe0i8ulbaCNQ0

 

Could you please compile the actual one version for DotNET v5 with arm32 targeting for some nice donation?

I can do all the testing.

 

Link to comment
Share on other sites

6 minutes ago, xordevoreaux said:

Malwarebytes completely prevented paint.net.4.3.install.anycpu.web from working

 

Then maybe it's a good time to stop giving control over your computer to Malwarebytes.  i.e.  Uninstall Malwarebytes.

  • Upvote 1

(September 25th, 2023)  Sorry about any broken images in my posts. I am aware of the issue.

bp-sig.png
My Gallery  |  My Plugin Pack

Layman's Guide to CodeLab

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...