Dart Sassの発衚

過去数ヶ月間、私たちは静かに新しいプロゞェクトに取り組んできたした。 今日、私はダヌト・サスを党䞖界に発衚する準備ができおいたす。 これは、むンストヌルず開発が迅速か぀簡単になるように蚭蚈された、たったく新しいSass実装です。 ただ完成しおいたせん-私はそれをSass仕様に合わせようず取り組んでいたす-だから今日はバヌゞョン1.0.0-alpha.1を公開しおいたす。 しかし、ダりンロヌドしお、それを䜿っお、 バグの報告を開始できるほど信頌性がありたす。









リリヌスペヌゞからアヌカむブをダりンロヌドできたす-単に解凍し、ディレクトリをパスに远加し、 dart-sass



を実行したす。 DartもJavaScriptでコンパむルされおいるため、 npmがむンストヌルされおいる堎合は、 npm install -g dart-sass



実行しおJSバヌゞョンをむンストヌルできたす。 あなた自身がすでにDartナヌザヌである堎合は、 pub global dart-sass



からむンストヌルできたす。







Sassを曞き換える理由



過去数幎にわたっお、Sassの2぀の䞻芁な実装がありたした。 Ruby Sassは、䞻にChrisの倚倧なサポヌトを受けお私が曞いた最初のものです。 高レベルで簡単に開発でき、新しい機胜を導入しおリリヌスした堎所でした。 それから、もずもずアヌロンずハンプトンによっお䜜成され、珟圚はマルセルずマむケルによっおサポヌトされおいるC ++実装であるLibSassが登堎したした。 これは䜎レベルのバヌゞョンであり、他の蚀語にすばやく簡単にむンストヌルしお埋め蟌むこずができたす。 特に、 Node.jsぞのバむンドは、JavaScriptの䞖界でSassを䜿甚する非垞に䞀般的な方法です。







各バヌゞョンのメリットは、他のバヌゞョンの匱点を補完したす。 LibSassが高速で移怍性がある堎合、Ruby Sassは遅く、Ruby以倖のナヌザヌがむンストヌルするのは困難です。 しかし、Ruby Sassは開発が容易ですが、LibSassでは䜎レベル蚀語のために新しい機胜を远加するこずははるかに困難です。 補完的な関係は健党である可胜性がありたすが、それは、どの゜リュヌションも本来あるべきほど良いものではないこずも意味したす。 5月にMarcelがLibSassチヌムを正匏に蟞任したずき、これを芋぀けたした。  著者のメモ私は「公匏に」ず蚀いたす。なぜなら圌は可胜な限りプロゞェクトに参加しおいるからです。しかし、圌が公匏の開発者である限りではありたせん。







2人の努力を奪われお、LibSassがペヌスを維持できるかどうか確信が持おなかったので、クリスず私は䜿甚する蚀語を倉曎したかったのです。 長い間、倧きなスタむルシヌトを凊理する堎合、Ruby Sassの方がはるかに遅いこずが明らかでした。 CSS をすばやく生成し、新しい機胜をすばやく远加できる新しい実装が必芁でした。







なぜダヌツ



考えられるいく぀かの蚀語を調べ、いく぀かの理由でDartに決めたした。 たず、それは非垞に高速です -Dart-VMは基本的にJavaScript VMよりもはるかに高速であり、 予備のベンチマヌクでは、倧きなDart Sassファむルの堎合、Ruby Sassの5-10倍、LibSassの1.5倍しか遅いこずが瀺されおいたす。  著者泚私はベンチマヌクの専門家ではなく、テストは遞択されたしたアドホック- トランス 。代衚的ではない゜ヌスファむル。科孊的な枬定に興味がある方はお知らせください。 専甚のJS実装より1.5〜2倍高速になるず慎重に想定しおいたすが、確実には蚀えたせん。 さらに、Dartのパフォヌマンスは時間ずずもに向䞊したす。







Dartは簡単に操䜜できたすが、このような倧芏暡なプロゞェクトでは、C ++よりもはるかに簡単で、Rubyよりもやや簡単です。 もちろん、JavaScriptのようにこれに粟通しおいる人は倚くありたせんが、蚀語の実装に関する䜜業は、いずれにしおも倖郚の参加者が倚いこずを意味するものではありたせん。 私は新しい実装でほずんどの䜜業を行いたすが、Dartは珟時点で個人的に安心できる蚀語ですSassに取り組んでいないずきは、Dartチヌムに所属しおいたす。 Dartを䜿甚するず、速床が向䞊したす。







RubyやJavaScriptずは異なり、Dartは静的に型付けされるため、コヌド自䜓を実行するこずなく各倀の型を掚枬できたす。 たた、C ++ずは異なり、ガベヌゞコレクションを䜿甚したす 。぀たり、自分で敎理敎頓するこずを心配する必芁はありたせん。 これにより、䜜成、線集、および保守が簡単になりたす。 おそらくさらに重芁なこずは、他のプログラミング蚀語に簡単に翻蚳できるため、LibSassが新しい機胜をより高速に取埗できるようになるこずです。







Dartを遞択する最埌の理由は、少数の蚀語が誇るもの、぀たりJavaScriptの互換性です。 DartはJavaScriptにコンパむルでき、Node.jsで盎接䜿甚するこずも、ブラりザで䜿甚するこずもできたす。 Sass゚コシステムの倧郚分はnode-sassで構築されおおり、既存のビルドツヌルずシステムを新しいバヌゞョンに簡単に移行できるように、JSバヌゞョンのDart Sassを可胜な限りnode-sassずAPI互換にする予定です。







ここでの唯䞀の欠点は速床の䜎䞋です。V8での実行時のDart Sassの速床は、Dart VMの玄2倍です。 ただし、Ruby Sassに比べお3〜4倍の安定した増加が芋られたす。 最終的には、JSバヌゞョンのナヌザヌにできるだけ簡単にDart VMぞの移行パスを提䟛できるこずを願っおいたす。







他の実装はどうなりたすか



LibSassの開発に倉曎はありたせん。 マむケルは、 Sass 3.5から新しい機胜を远加するために䞀生懞呜に取り組んでおり、新しい機胜が远加されおもこのプロセスが継続するこずを期埅しおいたす。 唯䞀の違いは、LibSassが劥圓なパフォヌマンスを持぀唯䞀のバヌゞョンではなくなるため、このバヌゞョン自䜓を起動する前に、LibSassが最新バヌゞョンの蚀語ず厳密に互換性を持぀必芁がなくなるこずです。







柔軟性が高たるず、LibSassのリリヌスが速くなり、ナヌザヌが最も望む機胜が匷調されたす。 厳密な互換性は、たずえばカスタムCSSプロパティのサポヌトなどの重芁な革新が、Ruby Sassの察応するバヌゞョンに含たれおいたすべおの小さくおトリッキヌな境界ケヌス、たずえば :root



が凊理されるたでリリヌスできないこずを意味したした :root



可胜な限り最倧限の互換性を実珟しようずしおいたすが、速床を劚げるこずはできたせん。







圌の新しい開発者が来ない限り、Ruby Sassは最終的に完党に終了したす。 ゚コシステムを砎壊するリスクがあるため、移行を突然行いたくありたせん。クリスず私は1幎間サポヌトしたす。これには、Dart Sassに远加されるのず同じレベルの機胜のサポヌトが含たれたす。 この期間を過ぎお開発者ずしお参加するこずに興味がある人は、来幎のコヌドを玹介させおいただきたす。 そしお誰も話さない堎合、Ruby Sassは廃止されサポヌトされおいないものずしお公匏に認識されたす。







私は、Ruby Sassの開発を無料で停止する決定を䞋しおいないこずを匷調したいず思いたす。 これは私にずっお倧きな倉曎であり、簡単な倉曎ではありたせん。ほが10幎間継続的に取り組んでおり、この話を手攟すのは難しいです。 しかし、クリスず私はこれに぀いお培底的に議論し、これが正しい動きであるず信じる傟向がありたした。 Sassに倚くの時間を費やしおいるため、この時間を実装に費やすこずはもはや意味をなさないため、非垞に遅いため、最倧のナヌザヌには受け入れられたせん。







次は䜕ですか



Dart Sassの最初の安定バヌゞョンをリリヌスする前に、リストにいく぀かの玠晎らしいものがありたす。









ブラりザヌでSassをサポヌトし、Dart VMでSassにノヌドず互換性のあるラッパヌを提䟛するなど、最終的に䜜成したいポむントがいく぀かありたすが、初期リリヌスはブロックされたせん。







未来の未来



今埌数か月にわたっお、Dart Sassの安定性ず互換性を高めるずずもに、LibSassにSass 3.5の機胜を远加するために倚くの䜜業を行う予定です。 2017幎初頭には、Dart Sassの安定リリヌスずLibSass 3.5のバヌゞョンがリリヌスされる可胜性が高いず思いたす。 珟時点では、䞻芁な機胜に関する芋解を決定し、Sass 4.0ずその完党に新しいモゞュヌルシステムでの䜜業を開始したす。







Dart Sassは倧きな倉化ではありたせんが、同時に刺激的です。 これにより、ナヌザヌに新しい機胜をより迅速に提䟛できるだけでなく、この機胜をより高速に動䜜させるこずができたす。 さらに、ナヌザヌはリファレンス実装を簡単にむンストヌルしお実行できたす。 そしお最埌に、これにより、Sassを玔粋なJavaScriptで実行する生産的な方法が初めお提䟛されたす。 メリットは非垞に倧きく具䜓的であるため、コストに芋合うだけの䟡倀があるず確信しおいたす。








All Articles