denoについて知っていること2019年1月編
denoがにわかに活発に開発されてきているkeroxp.icon2019/1/5 denoはServer Side TypeSciprtの新しいランタイムのこと
作者はご存知Ryan Dahl氏、Node.jsの創始者である
自分もいくつかのライブラリを開発していて、実際に動くようになってきている
denoもく回というものが存在する
自分も年末の第一回に参加して色々勉強になったので興味がある人は是非
次回開催は1/19 or 20予定
https://gyazo.com/72942c7cf1f4a4b2b3dcbaf713d3022e
インストール方法とか開発方法とか色々まとまっている
誰でも自由に参加できます
野良実装が標準ライブラリになるような時代感なのだ
denoはTS、V8、Rustの三層で構成されている
TypeScriptによるフロントエンド
TypeScriptプログラムから呼ぶdenoのAPIがある
import "deno"で唯一URL以外で参照できるAPIでもある
TSフロントエンドは主にFlatBuffersでバイナリメッセージを作ってRustバックエンドのRPCを呼ぶことをしている
V8はコンパイラ(denoが兼任している, 内容はtsc)経由でTSが実行されている
libdenoという薄いC++のバインディングレイヤがある
Rustは主にIOやネットワーク、その他OSに近く、privilledgeが必要なセキュリティセンシティブな機能を実装している
TSフロントエンドからFlatBuffersでメッセージを受け取り、RPCの結果を返すことをしている
コアにAPIを追加するには、TSとRust(とFlatBuffers)に変更を加えてビルドする必要がある
これについてはここに詳しい解説がある
日々仕様が変わりまくっている
すごいスピード感となにもない感
まだTLSコネクションとかも開けない
deno_stdという標準ライブラリがある
2週間前までnetというhttpライブラリのリポジトリだった
各方面から色々なutilityが集まってきてdeno_stdになった
testingモジュールももともとコアにあったが数日前deno_stdに移った
これからどんどん増えると思う
awesome-denoというawesomeまとめがある
これももともと2週間前まで野良プロジェクトだったが半公式になった
denoで開発したいんだけど?
registryという公式パッケージレジストラのようなものがある
ここに登録すると、https://deno.land/x/..でモジュールを参照できるようになっている
中身を見るとわかるけど、githubのrawコンテンツへリダイレクトしてるだけ
いいライブラリができた人はここにPRを送れば登録できるかも
個人的にはあまりいい仕組みだとは思っていない
denopkg.comというパッケージCDN?が存在する
GithubのコードをURLでモジュール解決するために使えるサイト
https://denopkg.com/keroxp/deno-redis/redis.ts
でGithubのコードをより楽に使えるようになる
import { opn } from 'https://denopkg.com/hashrock/deno-opn@0.0.1/opn.ts'
などの、unpkg.comスタイルの書き方でバージョンも指定できる
例によってraw.githubusercontent.comへのリダイレクタ
Nowでホストされている
Guid to Deno Coreという半公式のドキュメントがある
コアコントリビュータのkevin氏らが書いている
コアプロジェクトの構成とかコントリビュートの仕方が書いてある
これはdenolibというorganizationのもので、awesome-denoもdenolib入りした
deno-jaというSlackチャンネルがもうすぐ設立される
しゅーまいさんが作るって言ってた(
公式ハッシュダグは#denoland
by ry
でも誰もつぶやいてない…
denolifeという公式Gitterが存在する
ryさんはじめコアコミッターの人たちが議論しているようです