{"id":13220,"date":"2025-04-22T17:53:00","date_gmt":"2025-04-22T15:53:00","guid":{"rendered":"https:\/\/monodes.com\/predaelli\/?p=13220"},"modified":"2025-06-15T17:29:09","modified_gmt":"2025-06-15T15:29:09","slug":"only-in-rust-please","status":"publish","type":"post","link":"https:\/\/monodes.com\/predaelli\/2025\/04\/22\/only-in-rust-please\/","title":{"rendered":"Only in Rust, please!"},"content":{"rendered":"\n<p>I&#8217;ve been reading on <a href=\"https:\/\/www.phoronix.com\/forums\/forum\/software\/desktop-linux\/1470940-gnome-papers-document-viewer-making-progress-as-gtk4-based-evince-fork\/page4\">phoronix.com about &#8220;Papers&#8221;<\/a>, Gnome&#8217;s recent Document Viewer.<\/p>\n\n\n\n<p>It is a GTK4-Based <a href=\"https:\/\/wiki.gnome.org\/Apps\/Evince\">Evince<\/a> Fork, implemented in Rust. <\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><a href=\"https:\/\/www.phoronix.com\/forums\/forum\/software\/desktop-linux\/1470940-gnome-papers-document-viewer-making-progress-as-gtk4-based-evince-fork?p=1471040#post1471040\">uid313 commented<\/a><\/p>\n\n\n\n<p>I am pleased to hear it is being written in Rust. <em><strong>I hope it also uses a Rust library for PDF<\/strong><\/em> because PDF is a huge specification, thousands of pages so it is important to have a safe and secure library so it is not vulnerable to security vulnerabilities.<br \/><br \/>Good that it is packaged with Flatpak too so that it is sandboxed.It&#8217;s Poppler; so, the same as before. (<a href=\"https:\/\/gitlab.gnome.org\/GNOME\/Incubator\/papers\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/gitlab.gnome.org\/GNOME\/Incubator\/papers<\/a>) Same with the djvu, &amp; ps engines.<\/p>\n<\/blockquote>\n\n\n\n<p>uid313 asked for a safe and secure implementation of a PDF engine and implies, or rather takes for granted that current Poppler library is not either safe or secure because it is not implemented in Rust. But why Rust and not D, or Eiffel, or Go or any other &#8220;safe&#8221; and performant programming language?<\/p>\n\n\n\n<p>It seems to be a mild case of &#8220;<em>not-invented-here<\/em>&#8221; syndrome, shunning language interoperability. <\/p>\n","protected":false},"excerpt":{"rendered":"<p class=\"excerpt\">I&#8217;ve been reading on phoronix.com about &#8220;Papers&#8221;, Gnome&#8217;s recent Document Viewer. It is a GTK4-Based Evince Fork, implemented in Rust. uid313 commented I am pleased to hear it is being written in Rust. I hope it also uses a Rust library for PDF because PDF is a huge specification, thousands of pages so it is&hellip;<\/p>\n<p class=\"more-link-p\"><a class=\"more-link\" href=\"https:\/\/monodes.com\/predaelli\/2025\/04\/22\/only-in-rust-please\/\">Read more &rarr;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"federated","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[],"class_list":["post-13220","post","type-post","status-publish","format-standard","hentry","category-senza-categoria"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6daft-3re","jetpack-related-posts":[{"id":11439,"url":"https:\/\/monodes.com\/predaelli\/2024\/03\/06\/the-state-of-rust-gui-libraries-logrocket-blog\/","url_meta":{"origin":13220,"position":0},"title":"The state of Rust GUI libraries &#8211; LogRocket Blog","author":"Paolo Redaelli","date":"2024-03-06","format":"link","excerpt":"The state of Rust GUI libraries - LogRocket Blog Compare popular Rust GUI frameworks like gtk-rs, fltk-rs, iced, relm, Azul, and egui based on their components, features, and ease of use.","rel":"","context":"In &quot;Rust&quot;","block_context":{"text":"Rust","link":"https:\/\/monodes.com\/predaelli\/category\/rust\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":9690,"url":"https:\/\/monodes.com\/predaelli\/2022\/10\/02\/iced-rust-toolkit\/","url_meta":{"origin":13220,"position":1},"title":"Iced Rust Toolkit","author":"Paolo Redaelli","date":"2022-10-02","format":false,"excerpt":"System76's Pop!_OS COSMIC Desktop To Make Use Of Iced Rust Toolkit Rather Than GTK Ok, yet another #GUI library. Of course I hope they'll be successful, but I wonder why they had to start another one. I'll keep an eye on it, it may be useful in the case we\u2026","rel":"","context":"In &quot;Liberty Eiffel&quot;","block_context":{"text":"Liberty Eiffel","link":"https:\/\/monodes.com\/predaelli\/category\/eiffel\/liberty-eiffel\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":5049,"url":"https:\/\/monodes.com\/predaelli\/2018\/12\/11\/redox-your-nextgen-os\/","url_meta":{"origin":13220,"position":2},"title":"Redox &#8211; Your Next(Gen) OS","author":"Paolo Redaelli","date":"2018-12-11","format":false,"excerpt":"Source: Redox - Your Next(Gen) OS - Redox - Your Next(Gen) OS ...MIT licensed. They will have their reason to choose it.","rel":"","context":"In &quot;Software&quot;","block_context":{"text":"Software","link":"https:\/\/monodes.com\/predaelli\/category\/software\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2018\/12\/Screenshot_2018-12-11-Redox-Your-NextGen-OS-Redox-Your-NextGen-OS-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2018\/12\/Screenshot_2018-12-11-Redox-Your-NextGen-OS-Redox-Your-NextGen-OS-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2018\/12\/Screenshot_2018-12-11-Redox-Your-NextGen-OS-Redox-Your-NextGen-OS-1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2018\/12\/Screenshot_2018-12-11-Redox-Your-NextGen-OS-Redox-Your-NextGen-OS-1.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":11388,"url":"https:\/\/monodes.com\/predaelli\/2024\/03\/01\/rocket-simple-fast-type-safe-web-framework-for-rust\/","url_meta":{"origin":13220,"position":3},"title":"Rocket &#8211; Simple, Fast, Type-Safe Web Framework for Rust","author":"Paolo Redaelli","date":"2024-03-01","format":"link","excerpt":"Rocket - Simple, Fast, Type-Safe Web Framework for Rust A web framework for Rust that makes it simple to write fast,type-safe, secure web applications with incredible usability, productivity and performance.","rel":"","context":"In &quot;Rust&quot;","block_context":{"text":"Rust","link":"https:\/\/monodes.com\/predaelli\/category\/rust\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":11438,"url":"https:\/\/monodes.com\/predaelli\/2024\/03\/06\/11438\/","url_meta":{"origin":13220,"position":4},"title":"Tauri: Build an optimized, secure,\u2026","author":"Paolo Redaelli","date":"2024-03-06","format":"link","excerpt":"Tauri: Build an optimized, secure, and frontend-independent application for multi-platform deployment (in Rust)","rel":"","context":"In &quot;Rust&quot;","block_context":{"text":"Rust","link":"https:\/\/monodes.com\/predaelli\/category\/rust\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":11431,"url":"https:\/\/monodes.com\/predaelli\/2024\/03\/06\/building-an-ios-app-in-rust\/","url_meta":{"origin":13220,"position":5},"title":"Building an iOS App in Rust","author":"Paolo Redaelli","date":"2024-03-06","format":"link","excerpt":"Building an iOS App in Rust, Part 1: Getting Started with Rust - Big Nerd Ranch","rel":"","context":"In &quot;Rust&quot;","block_context":{"text":"Rust","link":"https:\/\/monodes.com\/predaelli\/category\/rust\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts\/13220","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/comments?post=13220"}],"version-history":[{"count":0,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts\/13220\/revisions"}],"wp:attachment":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/media?parent=13220"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/categories?post=13220"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/tags?post=13220"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}