惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

AI
AI
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Google DeepMind News
Google DeepMind News
T
Tenable Blog
博客园_首页
S
Securelist
Spread Privacy
Spread Privacy
Google Online Security Blog
Google Online Security Blog
Forbes - Security
Forbes - Security
Engineering at Meta
Engineering at Meta
U
Unit 42
L
LINUX DO - 热门话题
量子位
T
Threat Research - Cisco Blogs
博客园 - 【当耐特】
C
Cyber Attacks, Cyber Crime and Cyber Security
K
Kaspersky official blog
MyScale Blog
MyScale Blog
P
Proofpoint News Feed
The Last Watchdog
The Last Watchdog
Google DeepMind News
Google DeepMind News
GbyAI
GbyAI
Martin Fowler
Martin Fowler
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Security Latest
Security Latest
Scott Helme
Scott Helme
V
Vulnerabilities – Threatpost
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
I
InfoQ
Know Your Adversary
Know Your Adversary
Cisco Talos Blog
Cisco Talos Blog
The Register - Security
The Register - Security
T
The Blog of Author Tim Ferriss
aimingoo的专栏
aimingoo的专栏
V2EX - 技术
V2EX - 技术
T
Tailwind CSS Blog
月光博客
月光博客
Recent Announcements
Recent Announcements
G
Google Developers Blog
F
Full Disclosure
W
WeLiveSecurity
宝玉的分享
宝玉的分享
腾讯CDC
G
GRAHAM CLULEY
Vercel News
Vercel News
Simon Willison's Weblog
Simon Willison's Weblog
美团技术团队
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Help Net Security
Help Net Security

Hub's wlog

Hub's wlog - Dia with GTK 3 Hub's wlog - Dev Log August 2023 Hub's wlog - libopenraw Rust with C API Hub's wlog - Niepce July 2023 updates Hub's wlog - Niepce June 2023 updates Hub's wlog - Life update Hub's wlog - Niepce May 2023 updates Hub's wlog - Niepce April 2023 updates Hub's wlog - Niepce March 2023 updates Hub's wlog - Integrating the RawTherapee engine Hub's wlog - Implementing i18n-format, a Rust procedural macro Hub's wlog - Niepce January 2023 updates Hub's wlog - i18n-format for Rust Hub's wlog - Introducing Toot That! Hub's wlog - Niepce December 2022 updates Hub's wlog - Niepce November 2022 updates Hub's wlog - Fall of releases Hub's wlog - Introducing Compiano Hub's wlog - RTKit, portals, and Pipewire Hub's wlog - Release day Hub's wlog - Update on Niepce Hub's wlog - New Again
Hub's wlog - Niepce February 2023 updates
:: Hubert Figuière · 2023-03-02 · via Hub's wlog

2023.03.02

This is the February 2023 update.

Not as much direct progress as I wished.

One big change is that now the binary is linked from Rust. And at the same time the autotools buid system is gone. The latter came first, as to not have to ignore it when doing the former.

Several challenges presented themselves with linked the app from Rust.

  1. We have to invert the dependency. We'd build the Rust code as a library, generate the headers for the cxx bridge and then build the C++ code, and link it. Instead we generate the headers, build the C++ code as libraries and then the Rust code.
  2. We have to figure some tricks: the Rust executable needs to link to some system libraries called directly from the C++ code, and also need to link to asan if needed.

Otherwise, for the two previous topics, namely the importer and the previewer.

The importer

The importer hasn't really moved much, sadly.

The previewer

For the previewer, I implemented a cache backed by a database. Currently it only handles the embedded thumbnails, but I'm working on reworking the image renderer (a simple pipeline based in GEGL) to work aynchronously, its design being hopefully suited for the use case.

I wrote a couple of macros to help with some of the UI patterns, like declaring actions to send an event. And the higher order action groups with all the actions. Less code to write, less possible errors.

gtk4-rs

An update of the bindings came out so I had to upgrade. Some code changes, but on overall it was eventless. Congrats to the team.

libpanel

Investigating how libpanel can help me implement the UI designs I have in mind. Straight from gnome-builder, libpanel offers a bunch of widgets to implement dockable panels, in a way I imagined earlier ideas for Niepce UI. While it has Rust bindings, it lacked documentation, so I've addressed this, at least enough for further contributions.

Also addressed some issues with improper annotations that caused floating references to have improper ownership and being dropped too early by the Rust binding. The annotations are part of gir and used by the bindings generation tools.

I think it should be in good shape now to use it here ; I tested it in compiano. I need to come up with a UI design to change the few things I want to change ; but I need more feature first.

Other side quest

Like in any good RPG campaigns there are side quests that will help you fullfilling the main goals

libopenraw

Did some work on libopenraw, which is used for thumbnailing. This include vendoring the crates for the mp4parse crate (forked from Mozilla's), when generating the tarball. (Release to come)

Also did some work on the Rust port, including speed ups (BufReader is a simple boost as by default I/O are not buffered in Rust), with benchmarking to measure performance gains, and a few others.

gpsami

Another side project, needed to download GPS logging data from my GPS logger after an excursion. It happens that the current code for GPSAmi was broken, so I had to fix it. I have to admit I carelessly changed including porting to gtk4 without testing.

Also another issue I want to fix is to no longer use gpsbabel. Two reasons for that:

  1. it's a command line tool, so interfacing with it is what it is.
  2. it requires Qt5. That latter part it really a bummer with Flatpak because I have to either use the KDE SDK and build gtk4 or use the GNOME SDK and build Qt. It's 2023 you you still can't build QtCore separately it seems.

So I started writing a crate (in Rust) to support downloading from my GPS logger, which in turn make me realize that serial port management is complicated with permissions. And that's putting aside bluetooth serial: it doesn't work on my laptop but work on the desktop.

I think that's what we call full stack. More on that later.

Thank you reading.