2024/07/27 TechRAMEN 2024 Conference 概要: 私にとって何番目の言語になるかはもう数えていませんが、昨年 Rust を学び、 OSS の開発ができるところまでやってきました。私はそれまで Rust の学習に何度か挫折しており、今回ようやくその壁を乗り越えたので…
はじめに ウホウホ。 Rustを使い始めてちょうど2年くらい経って、すこしRustのことがわかってきたので、改めてGoとRustのそれぞれの違いを整理したいなと思いこの記事を書きました。 筆者はウェブ開発の経験しかないので、ウェブを中心にまとめています。 気づいたらかなりな量になってしまったのとGopher向けにRustを紹介するような記事になってしまいましたが、よければ読んでみてください。 筆者について Goを使い始めて7年ほど経っていて、これまでCLI/TUIツールをいくつか作ってきました。 スペシャリストではないですが、プロダクトでGoを書く分には特に問題ないレベルかなと思います。 Rustは2022年夏ころから使い始めてちょうど2年ほど経ちました。 なにかツールを作ったわけではないですが、勉強がてらにいくつか作ったもの・書いた本があります。 普通にRustを書く分には問題ないですが
欧州を基盤にオープンでセキュアなインターネットの実現を支援しているNLnet Foundationは、Rust製ブラウザエンジン「Servo」を用いたWebブラウザ「Verso」の開発プロジェクトの立ち上げを発表しました。 Versoの開発は、Electron代替を目指すフレームワーク「Tauri」の開発チームが主導することが、下記のポストで示されています。 We've stopped waiting for other people to solve our problems with webviews and kicked off a browser+webview project called Verso (and we've already gotten a bit of funding from NLNET.)https://t.co/PMOV7YbGtE https://t.c
100 Exercises To Learn Rust を題材に Qiita Engineer Festa 2024 投稿マラソン に参加していました! 7月17日に仮置きを残しながら投稿したのち、 ようやく全記事完成しました! ので、その記念として、色々話したいと思います!(え、7/17ってもう3週間前...?!) 目次 全記事一覧 100 Exercises To Learn Rustを完走した感想 100 Exercisesの魅力 1. そこそこの長さ 2. 無理のない学習順序 3. 各エクササイズ間に関連がある 4. 効率よく"ミソ"を摂取できる Rustで今まで勘違いしていたこと3選 1. Copy は Clone::clone を...呼び出さなかった! 2. 不変参照は...実は不変ではなかった! 3. 値がスレッドを跨ぐには 'static は...不要だった! 所感 ※
米国防総省DARPA、C言語のコードからRustへの自動変換実現を目指す「TRACTOR」プログラム開始 アメリカ国防総省 DARPA(Defense Advanced Research Projects Agency:国防高等研究計画局)は、C言語のコードからRust言語のコードへ高い精度での自動変換実現を目指す「TRACTOR」(Translating All C to Rust)プログラムの開始を発表しました。 DARPAは軍事技術の開発および研究を行う機関であり、現在のインターネットはDARPAの前身となるARPAが1967年に開始した「ARPANET」がその起源であることはよく知られています。 DARPAが発表したTRACTORプロジェクトは、C言語のコードからRust言語のコードへの自動変換を高い精度で実現することで、過去にC言語で開発された多くのソフトウェアをメモリ安全なソフ
In December of 2023 I launched the 175 Pixel Font Megapack, followed shortly by 42 individual packs for each font family. I created my own toolchain for generating, quality testing, and deploying these fonts... in Rust! In this post I'll walk you through the whole process. Check out the Pixel Font Megapack on itch.io! Before the MegapackBefore we talk about the new pack, let's talk about the old p
はじめに 2024/07/25 にリリースされた Rust 1.80.0 にて Rust by Example の日本語版が公式に公開されました。画面右上にある地球儀のアイコンから日本語を選択可能になっています。 この取り組みを始めたのは2023年の10月頃だったのですが、さまざまなレビュー待ちやRustにおけるドキュメント公開フローをよく分かっていなかったことによる失敗もあり、最終的には1年近くかかってしまいました。 Rustはコンパイラの開発などかなり良くドキュメント化されている(Rust Compiler Development Guide)のですが、ドキュメントの管理についてはほとんど資料がなく、Zulip で聞かないと分からないようなこともありました。 この記事ではこの1年でやってきたことを時系列で書いていきます。Rustのドキュメントに貢献したい人には参考になる部分があるかもし
Welcome Welcome to "100 Exercises To Learn Rust"! This course will teach you Rust's core concepts, one exercise at a time. You'll learn about Rust's syntax, its type system, its standard library, and its ecosystem. We don't assume any prior knowledge of Rust, but we assume you know at least another programming language. We also don't assume any prior knowledge of systems programming or memory mana
ドイツのVectorとHighTec EDV-Systemeは8月6日、世界初となるRustアプリケーションとCベースのAUTOSAR Classic基本ソフトウェアの統合に成功した、と発表した。これにより、自動車業界でのプログラミング言語「Rust」使用における最後の障害が取り除かれたという。 VectorのMICROSAR Classic Safe基本ソフトウェアと、HighTecの自動車グレードLLVMオープンソースベースのRustおよびC/C++コンパイラツールを組み合わせることで、組み込み開発者はInfineon AURIX TC3xおよびTC4x向けにRustのメモリ安全性プログラミング言語を利用できるようになった。これらのツールは、ISO 26262のASIL Dまでの安全認証を受けている。
DARPA(Defense Advanced Research Projects Agency:米国国防総省国防高等研究計画局)は2024年7月31日(米国時間)、「Translating All C to Rust」(TRACTOR)プログラムの開始を発表した。非常に脆弱(ぜいじゃく)なレガシーC言語コードから、本質的により安全なRust言語のコードへの変換を自動化することを目指す。 広く使われてきたプログラミング言語であるCとC++は、メモリ安全性を備えていない。これらの言語では、プログラマーがメモリを直接操作できるため、誤ってプログラムエラーを引き起こし、メモリを破損させてしまう可能性がある。 C言語を変換する背景 関連記事 「ソフトウェアはメモリ安全でなければならない」との声明を発表、米ホワイトハウス 米ホワイトハウスは、サイバー空間における攻撃対象領域を積極的に削減するよう技術コ
前回、ワイルドカードのパターン検索に対応したファイル検索ツールを作ってみました。その際、wildcard_exというクレートでファイル名のマッチングを行いました。今回は、自力でワイルドカードの実装に挑戦してみましょう。 ワイルドカードの関数を作ってみよう ワイルドカードとは 正規表現を知らない人でも、ワイルドカードなら分かるという方は多くいます。ファイルやデータベースの検索をする際、ワイルドカードであれば、あまり考える事なく気軽に検索に利用できます。今回は、Rustでワイルドカードを実装してみましょう。 そもそも、「ワイルドカード(Wildcard)」とは、検索を行う時、コンピュータで特定の文字や文字列の代わりに使える記号のことです。「*」や「?」などの特殊記号を利用して、特別なパターンを表現できます。一般的なファイル検索で使えるワイルドカードには「*」と「?」があります。 例えば、「*」
8/24に開催された大阪Ruby会議04に参加してました。 自分は地元が関西なのもあって相性が良いのか、大阪で開かれた地域Ruby会議ではよく登壇する機会があって、今回もそうなることができて良かったなと思っています。 今回の大阪Ruby会議はチーフオーガナイザーであるydahさんの趣味が出てる感じがして、めちゃくちゃ楽しいイベントでした。なんというかめっちゃRubyKaigiそのものっぽかった。 実は少し前に実家の母が倒れて入院したりといった事件があったので、お見舞のために奈良と大阪を往復したり、ホテルが1日ごとに変わって荷物がやたら多くなったりと結構バタバタしてしまって体力は消耗したんですが、結果的には無事に楽しむことができて安心しました。 セッション内容について 今回の両キーノートスピーカーである金子さんとはすみさんは、この二人なら信頼感しか無いなと思っていたのですが、期待以上に素晴ら
これらのメソッドを使用することで、データフレームの列に対して.when()で定義した条件に従ってデータの操作を行えます。たとえば以下のサンプルスクリプトでは、楽器名と演奏者数のデータフレームに対して条件により「Group」列を追加しています。 example03.py:.when()で指定された条件で新たな列を追加するサンプル import polars as pl # サンプルデータフレームを楽器名と演奏者数で作成 df = pl.DataFrame( { "Instruments": ["Violin", "Trombone", "Flute", "Cello", "Trumpet"], "Players": [5, 1, 3, 2, 1], } ) # 新しい列 'Group' を条件に基づいて作成 df = df.with_columns( pl.when(pl.col("Play
そんなわけで7月26日~28日までの3日間、「ニコニコ老人会RUST」という祭りに参加させてもらいました。なんか、色々すごかったですね。 上の記事でも書いたとおり、あんまりRustのゲーム性を理解しないまま参加してしまったんですが、思った以上にガチで戦争をするゲームでした。思てたんと違った。「ゲームのついでに名前は知ってるけど絡んだことない人と同窓会する感じかなー」というテンションで臨んでしまったため上手く戦争の流れに乗れず、みんながロケランぶっ放して殺し合ってる中、裸で釣りとかしてる謎の部族プレイに終始してしまいました。「どうしてお話もせずに撃ってくるんだ……」とか言って泣いてた。場違いですみません。 ただまあ、結果として戦時下の市井の人々の日常を描いた『この世界の片隅に』みたいな体験ができて、楽しかったり時にはグッときてちょっと泣いたりしました。敵を殺してスカルを奪い合うゲームで非武装
To bootstrap Rust, no cost is too great. Perceptive Rustaceans may have noticed my activity has gone down as of late. There are a handful of different reasons for this. I’ve been the subject of a truly apocalyptic series of life events, including the death of a relative that rattled me to my core. I’ve had more responsibilities at work, leaving me with less time and energy to contribute. Maybe I’v
はじめに この記事では、私が開発している TUI(Text-based User Interfaces) ツール Viddy の v1.0.0 のリリースにあたって、 Go から Rust で再実装した際の経験や感想について書きたいと思います。Viddy はモダンな watch コマンドとして当初は Go で実装されていましたが、今回、Rust による再実装に挑戦しました。この記事が、同じように Rust での開発に興味がある人の参考になると嬉しいです。 Viddy について Viddy は、Unix 系 OS の watch コマンドのモダンな代替ツールとして開発しました。 watch コマンド + α の主要な機能として、以下があります。後述するデモを見てもらえるとわかりやすいと思います。 Pager 機能: コマンドの実行結果をスクロールして確認できる。 Time machine モ
Rust製の高速エディタ「Zed」、AIによるコーディング支援機能「Zed AI」発表。ローンチ期間は無料で利用可能 Rust製の高速エディタとしてmacOSとLinuxに対応する「Zed」エディタが、AIによるコーディング支援機能「Zed AI」を発表しました。 Zed AIはチャットAIサービス「Claude」で知られるAnthropicとの協業により「Claude 3.5 Sonnet」を用いて構築されており、ローンチ期間中は無料で利用可能となっています。 Introducing Zed AI, in collaboration with @anthropicAI. Zed AI brings LLMs directly into your editor with an extensible, text-centric approach. We're also piloting @a
Background #Rust has been “the most desired programming language” for 8 years (by StackOverflow and GitHub 1 2), and many people want to write programs with a GUI in Rust. Therefore, in this blog, I will share an approach by utilizing Flutter and the https://github.com/fzyzcjy/flutter_rust_bridge I made. To have a try, please visit the GitHub repo or the demo folder at the end of this article. Pro
こんにちは!スタッフエンジニアの @kenkoooo です!Rust から Go で書かれたコードを呼び出す方法を紹介します。 日々ソフトウェアを開発するにあたって、我々開発者は多種多様なツールを利用しています。それらのツールはそれぞれ様々なプログラミング言語で作られていて、その中には Go 言語で書かれたものも多くあります。例えば、自分の AWS アカウントに紐づく権限情報を使って、ローカルからクラウド上で動いているリソースにアクセスすることができるツールとして session-manager-plugin があります。plugin の名の通り、単体で使うことは想定されておらず、AWS CLI で Systems Manager の機能を利用可能にするものです。AWS CLI は内部的にこのコマンドを呼び出して使っています。estie でも内部的に session-manager-plu
Rustでそれなりにちゃんとしたロギングをしようと思いtracingを調べた結果の理解図やサンプルコード等を備忘のため残しておきます。ただバージョンが1未満なので実装は色々変更されるかもしれません。[tracing 0.1.40, tracing-subscriber 0.3.18] 私の理解が解説のように書かれていますが、便利ツールとして使用するだけであればこの認識で問題なさそう、というような内容のため厳密性はありません。Quick startのコードがdocs.rsに載ってなかったり、必須コンポーネントのSubscriberが別クレートになってたり、色々な方法が提供されており逆に混乱したりでそれなりの理解にすらなかなか時間がかかりました。 概要 前提 use tracing::{event, span, Level}; fn main() { tracing_subscriber::f
QuestDB is a high performance time-series database with SQL analytics that can power through data ingestion and analysis. It's open source and integrates with many tools and languages. Give us a try! A few months back I was working on the primary-replica replication feature in QuestDB. The feature was nearing completion of development but we had a report that it was using a significant amounts of
Developing a cryptographically secure bootloader for RISC-V in Rust SentinelBoot is a demonstrative, cryptographically secure RISC-V bootloader written in Rust. This project forms a final-year project at The University of Manchester sponsored by Codethink. Motivation Memory safety is a persistent issue in software, especially system software, such as bootloaders. Implementing some kinds of run-tim
こんにちは!株式会社ゆめみ 24卒のnamniumと申します!サーバーサイドエンジニア3ヶ月目で、先輩から色々と学ばせていただいております ゆめみでは社内勉強会が活発です!私もRust勉強会に参加させてもらい、 rustlings に取り組んだりしていました。 そんな折、X (旧Twitter) でrustlingsに似た新しいチュートリアルサイトの存在を知りました! rustlingsはRust至高の公式ドキュメントThe Rust Programming Language (通称TRPL) に従った内容だったのですが、100-exercisesはトレイトや非同期処理等についてTRPLより深く踏み込んだ内容になっており、やりがいがありそうです! Rust力を盤石にするため、Qiita Engineer Fest 2024の力を借りてこの問題集に取り組んでみたいと思います! 2024/08
sjvn/ZDNETHong Kong: At The Linux Foundation's KubeCon and Open Source Summit China conference, Linus Torvalds and his buddy Dirk Hohndel, Verizon's Head of the Open Source Program Office, once more chatted about Linux development and related issues to the delight of their audience. As usual, the pair talked about the current state and future of the Linux kernel. In particular, their conversation
Contents What is an error in Rust?Errors in the context of ResultDynamic Rust errors: handling Box<dyn Error> and friendsHandling dynamic errors from other people's codeDowncasting errors in RustHandling Rust errors with anyhowWho is your audience and what will they do with your error?Structured Rust errors: defining and composing enums and structsA unified theory of Rust error handlingDiscussionA
コンテキストの利用 前回は、新規投稿機能を実装しました。今回は、投稿の編集機能と削除機能を実装していきます。 ここまで、コンポーネントで値を保持するためにuse_signal(Signal<T>)などのフックを使ってきました。フックを子コンポーネントでも使いたい場合には、propsを使って渡すのが基本です。ただし、子コンポーネントに渡すフックの数が多くなったり、コンポーネントの階層が深くなったりすると、同じようなpropsが増えてくる「Props Drilling」(バケツリレー)が発生します。 Props Drillingではコードが複雑になり冗長にもなるので、これを回避するためにDioxusには「コンテキスト」(context)という仕組みが用意されています。コンテキストはフックの一つであり、Signal<T>などの値を直接保持します。つまり、フックのコンテナと見なすことができます。
I’ve been interested in the idea of Rust for a couple years now. Type safe, memory safe, and an emphasis on correctness. What’s not to love? The percentage of errors I encounter while working on Apollo (a Python app) that could have been caught by the Rust compiler is quite high (I won’t claim 100%, but pretty close). In general, compilers can catch a lot of issues that might otherwise make their
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く