JSer.info #311 - Safari Technology Preview Release 20とMSEdgeのJavaScriptエンジンであるChakraCore 1.4.0が公開されています。
どちらもSharedArrayBufferが実装されています。
SharedArrayBufferは、WebWorkerとの間でもデータを共有できるStage 3のProposal仕様です。
データをコピーやTransferではなく、メモリで共有する仕様です。(いわゆる共有メモリ)
複数のスレッドがメモリ内の同じデータを読み書きするため、スレッドセーフなAPIが必要になります。
そのため、tc39/ecmascript_sharedmemの仕様では不可分操作を提供するAtomics
APIが合わせて定義されています。
SharedArrayBufferとAtomics APIについて、詳しくは次のURLを見るのが良いと思います。
- tc39/ecmascript_sharedmem: Shared memory and atomics for ECMAscript
- A Taste of JavaScript’s New Parallel Primitives ★ Mozilla Hacks – the Web developer blog(翻訳)
- JavaScriptでの並列プログラミング: 共有メモリーと不可分操作、ロック // Speaker Deck
- SharedArrayBufferとAtomics APIについて - JS.next
Stage 3の仕様ですが、既に2つ以上の実装があるため、次のTC39 Meeting(2017年1月)でStage 4となる予定です。
そのため、ES2017として公開される可能性があります。
この仕様に先んじて、ECMAScriptに"Agent"という概念が既に追加されています。
また、2016年11月のTC39 MeetingでStageが変わったProposalは次の記事にまとめてあります。
Stream API入門 - Qiitaでは、Node.jsのStream APIについて解説されています。コールバックやPromise、Generator、async/awaitなどの非同期処理についても触れています。
Node.js Streamの特徴の一つでもあるバッファリングとバックプレッシャーについては合わせて次の記事を見てみるといいかもしれません。
これとは別で、WHATWGが提案しているStreams Standard(Fetch APIなどと連携する)も合わせて見ると面白いかもしれません。
また、データのストリーム処理はJavaScriptという言語にかぎらずあるものなので、次の記事も見てみるとストリーム処理の特徴が分かりやすいかもしれません。
ヘッドライン
Say allo' to yeoman-generator 1.0 | Yeoman
yeoman.io/blog/hello-generator-1.0.html
Yeoman-generator 1.0リリース。
composeWith
のAPIを簡略化、Yarnサポート、deprecatedなAPIを削除など
Release Notes · Microsoft/ChakraCore Wiki
github.com/Microsoft/ChakraCore/wiki/Release-Notes#v140
ChakraCore 1.4リリース。
JITがLinuxやmacOSでも有効化、async/awaitをデフォルトで有効化、SharedArrayBufferを実験的にサポート、wasmの実験的サポートなど
Release Notes for Safari Technology Preview 20 | WebKit
webkit.org/blog/7120/release-notes-for-safari-technology-preview-20/
Safari Technology Preview Release 20リリース。
Visual Viewport、SharedArrayBufferを有効化、block-all-mixed-content
の追加、BlinkからportしたCSSパーサを使うようになるなど
- What the Virtual Viewport? | Web | Google Developers
- lars-t-hansen/ecmascript_sharedmem: Placeholder for old shared memory spec
Release 3rd Mutation · canjs/canjs
github.com/canjs/canjs/releases/tag/v3.0.0
CanJS 3.0リリース
コードはcan-*
からなるモジュールに分割され、.attr()
の代わりにDefineMap
の導入など
アーティクル
ECMAScript proposal updates @ 2016-11 | ECMAScript Daily
ecmascript-daily.github.io/ecmascript/2016/12/22/ecmascript-proposals
2016年11月のTC39ミーティングでのProposalのStage変動をまとめたもの
Stream API入門 - Qiita
qiita.com/Mizunashi_Mana/items/872354cd7bf25090932f
Node.jsのStream APIについて。
非同期処理のコールバック、Promise、async/await、generatorを踏まえてのStreamについての解説。
Write/Read/Duplex、Stream処理が得意とすること、objectMode
についてなど幅広く解説されてる
CSS Writing Modes ◆ 24 ways
24ways.org/2016/css-writing-modes/
CSSのwriting-mode
プロパティについての解説
かずぽんブログ • Vue.js 2016年まとめ & 今後
blog.kazupon.jp/post/154903508388/vuejs-2016-closing-and-future
2016年のVue.jsの変化について。
Vue.js 2.0、コミュニティ、エコシステム、利用範囲や今後について
Firebug lives on in Firefox DevTools ★ Mozilla Hacks – the Web developer blog
hacks.mozilla.org/2016/12/firebug-lives-on-in-firefox-devtools/
Firebugは開発終了したが、多くの機能はFirefoxの開発者ツールに引き継がれている/引き継ぐ予定があるという話。
またFirebugはマルチプロセス対応を念頭に開発されたものではなかったため、Firebugを拡張するよりも、Firefoxの開発者ツールを拡張していく方が良いという決定がされた。
Web アクセシビリティ向け Node.js 製の自動チェックツールや DevTools 用の拡張機能など ::ハブろぐ
havelog.ayumusato.com/develop/a11y/e732-a11y_checking_automate.html
Webアクセシビリティの自動チェックツールや補助ツールの紹介。
JavaScriptのUIライブラリはどうあるべきかという話とOnsen UIのアーキテクチャ - id:anatooのブログ
blog.anatoo.jp/entry/2016/12/09/201511
特定のUIフレームワークに依存されないUIフレームワークの基盤をどのように作るかという話。
CSS Components層、Web Components層、フレームワークバインディング層のレイヤー分けについて
ServiceWorker内にExpressサーバーを立てる - Qiita
qiita.com/narirou/items/738a0fe6656d0f905e28
express-serviceがどのようにして実際のNode.jsで動くExpressのコードをServiceWorkerの中でも擬似的に動かしているのかについての解説
サイト、サービス、ドキュメント
Accessibility - Learn web development | MDN
developer.mozilla.org/en-US/docs/Learn/Accessibility
アクセシビリティについてのガイド
SpeedTracker
個人向けに使うCalibreやSpeedCurveのような継続的なパフォーマンス計測サービス。
WebPageTestで取った結果をGitHubリポジトリにJekyllで動くようにデータをpushしてくれる。
ソフトウェア、ツール、ライブラリ関係
Mithril、Vue.jsの仮想DOM用のi18nライブラリ作った - Qiita
qiita.com/shibukawa/items/c2298b21b4629941b230
Node.jsでもブラウザでも動作するi18nライブラリ。
プレースホルダ、複数形、コンテキスト、data-i18n
属性に対する翻訳する機能を持つ
devongovett/regexgen: Generate regular expressions that match a set of strings
github.com/devongovett/regexgen
複数の文字列を渡して、それにマッチする正規表現を作るライブラリ
javascript-obfuscator/javascript-obfuscator: JavaScript obfuscator for Node.js
github.com/javascript-obfuscator/javascript-obfuscator
JavaScriptの難読化ツール/ライブラリ。
ES2015+のコードを扱うことができ、Source Mapにも対応している
amilajack/eslint-plugin-compat: Browser and ES spec compatibility assertion with ESLint
github.com/amilajack/eslint-plugin-compat
AutoPrefixerのように想定ブラウザを記述し、そのブラウザで動かないAPIを使ってないかをチェックするESLintルール。
caniuseやcompat tableのデータを使う