タグ

関連タグで絞り込む (262)

タグの絞り込みを解除

Rustとrustに関するigrepのブックマーク (507)

  • Rustでもモナドは実装できるのか?(再) - Don't Repeat Yourself

    この記事は言語実装Advent Calendar 2020 25日目の記事です。(2022-11-06: 記事の内容を追記していますが、この記事の結論としては「似たようなものは作れるが、完全体にはならない」です) 前提知識 高階カインド型 モナド 従来のエミュレーション方法 Generic Associated Types を用いたエミュレーション(new!) 型クラスを定義する Functor を用意する Pointed を用意する Applicative を用意する Monad を用意する いくつか型を実装していく 現状実装できないもの do 記法 Generic Associated Types(GATs)とは何か 追記(2022-11-06) リポジトリ 参考文献 モナドに関する話題が言語実装アドベントカレンダーの範疇に入るのかわかっていませんが*1、プログラミング言語がお好きな方

    Rustでもモナドは実装できるのか?(再) - Don't Repeat Yourself
    igrep
    igrep 2020/12/26
    GADTsとは名前は似てるけど全然違う “GATs というのは先ほども軽く触れたとおり、関連型に何かしらの型パラメータ(A や T みたいなもの)をもたせることができる機能”
  • whasm!("Rust Christmas: WebAssemblyをKubernetes上で動かす") - CADDi Tech Blog

    1. Rust Christmas, I gave you my heart はじめに 折角クリスマスなので、楽しい近未来感のある技術を検証してみようと思います。お仕事で使っているRustKubernetes、そして個人的に興味のあるWebAssemblyをガッチャンコ出来ないか考えてみた。技術者としては常に勉強をする事が重要だと思っているので勉強兼ねて 「highly experimental」 と注意書きのある技術の紹介をしたいと思います。 日は会社のアドベントカレンダーということもあり仕事しているふりをする必要があるため、ポエムも混ぜながらKubernetes上でWebAssemblyのモジュールを実行するKrustletを使ってみたお話をします。 Krustletとは? GitHubのページ曰く: Krustlet is a tool to run WebAssembly wo

    whasm!("Rust Christmas: WebAssemblyをKubernetes上で動かす") - CADDi Tech Blog
  • Googleが公開しているRustのRPCフレームワークtarpcを使ってみた - Qiita

    tarpcとは tarpcRustでRPCを書くためのフレームワークで、Googleのオープンソースプロジェクトです。 公式には以下のように書いてあります。 tarpc is an RPC framework for rust with a focus on ease of use. Defining a service can be done in just a few lines of code, and most of the boilerplate of writing a server is taken care of for you. 簡単にサービス定義がかけることを重視しているようです。 また、 Disclaimer: This is not an official Google product. とあるように、Googleが会社として開発しているわけではなく、Google

    Googleが公開しているRustのRPCフレームワークtarpcを使ってみた - Qiita
    igrep
    igrep 2020/12/24
  • Rustの環境構築(Apple Silicon) 2020年12月版

    これは Rust Advent Calendar 2020 15日目のエントリーです。 飛び入り参加です。 記事ではApple siliconを搭載したMacRustの開発環境をセットアップする方法を説明します。 重要:プレビュー版のソフトウェアについて 記事に掲載されているのは2020年12月22日時点の情報です。 Apple siliconネイティブなソフトウェアを中心にインストール方法を説明していますが、執筆時点ではそれらのほとんどがプレビュー版となっています。 みなさんがこの記事を読まれるときには正式版がリリースされているかもしれません。 他の情報源もチェックされることをお勧めします。 また、プレビュー版のソフトウェアは品質が保証されていません。 リリース前の正式なテストが行われておらず、重大な不具合が出る可能性もあります。 大切なデータは事前にバックアップしておくなど、十分

    igrep
    igrep 2020/12/23
  • 自作コンパイラ基盤の話 - Qiita

    これは、言語実装 Advent Calendar 2020 19日目の記事です。 最近は、コンパイラやインタプリタなどの言語処理系や、それに類するものを作る人が増えてきています。(私の周りだけかもしれませんが。) しかし、もう一歩進んで、コンパイラ基盤を作ってみたという話はあまり聞きません。 コンパイラ基盤は、それの対象とするアーキテクチャについてや、それ自体の使い勝手を考えるのが非常に面白いものです。また、コンパイラ基盤を作る中で、コンパイラや計算機自体についてより深く学ぶことが出来ます。 この記事では、私が開発中のコンパイラ基盤を例として、コンパイラ基盤について語っていきます。 そもそもコンパイラ基盤とは コンパイラ基盤と言えば、近年色々な所で目にするのがLLVMです。 LLVMを使うことで、コンパイラの複雑で面倒な部分を避けつつ、コンパイラを構成することができるようになりました。 下

    自作コンパイラ基盤の話 - Qiita
  • Rust初心者が楽して作るHTTPクライアントCLI (surf & clap) - 好奇心に殺される。

    Rust Rust初心者が楽して作るHTTPクライアントCLI (surf & clap) 実務で使うツールをRustでサラッと実装したので、僕が踏んだ実装方法を紹介します。 Overview こんにちは pon です。これはRust Advent Calendar 2020 の記事です。 初心者がHTTPクライアントCLIをRustで書いて、実務で利用したので、実装方法を紹介します(ほとんどライブラリの紹介になる気がするが...)。Rustで何か作ってみたい人の足がかりになると思います。 作ったやつ 社内のAPIを叩くので実際のコードは公開できませんが、どんな感じのツールかを共有します。テキストからキーワード一覧を取得して、そのキーワードごとに検索エンジンが何件返すかを調べる簡単なツールです。 これを作るのに使ったライブラリを紹介します。これらを使うとRustでも簡単にHTTPクライアン

    Rust初心者が楽して作るHTTPクライアントCLI (surf & clap) - 好奇心に殺される。
    igrep
    igrep 2020/12/19
  • [Rust] FFIでよく使う型変換

    自分は最近RustROS2クライアントを書いていて、間に合えばこれについて記事を書こうと思ったのですが、案の定間に合わなかったので代わりに書いています. ROS2はROS (Robot Operating System)というPロボット用フームワークの後継で、ROSが抱えるいくつかの問題点を解消するため、互換性を完全に切って新たに作られたものです.問題点の一つに、言語毎のクライアントライブラリの実装の仕様が統一されていないというものがあり、ROS2ではrclcやrmw等のC言語ライブラリを用意し、各言語のクライアントライブラリはそれらをラップして実装することが求められています. こういった事情でRustROS2クライアントを作るためには、FFIが必須です. と御託はさておき、FFIでよく使う文字列と配列の変換について書いていきます. 前提知識 FFIについては知っているものとします.知

    [Rust] FFIでよく使う型変換
    igrep
    igrep 2020/12/19
    結構ハマりどころが多そうねー
  • デバッグビルドを高速化するrustc_codegen_craneliftを試してみました

    はじめに これは Rust Advent Calendar 2020 8日目のエントリーです。 飛び入り参加です。 この記事では、Rustコンパイラの実験的なバックエンドである「rustc_codegen_cranelift」について、その特徴と使いかたを紹介します。 以下の英語記事の内容をベースに、筆者なりの説明をいろいろと追加しています。 Inside Rust Blog — Using rustc_codegen_cranelift for debug builds rustc_codegen_craneliftとは? rustc_codegen_cranelift(cg_clif)はRustコンパイラのバックエンドのひとつです。 執筆時点(2020年12月)では実験的な実装という位置づけですが、将来はデバッグビルド時のデフォルトのバックエンドとして使われることを目標にしているそうで

    igrep
    igrep 2020/12/17
    おお、Craneliftがもうそこまで進んでいるんだ!
  • RustでREAPER Extension

    igrep
    igrep 2020/12/17
  • GitHub - bytecodealliance/cap-std: Capability-oriented version of the Rust standard library

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - bytecodealliance/cap-std: Capability-oriented version of the Rust standard library
    igrep
    igrep 2020/12/17
  • Rustのコンパイルエラーを爆発させる技術 - Qiita

    こんにちは。コンパイルが一発で成功しないminaminaoです。 突然ですが、皆さんはコンパイルエラー爆発をご存知でしょうか? コンパイラは、私達プログラマーにコードの間違いを指摘し修正を促してくれる良き相棒です。 しかし、特定の条件下でとんでもなく大量のエラーメッセージを出力することがあります。 そのような、コードをコンパイルしたらエラーがべらぼうに出力されてしまう現象のことを、コンパイルエラー爆発と呼ぶことがあります。 コンパイルエラー爆発の遊び 昔から一部プログラマーの間で、コンパイルエラー爆発を使った遊びが行われてきました。 2014年には、C++のコンパイルエラー爆発コンテスト、なんてのも開かれています。 The Grand C++ Error Explosion Competition 2014 このコンテストは、短いサイズで大量のエラーメッセージを出すソースコードを作ることを

    Rustのコンパイルエラーを爆発させる技術 - Qiita
    igrep
    igrep 2020/12/16
    面白い上にちゃんとフィードバックを送れていて素晴らしい
  • ClojureScriptとRustを組み合わせる

  • Dhallの型定義からRustの型を自動生成するマクロ - Qiita

    Dhallという面白くて強い設定記述言語とRustに存在する最強なプロシージャルマクロのお話です。 Dhallについて Dhallとは設定記述言語の一つです。要するにINIやJSONやYAMLといったものの一種になります。 Dhallはそうした設定記述言語の中でも、変数が使えたり関数が使えたりと突出してマンフレンドリーな機能を多く備えています。 その一方でチューリング不完全であり、ざっくりというと式の評価が必ず停止します。設定ファイルを読み込んだら記述をミスって無限ループになって初期化フェーズで死んだなんてことになると大変ですので、必ずとある形で評価が停止してくれるというのは設定ファイルとして採用する際に安心できるポイントです。 Haskellよろしくインデントベースな構文であることと、書き方が多様にわたるためプログラムから生成する設定ファイルのフォーマットとして扱うには少し厳しいところが

    Dhallの型定義からRustの型を自動生成するマクロ - Qiita
  • 公開APIのインターフェースで利用している外部クレートはRe-exportする(と良さそう) - Qiita

    この記事はRust Advent Calendar 2020の 10 日目の記事です。 9 日目はこちら → no_std の Rust on Linux で Hello, world!する - Qiita 11 日目はこちら → Rustの型システムの恩恵:言語処理系としての観点から - Qiita こんにちは、@tasshi です。 同日にうっかりもう 1 つアドベントカレンダーを登録していて1、 慌てて書いているうちにこちらは 1 日遅れとなってしまいました。 まだ 11 日未明なのでセーフだと信じて強い気持ちで投稿します。 概要 Rust の Re-export の使い方について調べていたところ、気になるトピックがありました。 Guidance around reexporting · Issue #176 · rust-lang/api-guidelines ざっくりと説明すると

    公開APIのインターフェースで利用している外部クレートはRe-exportする(と良さそう) - Qiita
    igrep
    igrep 2020/12/11
    依存関係の解決に失敗しそうだけど、実際cargoだとどうなんだろう“これって依存ライブラリ同士で Re-export しているクレートのバージョンが違った場合どうするんですかね”
  • Rust と WebAssembly で爆速な Markdown Editor を作ってみる

    TypeScriptフロントエンドな皆さん、今日も型パズルしていますか? 型が好きなら Rust ですよね。ということで、いまいち使い所が思いつかない WebAssemblyRust でなにか面白いことできないかな、と爆速(JS比2倍)の Markdown Editor を作ってみました(面倒な人は直接 GitHub みてください) この記事は iCARE Advent Calendar 2020 の 8日目の記事になります。昨日は アオキタカユキ さんの 【adobe XD】線型、円型のグラデーションを引く方法 という記事でした Webアプリケーションを作る まず、利用する側の Web アプリケーションを作成します どんな構成でもいいんですが、タイミング的にもちょうど良い Vue3 + TypeScript で環境を作りました $ npm install -g @vue/cli

    Rust と WebAssembly で爆速な Markdown Editor を作ってみる
  • Nand2Tetris(コンピュータシステムの理論と実装)でCPUからOSまで一気通貫で作るのが最高に楽しかった話 - ( ꒪⌓꒪) ゆるよろ日記

    どうも、しいたけです。 去年あたりからローレイヤー周りの知識を充実させようと思い、 低レイヤを知りたい人のためのCコンパイラ作成入門 を読んでCコンパイラを書いてみたりx86_64の勉強をしたりしていました。 今年に入ってから、よりローなレイヤー、具体的にはハードウェアやOSについてもう少し知りたいと思い始め、手頃な書籍を探していました。 CPUなどのハードウェア周りについては概要しか知らなくて手を動かしたことがないので、実際に何か作りながら学べるものとして、 O'Reilly Japan - コンピュータシステムの理論と実装 に挑戦することにしました。 O'Reilly Japan - コンピュータシステムの理論と実装 成果物は以下のリポジトリに置いてあります。 yuroyoro/nand2tetris 結論から言うと、やってみて大変楽しめました! 特にハードウェア周りは今まで挑戦したこ

    Nand2Tetris(コンピュータシステムの理論と実装)でCPUからOSまで一気通貫で作るのが最高に楽しかった話 - ( ꒪⌓꒪) ゆるよろ日記
    igrep
    igrep 2020/12/10
    すげー
  • no_stdのRust on LinuxでHello, world!する - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    no_stdのRust on LinuxでHello, world!する - Qiita
  • 『ゼロから作る Deep Learning』を読んで Rust で実装した話 - Qiita

    記事のまとめ 『ゼロから作るDeep Learning―Pythonで学ぶディープラーニングの理論と実装』(以下、参考書と呼ぶことにします)を読み、5 章までの内容を Rust で実装してみました。 MNIST の手書き文字を認識する三層パーセプトロンモデルを実装する上で、筆者(私)が採用した方針と、ndarray を使う上で参考になりそうなポイントをリストアップします。 リポジトリについて こちらのリポジトリに Rust で実装したコードが格納されております。 こちらの Oreilly Japan 社の GitHub リポジトリに元の Python コードが格納されています。 こちらのリポジトリは上記 Oreilly Japan 社リポジトリを fork したものであり、ベンチマーク用に修正したコードと Keras in TensorFlow での実装が格納されております。 編の目次

    『ゼロから作る Deep Learning』を読んで Rust で実装した話 - Qiita
  • Rustの可変長引数関数とHListの話 - 逆さまにした

    この記事は Rust Advent Calendar 2020 の5日目の記事です。 背景 RFCs#2137にあるようにRustでは、可変長引数関数を直接的に書くことはできません。とはいえ全くできないわけではありません。C言語から可変長引数関数呼び出しを実現するため、stub関数を記述することは可能です。例えば、以下のような関数をRustで実装します。 pub unsafe extern "C" fn func(arg: T, arg2: U, mut args: ...) { // do something } このような関数はuse extern "C"の中で使われ、unsafeを付与する必要があります。 別の実現方法としてはマクロを利用する案もあり、以下のようなマクロで実現できるでしょう。以下はargとarg2を処理し、再帰的に可変長引数に相当するargsを処理する例です。 mac

    Rustの可変長引数関数とHListの話 - 逆さまにした
    igrep
    igrep 2020/12/05
  • ソケットAPIが遅すぎる?新たなio_uringを試す!

    新しいAPIが作られるたびに、私たちは、古いAPIを置き換えるだけで高速化という夢をみます。何度夢破れても、高速なAPIが追加されたと聞けば、試さずにはいられませんよね! 今回は、Linuxカーネル5.1で追加されたio_uringを使って、Rustのasyncランタイムを実装し、gRPCサーバのベンチマークを実行してみました。 io_uringとはio_uringは、ファイルシステムとネットワークの非同期I/Oのために開発されました。同期よりも非同期のほうがおしゃれ、そういう雰囲気ありますよね!クラウドネイティブも、非同期にAPIを介して、なんかやってるやつですよね。 io_uringのインターフェイスは、高い性能を目指し、1)アプリケーションとカーネル間でのメモリコピーを避ける、2)複数のI/O要求を一度にカーネルに伝えることができる、という工夫がされています。 下図のように、アプリケ

    ソケットAPIが遅すぎる?新たなio_uringを試す!