Microsoft、安全で高効率のプログラミング言語として「Rust」を高く評価:メモリ破壊バグを避けるには Microsoft Security Response Center(MSRC)は、ソフトウェアのセキュリティ確保と効率性の両方の要件を満たす最も有望なシステムプログラミング言語の一つとして、「Rust」を高く評価した。メモリ破壊バグをそもそも作り込まないことでセキュリティを確保できるという。
2022年上半期はとある都合もあってかなりの数の技術書を読んだので、その中でも良かったものとかの感想をまとめておきます。 2022年上半期で一番良かった技術書 A Philosophy of Software Design ソフトウェア設計の目的は複雑さを軽減することであるとして、その複雑さの定義と軽減する手法が書かれています。最近まで2年ほどフリーランスで色んな会社の開発に参加して、DDD的な設計やクリーンアーキテクチャを採用している現場が多かったもののそれらが逆に開発効率を低くしているのではという感想を持っていました。そこでこの本を読み、それらの目的であるはずの「複雑さを軽減する」という視点が抜けていたのかなと気付かされました。コードを読み書きしていて複雑さを感じなければモノリスでもMVCでもいいケースは多いと思います。複雑さを軽減する手法を解説する章では、やりすぎると逆効果であるとは
2018年2月10日、恵比寿ガーデンプレイスザ・ガーデンホールにて、「Cookpad TechConf 2018」が開催されました。クックパッドのエンジニアやデザイナーがどのようにサービス開発に取り組んでいるのか、またその過程で得た技術的知見について公開します。続いて登場したのは小林秀和氏。「Rubyの会社でRustを書くということ」と題して、現在比較的マイナー言語であるとされるRustを用いるに至った経緯や知見を語ります。 なぜRubyの会社でRustを使うのか 小林秀和氏:本日はCookpad TechConfにお越しいただき、ありがとうございます。私の発表は、今話題のRustについてです。みなさんはRustを知っていますか? あるいは書いたことがありますか? 書いたことがあるという方、挙手をお願いしてもよろしいでしょうか? (会場挙手) ちらほらいますね。ありがとうございます。ご覧の
実践的なアプリケーションを書いてみよう! Rustの構造化プログラミング【第二言語としてのRust】 Rustを使って、実際にアプリケーションを3つ書いてみましょう! その前に、プログラムの構造化に必要な手法、ジェネリクス、構造体、列挙型、それにトレイトといった概念についても説明します。 前回の記事では、Rustの基本的な文法や型を説明し、他のプログラミング言語ではあまり見かけない、Rustならではのメモリ管理の仕組み(所有権・参照・ライフタイム)についても解説しました。 今回は、Rustを使って、実際にアプリケーションを書いてみましょう。 制作するのは、Unix環境ではお馴染みの文字列検索プログラムであるgrep(その機能限定版をRustで書いたrsgrep)、アナグラム(単語の文字を入れ替えた単語)を求めるプログラム、そしてHTTP/0.9サーバです。 しかし、アプリケーション開発に入
概要 この記事ではRust初心者が驚いたり混乱させられたりするようなRustの文法を10項目集めてみました。 これらの項目は知らないと理解できなかったりコンパイルエラーに悩まされたりする一見厄介なものたちなのですが、そのような直感的でない挙動を敢えてさせているところには重要な意味が込められていることが多いです。 そのため、これらの項目を通してRustが目指しているものや実現したい機能の一部を垣間見ることができると思います。 1. デフォルトの代入がムーブ Rustの最大の特徴が所有権の概念であることは有名ですが、それでもなお初心者殺しになるのがムーブです。 以下のコードがコンパイルエラーになるメジャーな言語は現状Rustくらいしか無いでしょう。 let mut a = vec![1, 2, 3]; let mut b = a; // ここでaの持つベクタの所有権がbにムーブされ、aは無効に
RustでTGB-Rというゲームボーイエミュレーターを書きました。 とりあえずWindowsとLinuxで動作確認をしていて、エミュレーションの精度もそれなりに出ているはずです(以下は非公式ROMによるスクリーンショット)。 GameBoy WORDLE 2048gb Hi-Colour Demo Bad Apple!! 名前は、以前私が書いていたゲームボーイエミュレーターの精神的後継だったり、Rustで書いていたりとかでこうなりました。 以前書いたエミュレーターもオープンソースで公開していたのですが、ふと検索してみたら、GitHubにプロジェクトができていて、メンテナンスが続けられていました。 私がこれを書いていた時期はGitHubどころかgit自体が存在しないような時代で、サーバーを借りてそこに手作りのアーカイブをしこしこアップロードしていたような、あまりに素朴な開発でしたが、そんな時
このサイト r7kamura.com の実装言語をRubyからRustに変えてみた。 アプリケーションの概観 このサイトには、大別すると次の6種類のルーティングパターンがある。 GET / トップページ GET /articles/:article_id 記事ページ GET /feed.xml RSSフィード GET /links リンク集 GET /sitemap.txt サイトマップ (Google Search Console等が利用する) GET /* その他の静的ファイル (CSSや画像など) Rubyの実装では、適当なRackアプリケーション + rack-captureという構成で、Webアプリケーションとして実装しつつGitHub Pagesのために静的ファイルも吐き出せるという仕組みになっていた。 Rustの実装もほぼ同じで、適当なHTTPサーバー + 適当なHTTPクラ
本件は mozc の ut がどうこうとかは関係なくて、ふと linux desktop を使おうと昨年末に思いまして、昨年末からちまちまやってます https://github.com/tokuhirom/akaza かな漢字変換って作るの難しいのかなぁ、と思ったので作ってみている。これはまさに Just for Fun でやっている。 わりと普通に自分で常用してる分には困らないかな、というところまできている。 以下は、思ってることの垂れ流しという感じで、まとまってないですが。 「日本語入力を支える技術」という本が 2018年に出ていて、この本の内容を読めば、だいたいエンジン部分は実装できる。Amazon のレビューではこの本よんでも実装できないって書いてあるけど、変換エンジン自体は実装できます。 UI が辛い。けど。 エンジンは、ビタビアルゴリズムで最小コスト法を実装する、とかであれば
Front-End Study #1「Cloud Native時代のフロントエンド」 - connpass の発表内容のテキスト版です。 発表に載せられなかった参考資料集 StatCounter Global Stats - Browser, OS, Search Engine including Mobile Usage Share The "Developer Experience" Bait-and-Switch - Infrequently Noted JavaScriptよ。文明を捨て、自然に還れ。 ::ハブろぐ Deno - A secure runtime for JavaScript and TypeScript Rome Toolchain Blitz.js - The Fullstack React Framework | Blitz.js ⚡️ Prisma - Da
TLS(Transport Layer Security)が難しすぎると、お嘆きのセキュリティファースト世代の皆様、RustでLinuxカーネルを実装しながら学んでみましょう! カーネルモジュールの実装は難しい?それは誤解です。TLSをアプリケーションとして実装しようとすると、各種のライブラリを検索していたつもりが、SNSを眺めていて、一日が終わっていることありますよね。カーネルモジュールを実装するために使えるのはカーネルの機能だけです。検索する必要はなく、雑念が生じる余地はありません。その集中力があれば、カーネル開発は難しくありません。 TLSとLinuxカーネル皆様の中には、LinuxカーネルはTLSをサポートしているのでは?と思っている方がいるかもしれません。TLSは実際のデータの送受信の前に、ハンドシェイクと呼ばれる、暗号鍵の合意や相手の認証を実施します。ハンドシェイク後、Linu
※ この記事は 2021/10 時点での内容です。 社内勉強会で 2021 年に発表した内容で、外部公開しようと思って寝かせてしまっていました。 記事としての鮮度は落ちてますが、頑張って書いたものなので Zenn に公開しておきます。 概要 社内異動を機に業務で Rust を書けることになった私の Rust 学習記録です。 今までの言語経験はメインが Ruby、少し JS/TS、趣味で Go をやっていたぐらいです。 学習の方針 なんでもかんでも Rust で書く。 Rust は GC のないシステムプログラミング言語として大体 C 言語と同等のレイヤーからカバーできるので、書こうと思えば OS から Web アプリまで書ける。 yew のような UI 構築用のライブラリもあるので、フロントエンド開発もできる。 というわけでなんでもかんでも Rust で書ける。 リポジトリ運用 デプロイの
Pythonのパッケージ・プロジェクト管理ツールはまだ乱立状態にあって、どれを使えばいいのかわからないから慣れたpyenv+pipを使おうという判断をする人がいるかもしれない。その判断自体は別に否定しないけれども、初心者に教える時にpyenvを教えるのはもうそろそろやめてほしい。 Pythonをソースからビルドするので、コンパイラや依存ライブラリを事前に揃えないといけない。依存ライブラリが足りないと中途半端なPython環境もできうる。 デフォルトで最適化オプション(PGO+LTO)が付いてないので、最適化ビルドしたPythonより~5%程度遅い Windowsで使えない Rye, pdm, Hatch などは python-build-standalone と呼ばれるビルド済みPythonをインストールする機能があるので、これらの欠点が存在しない。 Pythonをインストールするところま
概要 以前、JSで書いた(ファミコンのエミュレータを書いた - undefined)ファミコンのエミュレータをRustで書き直してみた。 また、技術的な内容はQiitaの方にも書いているので興味のある方は参照してみてください。(まだ Hello, World!までしか書けてませんが。) qiita.com もともとファミコンのエミュレータって新しい言語を習得するのにちょうどいい題材だったりするのでは、って話しからスタートしてて、よくわからないのでJSで書いてみて、ようやくRustで一通りは実装できた感じ。まだバグや未実装(音声周りやマッパー)も多いんですが、ひとまずはお腹いっぱいな感じ。 成果物 github.com あと、いくつかのROMは以下で遊べるようにしてます。音が出るので注意してください。 またAPUの実装にまだバグが残っているのDCMチャンネルが未実装なので音が変だったり出てな
「C++」は非常に人気があるプログラミング言語だが、同言語の標準化に取り組んでいるグループが、C++の「メモリ安全性」を(新しいライバル言語である「Rust」のように)高めるための今後の道筋について議論する文書を発表した。 Rustは、MicrosoftやAmazon Web Services(AWS)、Meta、GoogleのAndroid Open Source Project、主にC++で書かれている「Chromium」プロジェクト(まだ始まったばかりだが)、Linuxカーネルなど、多くの企業やプロジェクトで採用されており、メモリ関連のセキュリティホールを減らすのに役立っている。最近では、米国家安全保障局(NSA)までが、開発者に対してC++からC#やJava、Ruby、Rust、Swiftへの戦略的な移行を促す事態になっている。 C++の生みの親であるBjarne Stroustr
Intel の主席エンジニアの Josh Triplett の Open Source Technology Summit 2019 での講演 Intel and Rust: the Future of Systems Programming を取り上げ、Rust こそがシステムプログラミングの未来であり、C 言語はもはやかつてのアセンブリ言語である。つまり、未だに OS などのシステムプログラミングの大部分で使われる C 言語は Rust に置き換えられるのではないかと見る記事である。 「Cを愛して…」という文章をワタシが訳したのももはや10年以上前、C が他言語に置き換えられる未来が遂に来るのかと遠い目になってしまう。もっともワタシ自身、4年近く C 言語でコーディングしてないんだよね……。 でも、本当にそうなるのだろうか? 手近なシステムプログラミングの現場である Linux カーネ
eBPF(extended Berkley Packet Filter)という用語を著者が初めてみかけたのは、2015年ごろだった。最初は、eBPFをその字面のとおり、パケットキャプチャやパケットフィルタリングを担うだけの、Linuxの新しいサブシステムであろうと認識していた。しかし、実際にはそうではなかった。 システム性能の分析のための方法論をまとめた書籍Systems Performance 1 の著者で有名なBrendan Greggが、Linuxのネットワークサブシステムとは特に関係ない文脈で、古典的なシステム性能計測ツールでは計測できないことを計測するツールを作っていた。その計測ツールがeBPFという技術によって実装されていることを知ったときに、eBPFに興味をもったのだった。また、eBPFは、システム性能を調べる用途以外にXDP(eXpress Data Path)と呼ばれるプ
コンテキスト 私もGoとRustの比較記事書いてバズるやつやりたい — みょん (@myuon_myon) February 27, 2020 仕事でGoとRustを書いています。いずれもWebのサーバーサイドです。パフォーマンスとかほとほどって感じなので極限までチューニングしたりしません。という前提で読んでください。 Rust/Goはいずれも習得してから2年くらい書いています。書いてる量も多分そんなに変わりません。 Go なんと言っても習得難度が低いので人を選ばず書けるようになります。現状だと仕事で書くなら一番無難な選択肢だなと思っています。一方言語もエコシステムも何もかもかなりクセが強いので、Go Wayにちゃんと従うことが大事だなと思ったりします。 ジェネリクスがないことは高速なコンパイルなど利点もありますがmap,filter等を型ごとにfor文書きまくることになるのでとても手が疲
2023 年度の僕のエラーハンドリング について書きたい。 昨日Safe Data Fetching in Modern JavaScriptを読んでいて、fetch に限った話ではないが一家言ある内容だったので書きたくなった。 おそらくやりすぎだとか非効率と言われる点はあると思うので、みんなの一家言も教えて欲しい。 対象は Typescript での サーバー開発想定だが、TS であればクライアント開発にもほとんどに当てはまる話だと思う。 例外のスローではなく Result 型を使う Result は失敗するかもしれないという文脈を与えてくれる型 エラーハンドリングの戦略として例外を投げるのではなく、Result 型を返すやり方がある。 Result 型というのは export type Result<T, E> = Ok<T> | Err<E>; export interface Ok
この記事は Rust Advent Calendar 2020 ならびに CyberAgent Developers Advent Calendar 25日目の記事です。 今年のはじめの頃になりますが、『CPUの創り方』という本に載っている TD4 という CPU を実装してみました。TD4 は「とりあえず動作するだけの4bit CPU」の略です。この本に載っている CPU エミュレータを実際に実装してみました。ただし、本書には GUI が載っていましたが、それは省略しました。 CPUの創りかた 作者:渡波 郁発売日: 2003/10/01メディア: 単行本(ソフトカバー) 「最近話題の RISC-V などの CPU エミュレータを作ってみたいものの、いきなり作るにはハードルが高い。何か簡単なもので素振りをして CPU の動作の仕組みをまずは知りたい」という方にはかなりオススメできる教材だ
「C」や「C++」に代わるシステムプログラミング言語として「Rust」が注目を集めている。メモリ安全性が高く、メモリ破壊バグといった脆弱(ぜいじゃく)性を作り込みにくいからだ(関連記事)。 ただし、システムプログラミング言語では、高い処理性能が必須条件であり、これがCやC++が使われ続けている理由となっている。Rustはどの程度「速い」のだろうか。 ドイツのミュンヘン工科大学で博士課程の学生であるポール・エメリク氏は2019年9月9日、Rustで作成したデバイスドライバの性能評価をGitHubで発表した。 同氏のグループはさまざまな言語で同じ機能を備えたデバイスドライバを記述し、性能を比較している。 何が性能低下を引き起こしているのか 性能評価用に作成したのは、Intelのイーサネットコントローラー向けのLinux用デバイスドライバだ(ixgbeタイプ)。 エメリク氏は解説の冒頭で研究に取
自分のブログを辿ってみたところ Rust を 2020 年には書いているようだが、初心者を名乗らせていただく。なぜならブログのネタにする以外で Rust 書いたことないし、これも調べながら書いているからだ。もっと練習したい、どこかに Rust を書ける機会ないかな〜チラッチラッ 👀 なぜありふれていそうな題材で書くか 題材はありふれているし解説もたくさんあるが、それらを読んで理解できるのか?という疑問がある。というのも、所有権、借用、ライフタイム自体についての説明は至る所で見るが、これらが無いと何が大変なのか、導入することで何が解決されるかがよく分からないと思うからだ。勿論、そのような点まで解説してくれているものもたくさんあるが、正直なところ Not for Me だった。何が Not for Me だったかというと、C++ の知識やコンピュータサイエンスの知識があることが前提になってい
Fastly、JavaScriptエンジンをWebAssemblyで実装。CDNエッジのサーバレス環境「Compute@Edge」でJavaScriptサポート発表(訂正済み) (お詫びとお知らせ:本記事はFastlyの発表と同社へのメールでの取材に基づいて執筆いたしましたが、記事公開後に同社より、回答を間違えたとの申し出がありました。そのため改めて同社から提供された情報を基に、タイトルと本文を訂正しました。訂正前の記事内容は本文最後にHTMLでコメントアウトされています。) 大手CDNベンダのFastlyは、CDNエッジで提供しているサーバレスコンピューティング環境「Compute@Edge」で、JavaScriptのサポートを発表しました。 JavaScript on Compute@Edge is here. https://t.co/wSHiJfPdvf pic.twitter.c
はじめに 僕はDeno Land Inc.でDenoを利用したサーバレスエッジホスティングサービスのDeno Deployを開発するチームに所属しています。OSSのほうのDenoのメイン言語はRustで、Deno Deployのバックエンドも同様にRustで書かれています。 今年のアドベントカレンダーで一休さんから以下の記事が公開されましたが、日本でもRustをWebバックエンドの言語として採用する企業がじわじわと増えてきている印象があります。 Deno DeployのバックエンドをRustで開発してきて、RustでWebバックエンドを書くことのメリットやデメリットをいくつか感じたので、この記事で紹介したいと思います。 Deno Deployの構成 まず、ざっくりとDeno Deployのバックエンドの構成を紹介します。 多くのコンポーネントがありますが、ここではどのようにRustを利用し
お手製のCPUの上で自分で作ったOSを動かすというのは、割と夢のある行為だと思っていて、今回それを一定のレベルですることができたので、簡単に内容についてメモをしておこうと思います。 曖昧な日本語を読むより、プログラムを読むほうが速いと思う人は、駄文を読まずにGitHubを見てください。 https://github.com/moratorium08/osmium/ 僕が書いたのはOSだけで、コアはATPが書きました。また、乗算命令の実装はdaiが書きました。 https://github.com/hitohira/yokyo 概要 RustでフルスクラッチでRISC-V(rv32im)で動作するOSの実装をしました。OSを実装するにあたり、ページングやカーネルとユーザーモードでの権限切り分け、割り込みなどの仕様を考える必要があり、これもRISC-VのPrivilegeの仕様書に従ったものに
本連載では、Webブラウザー上でJavaScriptとともに動作できるバイナリ形式のプログラムファイル「WebAssembly」を、Rustプログラミング言語で実装する方法について、順を追って説明していきます。初回となる今回は、WebAssemblyの概要を説明するとともに、Rustを利用した簡単なサンプルで、実装方法のイメージを紹介します。 はじめに 現在、Webフロントエンド開発においては、ページ構造を表すHTML、スタイルを表すCSSとともに、挙動を実装するためにJavaScriptが利用されます。JavaScriptの登場当初はWebページに動きをつける程度の扱いでしたが、その後の言語仕様の拡張や、WebブラウザーでのJavaScript実行速度の向上、Node.jsなどWebブラウザー以外でJavaScriptを動作させる環境の登場などにより、本格的なプログラミング言語としてその
Introduction Participation If you are interested in contributing to this book, check out the contribution guidelines. News 2024-03-17: You can now download the book in PDF format from this link. Design patterns In software development, we often come across problems that share similarities regardless of the environment they appear in. Although the implementation details are crucial to solve the tas
第2回 大量トラフィックを支えるインフラ~独自プロトコル,ファイルシステムの実装もいとわない!~ ドワンゴが分散ファイルシステムを作っているというニュースを見た. しかもRustで. ニュース以上のことも知りたくなったがツテがないし, あったとしても教えてくれるわけがないので外側から推測することにした. 実は分散ファイルシステムも独自に開発しました。もともと既存のオープンソースのファイルシステムを使っていたのですが,それだと期待する性能が出ないことがわかり,独自に調査開発を進めることにしました。 Rustという言語で,ガベージコレクションがなく,C++にメモリ安全性の機能を付加したようなものです。ニコニコの動画・生放送の配信基盤開発ではErlangを使うことが多いのですが,レイテンシを細かく制御したい分散ファイルシステムの分野では,どうしてもガベージコレクションが気になってきます。たしかに
現代のプログラミング言語ではポインタは単なるアドレスではなく,provenanceを伴った参照として扱われています. 世界は既に変わっています. 概要 ポインタは単なるアドレスではありません. ポインタにはprovenanceという,どのオブジェクト由来かの情報が含まれています. Provenanceを使うことで,最適化が効きやすくなったり,堅牢なプログラムを書きやすくなったりします. 追記: 次の英語記事を読むとprovenanceが必要な理由についてもっとよく知ることができます.クリックしよう!!!!(2020-12-15) https://www.ralfj.de/blog/2020/12/14/provenance.html ポインタはアドレスではない 次のCプログラムを見てみましょう. #include <stdio.h> #include <string.h> int main
Rust言語、asm.jsやWebAssemblyをサポートへ。WebブラウザやNode.jsで実行可能に Mozillaが中心となってオープンソースで開発されている言語「Rust」の最新バージョン「Rust 1.14」がリリースされました。 Rust言語は、C言語のように低レベルのシステム開発向けに作られた言語。不正なメモリ領域を指すポインターなどを許容しない安全なメモリ管理と、マルチスレッド実行においてデータ競合を排除した高い並列性を実現している点が特長です。Mozillaの新型高速ブラウザエンジン「Servo」の開発に使われています。 Rust 1.14ではツールチェーンマネジャーの「rustup」がバージョン1.0となり、Rustのインストールを含む環境構築を司るようになりました。 At its heart, rustup is a toolchain manager for Ru
先日、静的サイトに特化した全文検索ライブラリとして「Pagefind」というソフトウェアがあることを、下記の記事が話題になったことで知りました。 参考:静的サイトに特化した検索ライブラリ Pagefind を試す | grip on minds 実は、いまお読みのPublickeyはまさに、Movable TypeというCMSを用いて生成された静的なWebサイトです。現在、PublickeyではGoogleが提供している「Googleカスタム検索エンジン」を全文検索エンジンとして採用しています(右上の虫眼鏡アイコンから呼び出せます)。 しかしPublickeyでは以前からGoogleに依存しない、自前の全文検索エンジンを持てないかと模索しており、まさにPagefindは私が探し求めていたソフトウェアだったと言えます。 そこでさっそくPagefindがPublickeyに導入できるかどうか、
はじめに 本連載では、Webフロントエンド開発において注目されているバイナリ形式のプログラムファイルWebAssemblyを、Rustで実装して活用する方法を説明しています。前回記事では、WebAssemblyに至るまでのWebフロントエンド高速化の歴史を紹介するとともに、RustでWebAssemblyを実装する大まかな流れを説明しました。 本記事では、WebAssemblyの実装で必要となるRust言語の基礎を説明していきます。 対象読者 話題のRust言語について学びたい方 動的なWebページにさらなる速度を求める方 WebAssemblyに興味があるが、Rustのハードルが高いと思っている方 必要な環境 本記事のサンプルコードは、以下の環境で動作を確認しています。 Windows 10 64bit版 rustup 1.24.3 cargo 1.55.0 サンプルコードを実行するには
この記事は Rust Advent Calendar 2020 2日目の記事です。 1日目は Rust で競技プログラミングの作問支援ツールを作った話 (@kobae964 さん) 3日目は Rustの日本語書籍紹介 (@dalance さん) ライブコーディング動画の良さ こんにちは、@magurotuna です。 みなさん、ライブコーディング動画はご覧になりますか?僕は結構頻繁に見ていて、たとえば寝る前、例えば作業用BGM代わりに垂れ流す、といった感じで視聴しています。 熟練のエンジニアによるライブコーディングを見ることで、彼ら/彼女らが 何を考えながらコーディングをしているのか どのような順番で順番でコーディングするのか エディタ、ターミナルをどのように操っているのか ドキュメントをどのように読んでいるのか など、数多くのことを学ぶことができます。 もちろん上記に加えて、取り上げられ
What’s Hurl? Hurl is a command line tool that runs HTTP requests defined in a simple plain text format. It can chain requests, capture values and evaluate queries on headers and body response. Hurl is very versatile: it can be used for both fetching data and testing HTTP sessions. Hurl makes it easy to work with HTML content, REST / SOAP / GraphQL APIs, or any other XML / JSON based APIs. # Get ho
こんにちは、kenkooooです。estieに入社するので、入社エントリを書いています。 estieとの出会い Indeedで働いているときに、Indeedの元同僚でestie CTOのNariから誘われたのがきっかけです。Indeedでの仕事がメチャクチャ面白かったので全く転職する気はありませんでしたが、Nariが「プロダクトごとに違うプログラミング言語で開発して、色んな言語のプロフェッショナルがいる会社にしたい」と話すのを聞き、エンジニアが10人くらいしかいないスタートアップでやることではないし、正気の沙汰ではないと思ったので、狂人を応援したい一心で業務委託としてRustでプロダクト開発をするのを手伝うことにしました。 Indeedの労働環境 estieのRust業を手伝う中で選考も受けましたが、Indeedの労働環境に全く不満がなかったこともあり、転職しようという気になりませんでした
極力Goならではな特徴をいくつか挙げていく。 依存解決が必要最低限で互換性を考慮しつつ決定的 モジュール単位で依存をダウンロード。コンパイル対象はサブパッケージ単位。 依存の明示方法はコードに埋め込まれ、かつ未参照のインポートはコンパイルエラー。 つまり動作するコードのすべては正確な依存ツリーが明示されていて余計な依存は引き込まれない。 そして持ち前のコンパイルの速さを含め、相当深い依存ツリーでも依存解決にかかる時間は既知の処理系の中でも最速レベル。(唯一勝てるのはプリビルドバイナリが配布されている場合くらい) また、コンパイルやリンクに必要な処理量そのものが比較的少ないため、開発環境負荷も小さい。 かなり巨大なプロジェクトであってもメモリ8GBで困るようなことが無い。つまり、CI環境の維持にもローコストで済む。 ライブラリの提供側では後方互換性が破壊されるような変更はV1->V2というよ
私はターミナルが大好きなので毎日使っているんですが、永らく alacritty + tmux を愛用してました。(といってもさっき見たら alacritty 使ってたのは 1 年ちょっとだったらしい・・・) しかし最近 wezterm というターミナルの話を Reddit とかでちょくちょく聞くようになってたので 2022 年個人開発環境大変革[1]に合わせて試してみることにしました。 wezterm とは? wez さんが作った Rust 製の GPU-accelerated で cross-platform なターミナルです。自分の名前をプロダクトに入れるところに正直自信の表れを感じます w wez さんは 2022 年現在 Facebook(meta)で働いているようです。 まぁけど、Rust 製の GPU-accelerated で cross-platform なターミナルってそ
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く