@federicomena@mstdn.mx avatar

federicomena

@federicomena@mstdn.mx

Co-fundador de GNOME, ciclista, carpintero, cocinero, cartógrafo, jardinero, él. :flag_bisexual: :flag_pansexual:

Trabajo en #gnome, #svg (mantengo librsvg), infraestructura de #accesibilidad.

GNOME co-founder, cyclist, woodworker, cook, cartographer, gardener, he/him. :flag_bisexual: :flag_pansexual:

I work on #gnome, #svg (maintainer of librsvg), #accessibility infrastructure.

Xalapa, México.

This profile is from a federated server and may be incomplete. Browse more on the original instance.

luis_in_brief, to random
@luis_in_brief@social.coop avatar

Speaker #1: every major interoperability initiative has failed
Speaker #2: we should do interoperability for AI

🤔

federicomena,
@federicomena@mstdn.mx avatar

@luis_in_brief @sethmlarson @Di4na @joshbressers @boblord It's not just porting to Rust; it's all the QoL improvements that you realize are possible when the language cures your learned helplessness out of you. Oh, we can have a test suite that is easy to write! Oh, then we can have code coverage in CI! Oh, we can actually have CI! Oh, we can be so much more productive if we plug a language server into our text editor!

federicomena,
@federicomena@mstdn.mx avatar

@boblord @luis_in_brief @sethmlarson @Di4na @joshbressers Why, I have! See https://viruta.org/pages/talks.html, start at "Replacing C library code with Rust" and then the talks newer than that. Do read the speaker's notes where I explain the code.

My blog about librsvg recounts the story; start at https://viruta.org/initial-posts-about-librsvgs-c-to-rust-conversion.html and then the rest at https://viruta.org/tag/librsvg.html

In the Talks page, the "Paying technical debt" one doesn´t talk about Rust, but about adding CI and nice dev tools to the a11y infra.

federicomena,
@federicomena@mstdn.mx avatar

@Di4na @luis_in_brief @sethmlarson @joshbressers @boblord As I keep writing more Python scripts for the CI in librsvg and at-spi2-core... I think I understand why Firefox just uses a big honking Python script for its build system. I hate it, but I understand the motivation.

federicomena,
@federicomena@mstdn.mx avatar

@Di4na @boblord @luis_in_brief @sethmlarson @joshbressers I'd love to read what you have :)

federicomena,
@federicomena@mstdn.mx avatar
federicomena, to random
@federicomena@mstdn.mx avatar

As much as I like Rust, I'm rather skeeved by (the USA) government's sudden interest in "memory safety" and "open source security" and all that. Yes, we need to fix The Infrastructure(tm). But why did it take 1) having a systems-level memory safe language, 2) for the realization that shit can be pwned if it's not memory safe, 3) while never really doing the "taxes should fund free software infrastructure" bit in the past? We have had free C infra for 30 years. Why until now, top-down?

federicomena,
@federicomena@mstdn.mx avatar

@aeva No idea on specific regulations; I'm just watching news go by along the lines of "it's really important to do memory safety now", "open source infrastructure security bla bla bla" - as if they were Very Important Sudden Problems that couldn't possibly have been addressed before, say, by paying people to maintain free software infrastructure.

I guess this is me saying that I agree with https://steveklabnik.com/writing/memory-safety-is-a-red-herring completely.

federicomena,
@federicomena@mstdn.mx avatar

@aeva "char * considered harmful"

federicomena, to random
@federicomena@mstdn.mx avatar

The main Rust crate in librsvg no longer even links to gdk-pixbuf. Only the crate that implements the C API does.

I think we should replace the PNG/JPEG loaders in gdk-pixbuf with the Rust image crate's codecs.

federicomena,
@federicomena@mstdn.mx avatar

@sonny Maaaaaybe? The sandboxing would be nice.

I think we need to give some thought to:

  • What API promises are we willing to keep for gdk-pixbuf? The old GIF animation stuff - what uses it?

  • Does sandboxing hurt GTK and its icons, performance-wise? Could GTK hardcode loaders and be done with it?

  • Which apps actually use RGB data from gdk-pixbuf? Or are they using it as an opaque loader/saver?

https://gitlab.gnome.org/federico/gdk-pixbuf-survey needs updating...

federicomena,
@federicomena@mstdn.mx avatar

@alatiera @sonny @matt I'd be very interested to see a performance analysis of "load and link this image library dynamically" versus "fork a sandboxed loader". There's no reason that I can think of for the latter to be slow.

(I think we can get more mileage out of a load_image_async API than gdk-pixbuf's ancient progressive loading stuff.)

federicomena, to random
@federicomena@mstdn.mx avatar

Is there something like Rammstein, but in French?

flameeyes, (edited ) to random
@flameeyes@mastodon.social avatar

Okay poll time: I'm going to definitely change the way it configures masks: there's both auto-masking and user-inserted masks. Right now it allocates 100 items for each of those, with a running count. The order shouldn't matter, they are only added to during option parsing and iterated over a few times.

I'm going to change these with a structure that holds a count as well as the actual masks, either with a flexible array or with a linked list.

Which one do you think make more sense?

federicomena,
@federicomena@mstdn.mx avatar

@flameeyes I think if you change "int masks[MAX_MASKS][EDGES_COUNT]" for "StructWithFourValues *masks" and do a powers-of-two realloc, you'll get optimal behavior. (It's what glib's GArray would do, or what Rust's Vec<T> does). Masks are only initialized once when processing command-line arguments. The original code seems to be very much in the "static storage for everything with sensible limits" camp, which is also fine - but it's awkward with the [EDGES_COUNT] idioms.

federicomena, to random
@federicomena@mstdn.mx avatar

Librsvg 2.57.90 is out! This is the first beta release for GNOME 46.

Use Rust image loaders instead of gdk-pixbuf / libpng / libjpeg-turbo. Support 'ch' CSS units, and also include all the fixes from 2.57.1.

Using Rust image loaders also means that Windows and MacOS builds should be easier, since now they don't have to have a working gdk-pixbuf just to use rsvg-convert, for example.

https://gitlab.gnome.org/GNOME/librsvg/-/releases/2.57.90

federicomena,
@federicomena@mstdn.mx avatar

@categulario es el ancho de un caracter 0 en el font del elemento.

federicomena, to random
@federicomena@mstdn.mx avatar

Defeated once more by Windows CI.

federicomena, to random Spanish
@federicomena@mstdn.mx avatar

Luciana cumple 16 años, y le hicimos pastel.

federicomena, to random Spanish
@federicomena@mstdn.mx avatar
federicomena,
@federicomena@mstdn.mx avatar

@categulario sufro mucho desde que quitaron los poposteros 😅

categulario, to random Spanish
@categulario@mstdn.mx avatar

de la solitaria de hoy

federicomena,
@federicomena@mstdn.mx avatar

@categulario primer pensamiento: "¿con este clima?"

Segundo pensamiento: "chin, sí es una delicia rodar con este clima".

federicomena, to random
@federicomena@mstdn.mx avatar

The last printers that worked? Fanfold dot-matrix ones with Print Shop Pro on DOS.

doctormo, to random
@doctormo@floss.social avatar

Substack advice needed.

I got a request from my inlaw about my thoughts on substack. I've heard all sorts and generally respect @molly0xfff's option on villainy. So the question is, what should i recommend?

The brief is: wants to sell pdf versions of sheet music and other similar creative works, wants to promote and link to podcasts. So doesn't look like a blog to me. Any good platforms for that sort of thing?

federicomena,
@federicomena@mstdn.mx avatar

@doctormo Musescore lets one sell sheet music, but I'm not sure if PDFs only rather than along the original files.

flameeyes, (edited ) to random
@flameeyes@mastodon.social avatar

Okay more refactoring concerns. The functions are all over the place both in terms of maintaining state and accessing global parameters. Plus structure sizes are fixed with arrays, because of course this is basic C.

federicomena,
@federicomena@mstdn.mx avatar

@flameeyes Over in the GNOME world we've been moving some things to use the Rust image codecs; they are working well. Do you want some details? (TL;DR - the actual codecs under the "image" crate are much better than they were when you wrote your blog entry.)

I did some research around porting libjpeg-turbo to Rust and arrived at some conclusions - also happy to talk about this.

(For unpaper - looked at the sources briefly - yes! Put things in neat structs instead of global vars!)

federicomena,
@federicomena@mstdn.mx avatar

@flameeyes Oh man. The unpaper sources are verrrrrry similar to something I've refactored before.

Do you want some refactoring advice? I think this can be turned into reusable code reasonably easily, with bog-standard refactoring. I read your "re-designing an interface" blog post and it's totally doable.

federicomena, to random
@federicomena@mstdn.mx avatar

Librsvg will use Rust-only image decoders starting on 2.58.0 - https://viruta.org/librsvg-rust-image-decoders.html

Librsvg usará decodificadores de imágenes en Rust desde la versión 2.58.0 - https://viruta.org/librsvg-rust-image-decoders-es.html

  • All
  • Subscribed
  • Moderated
  • Favorites
  • megavids
  • GTA5RPClips
  • DreamBathrooms
  • InstantRegret
  • magazineikmin
  • osvaldo12
  • Youngstown
  • ngwrru68w68
  • slotface
  • everett
  • rosin
  • thenastyranch
  • kavyap
  • tacticalgear
  • JUstTest
  • modclub
  • normalnudes
  • cubers
  • ethstaker
  • mdbf
  • Durango
  • khanakhh
  • tester
  • provamag3
  • cisconetworking
  • Leos
  • anitta
  • lostlight
  • All magazines