JPEG XL

Info

rules 57
github 35276
reddit 647

JPEG XL

tools 4225
website 1655
adoption 20712
image-compression-forum 0

General chat

welcome 3810
introduce-yourself 291
color 1414
photography 3435
other-codecs 23765
on-topic 24923
off-topic 22701

Voice Channels

General 2147

Archived

bot-spam 4380

adoption

Adoption of jxl: what software supports jxl already, how to get more adoption?

HCrikki
2024-03-13 03:02:29
after trying, seems jxl cant be set as wallpapers - listed and selectable, but wallpaper doesnt change
2024-03-13 03:09:33
in file properties/details theres no metada filled but system recognizes its an image and shows blank fields (shoved a file inside a music-only library set as such in case it was previously just an assumption from being in an image folder)
2024-03-13 03:17:40
reconstructible jxl from jpg doesnt decode
2024-03-13 03:18:01
right click on jxl and you get the option to rotate or set as wallpaper
Traneptora
2024-03-13 03:18:42
I see, so it's still very experimental
HCrikki
2024-03-13 03:19:01
experimental doesnt leave canary
Traneptora
2024-03-13 03:19:21
in theory, but what you're describing is that it doesn't work
HCrikki
2024-03-13 03:19:58
work in progress?
Tirr
2024-03-13 03:20:24
jxl is listed as an image format, signatures are registered, but there's no actual decoder now
jonnyawsom3
2024-03-18 09:09:15
Finally done, mostly https://github.com/AcademySoftwareFoundation/OpenImageIO/pull/4055#issuecomment-2002158159
2024-03-18 09:09:45
Merged at least, but missing a few features
TheBigBadBoy - 𝙸𝚛
2024-03-23 10:04:31
any news for XYB JPEG support in FFmpeg ?
Traneptora
TheBigBadBoy - 𝙸𝚛 any news for XYB JPEG support in FFmpeg ?
2024-03-24 08:34:07
it has supported XYB jpeg for a while
2024-03-24 08:34:35
you can decode XYB jpegs in FFmpeg just fine, and it just forwards the ICC profile
TheBigBadBoy - 𝙸𝚛
Traneptora it has supported XYB jpeg for a while
2024-03-24 08:36:27
left PNG right cjpegli XYB JPG both are displayed using `ffplay`
Traneptora
2024-03-24 08:36:35
ffplay is not color managed
2024-03-24 08:36:41
this has nothing to do with XYB jpeg
2024-03-24 08:36:45
play it with mpv or plplay
TheBigBadBoy - 𝙸𝚛
2024-03-24 08:38:44
works great with MPV 0.o unfortunately my image viewer (pqiv) uses FFmpeg, so it has that color error too 🥲
Traneptora
2024-03-24 08:38:57
that means your image viewer is not color managed
190n
2024-03-24 08:39:16
the issue isn't using ffmpeg the issue is ignoring color profiles
Traneptora
2024-03-24 08:39:20
throwing the pixels at the screen without regard for the ICC profile is incorrect
190n
2024-03-24 08:39:24
like mpv uses ffmpeg too i think
Traneptora
2024-03-24 08:39:26
and causes the undesirable behavior
2024-03-24 08:39:33
indeed, mpv decodes the jpeg with libavcodec
TheBigBadBoy - 𝙸𝚛
2024-03-24 08:39:55
thanks <:PepeOK:805388754545934396>
Traneptora
2024-03-24 08:41:12
I did a bunch of work to get ffmpeg to decode weird subsampled RGB jpegs that were produced by old versions of jpegli
2024-03-24 08:41:28
and then some changes to libplacebo to work correctly with the XYB icc profile
2024-03-24 08:44:57
e.g. https://code.videolan.org/videolan/libplacebo/-/commit/5f44a16fb2ebf2e1893b847429dabf5595fed730
Quackdoc
2024-03-24 08:51:44
couldn't you use libplacebo filter to render out the image with the icc with ffplay? I thought you could but im not too sure now
Traneptora
Quackdoc couldn't you use libplacebo filter to render out the image with the icc with ffplay? I thought you could but im not too sure now
2024-03-24 10:52:38
yes
TheBigBadBoy - 𝙸𝚛
Traneptora that means your image viewer is not color managed
2024-03-25 07:52:44
so I opened an issue and they answered: > pqiv uses GTK's own GdkPixbuf for rendering standard file formats, and it looks like it doesn't really support this: > https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/issues/104 > Do any Gnome default viewers get this right for you? I don't know any (even that don't work with ICCs) <:KekDog:805390049033191445> I just know that the FilePicker dialog doesn't support ICCs
Traneptora
2024-03-25 07:53:17
GdkPixbuf supports ICC profiles
2024-03-25 07:53:27
see the gdk-pixbuf loader in libjxl
2024-03-25 07:54:07
and I use Eye of Mate and it works fine
TheBigBadBoy - 𝙸𝚛 so I opened an issue and they answered: > pqiv uses GTK's own GdkPixbuf for rendering standard file formats, and it looks like it doesn't really support this: > https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/issues/104 > Do any Gnome default viewers get this right for you? I don't know any (even that don't work with ICCs) <:KekDog:805390049033191445> I just know that the FilePicker dialog doesn't support ICCs
2024-03-25 07:55:36
the answer is the icc profile is a base64-encoded null-terminated ASCII string
2024-03-25 07:55:48
with the `icc-profile` option key
2024-03-25 07:55:56
used in `gdk_pixbuf_get_option`
2024-03-25 07:56:28
Eye of Gnome, the gnome image viewer, also works fine
TheBigBadBoy - 𝙸𝚛
2024-03-25 07:57:15
nice thank you
Traneptora
2024-03-25 07:57:25
(figuring this out was not easy, btw)
2024-03-25 07:58:16
you can call `gdk_pixbuf_get_option("icc-profile")` which returns a `gchar *` string, and then you can use `g_base64_decode` to get the actual ICC profile buffer
2024-03-25 07:58:21
which can be fed to lcms2 or something of that form
TheBigBadBoy - 𝙸𝚛
Traneptora (figuring this out was not easy, btw)
2024-03-25 08:00:32
so could we consider that an "uncommon" ICC in JPG ?
Traneptora
2024-03-25 08:00:44
the XYB icc profile? yes I'd consider it unusual
TheBigBadBoy - 𝙸𝚛
2024-03-25 08:01:26
the fact that it's "base64-encoded null-terminated ASCII string"
Traneptora
2024-03-25 08:01:38
oh, that's just how gdk pixbuf does ICC profiles
TheBigBadBoy - 𝙸𝚛
2024-03-25 08:01:44
oh ok
Traneptora
2024-03-25 08:01:57
the "icc-profile" option is just the icc profile, encoded as a base64 string
2024-03-25 08:02:13
why they chose to store the metadata this way? I do not know
jonnyawsom3
2024-03-25 01:44:22
Oh yeah, I'm not sure if anyone ever mentioned and it seems obvious, but https://squoosh.app/ also supports JXL *input* and will display on browsers without support
2024-03-25 01:45:07
Just playing with some resampled pixel art and now I can see every other format at... Well uh, yeahhhh....
HCrikki
2024-03-25 02:31:28
extremely outdated version of the jxl decoder and encoder, no?
2024-03-25 02:33:46
afaik its still 0.5 or 0.6 from 3 years ago (!) from before the bitstream was even finalised and forward compatibility guaranteed
Silikone
2024-03-25 02:46:01
https://assets.nintendo.com/image/upload/ar_16:9,b_auto:border,c_lpad/b_white/f_jxl/q_auto/dpr_1.0/c_scale,w_1200/ncom/en_US/products/hardware/nintendo-switch-oled-model-white-set/115461-switch-oled-white-boxart-1200x675
2024-03-25 02:46:06
Nintendo serving JXL?
lonjil
2024-03-25 02:47:30
where'd you get that URL?
Silikone
2024-03-25 02:47:46
From a 4chan thread
Orum
2024-03-25 02:47:52
it is indeed a <:JXL:805850130203934781>: `115461-switch-oled-white-boxart-1200x675.jxl JXL 1200x675 1200x675+0+0 8-bit sRGB 49465B 0.000u 0:00.004`
lonjil
2024-03-25 02:48:01
I notice it says f_jxl
Orum
2024-03-25 02:49:23
or from `jxlinfo`: ```JPEG XL image, 1200x675, lossy, 8-bit RGB Color space: RGB, D65, sRGB primaries, sRGB transfer function, rendering intent: Relative```
Quackdoc
2024-03-25 02:49:33
I cant open it it just closes itself lmao
HCrikki
2024-03-25 02:50:45
its an option. avif is served if jxl not supported and default even for jxl supporting clients. shows their cdn provider totally generates the images - cloudinary?
Quackdoc
2024-03-25 02:51:02
I think it seems to prefer avif for me
Orum
2024-03-25 02:51:12
So, is anyone here running safari, and can tell us what % of images they serve in JXL?
Silikone
2024-03-25 02:51:48
Or download Pale Moon
lonjil
2024-03-25 02:52:09
I changed it to f_auto and opened it in Safari, it gave me a JPEG1
2024-03-25 02:52:45
So I think Nintendo has not opted into serving JXL's to people automatically
Quackdoc
2024-03-25 02:52:58
hmmm, it doesn't use accept headers T.T
lonjil
2024-03-25 02:53:11
f_auto uses accept headers AFAIK
2024-03-25 02:53:21
But Cloudinary doesn't serve JXL by default yet
2024-03-25 02:53:25
website operators must opt in
HCrikki
2024-03-25 02:53:52
got latest safari build running on windows, fetches and downloads jpg
Quackdoc
2024-03-25 02:53:56
im browsing nintendo's site and using the below and it's still giving me avif ```ps Accept: image/jxl,image/webp,*/* Accept-Encoding: gzip, deflate, br Accept-Language: en-US,en;q=0.5 ```
lonjil
2024-03-25 02:55:47
aren't you opting into avif with that `*/*`?
Orum
2024-03-25 02:56:09
Accept-Language should be en-CA for you 😉
Quackdoc
2024-03-25 02:56:16
it's an option but it should be lower prioritized [Hmm](https://cdn.discordapp.com/emojis/1113499891314991275.webp?size=48&quality=lossless&name=Hmm)
Orum Accept-Language should be en-CA for you 😉
2024-03-25 02:56:29
yeah if you do that half the websites you come across are french for some reason
lonjil
2024-03-25 02:56:34
CDNs don't care about priority
Quackdoc
2024-03-25 02:56:54
they used to [av1_PepeHands](https://cdn.discordapp.com/emojis/654081051768913941.webp?size=48&quality=lossless&name=av1_PepeHands)
2024-03-25 02:57:17
oh common > Accept > image/jxl,image/webp,image/png type: webp
Orum
2024-03-25 02:57:26
solution: refuse to accept anything except <:JXL:805850130203934781>
HCrikki
2024-03-25 02:58:36
in the biggest markets (us, uk, canada and japan), 35% of the mobiles in active use support jxl and thats before any additional support in their own mobile apps or chromium
Quackdoc
2024-03-25 02:59:31
thorium serving avif to me as well, I can't get it to serve JXL at all unless I manually use f_jxl
HCrikki
2024-03-25 03:00:03
almost all avifs are served by cdns and as delivery-only images for whats originally jpgs. the original jpg should always be the fallback
Quackdoc
2024-03-25 03:00:38
yeah even when using accept image/jxl only it serves jpeg and png
afed
2024-03-25 03:00:41
i wonder what cdn is used <:Thonk:805904896879493180> cloudinary?
lonjil
2024-03-25 03:00:51
> f_auto uses accept headers AFAIK > But Cloudinary doesn't serve JXL by default yet > website operators must opt in
jonnyawsom3
HCrikki afaik its still 0.5 or 0.6 from 3 years ago (!) from before the bitstream was even finalised and forward compatibility guaranteed
2024-03-25 03:00:56
Yeah, not much activity lately but they updated both libavif and oxipng recently so probably just patching commits in other forks https://github.com/GoogleChromeLabs/squoosh/issues/1402
Quackdoc
lonjil > f_auto uses accept headers AFAIK > But Cloudinary doesn't serve JXL by default yet > website operators must opt in
2024-03-25 03:01:10
yeah that would be it
HCrikki
2024-03-25 03:02:10
universal defaults for all regions make no sense anymore. in those markets jxl should logically be the first format served
Orum
Yeah, not much activity lately but they updated both libavif and oxipng recently so probably just patching commits in other forks https://github.com/GoogleChromeLabs/squoosh/issues/1402
2024-03-25 03:02:12
Google Chrome Labs... no wonder it's not updated 😮‍💨
jonnyawsom3
Yeah, not much activity lately but they updated both libavif and oxipng recently so probably just patching commits in other forks https://github.com/GoogleChromeLabs/squoosh/issues/1402
2024-03-25 03:02:24
Ironically, I'm actually using 0.6 to test <@532010383041363969>'s Delta Palette (Or at least I assume it's mostly theirs, since they're the pixel wizard always experimenting)
HCrikki afaik its still 0.5 or 0.6 from 3 years ago (!) from before the bitstream was even finalised and forward compatibility guaranteed
2024-03-25 03:03:17
And not quite, bitstream was frozen around 0.3, which is no longer avalible to download from the Github releases
lonjil
2024-03-25 03:03:20
<@794205442175402004> do you have anything you can share on when JXL might start being served by default by Cloudinary?
Orum
2024-03-25 03:03:57
my only guess would be that they're waiting until more browsers get support?
HCrikki
2024-03-25 03:04:51
better yet, by other cdns like cf. it seems they had a working pipeline they activate for even small clients the moment they ask
jonnyawsom3
2024-03-25 03:06:16
I remember Facebook's old comment on the chrome issue saying they were ready to 'hit the button' on full support
afed
2024-03-25 03:09:02
probably because jxl support is unstable except for safari, and forks have a very small percentage
jonnyawsom3
2024-03-25 03:11:50
I know Firefox Nightly's support is still a mess, but assuming most are either on Safari or Forks is there any downside to turning it on?
HCrikki
2024-03-25 03:11:59
anyone who serves their own content to their own mobile apps shouldve hit that button regardless of browsers' implmeentation (like shopify, web builders, social everything or any app that serves its content **only** through its own app). that alone wouldve made mobile apps serve content much quicker than the full website in a browser
jonnyawsom3
2024-03-25 03:12:31
(If someone goes out of their way to enable the nightly flag, they probably know not to use the Firefox JXL anyway)
Quackdoc
I know Firefox Nightly's support is still a mess, but assuming most are either on Safari or Forks is there any downside to turning it on?
2024-03-25 03:15:18
for a cdn or a browser? I cant claim to understand how cloudinary works, but as a general "CDN" standpoint, if they arent seeing the numbers of devices enabled, it could just be that it doesnt make sense to spend the extra cputime/storage on it
jonnyawsom3
2024-03-25 03:16:12
Somehow I completely forgot the images are cached and not just computed realtime.... Which obviously wouldn't work at all
HCrikki
Quackdoc for a cdn or a browser? I cant claim to understand how cloudinary works, but as a general "CDN" standpoint, if they arent seeing the numbers of devices enabled, it could just be that it doesnt make sense to spend the extra cputime/storage on it
2024-03-25 03:35:19
i know theres slow movers but leading web services arent supposed to operate by long outdated market conditions like theyre shipping physical products whose state cannot be changed post-delivery
2024-03-25 03:36:08
every recompression from jpg to avif/webp is *lossy* and a full conversion, whereas jpg->jxl is almost instant on any hw, consistently guarantees 20% lower filesize and introduces no extra data loss. this alone is a web changer
Aerocatia
Silikone https://assets.nintendo.com/image/upload/ar_16:9,b_auto:border,c_lpad/b_white/f_jxl/q_auto/dpr_1.0/c_scale,w_1200/ncom/en_US/products/hardware/nintendo-switch-oled-model-white-set/115461-switch-oled-white-boxart-1200x675
2024-03-25 03:37:03
wget gave me a JPEG-XL
Silikone
2024-03-25 03:37:53
I can download it directly from the browser, but there's no suffix
Aerocatia
2024-03-25 03:38:01
Silikone
2024-03-25 03:38:15
Doesn't matter on Linux, though.
Aerocatia
2024-03-25 03:38:23
I got a friend to test it on an iPad and it directly loads in safari
sklwmp
Silikone https://assets.nintendo.com/image/upload/ar_16:9,b_auto:border,c_lpad/b_white/f_jxl/q_auto/dpr_1.0/c_scale,w_1200/ncom/en_US/products/hardware/nintendo-switch-oled-model-white-set/115461-switch-oled-white-boxart-1200x675
2024-03-25 03:38:23
yep, serves me a jxl using Floorp
2024-03-25 03:39:23
well, that makes sense...
HCrikki
2024-03-25 03:39:29
anyone wanna try bleeding edge safari on windows, its 2 zips extracted to the same folder
sklwmp
2024-03-25 03:40:51
the nintendo website does use Cloudinary so if you force it to serve JXL by changing the endpoint to f_jxl, it serves <:JXL:805850130203934781> , but normally f_auto just serves AVIF, as, well, expected...
jonnyawsom3
lonjil > f_auto uses accept headers AFAIK > But Cloudinary doesn't serve JXL by default yet > website operators must opt in
2024-03-25 03:41:25
<:This:805404376658739230>
HCrikki
2024-03-25 03:42:55
theres no point serving avif to ios/safari though like its an express cloudinary client request demanded with an iron fist
VcSaJen
sklwmp the nintendo website does use Cloudinary so if you force it to serve JXL by changing the endpoint to f_jxl, it serves <:JXL:805850130203934781> , but normally f_auto just serves AVIF, as, well, expected...
2024-03-25 03:44:18
Usually you can't force it because transforms are locked. Unlocked transforms are for debug purposes only
sklwmp
2024-03-25 03:45:01
yea, i found that weird too, i don't think we're supposed to be able to change "f_auto" like this...
_wb_
lonjil <@794205442175402004> do you have anything you can share on when JXL might start being served by default by Cloudinary?
2024-03-25 03:46:52
It's still opt-in, we do have some customers who did opt-in already. We're now serving about 40 million jxl images per day, still peanuts but quite a bit more than the 1-2 million jxl images we served per day beginning of this year.
lonjil
2024-03-25 03:48:00
I'm eagerly awaiting the day it stops being opt-in, suddenly there would be a lot of traffic to cite as evidence of jxl being widely used.
Quackdoc
2024-03-25 03:48:04
I wonder how busted a "redirection" app would be that would `s/f_auto/f_jxl` probably pretty busted
_wb_
2024-03-25 03:51:04
Quackdoc
2024-03-25 03:52:07
those are some good numbers 0.0
yoochan
2024-03-25 03:52:15
strange increase ! which client caused it ? 😄
sklwmp
Quackdoc those are some good numbers 0.0
2024-03-25 03:52:46
truly, that's some real "ecosystem interest"
lonjil
2024-03-25 03:53:04
the first peak was probably people not using their windows computers because they were busy with christmas (so using their iPhones more instead)
_wb_
2024-03-25 03:53:27
Here are the top "browsers" we see with image/jxl support (numbers are for some random day one or two weeks ago)
Quackdoc
2024-03-25 03:54:15
Im assuming most of these are webview/platform stuff on ios?
_wb_
2024-03-25 03:54:41
yeah, probably mostly the iOS versions of the apps
2024-03-25 03:55:28
If I scroll a bit down I also see Pale Moon 30,892 0.00%
sklwmp
_wb_ It's still opt-in, we do have some customers who did opt-in already. We're now serving about 40 million jxl images per day, still peanuts but quite a bit more than the 1-2 million jxl images we served per day beginning of this year.
2024-03-25 03:55:52
What reasons did those customers give for opting in to JXL support? Like, I want to know the corporate incentives to adopting this "new" tech <:BlobYay:806132268186861619>
_wb_
sklwmp What reasons did those customers give for opting in to JXL support? Like, I want to know the corporate incentives to adopting this "new" tech <:BlobYay:806132268186861619>
2024-03-25 03:56:28
No idea. They don't have to give reasons, it's just clicking a checkbox in their settings 🙂
sklwmp
2024-03-25 03:57:07
ohh, i thought at least some of them would've posted or communicated about it or something
2024-03-25 03:57:14
anyway, still great numbers
Quackdoc
_wb_ If I scroll a bit down I also see Pale Moon 30,892 0.00%
2024-03-25 03:58:19
that is a surprisingly high number of palemoon usage xD
_wb_
2024-03-25 04:00:08
Basilisk 2,374 0.00%
Orum
2024-03-25 04:00:19
so basically JXL images are almost entirely served to Safari, and usually the mobile one
_wb_
2024-03-25 04:00:32
Waterfox 2,817 0.00%
lonjil
Quackdoc that is a surprisingly high number of palemoon usage xD
2024-03-25 04:01:03
it's total number of requests tho, so if every Palemoon user saw a total of say 10 images that's 3000 people. If they got more images than that, it's even fewer people.
_wb_
2024-03-25 04:04:32
Here's the top "browsers" _not_ having image/jxl in the Accept headers: Chrome 2,574,088,266 17.39% Chrome Mobile 1,247,689,372 8.43% Mobile Safari UI/WKWebView 1,089,589,664 7.36% Mozilla 739,952,529 5.00% Edge 607,373,972 4.10% Mobile Safari 564,490,648 3.81% Android 541,269,236 3.66% Firefox 334,544,421 2.26% Safari 290,444,942 1.96% Chrome Mobile WebView 258,302,222 1.74% App 207,736,179 1.40% Bytespider 191,633,822 1.29% Samsung Internet 180,777,403 1.22% Facebook 178,610,359 1.21% HeadlessChrome 161,579,167 1.09%
HCrikki
sklwmp ohh, i thought at least some of them would've posted or communicated about it or something
2024-03-25 04:04:35
one reason would be webdev against web-accessible test sites and serving their own content to their own desktop and mobile apps. analytic suites can give odd numbers for a number of reasons, like a web service being accessible **only** through its own app (analytic scripts arent only included in websites)
_wb_
2024-03-25 04:06:30
still quite a bit of Safari that either hasn't upgraded yet, or I guess is making image requests in a way that doesn't send the right Accept headers (e.g. fetching via javascript will not send the Accept headers for images, I suppose)
2024-03-25 04:31:11
Some websites that are using Cloudinary and are delivering quite a few jxl images: https://www.aroma-zone.com/ https://www.truereligion.com/ https://www.aritzia.com/ https://www.luisaviaroma.com/ https://fcbayern.com/ https://suitsupply.com/
2024-03-25 04:33:44
https://www.gents.se/ https://www.thescore.com/ https://gp1tickets.com/
2024-03-25 04:36:55
it's quite fun to be able to run queries against a huge amount of CDN logs
Orum
2024-03-25 04:38:35
Is there an incentive for customers to enable JXL? Like, are they billed on aggregate traffic or something?
_wb_
2024-03-25 04:42:38
It's a bit complicated — in the current pricing model, they pay for bandwidth but also for number of encodes and for storage of the encoded images. In the new simplified pricing model (that we're only just beginning to roll out), they'll pay per view and it becomes our problem to make the trade-off between bandwidth and spending cpu/storage on making more variants.
Orum
2024-03-25 04:43:06
that makes sense
Quackdoc
2024-03-25 05:29:41
I suppose that means if a site is say predominantly apple, you could, in theory, choose not to serve avif at all to that site, if a site is more chrome/android not serve jxl, and a healthy mix serve both?
spider-mario
Aerocatia wget gave me a JPEG-XL
2024-03-25 06:17:14
why does this sound like an infection
2024-03-25 06:17:33
“I got a particularly recalcitrant JPEG XL from wget”
yoochan
2024-03-25 07:14:28
Looks like a quote from crocodile dundjee(xl)
_wb_
2024-03-26 07:17:56
VcSaJen
2024-03-29 12:24:47
Is this true? https://www.instagram.com/trentsizemore/p/C5CyizDrP2G/
2024-03-29 12:30:54
Found this: https://engineering.fb.com/2024/03/26/android/instagram-threads-hdr-photos/ But they did not mention JPEG XL/AVIF or high bit depth, only HDR. At least in text, I did not listen to podcast.
HCrikki
2024-03-29 12:34:58
afaik its actually ancient jpg combined with a gainmap, which google calls jpeg-r despite being an 'extend' of jpg or ultrahdr
VcSaJen
2024-03-29 12:35:51
I don't have Instagram app, so I can't test if JXL is uploadable
HCrikki
2024-03-29 12:35:55
try saving any 'ultrahdr' with a really low quality and youll realize its actually trash even though hdr data is added - no better than regular jpg
2024-03-29 12:37:14
jpg takes a lot of storage and even though a gainmap doesnt add a lot, jxl should consistently generate such photos at half the filesize and higher quality too
2024-03-29 12:40:54
the big win for the ecosystem is that like on iphones since a few models, android now *stores* hdr data so it should be easy for camera apps to generate images from that in jxl or avif. previously iphones didnt display hdr intent even if it was captured and screen could show it
2024-03-29 12:44:11
anyway social apps cant viably serve massive and share 10+ megabyte jpgs unless they capture it themselves and gainmaps are unreliable and result in mismatch after even just small metadata changes, nevermind image manipulations on the original file more complex than crop, resize, rename
VcSaJen
2024-03-29 12:48:53
https://gregbenzphotography.com/hdr-photos/instagram-now-supports-hdr-photos/ Here is mentioned that HEIC and AVIF uploads are supported via Instagram app (not website). Maybe JXL is also supported then, at least in iOS?
HCrikki
2024-03-29 01:06:03
unconfirmed but facebook allegedly allowed jxl upload 2 years before. keeping up with adoption is a pain cuz its usually not disclosed or passively obtained from devs updating their builds of image libraries they already use like ffmpeg. snapcraft and flathub are completely untracked too
jonnyawsom3
2024-03-29 02:51:47
Got an Unsupported Format error when trying to use a JXL on Android, so need someone on IOS to test
HCrikki
2024-03-29 03:10:10
test what? if its a website, use cromite for images, theres a 3rdparty build of fossify gallery with a 5min patch integrated
VcSaJen
Got an Unsupported Format error when trying to use a JXL on Android, so need someone on IOS to test
2024-03-29 03:10:43
Did you use the latest version of the app?
jonnyawsom3
2024-03-29 03:40:19
No updates available
VcSaJen
2024-03-29 03:55:36
So it's not supported. A shame
HCrikki
2024-03-29 04:13:28
odd jon reported it worked 2 years ago. try again with a jpg converted to jxl, stored as contained instead of naked codestream. through website - afaik the apps do some silent preprocessing so they need formats supported in fresco
jonnyawsom3
2024-03-29 10:52:59
Thought I'd ask if anyone knew of C# OpenImageIO bindings or other image libraries with one. Trying to find an excuse to get JXLs into VR :P https://github.com/Yellow-Dog-Man/Resonite-Issues/issues/1562
sklwmp
HCrikki odd jon reported it worked 2 years ago. try again with a jpg converted to jxl, stored as contained instead of naked codestream. through website - afaik the apps do some silent preprocessing so they need formats supported in fresco
2024-03-30 04:47:15
JXL upload worked fine for me ~1 year ago on Facebook Desktop, haven't tested recently
jonnyawsom3
2024-03-30 10:22:28
JXL compressed DNGs are now supported https://github.com/LibRaw/LibRaw/commit/12b0e5d60c57bb795382fda8494fc45f683550b8
2024-03-30 04:12:04
Now we just need to wait a year for a new release... And then for applications to update their libraries 🥲
fab
2024-03-30 04:32:57
We are ata good point
VcSaJen
2024-04-02 12:22:12
https://www.phoronix.com/news/Linux-Mint-22-March-2024
HCrikki
2024-04-02 12:37:39
hopefully the package pulled from debian is fresher. debian's many derivatives are stuck on 0.7.0
Demiurge
2024-04-02 01:17:03
It's ok. 0.7 is more stable!
2024-04-02 01:19:24
Honestly it's kind of dangerous how fast they're updating things. Would be safer if they used 0.6 or 0.5 and just backported security fixes themselves during packaging
2024-04-02 01:27:17
That's the only way, if you're a serious, server OS
2024-04-02 01:28:29
I always disable updates on my system for maximum stability, personally.
2024-04-02 01:29:26
The more years out of date everything is, the more stable the system
fab
2024-04-02 01:36:07
When is out for beta?
Demiurge Honestly it's kind of dangerous how fast they're updating things. Would be safer if they used 0.6 or 0.5 and just backported security fixes themselves during packaging
2024-04-02 01:36:22
Yes 0,6 is the best
2024-04-02 01:40:12
I Unlocked a new image
2024-04-02 01:40:25
Strange how much time 6 days I stayed to do This when aomedia would be faster than me
2024-04-02 01:44:09
As I shown could expect
2024-04-02 01:44:37
Improved fast speed avif jxl is worse
jonnyawsom3
2024-04-02 01:44:55
Wrong channel again
fab
2024-04-02 01:45:03
Aomedia learned by Trucks
2024-04-02 04:33:27
I working on de-ringing e5-e9
afed
2024-04-03 04:43:58
https://opensource.googleblog.com/2024/04/introducing-jpegli-new-jpeg-coding-library.html
2024-04-03 04:44:38
but <:Thonk:805904896879493180> https://github.com/libjxl/jpegli need some redirection
veluca
2024-04-03 04:55:59
fixed 😛
raspin7932
2024-04-04 12:42:45
Doesn't bit depth of 10 bit break backwards compatibility with current jpeg implementations?
veluca
2024-04-04 01:11:55
no no
2024-04-04 01:12:04
it's still a regular jpeg
Orum
2024-04-04 01:35:05
if SW dev has taught me anything it's that there will always be at least one implementation that does things incorrectly, even for basic stuff
190n
veluca it's still a regular jpeg
2024-04-04 01:35:34
how does it work?
afed
190n how does it work?
2024-04-04 04:56:14
https://www.rxddit.com/r/Android/comments/1bux9se/introducing_jpegli_a_new_jpeg_coding_library/kxxdtuu/
HCrikki
2024-04-08 03:54:32
xnviewMP added support for Jpegli encoder in 1.7.1 if anyone wanna check
damian101
2024-04-08 04:02:23
xnview mp also now works in Wayland I just noticed
2024-04-08 04:02:36
had issues with that for a long time
Vlad (Kuzmin) Erium
2024-04-09 07:52:28
Lightroom on iOS export in jxl with hdr support (hdr gain I guess) And a iOS itself pretty well understand that jxl files
Foxtrot
2024-04-09 02:18:14
I wonder is JXL can use Jpegli to increase it's own adoption. Like "hey, this is Jpegli encoder and it even comes with JXL encoding for free" 😄
HCrikki
2024-04-09 03:16:19
coverage needs more depth and actual live demonstrations from users with notable gains made for jpg->jxl conversions, i presume having the original jpgs generated properly using jpegli would result in higher quality more visually pleasing final jxls but some conversion tools could mess their own integrations
2024-04-09 03:20:45
maybe adoption should track integration quality. many convertors dont use lossless transcoding from jpg so not only do conversions take time but also either lose detail or result in huge lossless jxls. enthusiasts would expect the main selling points of jxl to be consistent gains and be surprised when they arent realized or oddly way less efficient than supposed to be
yoochan
2024-04-09 06:25:00
I agree, this would help everyone to make a good first impression.
Demiurge
Foxtrot I wonder is JXL can use Jpegli to increase it's own adoption. Like "hey, this is Jpegli encoder and it even comes with JXL encoding for free" 😄
2024-04-09 09:42:18
Yes, that seems like the obvious path forward to me.
2024-04-09 09:43:02
But it isn't really promoted much.
2024-04-09 09:43:20
For example, not even libjxl uses it!
2024-04-09 09:47:45
For some inexplicable, incomprehensible reason, libjxl REQUIRES headers from libjpeg-turbo in the third party folder in order to properly compile. You can't even tell it to use system-installed headers like you can with brotli/gtest/hwy/lcms2
2024-04-09 09:49:23
Even though libjxl already comes with an AMAZING and capable libjpeg, it laughably refuses to use it and requires libjpeg-turbo instead
2024-04-09 09:52:52
One thing that would help with jpegxl adoption, would be if the libjxl build system were modified to make it easier to build multiple versions of libjpeg at the same time. API level 62 and 80, for instance. Those are the most popular.
2024-04-09 09:53:25
Then it would be easy to install it as a drop-in systemwide replacement for libjpeg.
Demonik
2024-04-10 04:54:02
if there's anything that'd help its adoption is having less complicated build system or at least a version that can be easily embedded without having to deal with monstrous c++ build systems
Quikee
2024-04-10 05:25:14
There are static builds that you can use
Demonik
2024-04-10 05:42:51
I meant adoption among software developers, C++ build systems are an incomprehensible mess, there are a bunch of dependencies and builds are only available for some platforms
HCrikki
2024-04-10 06:42:40
updated adoption in progress for Telegram (currently flathub, snap, desktop, likely all apps and website soon). seems theyre updating libjxl from 0.8.2 to 0.10.2 and also swapping out mozjpeg to jpegli
spider-mario
Demiurge For some inexplicable, incomprehensible reason, libjxl REQUIRES headers from libjpeg-turbo in the third party folder in order to properly compile. You can't even tell it to use system-installed headers like you can with brotli/gtest/hwy/lcms2
2024-04-10 07:44:47
IIRC, that's because it doesn't just use its headers, it uses its headers' templates, so that it can do its own substitutions
2024-04-10 07:45:15
system-installed libjpeg-turbo doesn't have it
Demiurge
2024-04-10 09:30:12
Most of the time, codec libraries are written in C with minimal dependencies. Like opus, zstd, brotli etc
2024-04-10 09:31:54
With the intent of having the absolute minimum amount of barriers for the maximum number of projects to adopt it
2024-04-10 09:33:47
Heck even libaom
2024-04-10 09:34:15
I was pretty surprised that libjxl doesn't follow the same pattern
2024-04-10 09:35:23
Since it's written in C++ it should be possible to incrementally reduce its dependence on C++ over time and simplify its build process
2024-04-10 09:36:16
Incrementally reducing the use of C++ features until it's just plain C
lonjil
2024-04-10 09:36:29
literally negative value work
2024-04-10 09:37:16
if you have a C compiler, you have a C++ compiler
Demiurge
2024-04-10 09:37:32
Definitely not true
Quackdoc
Demiurge Since it's written in C++ it should be possible to incrementally reduce its dependence on C++ over time and simplify its build process
2024-04-10 09:37:33
it's not like there is no value in this, but Im not sure *how much* value there is in this
lonjil
Demiurge Definitely not true
2024-04-10 09:37:54
true of 100% of platforms that you might want to use libjxl on
Quackdoc
lonjil true of 100% of platforms that you might want to use libjxl on
2024-04-10 09:38:22
it's really not, C++ has a light of hidden headaches that cause issues that greatly hinder portability
lonjil
2024-04-10 09:38:47
even embedded devs working with 8 bit microcontrollers use C++ these days
Quackdoc
2024-04-10 09:39:01
*some*
w
2024-04-10 09:39:05
pashifox and c++
2024-04-10 09:39:09
dude SHUT UP
lonjil
2024-04-10 09:39:25
I have an extreme dislike of C++, but what's the point of re-writing a complex library in C?
Quackdoc
2024-04-10 09:39:28
I would rather stick stick a toothpick under my toenail and kick a wall then do embedded c++ work lol
2024-04-10 09:40:56
that being said, you probably would find more benefit to just doing a decoder/simple encode in whatever language you need. a lot of times you don't really need all the bits and bobs
w
2024-04-10 09:41:22
you would find more benefit not caring about the language people are using
Demiurge
2024-04-10 09:41:37
I think there are bigger, more important low hanging fruit that should be done first, but in the long term, there is a reason why literally every other codec library is not written in C++
veluca
2024-04-10 09:41:51
hey people, calm down 😉
w
2024-04-10 09:41:55
NO
Quackdoc
Demiurge I think there are bigger, more important low hanging fruit that should be done first, but in the long term, there is a reason why literally every other codec library is not written in C++
2024-04-10 09:42:34
we do the right thing and migrate to the lord language the one and only crablang
Demonik
2024-04-10 09:42:35
idk, it's just with jxl there is much higher barrier to entry, for example opus I had 0 problems building for all platforms and adding to project but with jxl I had trouble figuring out how to build even for windows (since I'm not using visual studio and the build guide is for visual studio only as far as I can tell)
Quackdoc
2024-04-10 09:43:00
~~time to add meson support to libjxl~~
w
Demonik idk, it's just with jxl there is much higher barrier to entry, for example opus I had 0 problems building for all platforms and adding to project but with jxl I had trouble figuring out how to build even for windows (since I'm not using visual studio and the build guide is for visual studio only as far as I can tell)
2024-04-10 09:43:12
and that has nothing to do with the language
Demonik
2024-04-10 09:43:29
I didn't say it had anything to do with it
veluca
Demonik idk, it's just with jxl there is much higher barrier to entry, for example opus I had 0 problems building for all platforms and adding to project but with jxl I had trouble figuring out how to build even for windows (since I'm not using visual studio and the build guide is for visual studio only as far as I can tell)
2024-04-10 09:43:39
that's something we could improve, maybe open an issue? it is not because of c++ though, nowadays that's a problem mostly only on weird microcontrollers 😛
Demonik
2024-04-10 09:43:43
mostly the build process is complicated
Quackdoc
2024-04-10 09:43:46
I like language ecosystems that officially provide build tooling, rust, go, dart/flutter etc
w
2024-04-10 09:43:52
uhh BLOAT
lonjil
Quackdoc we do the right thing and migrate to the lord language the one and only crablang
2024-04-10 09:44:35
who wants to help me re-write libjxl in Rust let's goooo
Demonik
2024-04-10 09:44:52
someone already did
lonjil
2024-04-10 09:44:53
actually I've already said that I might port the jpegli decoder code to Rust
Demonik
2024-04-10 09:44:58
not sure about quality of it
Demiurge
2024-04-10 09:45:08
Yeah, there are more important low hanging fruit to worry about than what language it's written in. Like always reporting error conditions instead of invoking undefined behavior or aborting
lonjil
Demonik someone already did
2024-04-10 09:45:22
no, that's an independent implementation of jxl decoding. Quality is very good from what I've seen.
Demonik
2024-04-10 09:45:46
I just think simplifying build process would greatly help with adoption among developers
w
2024-04-10 09:46:09
developers dont even need to build it
2024-04-10 09:46:20
i dont think that's a real issue
lonjil
Demiurge Yeah, there are more important low hanging fruit to worry about than what language it's written in. Like always reporting error conditions instead of invoking undefined behavior or aborting
2024-04-10 09:46:20
one of these days I'm gonna get a CHERI computer, and I'll compile with options that turn 99% of UB into aborts and it'll be great.
veluca
Demonik I just think simplifying build process would greatly help with adoption among developers
2024-04-10 09:46:21
write up what difficulties you ran into in an issue? thanks 🙂
Quackdoc
lonjil who wants to help me re-write libjxl in Rust let's goooo
2024-04-10 09:46:21
if we port it to C first we can do c2rust like rav1d
2024-04-10 09:46:22
[av1_dogelol](https://cdn.discordapp.com/emojis/867794291652558888.webp?size=48&quality=lossless&name=av1_dogelol)
Demonik
2024-04-10 09:46:31
what if you want to use it on platforms for which there are no binaries
w
2024-04-10 09:46:40
then you dont use it
2024-04-10 09:46:55
then that platform doesnt matter
2024-04-10 09:46:58
:p
Demiurge
2024-04-10 09:47:06
Ideally you just have a `libjxl.a` archive you can just link
veluca
2024-04-10 09:47:21
I do think that a high quality, performant Rust decoder (and encoder, eventually) would be great to have 🙂
lonjil
2024-04-10 09:47:37
jxl-oxide seems pretty great!
Demiurge
veluca I do think that a high quality, performant Rust decoder (and encoder, eventually) would be great to have 🙂
2024-04-10 09:47:43
How is jxl-oxide?
Quackdoc
2024-04-10 09:47:44
the greatest issue I had was I think highway or rust refused to statically compile for android and I spent half a day pfaffing about with that
Demiurge How is jxl-oxide?
2024-04-10 09:48:07
it's mostly there in terms of perf, it's still behind for sure, but its more then usable
veluca
Demiurge How is jxl-oxide?
2024-04-10 09:48:11
not fast enough yet 😛
2024-04-10 09:48:22
well, last time I checked
2024-04-10 09:48:35
pretty sure it uses more memory too
Quackdoc
2024-04-10 09:48:38
it seems to be faster then libjxl for me on a very specific set of jpeg->jxl images ill see if I can find them again
veluca
Quackdoc it seems to be faster then libjxl for me on a very specific set of jpeg->jxl images ill see if I can find them again
2024-04-10 09:49:00
that's a bit surprising (but definitely welcome)
Demiurge
Demonik what if you want to use it on platforms for which there are no binaries
2024-04-10 09:49:08
Ideally you would cross-compile an archive?
veluca
2024-04-10 09:49:24
also Rust doesn't (yet) have a good highway equivalent, which makes performance portability harder
lonjil
2024-04-10 09:50:33
I think I would use the not yet final portable SIMD thingy, accepting that it won't be as widely usable as it could be until that's done (and maybe provide valuable feedback about it before stabilzation)
w
2024-04-10 09:51:01
rust is old news, it's all about zig now
Demiurge
veluca also Rust doesn't (yet) have a good highway equivalent, which makes performance portability harder
2024-04-10 09:51:12
Shouldn't something like libhwy be ideally built into the language primitives?
Quackdoc
2024-04-10 09:51:15
well, the *biggest* issue with rust is the lack of a good rust native cms crate
Demiurge
Quackdoc well, the *biggest* issue with rust is the lack of a good rust native cms crate
2024-04-10 09:51:41
There is the crappy one Firefox uses
2024-04-10 09:51:51
That's probably the best one
Quackdoc
2024-04-10 09:51:51
well I did say good [av1_dogelol](https://cdn.discordapp.com/emojis/867794291652558888.webp?size=48&quality=lossless&name=av1_dogelol)
yurume
2024-04-10 09:51:57
I think that is being increasingly off-topic
veluca
Quackdoc well, the *biggest* issue with rust is the lack of a good rust native cms crate
2024-04-10 09:52:10
that also doesn't help xD but you don't *need* to use one...
lonjil
2024-04-10 09:52:12
ok so here's the todo list: * port good cms code to rust * port jpegli to rust * get some good SIMD thiny going * port libjxl to rust
Demiurge
2024-04-10 09:52:32
Zig? I heard zig is pretty cool B)
w
2024-04-10 09:52:34
and then some new hip language is going to come along and youre going to say port it to that
veluca
2024-04-10 09:52:43
(I may or may not be doing something abut 3 😉 )
w
2024-04-10 09:52:59
c++ is good because it's actually standard
2024-04-10 09:53:07
and not some fad
afed
2024-04-10 09:53:11
jxl-oxide is still very slow in comparison, even wic jxl (winthumb) has gone from something useful to something completely unusable for me because slow
Demiurge
lonjil ok so here's the todo list: * port good cms code to rust * port jpegli to rust * get some good SIMD thiny going * port libjxl to rust
2024-04-10 09:53:19
I hate rust
2024-04-10 09:53:24
I always hated it from day 1
lonjil
Demiurge I hate rust
2024-04-10 09:53:27
ok
yurume
veluca (I may or may not be doing something abut 3 😉 )
2024-04-10 09:53:33
I had some prototype code for that as well, but no definitive design to further develop on
lonjil
veluca (I may or may not be doing something abut 3 😉 )
2024-04-10 09:53:47
I'm eager to hear more
Quackdoc
Demiurge I hate rust
2024-04-10 09:53:57
that must be a rough life to live mate
w
2024-04-10 09:54:06
i hate rust and rust users
Demonik
veluca write up what difficulties you ran into in an issue? thanks 🙂
2024-04-10 09:54:15
I couldn't find any information on how to build for windows without visual studio or msys2 (just clang/cmake/c++ build tools installed), I guess this isn't a big problem for most people since you would expect most people having it but that was one thing, I also couldn't make crosscompilation from windows work in any way, no matter what I tried it didn't work but I tried quite some time ago so I don't remember what exactly were problems; I didn't have any problems with opus for example, it was very easy, but it's also much smaller and had no dependencies
Demiurge
2024-04-10 09:54:20
It's just C++
lonjil
2024-04-10 09:54:49
tfw every new GPU driver in Linux is written in Rust but actually it's just a fad version of C++
Demiurge
w i hate rust and rust users
2024-04-10 09:54:50
I hate everyone equally.
veluca
2024-04-10 09:54:56
Rust allows you to guarantee memory safety at compile time, which is *great* for adoption - avoids people requesting sandboxing, avoids people complaining about safety, and avoids things like the libwebp bug which was found after 8+ years
w
2024-04-10 09:55:09
unsafe
lonjil
2024-04-10 09:55:42
uses of unsafe can be proven safe
Demonik
2024-04-10 09:55:43
once I try again if I run into any issue I'll write it up I guess
username
afed jxl-oxide is still very slow in comparison, even wic jxl (winthumb) has gone from something useful to something completely unusable for me because slow
2024-04-10 09:56:04
speed wise jxl-winthumb should be faster after v0.2.4, when was the last time you tried it?
veluca
Demonik once I try again if I run into any issue I'll write it up I guess
2024-04-10 09:56:13
thanks 🙂
Demonik
2024-04-10 09:56:16
I just put it away a while ago specifically because I couldn't make build work but now that I'm focused on it I'll eventually need to build it for other platforms
w
2024-04-10 09:56:23
it's not functional so it's immediately not safe
lonjil
veluca Rust allows you to guarantee memory safety at compile time, which is *great* for adoption - avoids people requesting sandboxing, avoids people complaining about safety, and avoids things like the libwebp bug which was found after 8+ years
2024-04-10 09:57:05
also honestly people complain about Rust being complex but I find Rust codebases much easier to understand than anything moderately complex in C or C++. Much easier to contribute to a Rust project without accidentally fucking up some invariant somewhere.
Demiurge
2024-04-10 09:59:23
Rust would be cool... if it was trying to replace C instead of C++. If it were trying to be as simple and portable as C so it could actually replace C.
Quackdoc
2024-04-10 09:59:39
ah here is one where I found jxl-oxide to be marginally faster, Mind you I think jxl-oxide is compiled with more optimal settings, but it's hard to do a 1:1, both use cpu=native though ```ps ➜ Pictures hyperfine --runs 2 'djxl ina4k-no.jxl --disable_output' 'jxl-oxide decode --num-threads 12 ina4k-no.jxl' Benchmark 1: djxl ina4k-no.jxl --disable_output Time (mean ± σ): 531.0 ms ± 21.9 ms [User: 5549.8 ms, System: 76.4 ms] Range (min … max): 515.5 ms … 546.4 ms 2 runs Benchmark 2: jxl-oxide decode --num-threads 12 ina4k-no.jxl Time (mean ± σ): 405.5 ms ± 4.8 ms [User: 3687.9 ms, System: 75.6 ms] Range (min … max): 402.1 ms … 408.9 ms 2 runs Summary jxl-oxide decode --num-threads 12 ina4k-no.jxl ran 1.31 ± 0.06 times faster than djxl ina4k-no.jxl --disable_output ```
Demiurge
2024-04-10 10:00:37
But they aren't trying to replace C sadly, and C does need to be replaced...
Quackdoc
2024-04-10 10:00:54
Rust replaces both C and CPP in a LOT of use cases
Demiurge
2024-04-10 10:01:05
And it would be a lot easier than trying to make yet another C++
Quackdoc
2024-04-10 10:01:28
keep in mind the only thing rust really needs to replace C is nostd, force that everywhere and you are pretty much there
Demiurge
2024-04-10 10:02:01
It would be an easier and more-needed task to replace C than C++. That's the whole reason why people got excited over zig
lonjil
2024-04-10 10:02:52
the main thing I've seen Zig people say they dislike about Rust is the safety features
veluca
Quackdoc keep in mind the only thing rust really needs to replace C is nostd, force that everywhere and you are pretty much there
2024-04-10 10:03:07
unfortunately untrue - llvm *is* a limitation since it doesn't quite support all the architectures
lonjil
2024-04-10 10:03:15
the argument being that constraining the programmer makes their work slower
w
2024-04-10 10:03:33
yeah typscript was also a fad
veluca
2024-04-10 10:03:42
and I don't think rustc-codegen-gcc is quite there yet
afed
username speed wise jxl-winthumb should be faster after v0.2.4, when was the last time you tried it?
2024-04-10 10:04:19
faster, but still not fast enough for large and lossless images, because for some even libjxl speed isn't quite enough, but if it's something even slower, it goes from being somewhat not enjoyable to almost impossible to use
Quackdoc
veluca and I don't think rustc-codegen-gcc is quite there yet
2024-04-10 10:04:59
not yet, but it is getting close, and ofc gccrs will come eventually
2024-04-10 10:05:51
the gcc stuff + something like [eyra](https://github.com/sunfishcode/eyra) will eventually wind up covering a large basis
veluca
lonjil the argument being that constraining the programmer makes their work slower
2024-04-10 10:06:26
that line of reasoning IMO is fairly dangerous
Demiurge
lonjil the argument being that constraining the programmer makes their work slower
2024-04-10 10:06:35
The main complaint is not safety features, it's that it's hard to learn, slow and not portable.
veluca
2024-04-10 10:06:55
programmers are bad at doing the right thing, it's half the reason we have types 😛
lonjil
Demiurge The main complaint is not safety features, it's that it's hard to learn, slow and not portable.
2024-04-10 10:07:09
Zig is not more portable, nor faster. And idk I found Rust easy to learn?
veluca
Demiurge The main complaint is not safety features, it's that it's hard to learn, slow and not portable.
2024-04-10 10:07:14
hard to learn I can agree with, slow to compile possibly too, but not portable?
2024-04-10 10:07:36
although tbh it's not *that* hard to learn
Quackdoc
lonjil Zig is not more portable, nor faster. And idk I found Rust easy to learn?
2024-04-10 10:08:12
it's 50:50
Demiurge
2024-04-10 10:08:31
Well, compared to C... I'm not that familiar with Zig but I heard it's popular with C programmers since it is compatible with C and comes with a C build system
Quackdoc
2024-04-10 10:08:44
on all of the points, I personally really don't like zig, and took to rust almost immediately, but I know many people who are the opposite, cant take to rust at all, but zig was almost instant
lonjil
veluca and I don't think rustc-codegen-gcc is quite there yet
2024-04-10 10:10:10
not 100% but it is at least complete enough to compile Linux Rust code. I think language-feature wise it's pretty complete, but backend completeness isn't great. E.g. it only has SIMD for x86-64 at the moment.
Demiurge
2024-04-10 10:10:22
I haven't tried Zig yet, but their target audience seems to be C devs...
veluca
2024-04-10 10:10:40
my mental model of Zig is "better C(++?)", which IMO not quite what we truly need
Quackdoc
veluca hard to learn I can agree with, slow to compile possibly too, but not portable?
2024-04-10 10:10:55
cargo has some really silly debugging defaults. you can compile debug rust much faster by doing things like incremental=false using cranelift, using mold for linking etc.
Demiurge
2024-04-10 10:11:22
We do need to replace C though, we have been needing a good replacement for decades now?
lonjil
2024-04-10 10:11:26
Zig is C with fewer outright footguns, but with no safety guarantees, and a pretty nice compile time code feature.
Quackdoc
2024-04-10 10:12:38
Zig is a good short term solution, but IMO rust will wind up winning out, it simply has too much goodies.
Demiurge
2024-04-10 10:12:40
C has some ways of doing things that could be made slightly better without shaking it up too much from its essential straightforwardness and simplicity
veluca
2024-04-10 10:13:14
sure, but doing that doesn't save you from having memory safety vulnerabilities lurking for years 🙂
Demiurge
2024-04-10 10:13:15
And of course more compile-time sanity checks are always great to have in a language
2024-04-10 10:14:34
Compile time memory/thread management is a cool idea
lonjil
Demiurge C has some ways of doing things that could be made slightly better without shaking it up too much from its essential straightforwardness and simplicity
2024-04-10 10:14:42
but it's an entirely different language. Slightly-different but you still need to re-write doesn't seem like a huge win.
Demiurge
2024-04-10 10:14:42
A very logical one
lonjil but it's an entirely different language. Slightly-different but you still need to re-write doesn't seem like a huge win.
2024-04-10 10:16:41
Well it's only a huge win if you get something really valuable out of it like static safety checks at compile time that guarantee no undefined behavior for example
veluca
2024-04-10 10:16:57
I believe you are describing Rust 😉
Demiurge
2024-04-10 10:17:36
Well rust would be great if it was as simple and had as many compilers as C does...
2024-04-10 10:18:02
But that's just my opinion...
2024-04-10 10:18:27
I also think simd data types and operators should be language primitives
lonjil
2024-04-10 10:18:34
shouldn't you be telling us about how Zig isn't good because it doesn't have many compilers? :p
Demiurge
2024-04-10 10:21:04
Well I don't know much about zig... if it's not complicated then it's more likely people write more compilers for it, even a useless language like brainfuck
Demonik
Quackdoc Zig is a good short term solution, but IMO rust will wind up winning out, it simply has too much goodies.
2024-04-10 10:22:23
great for building though
2024-04-10 10:23:32
the language itself is not stable enough to use though
lonjil
2024-04-10 10:24:10
<@179701849576833024> <@184373105588699137> if I were to try my hand at a CMS impl for Rust, do you have any thoughts on where to start? Would porting an existing library's code be the best bet?
Demiurge
lonjil Zig is C with fewer outright footguns, but with no safety guarantees, and a pretty nice compile time code feature.
2024-04-10 10:24:15
So people DO like static guarantees after all :)
lonjil
Demiurge So people DO like static guarantees after all :)
2024-04-10 10:24:30
?
Demiurge
2024-04-10 10:25:10
I think people would be more excited if Zig had more guarantees akin to rust
2024-04-10 10:26:20
I really don't think safety is what's holding Rust back. Rather, it's the only thing it has going for it.
Quackdoc
lonjil <@179701849576833024> <@184373105588699137> if I were to try my hand at a CMS impl for Rust, do you have any thoughts on where to start? Would porting an existing library's code be the best bet?
2024-04-10 10:26:28
Little-cms is mostly C, it could be a really neat idea to try to c2rust it I guess, but personally I would do it from scratch, then you can use things like glam's vector handling for better SIMD support
Demonik
veluca my mental model of Zig is "better C(++?)", which IMO not quite what we truly need
2024-04-10 10:26:42
it definitely is better C, not C++, it's great for building personal C/C++ projects though since it's also a build system
Quackdoc
2024-04-10 10:26:47
for context, rav1d is c2rust of dav1d and it worked fairly well for them
Demonik
2024-04-10 10:27:09
and a much more sane one at that compared to most
lonjil
Quackdoc Little-cms is mostly C, it could be a really neat idea to try to c2rust it I guess, but personally I would do it from scratch, then you can use things like glam's vector handling for better SIMD support
2024-04-10 10:27:59
then I'll need to do a lot of reading up on CMSes 🙂
Quackdoc
2024-04-10 10:28:51
imo it's probably worth it, note that color handling is a pretty complicated process, especially when you get to tone and gamut mapping, but you can find a lot of stuff here to get started http://www.brucelindbloom.com/
veluca
2024-04-10 10:29:00
CMSes are complex though
2024-04-10 10:29:08
porting lcms might be a good idea, idk
Quackdoc
2024-04-10 10:29:45
porting lcms would probably be the "fastest" way to get a good cms, it might not be the best way, since it requires a lot of unsafe -> safe workand initial debugging, but it could work fine
lonjil
2024-04-10 10:29:46
yeah I have heard that they are quite complex, so porting has a lower likelihood of being too much
Demiurge
2024-04-10 10:29:53
https://github.com/kornelski/rust-lcms2
2024-04-10 10:29:56
Wrapper
Quackdoc
2024-04-10 10:30:13
https://github.com/immunant/c2rust
Demiurge
2024-04-10 10:30:48
I don't see what's the problem with just linking a C lib into rust
2024-04-10 10:31:34
lcms2 is supposed to be pretty damn good
2024-04-10 10:32:20
If you want a pure rust one, here's a possible starting point... https://github.com/FirefoxGraphics/qcms
2024-04-10 10:32:33
It does not support a lot of features
Quackdoc
2024-04-10 10:32:57
it's better when to use native rust when possible because you get the safety gurantees right through, that being said at the very least `rust-lcms2-sys` compiles lcms2 statically using the cargo build system so you don;t have build issues there
2024-04-10 10:33:06
https://github.com/kornelski/rust-lcms2-sys/blob/main/src/build.rs
Demiurge
2024-04-10 10:34:43
How does it compile static C on Linux? glibc does not support static linking, so it probably uses musl?
2024-04-10 10:35:20
Actually, does rust support static linking on Linux?
lonjil
2024-04-10 10:35:32
yes
2024-04-10 10:36:19
actually I ran into a funny problem with both Rust and Zig: both build systems assume(d) that if you're using Musl, you're doing static linking 🙂
Demiurge
2024-04-10 10:36:38
I heard that musl has excellent performance when paired with mimalloc
Quackdoc
2024-04-10 10:36:57
if you want a gnu target to get static you need `-C target-feature=-crt-static`
2024-04-10 10:37:21
eyra cant come soon enough
lonjil
Demiurge How does it compile static C on Linux? glibc does not support static linking, so it probably uses musl?
2024-04-10 10:37:50
glibc itself can't be statically linked, but obviously all the other C libraries, like lcms2, can be statically linked.
Demiurge
2024-04-10 10:38:11
musl supports dynamic linking, but I think it's less common since people normally use musl for the very reason that it supports static linking
lonjil
2024-04-10 10:38:40
many distros use musl
Demiurge
Quackdoc if you want a gnu target to get static you need `-C target-feature=-crt-static`
2024-04-10 10:38:45
I don't want GNU anything
2024-04-10 10:39:20
Tbph
lonjil
Demiurge I heard that musl has excellent performance when paired with mimalloc
2024-04-10 10:39:30
personally I'm more likely to use S 'n' M alloc, which funnily enough is also a Microsoft open source project
Quackdoc
2024-04-10 10:39:32
unfortunately musl is still very much a second class citizen for a lot of things
2024-04-10 10:40:01
I want to try using relibc to spin up a distro one day [av1_dogelol](https://cdn.discordapp.com/emojis/867794291652558888.webp?size=48&quality=lossless&name=av1_dogelol)
Demiurge
2024-04-10 10:42:49
It's unfortunate, glibc is basically the #1 source of compatibility problems on linux distros. I expect there will be less and less reason for glibc to stay relevant... musl is better at everything except the builtin simple malloc implementation is slow... but easy to replace with something faster than glibc
lonjil
2024-04-10 10:44:03
compat issues due to glibc sounds unlikely
2024-04-10 10:44:15
unless you're compiling against a newer version and try to run on an older version
2024-04-10 10:44:25
(musl is also like that FWIW)
Demiurge
2024-04-10 10:44:43
I run into old stuff all the time that can't be run on new versions of glibc
2024-04-10 10:44:52
Like Total War Shogun 2
2024-04-10 10:46:11
At this point not only is musl better at everything and smaller and simpler, it's even more compatible now too, since at least musl just works
2024-04-10 10:46:49
glibc is just pain
2024-04-10 10:47:01
Red Hat pain
lonjil
2024-04-10 10:47:05
musl literally breaks compat more often than glibc
Quackdoc
2024-04-10 10:47:07
musl is less flexible in feature set and performance, unforunately it's not a true replacement for glibc
lonjil
2024-04-10 10:47:35
meanwhile I've run 20+ year old copies of blender without issue on modern linux
Quackdoc
2024-04-10 10:47:38
I do want to replace glibc though, we really should be using a meory safe libc
Demiurge
lonjil musl literally breaks compat more often than glibc
2024-04-10 10:47:40
When was the last and only time? Time64?
HCrikki
Demiurge It does not support a lot of features
2024-04-10 10:47:41
you can say that. firefox still does not support icc v4 to this day and bases their misleading announcement of its support since v108 on a flawed test they never replaced
2024-04-10 10:49:20
all blink/chromium/webkit based browsers are xyb-decode capable in compareason. same for almost all android/ios galleries i tried, oddly on windows theres tons of apps with no color management or disabled by default - decades old defaults that were never revisited perhaps
Demiurge
Quackdoc musl is less flexible in feature set and performance, unforunately it's not a true replacement for glibc
2024-04-10 10:49:55
When you replace the simple malloc with a real malloc like mimalloc, the performance gap completely vanishes.
Quackdoc
2024-04-10 10:50:40
I've tried many alloc solutions and non have been able to do so sadly
Demiurge
HCrikki all blink/chromium/webkit based browsers are xyb-decode capable in compareason. same for almost all android/ios galleries i tried, oddly on windows theres tons of apps with no color management or disabled by default - decades old defaults that were never revisited perhaps
2024-04-10 10:51:24
Why do xyb jpegs look okay in firefox for me? Does it just "look" like it passes?
Quackdoc I've tried many alloc solutions and non have been able to do so sadly
2024-04-10 10:52:27
I haven't tested it myself but I looked at several benchmarks from different people and organizations, which show glibc has no advantage after malloc is swapped out
lonjil
Demiurge When you replace the simple malloc with a real malloc like mimalloc, the performance gap completely vanishes.
2024-04-10 10:52:36
note that musl's memcpy is also terrible
Demiurge
2024-04-10 10:53:07
I didn't see a significant difference in perf in the memcpy benchmarks I saw
HCrikki
Demiurge Why do xyb jpegs look okay in firefox for me? Does it just "look" like it passes?
2024-04-10 10:55:34
try displaying this image in any app youre interested checking (browsers, galleries, thumbnailers, editors) https://littlecms.com/img/blog/stress.jpg
Demiurge
2024-04-10 10:55:36
The benchmarks I have seen show that after replacing malloc, glibc is often slower at various complex tasks
HCrikki
2024-04-10 10:55:57
if supported, no white lines or yellow text should be visible
Demiurge
HCrikki try displaying this image in any app youre interested checking (browsers, galleries, thumbnailers, editors) https://littlecms.com/img/blog/stress.jpg
2024-04-10 10:56:08
Yeah, I love these test images
2024-04-10 10:56:14
My iphone 15 fails
2024-04-10 10:56:29
At all of them
2024-04-10 10:56:52
https://www.tweag.io/blog/2023-08-10-rust-static-link-with-mimalloc/
2024-04-10 10:57:05
In this test, glibc was slower.
HCrikki
Demiurge My iphone 15 fails
2024-04-10 10:58:07
click the full preview, discord's thumbnailer oddly doesnt color correct and misleads
lonjil
HCrikki click the full preview, discord's thumbnailer oddly doesnt color correct and misleads
2024-04-10 10:58:53
it doesn't work on my iPad
Demiurge
2024-04-10 10:59:03
Bellsoft also published a bunch of benchmarks
lonjil
2024-04-10 10:59:29
however, all the text is blue, unlike on Firefox and Discord where the colors varied
Demiurge
HCrikki click the full preview, discord's thumbnailer oddly doesnt color correct and misleads
2024-04-10 10:59:34
Yeah not even the image gallery works
2024-04-10 10:59:47
It's like there is zero support
2024-04-10 10:59:59
for color profiles
HCrikki
2024-04-10 11:01:13
afaik v4 is supposed to work in safari and does here but i guess it works differently there or incomplete
lonjil
Demiurge for color profiles
2024-04-10 11:01:55
there's definitely support for color profiles...
2024-04-10 11:02:03
just not 100% complete V4 support
Quackdoc
Quackdoc the gcc stuff + something like [eyra](https://github.com/sunfishcode/eyra) will eventually wind up covering a large basis
2024-04-10 11:02:29
compiled jxl-oxide with eyra and posted the results in jxl-oxide, but I'm kinda surprised since it actually just worked
Demiurge
2024-04-10 11:03:02
Anyways... glibc performance is overblown. What do you expect from an ancient and unreadable, insane spaghetti mess? If you compare how the same functions are implemented in glibc vs musl you will wonder how glibc is able to functionally do anything at all, let alone how anyone is even able to read it to hack on it
2024-04-10 11:03:20
It looks like obfuscated code
Quackdoc
2024-04-10 11:03:48
both are bad, rust rewrite when
Demiurge
lonjil there's definitely support for color profiles...
2024-04-10 11:04:10
My iPhone can't even load the most basic tests.
lonjil
Demiurge My iPhone can't even load the most basic tests.
2024-04-10 11:04:23
it should display *something*
2024-04-10 11:04:29
if it doesn't your phone is broken
Quackdoc
2024-04-10 11:04:54
webkit L?
lonjil
2024-04-10 11:05:12
what iOS version are you on?
Demiurge
2024-04-10 11:05:34
2024-04-10 11:06:02
Quackdoc
2024-04-10 11:06:37
this hurts my eyes
Demiurge
2024-04-10 11:06:59
Whatever version is on my iphone 15
2024-04-10 11:07:09
17.whatever
lonjil
2024-04-10 11:07:35
im on 17.whatever
Demiurge
2024-04-10 11:08:15
I was pretty surprised that it can't even do such basic tests even the laughingstock Firefox is able to pass
w
2024-04-10 11:12:47
well nothing uses icc 4 so whatever
Demiurge
2024-04-10 11:12:48
2024-04-10 11:13:12
Anyone able to see this? Or does my phone even upload it incorrectly?
2024-04-10 11:13:34
This is v2 lol
2024-04-10 11:13:46
This isn't even v4
w
HCrikki try displaying this image in any app youre interested checking (browsers, galleries, thumbnailers, editors) https://littlecms.com/img/blog/stress.jpg
2024-04-10 11:14:40
oh i meant for this
2024-04-10 11:15:06
on my destop ff
Demiurge
2024-04-10 11:17:05
https://littlecms.com/img/blog/check_full.jpg
2024-04-10 11:17:09
Here's the link
lonjil
Demiurge Anyone able to see this? Or does my phone even upload it incorrectly?
2024-04-10 11:17:26
what do you mean by "able to see"? I see text saying that it isn't working, when looking at it in Discord, and text saying it works when looking at it in Firefox, and text saying it sorta works when I use my iPad.
Demiurge
2024-04-10 11:17:38
For some reason it looks different to me than my direct upload
lonjil what do you mean by "able to see"? I see text saying that it isn't working, when looking at it in Discord, and text saying it works when looking at it in Firefox, and text saying it sorta works when I use my iPad.
2024-04-10 11:18:25
Does it look different than the link version?
2024-04-10 11:19:08
I suspect it might get mangled after I save it to apple's photo gallery
Oleksii Matiash
2024-04-10 11:19:16
Just curious if it is how it should "correctly" look?
Demiurge
2024-04-10 11:20:02
That's how the v4 test should look
lonjil
Demiurge Does it look different than the link version?
2024-04-10 11:20:28
no
Demiurge
lonjil no
2024-04-10 11:20:41
For me it does. Weird.
w
Demiurge For some reason it looks different to me than my direct upload
2024-04-10 11:22:06
interesting
Demiurge
w interesting
2024-04-10 11:29:26
A perfect result
2024-04-10 11:29:46
Seemingly
2024-04-10 11:30:13
https://littlecms.com/blog/2020/09/09/browser-check/
2024-04-10 11:30:22
It's a great place to test
2024-04-10 11:30:58
Testing is safe and affordable! Get tested today!
VcSaJen
afed jxl-oxide is still very slow in comparison, even wic jxl (winthumb) has gone from something useful to something completely unusable for me because slow
2024-04-10 01:06:53
I used to have old libjxl-based jxl-winthumb installed, but I purged almost all Explorer extensions when explorer.exe started to crash intermittently.
jonnyawsom3
2024-04-10 01:08:36
I do wonder if JXL will make it into Windows 11 24H2
afed
2024-04-10 01:08:51
the old one still works, I don't have any issues
veluca
I do wonder if JXL will make it into Windows 11 24H2
2024-04-10 01:09:06
So do I 👀
HCrikki
2024-04-10 01:11:49
eventually when ms' raw addon integrates jxl decoding from adobe's dng 1.7 sdk freshly updated by libraw. WIC activity suggests itll come through a store addon like with webp and av1 but no decoder leaked so far
jonnyawsom3
2024-04-10 01:17:30
I thought it was moved to the system32 codec pack, suggesting it will be a core codec?
Tirr this changed to `%SystemRoot%\system32\windowscodecs.dll`
2024-04-10 01:22:32
Yeah
HCrikki eventually when ms' raw addon integrates jxl decoding from adobe's dng 1.7 sdk freshly updated by libraw. WIC activity suggests itll come through a store addon like with webp and av1 but no decoder leaked so far
2024-04-10 01:24:23
Unfortunately libraw only releases once every year and a half, so it'll be quite a wait...
HCrikki
I thought it was moved to the system32 codec pack, suggesting it will be a core codec?
2024-04-10 01:27:00
just my guess, either way is fine as long as it decodes out of the box. i presumed its possible theyd go for a store codec to more widely deploy for machines not running the latest win10/11 release
jonnyawsom3
2024-04-10 01:28:37
I'm hoping they backport to Windows 10, otherwise I might finally have a reason to update :P
Demiurge
2024-04-10 09:22:25
Chrome codec lead Jim Bankowski: But don't you know there's no ecosystem interest?!?!!?!???!
username
2024-04-12 07:09:39
since JXL is now out of IANA's provisional list onto the main one maybe someone could get it added to nginx's default `mime.types` config? https://nginx.org/en/docs/contributing_changes.html
spider-mario
2024-04-12 07:29:36
isn’t the open-source community switching to freenginx?
2024-04-12 07:30:19
https://www.phoronix.com/news/Nginx-Forked-To-Freenginx
2024-04-12 07:31:45
https://arstechnica.com/information-technology/2024/02/nginx-key-developer-starts-a-freenginx-fork-after-dispute-with-parent-firm/
Lock
spider-mario https://www.phoronix.com/news/Nginx-Forked-To-Freenginx
2024-04-12 07:32:08
i think we need to give it some time before we adopt it
spider-mario
2024-04-12 07:32:52
why? it’s the same codebase, by someone who had been working on it quite a bit until then