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

推荐订阅源

A
About on SuperTechFans
C
Cybersecurity and Infrastructure Security Agency CISA
N
News and Events Feed by Topic
C
Cisco Blogs
Cisco Talos Blog
Cisco Talos Blog
A
Arctic Wolf
Scott Helme
Scott Helme
P
Palo Alto Networks Blog
S
Schneier on Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Tor Project blog
量子位
G
Google Developers Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
B
Blog RSS Feed
NISL@THU
NISL@THU
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
AWS News Blog
AWS News Blog
爱范儿
爱范儿
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
L
LINUX DO - 最新话题
Security Archives - TechRepublic
Security Archives - TechRepublic
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
S
Secure Thoughts
Cloudbric
Cloudbric
aimingoo的专栏
aimingoo的专栏
L
Lohrmann on Cybersecurity
TaoSecurity Blog
TaoSecurity Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Hacker News: Ask HN
Hacker News: Ask HN
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The GitHub Blog
The GitHub Blog
有赞技术团队
有赞技术团队
S
Security @ Cisco Blogs
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Cyber Attacks, Cyber Crime and Cyber Security
G
GRAHAM CLULEY
P
Proofpoint News Feed
V
V2EX
Martin Fowler
Martin Fowler
C
CERT Recently Published Vulnerability Notes
Attack and Defense Labs
Attack and Defense Labs
C
CXSECURITY Database RSS Feed - CXSecurity.com
The Cloudflare Blog
SecWiki News
SecWiki News
罗磊的独立博客
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
小众软件
小众软件
The Last Watchdog
The Last Watchdog

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.