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

推荐订阅源

GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Hugging Face - Blog
Hugging Face - Blog
IT之家
IT之家
Jina AI
Jina AI
Google DeepMind News
Google DeepMind News
大猫的无限游戏
大猫的无限游戏
The GitHub Blog
The GitHub Blog
腾讯CDC
L
LangChain Blog
P
Proofpoint News Feed
M
MIT News - Artificial intelligence
F
Fortinet All Blogs
量子位
Apple Machine Learning Research
Apple Machine Learning Research
Cloudbric
Cloudbric
B
Blog RSS Feed
B
Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
Vercel News
Vercel News
S
Schneier on Security
Project Zero
Project Zero
宝玉的分享
宝玉的分享
美团技术团队
MyScale Blog
MyScale Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Spread Privacy
Spread Privacy
T
Threatpost
A
Arctic Wolf
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Hacker News - Newest:
Hacker News - Newest: "LLM"
爱范儿
爱范儿
Recorded Future
Recorded Future
C
CERT Recently Published Vulnerability Notes
T
Threat Research - Cisco Blogs
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
SecWiki News
SecWiki News
H
Hacker News: Front Page
AWS News Blog
AWS News Blog
博客园_首页
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tor Project blog
C
Check Point Blog
L
Lohrmann on Cybersecurity
F
Full Disclosure
TaoSecurity Blog
TaoSecurity Blog
Google Online Security Blog
Google Online Security Blog
云风的 BLOG
云风的 BLOG
The Last Watchdog
The Last Watchdog
Martin Fowler
Martin Fowler

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.