タグ

ブックマーク / zenn.dev/pixiv (5)

  • ECMAScript Module Harmony

    Module Harmony とは 現在 TC39 で多くのモジュール機能を追加する提案が進行しています。かつてはそれぞれの提案が無秩序に進行していましたが、2023年5月に Module Harmony として整理されました。この記事ではそれら提案についてまとめようと思います。 モジュール提案仕様の依存関係 インポートフェーズ修飾子 モジュールの読み込みがフェーズに分けられ、それぞれに対して修飾子が提案されています。シンタックスとしては import の後ろに修飾子を付けます。 import <Modifier> <ImportBinding> from <ModuleSpecifier>; import.<Modifier>(<AssignmentExpression>); モジュールの各フェーズと修飾子の対応 アセット参照 URL やパス解決のみをするのがアセット参照です。Asset

    ECMAScript Module Harmony
  • 【俗・】Deno に“守り”のコントリビュートをしてきた話

    Deno に“守り”のコントリビュートをしてきた話の続編です。読んでない方はまずそちらから御覧ください。 primordials.js について Deno が提供している API は多くが JavaScript で実装されています。もし何も考えずに単純な JavaScript のコードで API を実装してしまっていた場合、ネイティブのプロトタイプメソッドが変更されてしまったときに影響を受けてしまいます。 この問題を回避するため Deno の内部コードでは primordials.js というものが用意されてあります。 継続的な“守り”のコントリビュート 前回の記事から半年弱が経ちましたが、相変わらず継続的に primordials.js 周りの“守り”のコントリビュートを続けていました。また振り返っていきたいと思います。 5. for-of をやめてパフォーマンスの問題を緩和 前回 pr

    【俗・】Deno に“守り”のコントリビュートをしてきた話
  • Deno に“守り”のコントリビュートをしてきた話

    この記事は Deno の内部コードについて述べています。一般的な JavaScript アプリケーションでは考慮しなくていい内容がほとんどを占めます。ご注意ください。 primordials.js について Deno が提供している API は多くが JavaScript で実装されています。もし何も考えずに単純な JavaScript のコードで API を実装してしまっていた場合、ネイティブのプロトタイプメソッドが変更されてしまったときに影響を受けてしまいます。 この問題を回避するため Deno の内部コードでは primordials.js というものが用意されてあります。一旦ネイティブのメソッドをキャッシュしておいて、通常のメソッド呼び出しを使わずにこちらを使うようになっています。 例えばコンソールで表示するために、Error オブジェクトの cause プロパティを辿って文字列化

    Deno に“守り”のコントリビュートをしてきた話
  • 正規表現を豊かにする ES2024 RegExp v (unicodeSets) フラグ

    2023/05/17 変更】 2023年5月の TC39 会議で Stage 4 になったため、タイトルを変更 HTML Standard の pattern 属性に取り込まれたので修正 ES2024 RegExp v (unicodeSets) フラグ ES2024 に RegExp v (unicodeSets) フラグというものがあります。これは既存の u (unicode) フラグを改善して置き換え、機能追加することを目的としています。 詳しい内容については V8 や 2ality による解説記事が詳しいです。ここではその概要をピックアップして述べたいと思います。 複数のコードポイントからなる絵文字の対応(Unicode Properties of Strings) ES2015 に u (unicode) フラグが導入され、コードポイント単位で正規表現を扱えるようになりました。

    正規表現を豊かにする ES2024 RegExp v (unicodeSets) フラグ
  • TypeScript で幽霊型っぽいものをつくる

    この実装だと当然エンコード済みの文字列も渡せてしまい、多重エンコードが起きる。未エンコードの文字列だけが渡ってくることをコンパイラレベルで検出したい。 幽霊型(Phantom Type) こういうとき、他の言語ではよく幽霊型が用いられる。次のリンク先は Scala での実装例を紹介している https://www.slideshare.net/AkinoriAbe1/aja-2016623 // 上記スライドの 6 枚目より class Str[T] (val str: String) trait Normal trait Encoded def encode(x: Str[Normal]) = new Str[Encoded](...) 内部では利用されない型パラメータ( Normal Encoded )を使って、Str[T] にはそういう種類があること、 Str[Normal] と S

    TypeScript で幽霊型っぽいものをつくる
    igrep
    igrep 2021/06/01
    "「必須だけど絶対に値が存在しないキー」を作る" なるほどー!
  • 1