From 4401a046c4c86132afdcc7edddc7d6fb9cc2f028 Mon Sep 17 00:00:00 2001 From: Noah Gibbs Date: Fri, 3 Mar 2023 17:17:23 +0000 Subject: [PATCH 01/62] Initial commit --- site/BUILT_REPORTS | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 site/BUILT_REPORTS diff --git a/site/BUILT_REPORTS b/site/BUILT_REPORTS new file mode 100644 index 000000000..e69de29bb From f31c0ac72edb5247287d43cafcb20be34c608912 Mon Sep 17 00:00:00 2001 From: Noah Gibbs Date: Fri, 3 Mar 2023 17:28:38 +0000 Subject: [PATCH 02/62] Import of source files for speed.yjit.org --- site/BUILT_REPORTS | 0 site/CNAME | 1 + site/Gemfile | 37 + site/Gemfile.lock | 289 ++++++ site/README.md | 17 + site/_config.yml | 58 ++ site/_includes/events.json | 42 + site/_layouts/basic.html | 156 +++ site/_layouts/benchmark_details.html | 280 ++++++ site/_layouts/default.html | 51 + site/_sass/jekyll-theme-slate.scss | 497 ++++++++++ site/_sass/rouge-github.scss | 209 ++++ site/_sass/slate.scss | 4 + site/about.md | 10 + site/assets/css/style.scss | 26 + .../images/YJIT_logo_black_1537_416.png | Bin 0 -> 30521 bytes site/assets/images/YJIT_logo_black_277_75.png | Bin 0 -> 12935 bytes site/assets/images/YJIT_logo_red_1535_416.png | Bin 0 -> 30929 bytes site/assets/images/YJIT_logo_red_277_75.png | Bin 0 -> 13275 bytes .../images/YJIT_logo_white_1537_416.png | Bin 0 -> 27839 bytes site/assets/images/YJIT_logo_white_277_75.png | Bin 0 -> 9881 bytes site/assets/images/bg_hr.png | Bin 0 -> 78 bytes site/assets/images/blacktocat.png | Bin 0 -> 463 bytes site/assets/images/icon_download.png | Bin 0 -> 216 bytes site/assets/images/sprite_download.png | Bin 0 -> 14832 bytes site/assets/images/ufuk_yjit_logo.png | Bin 0 -> 30929 bytes site/assets/js/clipboard.js | 890 ++++++++++++++++++ site/assets/js/clipboard.min.js | 7 + site/history.md | 35 + site/images/loading.gif | Bin 0 -> 5401 bytes site/images/yjit_logo.png | Bin 0 -> 30929 bytes site/index.md | 74 ++ site/memory_timeline.md | 393 ++++++++ site/stats-timeline.md | 396 ++++++++ site/timeline-deep.md | 449 +++++++++ 35 files changed, 3921 insertions(+) delete mode 100644 site/BUILT_REPORTS create mode 100644 site/CNAME create mode 100644 site/Gemfile create mode 100644 site/Gemfile.lock create mode 100644 site/README.md create mode 100644 site/_config.yml create mode 100644 site/_includes/events.json create mode 100644 site/_layouts/basic.html create mode 100644 site/_layouts/benchmark_details.html create mode 100644 site/_layouts/default.html create mode 100644 site/_sass/jekyll-theme-slate.scss create mode 100644 site/_sass/rouge-github.scss create mode 100644 site/_sass/slate.scss create mode 100644 site/about.md create mode 100644 site/assets/css/style.scss create mode 100644 site/assets/images/YJIT_logo_black_1537_416.png create mode 100644 site/assets/images/YJIT_logo_black_277_75.png create mode 100644 site/assets/images/YJIT_logo_red_1535_416.png create mode 100644 site/assets/images/YJIT_logo_red_277_75.png create mode 100644 site/assets/images/YJIT_logo_white_1537_416.png create mode 100644 site/assets/images/YJIT_logo_white_277_75.png create mode 100644 site/assets/images/bg_hr.png create mode 100644 site/assets/images/blacktocat.png create mode 100644 site/assets/images/icon_download.png create mode 100644 site/assets/images/sprite_download.png create mode 100644 site/assets/images/ufuk_yjit_logo.png create mode 100644 site/assets/js/clipboard.js create mode 100644 site/assets/js/clipboard.min.js create mode 100644 site/history.md create mode 100644 site/images/loading.gif create mode 100644 site/images/yjit_logo.png create mode 100644 site/index.md create mode 100644 site/memory_timeline.md create mode 100644 site/stats-timeline.md create mode 100644 site/timeline-deep.md diff --git a/site/BUILT_REPORTS b/site/BUILT_REPORTS deleted file mode 100644 index e69de29bb..000000000 diff --git a/site/CNAME b/site/CNAME new file mode 100644 index 000000000..a09cfac71 --- /dev/null +++ b/site/CNAME @@ -0,0 +1 @@ +speed.yjit.org \ No newline at end of file diff --git a/site/Gemfile b/site/Gemfile new file mode 100644 index 000000000..6290bf92d --- /dev/null +++ b/site/Gemfile @@ -0,0 +1,37 @@ +source "https://rubygems.org" +# Hello! This is where you manage which Jekyll version is used to run. +# When you want to use a different version, change it below, save the +# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: +# +# bundle exec jekyll serve +# +# This will help ensure the proper Jekyll version is running. +# Happy Jekylling! +#gem "jekyll", "~> 4.1.1" +# This is the default theme for new Jekyll sites. You may change this to anything you like. +#gem "minima", "~> 2.5" +# If you want to use GitHub Pages, remove the "gem "jekyll"" above and +# uncomment the line below. To upgrade, run `bundle update github-pages`. +gem "github-pages", "~> 207", group: :jekyll_plugins +# If you have any plugins, put them here! +group :jekyll_plugins do + gem "jekyll-feed", "~> 0.12" + gem "jekyll-relative-links" +end + +gem "webrick" + +# The speed report uses the Victor gem +gem "victor" + +# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem +# and associated library. +platforms :mingw, :x64_mingw, :mswin, :jruby do + gem "tzinfo", "~> 1.2" + gem "tzinfo-data" +end + +# Performance-booster for watching directories on Windows +gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin] + + diff --git a/site/Gemfile.lock b/site/Gemfile.lock new file mode 100644 index 000000000..dcb40b538 --- /dev/null +++ b/site/Gemfile.lock @@ -0,0 +1,289 @@ +GEM + remote: https://rubygems.org/ + specs: + activesupport (6.0.4.1) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 0.7, < 2) + minitest (~> 5.1) + tzinfo (~> 1.1) + zeitwerk (~> 2.2, >= 2.2.2) + addressable (2.8.0) + public_suffix (>= 2.0.2, < 5.0) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.11.1) + colorator (1.1.0) + commonmarker (0.17.13) + ruby-enum (~> 0.5) + concurrent-ruby (1.1.9) + dnsruby (1.61.7) + simpleidn (~> 0.1) + em-websocket (0.5.2) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0.6.0) + ethon (0.14.0) + ffi (>= 1.15.0) + eventmachine (1.2.7) + execjs (2.8.1) + faraday (1.7.0) + faraday-em_http (~> 1.0) + faraday-em_synchrony (~> 1.0) + faraday-excon (~> 1.1) + faraday-httpclient (~> 1.0.1) + faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.1) + faraday-patron (~> 1.0) + faraday-rack (~> 1.0) + multipart-post (>= 1.2, < 3) + ruby2_keywords (>= 0.0.4) + faraday-em_http (1.0.0) + faraday-em_synchrony (1.0.0) + faraday-excon (1.1.0) + faraday-httpclient (1.0.1) + faraday-net_http (1.0.1) + faraday-net_http_persistent (1.2.0) + faraday-patron (1.0.0) + faraday-rack (1.0.0) + ffi (1.15.3) + forwardable-extended (2.6.0) + gemoji (3.0.1) + github-pages (207) + github-pages-health-check (= 1.16.1) + jekyll (= 3.9.0) + jekyll-avatar (= 0.7.0) + jekyll-coffeescript (= 1.1.1) + jekyll-commonmark-ghpages (= 0.1.6) + jekyll-default-layout (= 0.1.4) + jekyll-feed (= 0.13.0) + jekyll-gist (= 1.5.0) + jekyll-github-metadata (= 2.13.0) + jekyll-mentions (= 1.5.1) + jekyll-optional-front-matter (= 0.3.2) + jekyll-paginate (= 1.1.0) + jekyll-readme-index (= 0.3.0) + jekyll-redirect-from (= 0.15.0) + jekyll-relative-links (= 0.6.1) + jekyll-remote-theme (= 0.4.1) + jekyll-sass-converter (= 1.5.2) + jekyll-seo-tag (= 2.6.1) + jekyll-sitemap (= 1.4.0) + jekyll-swiss (= 1.0.0) + jekyll-theme-architect (= 0.1.1) + jekyll-theme-cayman (= 0.1.1) + jekyll-theme-dinky (= 0.1.1) + jekyll-theme-hacker (= 0.1.1) + jekyll-theme-leap-day (= 0.1.1) + jekyll-theme-merlot (= 0.1.1) + jekyll-theme-midnight (= 0.1.1) + jekyll-theme-minimal (= 0.1.1) + jekyll-theme-modernist (= 0.1.1) + jekyll-theme-primer (= 0.5.4) + jekyll-theme-slate (= 0.1.1) + jekyll-theme-tactile (= 0.1.1) + jekyll-theme-time-machine (= 0.1.1) + jekyll-titles-from-headings (= 0.5.3) + jemoji (= 0.11.1) + kramdown (= 2.3.0) + kramdown-parser-gfm (= 1.1.0) + liquid (= 4.0.3) + mercenary (~> 0.3) + minima (= 2.5.1) + nokogiri (>= 1.10.4, < 2.0) + rouge (= 3.19.0) + terminal-table (~> 1.4) + github-pages-health-check (1.16.1) + addressable (~> 2.3) + dnsruby (~> 1.60) + octokit (~> 4.0) + public_suffix (~> 3.0) + typhoeus (~> 1.3) + html-pipeline (2.14.0) + activesupport (>= 2) + nokogiri (>= 1.4) + http_parser.rb (0.6.0) + i18n (0.9.5) + concurrent-ruby (~> 1.0) + jekyll (3.9.0) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 0.7) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 2.0) + kramdown (>= 1.17, < 3) + liquid (~> 4.0) + mercenary (~> 0.3.3) + pathutil (~> 0.9) + rouge (>= 1.7, < 4) + safe_yaml (~> 1.0) + jekyll-avatar (0.7.0) + jekyll (>= 3.0, < 5.0) + jekyll-coffeescript (1.1.1) + coffee-script (~> 2.2) + coffee-script-source (~> 1.11.1) + jekyll-commonmark (1.3.1) + commonmarker (~> 0.14) + jekyll (>= 3.7, < 5.0) + jekyll-commonmark-ghpages (0.1.6) + commonmarker (~> 0.17.6) + jekyll-commonmark (~> 1.2) + rouge (>= 2.0, < 4.0) + jekyll-default-layout (0.1.4) + jekyll (~> 3.0) + jekyll-feed (0.13.0) + jekyll (>= 3.7, < 5.0) + jekyll-gist (1.5.0) + octokit (~> 4.2) + jekyll-github-metadata (2.13.0) + jekyll (>= 3.4, < 5.0) + octokit (~> 4.0, != 4.4.0) + jekyll-mentions (1.5.1) + html-pipeline (~> 2.3) + jekyll (>= 3.7, < 5.0) + jekyll-optional-front-matter (0.3.2) + jekyll (>= 3.0, < 5.0) + jekyll-paginate (1.1.0) + jekyll-readme-index (0.3.0) + jekyll (>= 3.0, < 5.0) + jekyll-redirect-from (0.15.0) + jekyll (>= 3.3, < 5.0) + jekyll-relative-links (0.6.1) + jekyll (>= 3.3, < 5.0) + jekyll-remote-theme (0.4.1) + addressable (~> 2.0) + jekyll (>= 3.5, < 5.0) + rubyzip (>= 1.3.0) + jekyll-sass-converter (1.5.2) + sass (~> 3.4) + jekyll-seo-tag (2.6.1) + jekyll (>= 3.3, < 5.0) + jekyll-sitemap (1.4.0) + jekyll (>= 3.7, < 5.0) + jekyll-swiss (1.0.0) + jekyll-theme-architect (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-cayman (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-dinky (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-hacker (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-leap-day (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-merlot (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-midnight (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-minimal (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-modernist (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-primer (0.5.4) + jekyll (> 3.5, < 5.0) + jekyll-github-metadata (~> 2.9) + jekyll-seo-tag (~> 2.0) + jekyll-theme-slate (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-tactile (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-time-machine (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-titles-from-headings (0.5.3) + jekyll (>= 3.3, < 5.0) + jekyll-watch (2.2.1) + listen (~> 3.0) + jemoji (0.11.1) + gemoji (~> 3.0) + html-pipeline (~> 2.2) + jekyll (>= 3.0, < 5.0) + kramdown (2.3.0) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.3) + listen (3.7.0) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + mercenary (0.3.6) + mini_portile2 (2.6.1) + minima (2.5.1) + jekyll (>= 3.5, < 5.0) + jekyll-feed (~> 0.9) + jekyll-seo-tag (~> 2.1) + minitest (5.14.4) + multipart-post (2.1.1) + nokogiri (1.12.3) + mini_portile2 (~> 2.6.1) + racc (~> 1.4) + octokit (4.21.0) + faraday (>= 0.9) + sawyer (~> 0.8.0, >= 0.5.3) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (3.1.1) + racc (1.5.2) + rb-fsevent (0.11.0) + rb-inotify (0.10.1) + ffi (~> 1.0) + rexml (3.2.5) + rouge (3.19.0) + ruby-enum (0.9.0) + i18n + ruby2_keywords (0.0.5) + rubyzip (2.3.2) + safe_yaml (1.0.5) + sass (3.7.4) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + sawyer (0.8.2) + addressable (>= 2.3.5) + faraday (> 0.8, < 2.0) + simpleidn (0.2.1) + unf (~> 0.1.4) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + thread_safe (0.3.6) + typhoeus (1.4.0) + ethon (>= 0.9.0) + tzinfo (1.2.9) + thread_safe (~> 0.1) + unf (0.1.4) + unf_ext + unf_ext (0.0.7.7) + unicode-display_width (1.7.0) + victor (0.3.4) + webrick (1.7.0) + zeitwerk (2.4.2) + +PLATFORMS + arm64-darwin-21 + x86_64-darwin-20 + x86_64-linux + +DEPENDENCIES + github-pages (~> 207) + jekyll-feed (~> 0.12) + jekyll-relative-links + tzinfo (~> 1.2) + tzinfo-data + victor + wdm (~> 0.1.1) + webrick + +BUNDLED WITH + 2.3.26 diff --git a/site/README.md b/site/README.md new file mode 100644 index 000000000..46e7654eb --- /dev/null +++ b/site/README.md @@ -0,0 +1,17 @@ +# YJIT-metrics Pages Branch + +This branch is only used for generated GitHub Pages output. Please see the +[continuous_reporting subdirectory of the main branch](https://github.com/Shopify/yjit-metrics/tree/main/continuous_reporting) +if you want to know how this is automatically updated. + +## Jekyll Documentation + +Do you have this repo checked out? Great! Here's how you can use and test it. + +* To build: "bundle exec jekyll build" +* To serve: "bundle exec jekyll serve" +* To view: "http://127.0.0.1:4000/" in your browser. + +Having a difficult time with the theme? +[Here is its source code](https://github.com/pages-themes/slate) + diff --git a/site/_config.yml b/site/_config.yml new file mode 100644 index 000000000..bdb2049e7 --- /dev/null +++ b/site/_config.yml @@ -0,0 +1,58 @@ +# Welcome to Jekyll! +# +# This config file is meant for settings that affect your whole blog, values +# which you are expected to set up once and rarely edit after that. If you find +# yourself editing this file very often, consider using Jekyll's data files +# feature for the data you need to update frequently. +# +# For technical reasons, this file is *NOT* reloaded automatically when you use +# 'bundle exec jekyll serve'. If you change this file, please restart the server process. +# +# If you need help with YAML syntax, here are some quick references for you: +# https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml +# https://learnxinyminutes.com/docs/yaml/ +# +# Site settings +# These are used to personalize your new site. If you look in the HTML files, +# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. +# You can create any custom variable you would like, and they will be accessible +# in the templates via {{ site.myvariable }}. + +title: YJIT Benchmarks +description: >- # this means to ignore newlines until "baseurl:" + Benchmarks and continuous checks for YJIT performance. +baseurl: "/" # the subpath of your site, e.g. /blog +url: "" # the base hostname & protocol for your site, e.g. http://example.com +github_username: Shopify + +# Build settings +#remote_theme: pages-themes/slate@v0.2.0 +plugins: + - jekyll-feed + - jekyll-relative-links +# - jekyll-remote-theme + +# Exclude from processing. +# The following items will not be processed, by default. +# Any item listed under the `exclude:` key here will be automatically added to +# the internal "default list". +# +# Excluded items can be processed by explicitly listing the directories or +# their entries' file path in the `include:` list. +# +# exclude: +# - .sass-cache/ +# - .jekyll-cache/ +# - gemfiles/ +# - Gemfile +# - Gemfile.lock +# - node_modules/ +# - vendor/bundle/ +# - vendor/cache/ +# - vendor/gems/ +# - vendor/ruby/ + +collections: + benchmarks: + output: true + permalink: /:collection/:name diff --git a/site/_includes/events.json b/site/_includes/events.json new file mode 100644 index 000000000..cc0dc9891 --- /dev/null +++ b/site/_includes/events.json @@ -0,0 +1,42 @@ +[ + { + "time": "2022-01-26 22:00:00", + "description": "Drop in performance due to changing AWS instances" + }, + { + "time": "2022-05-09 19:00:00", + "description": "Slowdown due to CRuby commit 85479b34f76d5b426c2a8" + }, + { + "time": "2022-06-08 19:00:00", + "description": "Fix for May 9th slowdown, commit 8d57336360497e94" + }, + { + "time": "2022-06-07 19:00:00", + "description": "Slowdown in some benchmarks due to configuring local Rubies with CC=clang" + }, + { + "time": "2022-06-09 19:00:00", + "description": "Revert CC=clang config in yjit-metrics, fix June 7th slowdown" + }, + { + "time": "2022-09-30 06:00:00", + "description": "ARM64 and yjit-metrics multiplatform changes; changes to warmup params; general benchmarking churn" + }, + { + "time": "2023-01-10 08:00:00", + "description": "Several ActiveRecord benchmark changes in functionality, which resulted in lower speed" + }, + { + "time": "2023-01-20 08:00:00", + "description": "Switchover to Jenkins, plus changes in warmup behaviour, though on same ARM AWS worker and different x86 AWS worker." + }, + { + "time": "2023-03-01 12:22:00", + "description": "Added srand to yjit-metrics test harness" + }, + { + "time": "2023-03-02 14:50:00", + "description": "Changed peak_mem_bytes to use /proc/smaps_rollup on Linux, not ps" + } +] diff --git a/site/_layouts/basic.html b/site/_layouts/basic.html new file mode 100644 index 000000000..1387956e6 --- /dev/null +++ b/site/_layouts/basic.html @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + +{% seo %} + + + + +
+
+ + +

YJIT Benchmarks

+
+
+
+ + +
+
+ {{ content }} +
+
+ + + + +
+
+ + + + diff --git a/site/_layouts/benchmark_details.html b/site/_layouts/benchmark_details.html new file mode 100644 index 000000000..2bea92073 --- /dev/null +++ b/site/_layouts/benchmark_details.html @@ -0,0 +1,280 @@ +--- +layout: basic +--- + +

Details for Benchmarks at {{ page.date_str }} {{ page.time_str }}

+ +
+{% include {{page.reports.blog_speed_headline_html}} %} +
The basic "faster" measurement is the geomean of all "headlining" x86 benchmarks on this page. +
+ +

Headlining Benchmarks

+ +

+ These are "headlining" because the "overall" speedup above is based on these benchmarks specifically. +

+ +
+ + Speed of each Ruby implementation (iterations/second) relative to the CRuby interpreter. Higher is better. +
+ +

Other Benchmarks

+ +
+ Speed of each Ruby implementation (iterations/second) relative to the CRuby interpreter. Higher is better. +
+ +

MicroBenchmarks

+ +
+ Speed of each Ruby implementation (iterations/second) relative to the CRuby interpreter. Higher is better. +
+ +

Want Raw Graphs and CSV?

+ + + +

Benchmarks Speed Details

+ +
+
+ +

Benchmark Memory Usage Details

+ +
+
+ +

Number of Iterations and Warmups Tested

+ +{% include {{page.reports.iteration_count_html}} %} + +

Benchmark YJIT Stats

+ +{% include {{page.reports.blog_yjit_stats_html}} %} + +

Note: currently, all stats are collected on x86_64, not ARM.

+ +

Raw JSON data files

+ +

+ All graphs and table data in this page comes from processing these data files, which come from benchmark runs. +

+ + + +
+ +

Far Too Many Details

+ +

These are links to HTML reports on GitHub with far, far too much detail about the benchmarking runs per-platform.

+ + + +
+{{ content | markdownify }} + + diff --git a/site/_layouts/default.html b/site/_layouts/default.html new file mode 100644 index 000000000..7cb777611 --- /dev/null +++ b/site/_layouts/default.html @@ -0,0 +1,51 @@ + + + + + + + + + +{% seo %} + + + + + +
+
+ {% if site.github.is_project_page %} + View on GitHub + {% endif %} + +

{{ site.title | default: site.github.repository_name }}

+

{{ site.description | default: site.github.project_tagline }}

+ + {% if site.show_downloads %} +
+ Download this project as a .zip file + Download this project as a tar.gz file +
+ {% endif %} +
+
+ + +
+
+ {{ content }} +
+
+ + + + + diff --git a/site/_sass/jekyll-theme-slate.scss b/site/_sass/jekyll-theme-slate.scss new file mode 100644 index 000000000..cc5d2e319 --- /dev/null +++ b/site/_sass/jekyll-theme-slate.scss @@ -0,0 +1,497 @@ +@import "rouge-github"; + +/******************************************************************************* +MeyerWeb Reset +*******************************************************************************/ + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font: inherit; + vertical-align: baseline; +} + +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} + +ol, ul { + list-style: none; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +/******************************************************************************* +Theme Styles +*******************************************************************************/ + +body { + box-sizing: border-box; + color:#373737; + background: #212121; + font-size: 16px; + font-family: 'Myriad Pro', Calibri, Helvetica, Arial, sans-serif; + line-height: 1.5; + -webkit-font-smoothing: antialiased; +} + +h1, h2, h3, h4, h5, h6 { + margin: 10px 0; + font-weight: 700; + color:#222222; + font-family: 'Lucida Grande', 'Calibri', Helvetica, Arial, sans-serif; + letter-spacing: -1px; +} + +h1 { + font-size: 36px; + font-weight: 700; +} + +h2 { + padding-bottom: 10px; + font-size: 32px; + background: url('../images/bg_hr.png') repeat-x bottom; +} + +h3 { + font-size: 24px; +} + +h4 { + font-size: 21px; +} + +h5 { + font-size: 18px; +} + +h6 { + font-size: 16px; +} + +p { + margin: 10px 0 15px 0; +} + +footer p { + color: #f2f2f2; +} + +a { + text-decoration: none; + color: #0F79D0; + text-shadow: none; + + transition: color 0.5s ease; + transition: text-shadow 0.5s ease; + -webkit-transition: color 0.5s ease; + -webkit-transition: text-shadow 0.5s ease; + -moz-transition: color 0.5s ease; + -moz-transition: text-shadow 0.5s ease; + -o-transition: color 0.5s ease; + -o-transition: text-shadow 0.5s ease; + -ms-transition: color 0.5s ease; + -ms-transition: text-shadow 0.5s ease; +} + +a:hover, a:focus { + text-decoration: underline; +} + +footer a { + color: #F2F2F2; + text-decoration: underline; +} + +em, cite { + font-style: italic; +} + +strong { + font-weight: bold; +} + +b { + font-weight: bold; +} + +div svg { + display: block; + margin: 0 auto; +} + +img { + position: relative; + margin: 0 auto; + max-width: 739px; + padding: 5px; + margin: 10px 0 10px 0; + border: 1px solid #ebebeb; + + box-shadow: 0 0 5px #ebebeb; + -webkit-box-shadow: 0 0 5px #ebebeb; + -moz-box-shadow: 0 0 5px #ebebeb; + -o-box-shadow: 0 0 5px #ebebeb; + -ms-box-shadow: 0 0 5px #ebebeb; +} + +p img { + display: inline; + margin: 0; + padding: 0; + vertical-align: middle; + text-align: center; + border: none; +} + +pre, code { + color: #222; + background-color: #fff; + + font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; + font-size: 0.875em; + + border-radius: 2px; + -moz-border-radius: 2px; + -webkit-border-radius: 2px; +} + +pre { + padding: 10px; + box-shadow: 0 0 10px rgba(0,0,0,.1); + overflow: auto; +} + +code { + padding: 3px; + margin: 0 3px; + box-shadow: 0 0 10px rgba(0,0,0,.1); +} + +pre code { + display: block; + box-shadow: none; +} + +blockquote { + color: #666; + margin-bottom: 20px; + padding: 0 0 0 20px; + border-left: 3px solid #bbb; +} + + +ul, ol, dl { + margin-bottom: 15px +} + +ul { + list-style-position: inside; + list-style: disc; + padding-left: 20px; +} + +ol { + list-style-position: inside; + list-style: decimal; + padding-left: 20px; +} + +dl dt { + font-weight: bold; +} + +dl dd { + padding-left: 20px; + font-style: italic; +} + +dl p { + padding-left: 20px; + font-style: italic; +} + +hr { + height: 1px; + margin-bottom: 5px; + border: none; + background: url('../images/bg_hr.png') repeat-x center; +} + +table { + border: 1px solid #373737; + margin-bottom: 20px; + text-align: left; + } + +th { + font-family: 'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif; + padding: 10px; + background: #373737; + color: #fff; + } + +td { + padding: 10px; + border: 1px solid #373737; + } + +form { + background: #f2f2f2; + padding: 20px; +} + +kbd { + background-color: #fafbfc; + border: 1px solid #c6cbd1; + border-bottom-color: #959da5; + border-radius: 3px; + box-shadow: inset 0 -1px 0 #959da5; + color: #444d56; + display: inline-block; + font-size: 11px; + line-height: 11px; + padding: 3px 5px; + vertical-align: middle; +} + +/******************************************************************************* +Full-Width Styles +*******************************************************************************/ + +.outer { + width: 100%; +} + +.inner { + position: relative; + max-width: 1000px; + padding: 20px 10px; + margin: 0 auto; +} + +#forkme_banner { + display: block; + position: absolute; + top:0; + right: 10px; + z-index: 10; + padding: 10px 50px 10px 10px; + color: #fff; + background: url('../images/blacktocat.png') #0090ff no-repeat 95% 50%; + font-weight: 700; + box-shadow: 0 0 10px rgba(0,0,0,.5); + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; +} + +#header_wrap { + background: #212121; + background: -moz-linear-gradient(top, #373737, #212121); + background: -webkit-linear-gradient(top, #373737, #212121); + background: -ms-linear-gradient(top, #373737, #212121); + background: -o-linear-gradient(top, #373737, #212121); + background: linear-gradient(to top, #373737, #212121); +} + +#header_wrap .inner { + padding: 50px 10px 30px 10px; +} + +#project_title { + margin: 0; + color: #fff; + font-size: 42px; + font-weight: 700; + text-shadow: #111 0px 0px 10px; +} + +#project_tagline { + color: #fff; + font-size: 24px; + font-weight: 300; + background: none; + text-shadow: #111 0px 0px 10px; +} + +#downloads { + position: absolute; + width: 210px; + z-index: 10; + bottom: -40px; + right: 0; + height: 70px; + background: url('../images/icon_download.png') no-repeat 0% 90%; +} + +.zip_download_link { + display: block; + float: right; + width: 90px; + height:70px; + text-indent: -5000px; + overflow: hidden; + background: url(../images/sprite_download.png) no-repeat bottom left; +} + +.tar_download_link { + display: block; + float: right; + width: 90px; + height:70px; + text-indent: -5000px; + overflow: hidden; + background: url(../images/sprite_download.png) no-repeat bottom right; + margin-left: 10px; +} + +.zip_download_link:hover { + background: url(../images/sprite_download.png) no-repeat top left; +} + +.tar_download_link:hover { + background: url(../images/sprite_download.png) no-repeat top right; +} + +#main_content_wrap { + background: #f2f2f2; + border-top: 1px solid #111; + border-bottom: 1px solid #111; +} + +#main_content { + padding-top: 40px; +} + +#footer_wrap { + background: #212121; +} + + + +/******************************************************************************* +Small Device Styles +*******************************************************************************/ + +@media screen and (max-width: 992px) { + img { + max-width: 100%; + } +} + +@media screen and (max-width: 480px) { + body { + font-size:14px; + } + + #downloads { + display: none; + } + + .inner { + min-width: 320px; + max-width: 480px; + } + + #project_title { + font-size: 32px; + } + + h1 { + font-size: 28px; + } + + h2 { + font-size: 24px; + } + + h3 { + font-size: 21px; + } + + h4 { + font-size: 18px; + } + + h5 { + font-size: 14px; + } + + h6 { + font-size: 12px; + } + + code, pre { + font-size: 11px; + } + +} + +@media screen and (max-width: 320px) { + body { + font-size:14px; + } + + #downloads { + display: none; + } + + .inner { + min-width: 240px; + max-width: 320px; + } + + #project_title { + font-size: 28px; + } + + h1 { + font-size: 24px; + } + + h2 { + font-size: 21px; + } + + h3 { + font-size: 18px; + } + + h4 { + font-size: 16px; + } + + h5 { + font-size: 14px; + } + + h6 { + font-size: 12px; + } + + code, pre { + min-width: 240px; + max-width: 320px; + font-size: 11px; + } + +} diff --git a/site/_sass/rouge-github.scss b/site/_sass/rouge-github.scss new file mode 100644 index 000000000..bd7fc737c --- /dev/null +++ b/site/_sass/rouge-github.scss @@ -0,0 +1,209 @@ +.highlight table td { padding: 5px; } +.highlight table pre { margin: 0; } +.highlight .cm { + color: #777772; + font-style: italic; +} +.highlight .cp { + color: #797676; + font-weight: bold; +} +.highlight .c1 { + color: #777772; + font-style: italic; +} +.highlight .cs { + color: #797676; + font-weight: bold; + font-style: italic; +} +.highlight .c, .highlight .cd { + color: #777772; + font-style: italic; +} +.highlight .err { + color: #a61717; + background-color: #e3d2d2; +} +.highlight .gd { + color: #000000; + background-color: #ffdddd; +} +.highlight .ge { + color: #000000; + font-style: italic; +} +.highlight .gr { + color: #aa0000; +} +.highlight .gh { + color: #797676; +} +.highlight .gi { + color: #000000; + background-color: #ddffdd; +} +.highlight .go { + color: #888888; +} +.highlight .gp { + color: #555555; +} +.highlight .gs { + font-weight: bold; +} +.highlight .gu { + color: #aaaaaa; +} +.highlight .gt { + color: #aa0000; +} +.highlight .kc { + color: #000000; + font-weight: bold; +} +.highlight .kd { + color: #000000; + font-weight: bold; +} +.highlight .kn { + color: #000000; + font-weight: bold; +} +.highlight .kp { + color: #000000; + font-weight: bold; +} +.highlight .kr { + color: #000000; + font-weight: bold; +} +.highlight .kt { + color: #445588; + font-weight: bold; +} +.highlight .k, .highlight .kv { + color: #000000; + font-weight: bold; +} +.highlight .mf { + color: #009999; +} +.highlight .mh { + color: #009999; +} +.highlight .il { + color: #009999; +} +.highlight .mi { + color: #009999; +} +.highlight .mo { + color: #009999; +} +.highlight .m, .highlight .mb, .highlight .mx { + color: #009999; +} +.highlight .sb { + color: #d14; +} +.highlight .sc { + color: #d14; +} +.highlight .sd { + color: #d14; +} +.highlight .s2 { + color: #d14; +} +.highlight .se { + color: #d14; +} +.highlight .sh { + color: #d14; +} +.highlight .si { + color: #d14; +} +.highlight .sx { + color: #d14; +} +.highlight .sr { + color: #009926; +} +.highlight .s1 { + color: #d14; +} +.highlight .ss { + color: #990073; +} +.highlight .s { + color: #d14; +} +.highlight .na { + color: #008080; +} +.highlight .bp { + color: #797676; +} +.highlight .nb { + color: #0086B3; +} +.highlight .nc { + color: #445588; + font-weight: bold; +} +.highlight .no { + color: #008080; +} +.highlight .nd { + color: #3c5d5d; + font-weight: bold; +} +.highlight .ni { + color: #800080; +} +.highlight .ne { + color: #990000; + font-weight: bold; +} +.highlight .nf { + color: #990000; + font-weight: bold; +} +.highlight .nl { + color: #990000; + font-weight: bold; +} +.highlight .nn { + color: #555555; +} +.highlight .nt { + color: #000080; +} +.highlight .vc { + color: #008080; +} +.highlight .vg { + color: #008080; +} +.highlight .vi { + color: #008080; +} +.highlight .nv { + color: #008080; +} +.highlight .ow { + color: #000000; + font-weight: bold; +} +.highlight .o { + color: #000000; + font-weight: bold; +} +.highlight .w { + color: #bbbbbb; +} +.highlight { + background-color: #f8f8f8; +} diff --git a/site/_sass/slate.scss b/site/_sass/slate.scss new file mode 100644 index 000000000..8e0c33095 --- /dev/null +++ b/site/_sass/slate.scss @@ -0,0 +1,4 @@ +// Placeholder file. If your site uses +// @import "{{ site.theme }}"; +// Then using this theme with jekyll-remote-theme will work fine. +@import "jekyll-theme-slate"; diff --git a/site/about.md b/site/about.md new file mode 100644 index 000000000..226db51ce --- /dev/null +++ b/site/about.md @@ -0,0 +1,10 @@ +--- +layout: basic +--- +# About This Site + +YJIT-Metrics is maintained by the [YJIT](https://yjit.org) team at [Shopify](https://shopify.com). + +We're trying to build a JIT for [CRuby](https://github.com/ruby/ruby) that's faster than the current MJIT, especially for complex code like Ruby on Rails. + +You can find [our benchmarks here](https://github.com/Shopify/yjit-bench). diff --git a/site/assets/css/style.scss b/site/assets/css/style.scss new file mode 100644 index 000000000..e92beab0c --- /dev/null +++ b/site/assets/css/style.scss @@ -0,0 +1,26 @@ +--- +--- + +@import "jekyll-theme-slate"; + +div.headline-box { + text-align: center; + border: 1px inset #888; + padding: 1.5em; +} + +.headline-box .headline-button { + margin-top: 1em; +} + +h1,h2 { + margin-top: 2em; +} + +#header_wrap h1 { + text-align: center; +} + +.timeline-report-explanation { + text-align: center; +} \ No newline at end of file diff --git a/site/assets/images/YJIT_logo_black_1537_416.png b/site/assets/images/YJIT_logo_black_1537_416.png new file mode 100644 index 0000000000000000000000000000000000000000..a2582779e7d8403a8efa1a9aa1ad5b3aa6ebe2d6 GIT binary patch literal 30521 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 M*0<2BKIR(nf8{m+ivR!s literal 0 HcmV?d00001 diff --git a/site/assets/images/YJIT_logo_black_277_75.png b/site/assets/images/YJIT_logo_black_277_75.png new file mode 100644 index 0000000000000000000000000000000000000000..f513116deaed636348858ccc746b2c49e13336c8 GIT binary patch literal 12935 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 D0aqNv literal 0 HcmV?d00001 diff --git a/site/assets/images/YJIT_logo_red_1535_416.png b/site/assets/images/YJIT_logo_red_1535_416.png new file mode 100644 index 0000000000000000000000000000000000000000..a6374979d8756dfb2f9029e643340a9edc60302e GIT binary patch literal 30929 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%0Ao&N>IUn@G56)~4|7-sb{>O@ zXIdX3&9nUnN!e@H$lG!@P_R2M++fj6l*B=zoF8$KpEkuA0Bs)n&oH06SPLD%nd!7f zKWGp;6>tS!jBC%tAX)HRjW{p&BTd2};Gstk67iD{cp0X!&&zUhEl;oI2ID;lwmM=U z4mwskSzrY11h@pviuNKMtV>LHIXz~Y z&KfKmFS~y;;KUOp3>3ZWL*hF4h94McUB^zhpl!$7tJ^016CT+_ZD84MnrYyH3c!e6 zt3t&;03F5>Uxct>9+iWd}`Qa*uE z-w=gWJ0VsCDfV$E?NJDsrW2;hSg z!ug6pv72y^sb!pp$!FIT(=+A+y@9_YbdV$hN?0K<_W~YOZ6VE*=m2>?L*TpCAogp( zO#sN{w9$uuh{b@b3{YQvi8LpM?=#8u=|kL~$zsFK&Ojou_2Oi>bNL+fHS#6tXROvf z8j0VQe0ohWF=H-a4))KI;XBp*ZveVZ5DP+p@9+;fR66!f;FU&b`LOye{8qzkNl?}SY7rzZ8QGO-{n~`Jrr~k#-XbQQ7rpGXh2>en9;6Wv&D<<%cO)^v2heJ})+zzF1) z5IE4X)f3CTfAzn?o)42_z|(G|!0!ltUf@~fI%0Aj170)};o+XoY@?s2r9|Jq8STLq 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 literal 0 HcmV?d00001 diff --git a/site/assets/images/YJIT_logo_red_277_75.png b/site/assets/images/YJIT_logo_red_277_75.png new file mode 100644 index 0000000000000000000000000000000000000000..717b9d79ad1ee2cff648ed3162b26ae7d0345e95 GIT binary patch literal 13275 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 literal 0 HcmV?d00001 diff --git a/site/assets/images/YJIT_logo_white_277_75.png b/site/assets/images/YJIT_logo_white_277_75.png new file mode 100644 index 0000000000000000000000000000000000000000..0a764ee824042a3c9554382f7febb8e8c9938aeb GIT binary patch literal 9881 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 AJOBUy literal 0 HcmV?d00001 diff --git a/site/assets/images/bg_hr.png b/site/assets/images/bg_hr.png new file mode 100644 index 0000000000000000000000000000000000000000..514aee5056a320b059a4b92fc31385b01f3fd707 GIT binary patch literal 78 zcmeAS@N?(olHy`uVBq!ia0vp^EI=&E!3HD~tNk5798VX=5Q)pl2@*yR?(8i7?>Hmz b1S7-U!)%xJ1CQbP0l+XkKg_jic literal 0 HcmV?d00001 diff --git a/site/assets/images/blacktocat.png b/site/assets/images/blacktocat.png new file mode 100644 index 0000000000000000000000000000000000000000..e160053a5bfc1f1891c5df1a04244b46132ed91c GIT binary patch literal 463 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX3?zBp#Z3TGW&u7Su0Z-f>EL7Xu|Ghaf+azI z!3+%h6VAUEXmGf1FkfMPe?Wo5`wP+x42q#I?$ zCZCHu*mLc{mj@jVb0qJie|tLrXx$RV*xy|DA2&%h)(GsqVy%>MraS!Shm183{#@F! zV^vm_@$^Y{GUuI-cUN0({K+A*SMX|j#GmyK98SEwQl?dz*($XqK|j>0;H2RlD{}=; zx7!XPy5}bEXEt-@-@Ngc#+nIgOgm!u=S(u>E&hLN(cd}Wb8P2o&P?9><1zE8l8pz9 zg==?S&3yIdUhdL~<_mg1Y!?@vTUiymeaGcy&vRcbOG}I6uI`9fxn}VP_6h8=I%b0Z Rq=4be;OXk;vd$@?2>`O9@hboT literal 0 HcmV?d00001 diff --git a/site/assets/images/icon_download.png b/site/assets/images/icon_download.png new file mode 100644 index 0000000000000000000000000000000000000000..5a793f17688b22d0c98f8b32855f69daff65afaf GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3^F3W0Lp+WrCrGd^PB3WLTm5|# z<3>ZVHGbLMPaA&Ni`7(Ic@)^~t}9m~#>{KX@F?FxM~Q7di>SquC^@HPOZ^)nnu6w= zPs-5Ln9{RS^v!FJ4Hk1|eLTx~WO~PjEv;gjQBoc84>y)53m9M4vW{f>=&v)a$*Fn% zwMt9Ivq1qGD=w^dyuiIx3lB69mQJ=Ex6cJ85q6@e`QPvJEsD4 ODubu1pUXO@geCwMBTRk( literal 0 HcmV?d00001 diff --git a/site/assets/images/sprite_download.png b/site/assets/images/sprite_download.png new file mode 100644 index 0000000000000000000000000000000000000000..f9f8de24c1c49ce421a44ce2a24ac22d045a39fe GIT binary patch literal 14832 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%0Ao&N>IUn@G56)~4|7-sb{>O@ zXIdX3&9nUnN!e@H$lG!@P_R2M++fj6l*B=zoF8$KpEkuA0Bs)n&oH06SPLD%nd!7f zKWGp;6>tS!jBC%tAX)HRjW{p&BTd2};Gstk67iD{cp0X!&&zUhEl;oI2ID;lwmM=U z4mwskSzrY11h@pviuNKMtV>LHIXz~Y z&KfKmFS~y;;KUOp3>3ZWL*hF4h94McUB^zhpl!$7tJ^016CT+_ZD84MnrYyH3c!e6 zt3t&;03F5>Uxct>9+iWd}`Qa*uE z-w=gWJ0VsCDfV$E?NJDsrW2;hSg z!ug6pv72y^sb!pp$!FIT(=+A+y@9_YbdV$hN?0K<_W~YOZ6VE*=m2>?L*TpCAogp( zO#sN{w9$uuh{b@b3{YQvi8LpM?=#8u=|kL~$zsFK&Ojou_2Oi>bNL+fHS#6tXROvf z8j0VQe0ohWF=H-a4))KI;XBp*ZveVZ5DP+p@9+;fR66!f;FU&b`LOye{8qzkNl?}SY7rzZ8QGO-{n~`Jrr~k#-XbQQ7rpGXh2>en9;6Wv&D<<%cO)^v2heJ})+zzF1) z5IE4X)f3CTfAzn?o)42_z|(G|!0!ltUf@~fI%0Aj170)};o+XoY@?s2r9|Jq8STLq z$T8-C^LNkq*MqQy7BqqxBa7d9>(0#o#&H{__%90RduOk00x(w~Zgdn6lX1-7#T}mC ztY&RZTwt;3D|BvczFNT65fuCM#sU472)x|iCjpeQAaLN6x>46|wGGg}rhe5RaJ=ph zA1_qbfwj_d-UH>Gm4G;!n^qk0|AlVQXn!*~|0Pm&;dsHo4YtX4^7p`!_QFcwpAt3- z1Q>Wc^*<^X;~mn_2e2w6u-p@l?R)Tl_dkVF_WmeQgSMUkOMhER6N3@Vk1 zEZNOSwrnH2S)TU}-{0GRxX-=kp5=4SJ?GpTFSHUPGzUS->c%UnNVkE7454HsEiIgF zIy>!uigxHJvP2FD!_p!D0NZH7_#8h$6^OD7IFy~oX##}=uw$h%kh*<@LzG1Z;YD|hYq&SQ$74aDHHUa#v(y&h9LN7 z%c_eQL8M54pgOrao5Nw`U$cST#=59Fkf6Wu`4Zrd6f`?IRT|cUcX`hmxsjPB*Z2G- zC?7#dUpd?pIw7(w4mGvTQ=R?s?MQ6<_YUwk(Kk~(a6_5=h&v)c%^a3m=19_DfC(x} z(B|f=bo8{=SxKn)*F4qQA3yN@dj&IxA_X7{Qw^Afq8vycKWyFPGP6p41^Bh{w@5An z-2Z(1g$inFN_a;T>{e8hzB{^Amd<}KDK@BSPHXe-Y*%djaw z^9&R;i$-aedm@$Pp?uRWj<`8xnox zYs;f`Px3PT1*fX9_oE=7_H1~e06{36jrM!w)!&C*k^vF~tax#EE7N5OMJcXiSI+#c z4{scH?KK`O1fDQoUw6Qhur8!%abW8&!JwKNWBdD?I_BX=qg21;C8Hg5oK+MWf-Fzn z1&4sLh(fC$8Dj0jHthEk7vq8RkX-RD-U(Jw63GQzmB0D`Jhb8r752?jwcvBo>)aAs z=SSPa77B%jSvJx=rzz_djy@UG0yAY00==Q zM`slODxAr9nxoBOlf59@8ax|w1aN8UnO54ul94rMT}Yb;cIgoZmAt+_>Vi2(H0Q?+ zeIY`p?h5t%F{sd^XniTGm*rp)0ZGPdP}`MeCeX!q5GPmtJNmHg`uQFZ6xz}GU7($H z0&?3S$j%!GX2t58!)MVF1xW1hz)b{nsix+bfwRA{9|U^W@!-K2s+l;11v7N_VVh(C zlW4>o-^>6KA}6*U7TgB0C+ORn!q}!qR_B~cA!x-)h5eH8`h)lD15(fl3JnjQy~%S7 zE{tDbhCI=<13L-Tcvm|nKDT@3%Yx0ZVZo3HHp)n(o{$4D?f{Ub}#*R8qFSeC{ zK!o+f`oqC6HaTFS%?UV*=jWl514pf5!~fxd;>d)1d0)-iYQQ|Fw>Qx>GPwVsZ!b#e zpdeca9QF5IIS?m6v|D6`I3BVD%f&z8Hk|Pj`jw}_2RWEsWeXYmzL-#Xz90N4;|*zo z8aU%GN^urs?+EQhba!0jk3hKp@TxS3zxpVeUum--d)kq~S^5EU{UEAm=sEQt6%9j#X5APEeAOr&s z4+TWC&J*-@t%N8!0ObKoK@TzlRiZe*8LMa-v*3UKLLDm1FOYSVWARse3n{4xvgN(v z*aw}R(dK65+H_pa*K{OdQFqUx&CDr?{{xMh4cfnh&q5r=?t4?8iVB)0&Yq z8$&TJf`RVJa_l~Amaib&JYe@_Y>?P4=%lO{CK9Aq_?u`{qPm}PLU-_H%OPPq48j8Z zmO`V7c{O{9ozDhVP2<}B6_RE$)HX}LK)P`#R$#hY%UFJ-Q87SqT1!M$ z!_n{aKm>{g!V8#D`Z>^?c;nkaq+3iqeoxS`RQR?08mwArBnTPS)F|6c{{V$T;?*1a z&|^k=kTkeCg()DBKuYPfbEmoS$!0Kf|f|>4$NTGa~VG)9G!&Os0 z>wzFex-Ald-khhC<^0SM@tpRf+uzMClB_d-{t}~zgXT8q&#=t96=Yf?O%WoP$?c-^ zmWY5dGt`!+!nR+PLrhs!DuSPu($0Z8FQ?%`>1-wNGWBD;mQrAxE$?(|&;#hC>NGDTDt3KYKIE4$3$v?E7xGg62k6=K zj&W|85QTwUZi5~Y(LB{Ka5LwAJqCgTjjzOIE@(pMIPEG*!k}Or+C&3n1}6=2DM@pP zFSL^Q7dg_;#g`B2!(zhF?R}stBX?kob=VZH^#zaaaO%nXIFzVm7o_9e#Y$2%c$>g2 zU5y42B}q=Z+o_~ZE(6<@gBqJENu(MXnmH+o4KA!(04b&WOAw?v-?~|YR6r5wuLN;# z$`#$DMn}+2Q$YHgC?@l4%B1iM|7rqw)=DMR*hb_mZ^*S^s}i+ZBk;b{(P``Xvk1{Q zefYTv2=sYBq16tl-fk1w^b&ERre@WShOy%Y6hMjZK&S?1_2Jb({-E4Blc$nxQ#HgYdqcj?nJWs{Tp(p7+7LInAP>DMu`+%OloIsU+%(eBNY%h0;#25E38)@=KMs(M+F z&TtAoV2fgx_EpAEfQmrZGi-H+_@iNj%}bi?lD~Ls-s#JNTeJ|m(I~>@_YbG8&_F(3 zyNY>Je~Ua4XbhzFaop??jeO8srMvUHzhMNI1};0nQ1?D(xF-UV-LeAz*mOrY3J=Dn z>?>!;+%MkDTn4E#yoX9?;)pDF|1n${zTnr%jN>#Du%E@uzv`b4EK%=bHqR-q@53>^ zg3+V2GMo04+pYqhFC3JnrJhzZO|sU9Oix0$e@T5=J5XJhG`{&ig1-1VZmq}1)zsVo zu^U<=icmi0h@y++iB{bOMB&DsI==+zrp@v9|0C+pS<{8mN1yTY!6%Puu&@OrlZDW< zcMOZe2WLkf#C^Y`XutSO`hIt5NRx zC~&<(d+FhwA0o~OP-35Lv){iB)OXBhVvIL9b!RJF*S#G1g^7Jtkbdyt^sEnZrCNT? zWIqiX5x|T{mOV=AA5_fGZgfa@_=*}W`nzLvLbSLeHZ}ewQ~` zl{+6WZYXPa!nHwkJ&elfXS`^#GP@jiZZhWD-d@RS*AHm}0m!kvW{=d@zRl%_Dr&nG zN#^!uyELs$O^6!hg0OgV$xReNYaqopz`YRMopBo6uh~U`UDjz$qaQFjmO&%mEV?oi z609HkZ3*+p7k1mr-BUt;J)EcRR*)^fCZZ5MR?fK`3atIeZKze*2rmPnkF!%0V3)1qMg54Qu_x&^ZMagO<@!qC30JR_}ch}u} zo0(lXh7Hqy50qcNF+L#*0KMkT0g9_eSy6$s>+;){r)BVsi4}7mAGq{LbW(!3!f(~r z1_TUHn>H~okr=^OckP4iM@r+r-k@PBk5p{pFx4$#J?=8L<%SJF&#b?*v*z1uqR8Kv zGag9Q`tx04y`I%aKJ5d%#%3p*pr8iIYITiO~GuDe#2-FSNFS zdP`!!z^B_vO-RR@VUv?}-T|(Xl~-(hwkviZoBTJmLDm-$N_Mlkeu7(69wqtiR+QS% z%}2qh649_}hdYp*1OYcPA?p46>N`+v4*%Ugqj^rD7nUo0CXaT8wD-WD+Lb$0212}k zqQrrjYvImE=^0baGzb*A4J-FP#+mC32nrFaSZC*fg=@D}zbqN`rqzpe?QJ{W%i1$i z6aCv(@Cm@sg1b-q^zJMVRXZWLspHbOHwi$;)_#<469PVAevf4Af2Py(Tw1vvuPpYy zQb8oJQhrVA^luxH70n04>yPUGReJ+bC{m3h!;k6wc=Zuo&Nn*5@_TjoJN9iFulPMc zBFhb-bY)ATxenl7><0HLs+#TQ>hThMpvFnx^V9T7T-{^0D>|;cQP=~H-xDRgght-l zv%jbH{{GB(H#sNj-}zi2$}lA!MHrWBJ!o;RO(lWgYj#zLiT@oAj*F1c!JRdQ;_}SY z!t?|Mk-3vd^v}dQubUMr^4eY~L{=5Oa_|eB`S9;lzV)v1JulZ%Zxb5%Hif1Uo@%3uQ*l&bmP!16?9J_z6z0Jy8>C~L*)rb$5 zxoH0){X+#EN%4KuUDJ3dwgKSAIol;;6I#yjB% z|BNsD)t3s*yY`;zWffYUV7pep#_?}hEw@e|PF5N@WFO~nFG}<69zJmZmgBXa2qig= z6^^hpqBrztOnvaF9~~S0lx%j1Q6Tb%*sZDEc9i1rj;IeNB&983WI;5t-5J^`Wl>?C zs!e#+!bRK4*=$Ru8aw|(B8g<ZfPjAqfJ1ckTQ&zH*zDXM=rOLSVkthJ869zzlEwXNHuE;fsaQu%jN_ z9Qcw^(eiMbX!j{?@;c^dNct^w94pXMbZftkSDH>3%NJ*aA0ue3N0m zWt0=5Y7n|%g}N2_6ECZN9-(BSv(Mxg$WAs5tLRv*WA`i4aj%f+Bme60or;wO>Gi|0 zM{#_?;0SAOP7Z3*qXhS0Deqs?8(qW7gU!!X9JoQ0aMcnU7NVvV zj!s=pMyw+k1vPtT)Rq?p3Cq5;wfZpiY(1=K^Yq2!$<$!&P>#S+gVFppiSu$60 zj6^b7;%IeMH@Jf7jG=7Nf%cEQbT7Dw=xM&01?*aoIWG@<0pWhC@~2O>JYd>t)gHEp zx%_Vs`^j$OsZ|f1T&qo7R8+3Eti8tk`kcxPISekIc3yY}Oi+z4F1mlNs+i|nfAW6b zlZleIi}!^53{CW+5oe`=Q6I)F4a|6|R@2BSotdF#v8RKpRdJokDy*opv*C1|k3q-y zs~s{-BHr=-lRfm{bYZeKlsa~?&paP#^JXhwt40^|3?O*;JgIBMz*aAIQu21mvQn<( zQ}6HW zY!eYND~D~vejb#3eI<12Y>{3dzIn9Q@-b(sf{rDRQ!%coxEWrQ{(3A-z(i}FJ}A$0 z@$&`I`cNPNry-j#BKqh0**Bu@?VGBUCARP68X&RkzdGxVMIGv?UAUiT_3Gp2*?gj= zoAA29ASt_n@g*!SO59#Iz5r+Xs;jx6RSGf6w{5i4W%8Km!l}bqxl$#~*KP9JOi-JW z&Mg!zH&%i7A1gb^yjw)qM&E?lpbq%I!SGyF5C6)fugFF}nTjSInv=gTOg*Lp3V&7wz=yAIix$?oC=8D`VKEm6crWVUJxp>gV@|*}o`Fi6}Vz$d*St zQ34pi{4<~LDBG>oGL1fnb?i{m_{k0Dmd$g*z|XJak43-TS=t|IHyfJsJ=nQ9$ZJ~) zs(eM$86uj$C#E~1EKx#l8v#Pz#rmeqy(rGv{6B&&Ez-#R+IDDjthv0sdLO1zsL4rp zsT#z5C!ZizixiC`HTQ<7h-Ax$E#mOBIR`~`S&7g5z-t>PUN^FSXr3^>Nr89WA}wQ2 z2yuY+OCwKiU#3TG;OohAQ?q(LaZbB?+8aFFW^|h(m$V&}W!p2tOkz#^V|-1x-D6OM zSN$nd%g;gN)!UePuw(--Zg*(cc?dzCRL1%v^c>wGw zzpUj9q0JRWb7CR+ul2x@X4;r$=-3LBFX!SvCn<5xJCK@^4e%#7*ZoQ4BK+s+G+B9U zu65{mrmcUdyIrJMiyYaslRZYvAnR|qmb$ek1<=5(YoAuO83)K7xi@)Q7o}qD-~iRV z>v(Gu+eIV0Ghq73%-6`EkVE4x=;U)mtG?PDx)2VtQ2|I}laE>O)X?#EheXjyay5A1yF zl#5Z!q~+pcfclfy$H`$~>~Wib&fs^7U3=ZsEH$R{9$+WP>bRx1m#+gq(hP+iHdTMpCij@Dc_;OBbg zu*A{e%^l2_lFFSIa`LR?>?ACYjY+HmN2mRzTrxQ@x7dBlxax*1eFN#7*DD@Q<6GLj z9G-kNvYWC;n|CUjM4s+ti64#*M9UMSRAP{CrB}O$l`ZV(0ydHW>-N~>`$xJMDVjal zo}I9cb%|Bh_4p?l&qB>mXmH9`WqrM;A`@1$d?fV5@9GcEKoKUZSS?Ym0(W0Xs^{`k zf=zSphkFM)?|Az-G%|@7a4t~)Ch8-&NLE04%XiLhVq>#1CH(Ay@52C*rvtBE*XUte zFN#rz!Wx3VstKQQbs>m%u|3mI=PcBwegdzaeRResE53#3goJCs%NOb%e||Yu3_9;~ z!@s0$2AcahCXkNRds}yCQ?&><7sGjf1cNs{ueq{p1qZk~;wB47VPh-tDYYjndmL5| zfY*M3JIy|QEten4fB1dv6m*i>C|yvV(>c_~A#hMUGlFAU?$)L&#l5XI73AW0ok!Dn za4PAF_?Y3zBBvA{qB(*#4>?|v^PxL!Qcz^275)&)-c0_tB?;pDrew?Ul6TaC_JeE{ zL*cZ1L%-~&Auy%oxiSzL-C{Lgtbmi;8B&T_kA2Nj$5vAWcYX^vyZK+nw}p9V%m>82 z^Ve>3vIhxyW4yIMz*~#e`XZf4kKCP|fpzJsY^d_*R$n^yEsK0(XJZ|3HGh*^q-}ua zF|=A|c$0yT%r;^XwF!8$3@T9Nl|z!AQ90m%cz@YvC-fOPy1a7qP~e6%o;(#~A5uE) z!B7kfn{1kH?b;IY0o5h5Hv8%&#iEVf?lW%d2!8-AJ}cxwV^u{Y4-PvKtg z#8O;KrC${Or!H^EO@kbq+85a}+!uMuxwFzhBYiW2=+xRV)XcEg=1LEW$bSU)eQIb| zgndAMth90LxStmr9c&!9l97L0fCL``zkMIK9C(}rWq$e8Xt|{W32teLTxPtjL4yEa zI765I{i3Pu_=YQUpRuE3ksp;cXcm2ZLk)OqUDS34brp&}E>nx{%|=I3Q8@tJFGm2| zy5)Upl!3B+c&9m*H*LdG#A$D*?OlwBX`x(}|AgPw$h=zHYj+tTE;PI2gL~~nX^l8z zBP8JuRA8na!72XB=CU-bE38h^bOU)EEx8rnJ6)aMc|WBW{5Rnrbf-$g@XI=guvk0R zuc{7oVd!PqNFWKEa04P8m-5fbuY1lcUF~_Q&kZBU&AbfW>+O!9$td=dW^BV1G;{bT zoS)?BZQTf9kgO3=HQ(nDB#q_#9|5JcvQP<0e^U<976htX0#HG?mS31;5(VRIGikD( zgM(5gib1#3rLN6H(8D*jS#g^qI6aAH+PqWP?s#KA4S!af-oi$6G&1{#5%ZBPLd+NX z+<3~_+354yK@L1MZ0}M03f}&&?D#b7L9FTgj|arvgX@@Uxwt&D4LqKH6!g@RNRBcucopn_=9@?= z)}y{82ALnb^gHgon$3Lk+>^C_Ve=iHv98DM%@jwgKoWe}`tiE>C3d)wwy)6pXDW>V=F3O_=D{%NQ2hFS_=-zb^4Ef7e(@pQ+c}{P*Eqgv-Fn zZq6PbzFTyqWd>q*JwT_x8kYxx7r&- z7xl<8solMz;N4@d2$k0ayB4|YEVlpKl4!pzWvk;WIj<~W_;JMZk&vZZuuk?pKBqi#vtSG|tA%XkUGKQV zl|+5g)cES-qtnrumUEmrj>r_eUy7J+{EvkiGQ8kjV_775F4WtZIE8I9dbei*jzcf3 zhIsl|QPBz_r9G{wM^d8XuNE&DOV*nOqi=jPJ}tCv7*HuVKZ4UM`LR%xy?N$n&o}n}w>}A3dOcXr0zloK$LQp>Qsolv5X9ME%&?y-uD)|@%x4qwaI($BOx3@UkAz(T{lkXa*!mGn&_4_D-?x!T&Aqc zg5QYa*r~?^9=y$-wMvLHekg=HR2YEFa6>>(HV}exd!B|54z{ADDqtRbzeTYw`v{it z{W(S*{B^6Ys88MRxIk{@#DHK`JrdHhUbi5^E|6{&nn2BjThUxletd^vymZoE;Wg%& zMDI-;Zlnm|@S$cr4sw!EqRfU$6ov}1L8h2Hk~XKCE)-Sz!#xki=(LVeTRF=Vs8{$I zF6{6wbyrdY-)#Etn;Rl*e^4}WHsroO@Gi2?yhn6TpPL~I&OSskxng2*{uHm0JL2c^ ztvZqJRw=$16r}cGJx(B4N26e)oZ>~l7FlG0+fst75%)_Nvy_A?(R^UfO46{6|MS=_N=s0`X!mg# z23@_i0n7}(1Pgd;&W<*;$m^sE^JF2M*BnAThnlU)~96)OP@ zL;*t}p9mU0I16DFH2tdhYyRSX0m4oFc+ zLi+-P9(g`A&B_ava`m0;8Y~rU0lNTsm0zCwIDGzxyA}1%c2$T8G#j~L z4NAA&H>@3O<*a9wfB1G;q^8lX7cl~ZX5Mnos_8DPb);qym5tgw<4!nZdN)UtuVeA-`V@TXt5 zC`5CGOQp&Ij(!&7FcA&DBieS_=(!{Qyc-k3DFS?s6T(GZ{mg0~t3rBgI8~*poETWP zjr3vp76rSdpCjNWa~)%_R_=YDcQrS}-K?lBZ?n@reZU{!VuAv8@{$!*ZP@~%J@B3Sj)WeYY;ehK zM-Mj#p71+lk;E{wZ`*-gt|?4BtY-cI=|~ul%3Nb={`_Gl*&pFQ&bS3I%J(7y639n+ zY{>IO^4WFq(B(x=&GtDF=aR*HX`c_|7D-u+!-@|1z&urw0n@$?pEs0U(>V5%OG!r( za+@%tw`A_(=<2T&4?5n;<9+ij%0UH@c?U!82k(#Yv0yQ0Zz6s*@>%F$>oNj}s5=e? zN&m+$ei$FVT%2zGI1f>!bHv0uG1=~f9~QB~PpSVzkvMERz|CjKQ6Q@5kX^s zo58Q^LU?ApEh<;Yh4k|$vu@D);yYH}QQVl5c|vR$`^#drMa~=QaVq172@`wg==}7z z7>c5u0`~)~`Le#F=FS~vCj%H!p@JOUvKQIzwQ^{K-v&Hg^oA z<&Zr0FBqGkzQ}Bf>ZugumA67)Y^@xB#+BtO3{}N)kXq}M`Ky0J9<3IA6@1M7Sz~T)t_hUJR2(gJxC}?DZp>UFS-rV(Ox$-5mX>e#X$r|Nlb$ zw{6|CZ>eB*pV#U?VQfkdU{RJoaj0F;3j6$b-m6^~-A>6tI$tX|JbD#Hhxzl-5z%{T zypsxG59G+8snvv-*DW&Wz>2L4-$R86K0#0kU!S_u1OkFwfz=>=TkoSy%S-%VL)2XS7gRD;7Ok_wajQkr}4s~I2jxFE8)pl&}5e;DnU zC)TBI;=$QpXmxol?w|vPtE~@LWsmJu5CTZ zO`<_=C%9n{FF%TfD?643hNZbJnnR!1=NsX^YAdne_9s>?c$2KBZmr9$fD~0Q_qxbP z>P&KsGg(b%AA)TFYc7V2isV`>7K80h z!Y!n)nXuDL$<=K{&OU?YUc;J2H8FjSPcrYw+x=icABm~WCFo`yT$UL`5qhX2Tii|Ni`_4(2{Qh(pn>VJe_!GOAt6(pc z72gFBCfA{$RGmpYxrWl`iK2Se{!5nQ7=?e)<4m~y{`VN5At6F*NC(k%KKV4j26w(b zp5DY0m2i-wtN0@Z3(UO6JAkXZe|6PT7}5(8C6ELE`si>l+Rom;Nr~PZU;KManp+|F zk~Iw97w?-_jHzpq5!SrbR{!gIkslJOT9;o5UjvNX4}?ndUekMd_BWYbi(**$8gRjTbja8VOF+C03btX zB@KYLG2M2>f*VAPnajY+4({TM=rWOH!DA`C^Z1%KH+BO79F+qhDfs83!9+VP zuogT}XCl!5y1iJ=NUa1q8JYi29RP_i5(aj4MXqKNMi-1>gq7<&idK4nwhVmXjC4>M z!dq)db6>e2x?;GvX2$rXrT z#|LkhjG>%S7eb=*Vf-_5INw`~2ZxtmU9-~MHGZZsk8?nV2#6tA5O7^YKhg-;$)wpM z3kDkwUIIe;)&+E>QgDq!o#nGwSbqy{%JgSTW^-N#8t*L8x^E5EoL#l&MFXL5W||ab zw;bl^Df`H$*{Quwh_hQiwN%6SznSp0)-5r0!~=Dsi5uKY+dKpxF2^mK@I*DuP!-n< zc%mwIuA#@eVN7rfJn`vLm?GIjVF7osmD7<5jasi@F7D!E>RO>%9R5Co!>l!7Ul2)7 zt=ba*>U=lFfj+n$H>AH zO#N8+*2dN-W}9HCoauLYVuDEg9t@vZ92?#i#%`~-6mTSUmygUiy-J*1|6TRv6VYgB8F0+xljNQYk;Gc z)fk|b&C(0+1DrV3Dkx2H2#yv43a>wSv*QfBdhOzTRvR1E0bTxksbi{mRyNQ~;Key( zA=DOjvM@pz>&L1D+`CrCNQAXXx|DGB$h| zv@egg!aCZKkzY2Lnzf|?zcVH5_X~clF(rEUr@wIVbpGml=>_LGF37U;sF7iNjLi#| zFeIdtL?>?ls6;<%9Wrs01wRR62dx6zoz=ea9)be$0SYx8X^&{Gz5ns!gMKLvA24{* z^t%@Tgqp4uXfEq7GRNME@#+KHdH;&e{PWCJmZ-u*klDfx^82ZY$IL6yrLXkE#5ZGj z--5kZ`%%uog))xb5Vg(Tr~9ZgdDlm)=DUDxE%TFujDXd>AERagoi9zQVc8oQlEZt+ z(h56~>jSsvds>hP!UAT{|yw)hLf(qZ_98lYmE*NWd|QzoeaE2lTtvwv!x4L z^h{_AoXt__Q5uk)m)QhyAIv-0@jQiTDFp@aHsEJ;c%qI=wDuuqM{`*)YMDv=m^C|$ zJO}zr`|Z}muY`TYn1Bb++Q=s}*LVp}wy^b|R?MFJ08IOQ$l_ZzyaoRmCo6$5F+xE6 z*K6Lan&9s47Wx%NWUHIIiY;^YN+3<(FOx5?52(eX3pDT43Nf&HT6^hlJN>YTFKuu~*;uC@5rv zNb>SoHO-B^yhS`$HRi>#euL(L^fj281s!LIH5RI&*k!T3`7n%s`f_#Ifc)T5f*;j< z$8auC2(HRaaMMydN~9;{U#rlg%Zw}3a1=D3J5QVfaOlrp)u+x4133dHVfk!S%Nl!VC+H~6 z#zH5dA&ig2`{ll$F&LxScEmxGaeAd7#l>tOy^1=B%nf7X2l&gI3wgY`341EwV$N+DNs+9ztTb@&?r{6m-b3x52%sj1_ zy|jU^gPfQt5>bo-cOl|gj&B+(X5*PiN(1=bu`h%d;9y;J$mK4e%M_JY%I%F-3f+0&)X5I-us{D~Xe6?b{;OMWDO61M2KQmkhQSQ=-Bo77db3$tht7ni< zNoWJ!Zn<#!oz$Q@sYlKs!a-oUeRj z8FVI_*|YU!{irMuxX=8vn#EV*mR&G=xS)UsZ?JYL-jOq_EYPWaTN8frtYX$t$YHC8 zY1Js&3+@85R^TdU{lQshOoowbIpGC2Y1<(P1$^+69ab(76#t>+QOX~jFA)K`+OB{T zMSuYgPNAs@*%z#UN2?BP{Avg@S<$yN5EX)esx}RQXob=l&w9Hv94KJWGJ?=2$_5L# zHguzXo&(ye^w)=s#KMOsj`W2T4+KJPf(>}!Bb&{y`KJ-Wz$LwF8$Zi1)Kg0rzC5g$ zeb9d%QsUkCP@&2we(GZTZgLrJdEh<@y1He3eo8l5)#M%pHZqcc((cj~!M&^t0A>CH zEl2lTLvHf1Fo1L^{iSBVSBnVft`ZZ(oKp!;^_V}ozpx)qnpr*4Dgxe-7RvK(Xt0q1RKVuKDytaH|cw{;inlKzG0Q(@Q=90j+|?l0Qs7X5!Hu>6z& literal 0 HcmV?d00001 diff --git a/site/assets/js/clipboard.js b/site/assets/js/clipboard.js new file mode 100644 index 000000000..aeb826f0f --- /dev/null +++ b/site/assets/js/clipboard.js @@ -0,0 +1,890 @@ +/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["ClipboardJS"] = factory(); + else + root["ClipboardJS"] = factory(); +})(this, function() { +return /******/ (function() { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ 686: +/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + "default": function() { return /* binding */ clipboard; } +}); + +// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js +var tiny_emitter = __webpack_require__(279); +var tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter); +// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js +var listen = __webpack_require__(370); +var listen_default = /*#__PURE__*/__webpack_require__.n(listen); +// EXTERNAL MODULE: ./node_modules/select/src/select.js +var src_select = __webpack_require__(817); +var select_default = /*#__PURE__*/__webpack_require__.n(src_select); +;// CONCATENATED MODULE: ./src/common/command.js +/** + * Executes a given operation type. + * @param {String} type + * @return {Boolean} + */ +function command(type) { + try { + return document.execCommand(type); + } catch (err) { + return false; + } +} +;// CONCATENATED MODULE: ./src/actions/cut.js + + +/** + * Cut action wrapper. + * @param {String|HTMLElement} target + * @return {String} + */ + +var ClipboardActionCut = function ClipboardActionCut(target) { + var selectedText = select_default()(target); + command('cut'); + return selectedText; +}; + +/* harmony default export */ var actions_cut = (ClipboardActionCut); +;// CONCATENATED MODULE: ./src/common/create-fake-element.js +/** + * Creates a fake textarea element with a value. + * @param {String} value + * @return {HTMLElement} + */ +function createFakeElement(value) { + var isRTL = document.documentElement.getAttribute('dir') === 'rtl'; + var fakeElement = document.createElement('textarea'); // Prevent zooming on iOS + + fakeElement.style.fontSize = '12pt'; // Reset box model + + fakeElement.style.border = '0'; + fakeElement.style.padding = '0'; + fakeElement.style.margin = '0'; // Move element out of screen horizontally + + fakeElement.style.position = 'absolute'; + fakeElement.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically + + var yPosition = window.pageYOffset || document.documentElement.scrollTop; + fakeElement.style.top = "".concat(yPosition, "px"); + fakeElement.setAttribute('readonly', ''); + fakeElement.value = value; + return fakeElement; +} +;// CONCATENATED MODULE: ./src/actions/copy.js + + + +/** + * Create fake copy action wrapper using a fake element. + * @param {String} target + * @param {Object} options + * @return {String} + */ + +var fakeCopyAction = function fakeCopyAction(value, options) { + var fakeElement = createFakeElement(value); + options.container.appendChild(fakeElement); + var selectedText = select_default()(fakeElement); + command('copy'); + fakeElement.remove(); + return selectedText; +}; +/** + * Copy action wrapper. + * @param {String|HTMLElement} target + * @param {Object} options + * @return {String} + */ + + +var ClipboardActionCopy = function ClipboardActionCopy(target) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { + container: document.body + }; + var selectedText = ''; + + if (typeof target === 'string') { + selectedText = fakeCopyAction(target, options); + } else if (target instanceof HTMLInputElement && !['text', 'search', 'url', 'tel', 'password'].includes(target === null || target === void 0 ? void 0 : target.type)) { + // If input type doesn't support `setSelectionRange`. Simulate it. https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange + selectedText = fakeCopyAction(target.value, options); + } else { + selectedText = select_default()(target); + command('copy'); + } + + return selectedText; +}; + +/* harmony default export */ var actions_copy = (ClipboardActionCopy); +;// CONCATENATED MODULE: ./src/actions/default.js +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + + + +/** + * Inner function which performs selection from either `text` or `target` + * properties and then executes copy or cut operations. + * @param {Object} options + */ + +var ClipboardActionDefault = function ClipboardActionDefault() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + // Defines base properties passed from constructor. + var _options$action = options.action, + action = _options$action === void 0 ? 'copy' : _options$action, + container = options.container, + target = options.target, + text = options.text; // Sets the `action` to be performed which can be either 'copy' or 'cut'. + + if (action !== 'copy' && action !== 'cut') { + throw new Error('Invalid "action" value, use either "copy" or "cut"'); + } // Sets the `target` property using an element that will be have its content copied. + + + if (target !== undefined) { + if (target && _typeof(target) === 'object' && target.nodeType === 1) { + if (action === 'copy' && target.hasAttribute('disabled')) { + throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute'); + } + + if (action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) { + throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes'); + } + } else { + throw new Error('Invalid "target" value, use a valid Element'); + } + } // Define selection strategy based on `text` property. + + + if (text) { + return actions_copy(text, { + container: container + }); + } // Defines which selection strategy based on `target` property. + + + if (target) { + return action === 'cut' ? actions_cut(target) : actions_copy(target, { + container: container + }); + } +}; + +/* harmony default export */ var actions_default = (ClipboardActionDefault); +;// CONCATENATED MODULE: ./src/clipboard.js +function clipboard_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { clipboard_typeof = function _typeof(obj) { return typeof obj; }; } else { clipboard_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return clipboard_typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (clipboard_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + + + + + + +/** + * Helper function to retrieve attribute value. + * @param {String} suffix + * @param {Element} element + */ + +function getAttributeValue(suffix, element) { + var attribute = "data-clipboard-".concat(suffix); + + if (!element.hasAttribute(attribute)) { + return; + } + + return element.getAttribute(attribute); +} +/** + * Base class which takes one or more elements, adds event listeners to them, + * and instantiates a new `ClipboardAction` on each click. + */ + + +var Clipboard = /*#__PURE__*/function (_Emitter) { + _inherits(Clipboard, _Emitter); + + var _super = _createSuper(Clipboard); + + /** + * @param {String|HTMLElement|HTMLCollection|NodeList} trigger + * @param {Object} options + */ + function Clipboard(trigger, options) { + var _this; + + _classCallCheck(this, Clipboard); + + _this = _super.call(this); + + _this.resolveOptions(options); + + _this.listenClick(trigger); + + return _this; + } + /** + * Defines if attributes would be resolved using internal setter functions + * or custom functions that were passed in the constructor. + * @param {Object} options + */ + + + _createClass(Clipboard, [{ + key: "resolveOptions", + value: function resolveOptions() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + this.action = typeof options.action === 'function' ? options.action : this.defaultAction; + this.target = typeof options.target === 'function' ? options.target : this.defaultTarget; + this.text = typeof options.text === 'function' ? options.text : this.defaultText; + this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body; + } + /** + * Adds a click event listener to the passed trigger. + * @param {String|HTMLElement|HTMLCollection|NodeList} trigger + */ + + }, { + key: "listenClick", + value: function listenClick(trigger) { + var _this2 = this; + + this.listener = listen_default()(trigger, 'click', function (e) { + return _this2.onClick(e); + }); + } + /** + * Defines a new `ClipboardAction` on each click event. + * @param {Event} e + */ + + }, { + key: "onClick", + value: function onClick(e) { + var trigger = e.delegateTarget || e.currentTarget; + var action = this.action(trigger) || 'copy'; + var text = actions_default({ + action: action, + container: this.container, + target: this.target(trigger), + text: this.text(trigger) + }); // Fires an event based on the copy operation result. + + this.emit(text ? 'success' : 'error', { + action: action, + text: text, + trigger: trigger, + clearSelection: function clearSelection() { + if (trigger) { + trigger.focus(); + } + + window.getSelection().removeAllRanges(); + } + }); + } + /** + * Default `action` lookup function. + * @param {Element} trigger + */ + + }, { + key: "defaultAction", + value: function defaultAction(trigger) { + return getAttributeValue('action', trigger); + } + /** + * Default `target` lookup function. + * @param {Element} trigger + */ + + }, { + key: "defaultTarget", + value: function defaultTarget(trigger) { + var selector = getAttributeValue('target', trigger); + + if (selector) { + return document.querySelector(selector); + } + } + /** + * Allow fire programmatically a copy action + * @param {String|HTMLElement} target + * @param {Object} options + * @returns Text copied. + */ + + }, { + key: "defaultText", + + /** + * Default `text` lookup function. + * @param {Element} trigger + */ + value: function defaultText(trigger) { + return getAttributeValue('text', trigger); + } + /** + * Destroy lifecycle. + */ + + }, { + key: "destroy", + value: function destroy() { + this.listener.destroy(); + } + }], [{ + key: "copy", + value: function copy(target) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { + container: document.body + }; + return actions_copy(target, options); + } + /** + * Allow fire programmatically a cut action + * @param {String|HTMLElement} target + * @returns Text cutted. + */ + + }, { + key: "cut", + value: function cut(target) { + return actions_cut(target); + } + /** + * Returns the support of the given action, or all actions if no action is + * given. + * @param {String} [action] + */ + + }, { + key: "isSupported", + value: function isSupported() { + var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut']; + var actions = typeof action === 'string' ? [action] : action; + var support = !!document.queryCommandSupported; + actions.forEach(function (action) { + support = support && !!document.queryCommandSupported(action); + }); + return support; + } + }]); + + return Clipboard; +}((tiny_emitter_default())); + +/* harmony default export */ var clipboard = (Clipboard); + +/***/ }), + +/***/ 828: +/***/ (function(module) { + +var DOCUMENT_NODE_TYPE = 9; + +/** + * A polyfill for Element.matches() + */ +if (typeof Element !== 'undefined' && !Element.prototype.matches) { + var proto = Element.prototype; + + proto.matches = proto.matchesSelector || + proto.mozMatchesSelector || + proto.msMatchesSelector || + proto.oMatchesSelector || + proto.webkitMatchesSelector; +} + +/** + * Finds the closest parent that matches a selector. + * + * @param {Element} element + * @param {String} selector + * @return {Function} + */ +function closest (element, selector) { + while (element && element.nodeType !== DOCUMENT_NODE_TYPE) { + if (typeof element.matches === 'function' && + element.matches(selector)) { + return element; + } + element = element.parentNode; + } +} + +module.exports = closest; + + +/***/ }), + +/***/ 438: +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +var closest = __webpack_require__(828); + +/** + * Delegates event to a selector. + * + * @param {Element} element + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @param {Boolean} useCapture + * @return {Object} + */ +function _delegate(element, selector, type, callback, useCapture) { + var listenerFn = listener.apply(this, arguments); + + element.addEventListener(type, listenerFn, useCapture); + + return { + destroy: function() { + element.removeEventListener(type, listenerFn, useCapture); + } + } +} + +/** + * Delegates event to a selector. + * + * @param {Element|String|Array} [elements] + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @param {Boolean} useCapture + * @return {Object} + */ +function delegate(elements, selector, type, callback, useCapture) { + // Handle the regular Element usage + if (typeof elements.addEventListener === 'function') { + return _delegate.apply(null, arguments); + } + + // Handle Element-less usage, it defaults to global delegation + if (typeof type === 'function') { + // Use `document` as the first parameter, then apply arguments + // This is a short way to .unshift `arguments` without running into deoptimizations + return _delegate.bind(null, document).apply(null, arguments); + } + + // Handle Selector-based usage + if (typeof elements === 'string') { + elements = document.querySelectorAll(elements); + } + + // Handle Array-like based usage + return Array.prototype.map.call(elements, function (element) { + return _delegate(element, selector, type, callback, useCapture); + }); +} + +/** + * Finds closest match and invokes callback. + * + * @param {Element} element + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @return {Function} + */ +function listener(element, selector, type, callback) { + return function(e) { + e.delegateTarget = closest(e.target, selector); + + if (e.delegateTarget) { + callback.call(element, e); + } + } +} + +module.exports = delegate; + + +/***/ }), + +/***/ 879: +/***/ (function(__unused_webpack_module, exports) { + +/** + * Check if argument is a HTML element. + * + * @param {Object} value + * @return {Boolean} + */ +exports.node = function(value) { + return value !== undefined + && value instanceof HTMLElement + && value.nodeType === 1; +}; + +/** + * Check if argument is a list of HTML elements. + * + * @param {Object} value + * @return {Boolean} + */ +exports.nodeList = function(value) { + var type = Object.prototype.toString.call(value); + + return value !== undefined + && (type === '[object NodeList]' || type === '[object HTMLCollection]') + && ('length' in value) + && (value.length === 0 || exports.node(value[0])); +}; + +/** + * Check if argument is a string. + * + * @param {Object} value + * @return {Boolean} + */ +exports.string = function(value) { + return typeof value === 'string' + || value instanceof String; +}; + +/** + * Check if argument is a function. + * + * @param {Object} value + * @return {Boolean} + */ +exports.fn = function(value) { + var type = Object.prototype.toString.call(value); + + return type === '[object Function]'; +}; + + +/***/ }), + +/***/ 370: +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +var is = __webpack_require__(879); +var delegate = __webpack_require__(438); + +/** + * Validates all params and calls the right + * listener function based on its target type. + * + * @param {String|HTMLElement|HTMLCollection|NodeList} target + * @param {String} type + * @param {Function} callback + * @return {Object} + */ +function listen(target, type, callback) { + if (!target && !type && !callback) { + throw new Error('Missing required arguments'); + } + + if (!is.string(type)) { + throw new TypeError('Second argument must be a String'); + } + + if (!is.fn(callback)) { + throw new TypeError('Third argument must be a Function'); + } + + if (is.node(target)) { + return listenNode(target, type, callback); + } + else if (is.nodeList(target)) { + return listenNodeList(target, type, callback); + } + else if (is.string(target)) { + return listenSelector(target, type, callback); + } + else { + throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList'); + } +} + +/** + * Adds an event listener to a HTML element + * and returns a remove listener function. + * + * @param {HTMLElement} node + * @param {String} type + * @param {Function} callback + * @return {Object} + */ +function listenNode(node, type, callback) { + node.addEventListener(type, callback); + + return { + destroy: function() { + node.removeEventListener(type, callback); + } + } +} + +/** + * Add an event listener to a list of HTML elements + * and returns a remove listener function. + * + * @param {NodeList|HTMLCollection} nodeList + * @param {String} type + * @param {Function} callback + * @return {Object} + */ +function listenNodeList(nodeList, type, callback) { + Array.prototype.forEach.call(nodeList, function(node) { + node.addEventListener(type, callback); + }); + + return { + destroy: function() { + Array.prototype.forEach.call(nodeList, function(node) { + node.removeEventListener(type, callback); + }); + } + } +} + +/** + * Add an event listener to a selector + * and returns a remove listener function. + * + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @return {Object} + */ +function listenSelector(selector, type, callback) { + return delegate(document.body, selector, type, callback); +} + +module.exports = listen; + + +/***/ }), + +/***/ 817: +/***/ (function(module) { + +function select(element) { + var selectedText; + + if (element.nodeName === 'SELECT') { + element.focus(); + + selectedText = element.value; + } + else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') { + var isReadOnly = element.hasAttribute('readonly'); + + if (!isReadOnly) { + element.setAttribute('readonly', ''); + } + + element.select(); + element.setSelectionRange(0, element.value.length); + + if (!isReadOnly) { + element.removeAttribute('readonly'); + } + + selectedText = element.value; + } + else { + if (element.hasAttribute('contenteditable')) { + element.focus(); + } + + var selection = window.getSelection(); + var range = document.createRange(); + + range.selectNodeContents(element); + selection.removeAllRanges(); + selection.addRange(range); + + selectedText = selection.toString(); + } + + return selectedText; +} + +module.exports = select; + + +/***/ }), + +/***/ 279: +/***/ (function(module) { + +function E () { + // Keep this empty so it's easier to inherit from + // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3) +} + +E.prototype = { + on: function (name, callback, ctx) { + var e = this.e || (this.e = {}); + + (e[name] || (e[name] = [])).push({ + fn: callback, + ctx: ctx + }); + + return this; + }, + + once: function (name, callback, ctx) { + var self = this; + function listener () { + self.off(name, listener); + callback.apply(ctx, arguments); + }; + + listener._ = callback + return this.on(name, listener, ctx); + }, + + emit: function (name) { + var data = [].slice.call(arguments, 1); + var evtArr = ((this.e || (this.e = {}))[name] || []).slice(); + var i = 0; + var len = evtArr.length; + + for (i; i < len; i++) { + evtArr[i].fn.apply(evtArr[i].ctx, data); + } + + return this; + }, + + off: function (name, callback) { + var e = this.e || (this.e = {}); + var evts = e[name]; + var liveEvents = []; + + if (evts && callback) { + for (var i = 0, len = evts.length; i < len; i++) { + if (evts[i].fn !== callback && evts[i].fn._ !== callback) + liveEvents.push(evts[i]); + } + } + + // Remove event from queue to prevent memory leak + // Suggested by https://github.com/lazd + // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910 + + (liveEvents.length) + ? e[name] = liveEvents + : delete e[name]; + + return this; + } +}; + +module.exports = E; +module.exports.TinyEmitter = E; + + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ if(__webpack_module_cache__[moduleId]) { +/******/ return __webpack_module_cache__[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/compat get default export */ +/******/ !function() { +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function() { return module['default']; } : +/******/ function() { return module; }; +/******/ __webpack_require__.d(getter, { a: getter }); +/******/ return getter; +/******/ }; +/******/ }(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ !function() { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = function(exports, definition) { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ }(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ !function() { +/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } +/******/ }(); +/******/ +/************************************************************************/ +/******/ // module exports must be returned from runtime so entry inlining is disabled +/******/ // startup +/******/ // Load entry module and return exports +/******/ return __webpack_require__(686); +/******/ })() +.default; +}); \ No newline at end of file diff --git a/site/assets/js/clipboard.min.js b/site/assets/js/clipboard.min.js new file mode 100644 index 000000000..1103f811e --- /dev/null +++ b/site/assets/js/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return b}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),r=n.n(e);function c(t){try{return document.execCommand(t)}catch(t){return}}var a=function(t){t=r()(t);return c("cut"),t};function o(t,e){var n,o,t=(n=t,o="rtl"===document.documentElement.getAttribute("dir"),(t=document.createElement("textarea")).style.fontSize="12pt",t.style.border="0",t.style.padding="0",t.style.margin="0",t.style.position="absolute",t.style[o?"right":"left"]="-9999px",o=window.pageYOffset||document.documentElement.scrollTop,t.style.top="".concat(o,"px"),t.setAttribute("readonly",""),t.value=n,t);return e.container.appendChild(t),e=r()(t),c("copy"),t.remove(),e}var f=function(t){var e=1{{ day }} --> +{% assign date_benchmarks = site.benchmarks | where: "date_str", day | sort: "timestamp" %} +{% for benchmark in date_benchmarks reversed %} +{% assign bench_index = bench_index | plus:1 %} + +

{{benchmark.date_str}} {{benchmark.time_str}}

+ +{% if bench_index < 50 %} + + +Raw JSON data:
+ +
    {% for result in benchmark.test_results %}
  • {{result[0]}}
  • {% endfor %}
+ +{% else %} + +{% endif %} + +{% endfor %} +{% endfor %} diff --git a/site/images/loading.gif b/site/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..49b4de6c1fe456f1fc5c71986476669b9d528b40 GIT binary patch literal 5401 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 LDy@j)1*G&3V1tp% literal 0 HcmV?d00001 diff --git a/site/images/yjit_logo.png b/site/images/yjit_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a6374979d8756dfb2f9029e643340a9edc60302e GIT binary patch literal 30929 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%0Ao&N>IUn@G56)~4|7-sb{>O@ zXIdX3&9nUnN!e@H$lG!@P_R2M++fj6l*B=zoF8$KpEkuA0Bs)n&oH06SPLD%nd!7f zKWGp;6>tS!jBC%tAX)HRjW{p&BTd2};Gstk67iD{cp0X!&&zUhEl;oI2ID;lwmM=U z4mwskSzrY11h@pviuNKMtV>LHIXz~Y z&KfKmFS~y;;KUOp3>3ZWL*hF4h94McUB^zhpl!$7tJ^016CT+_ZD84MnrYyH3c!e6 zt3t&;03F5>Uxct>9+iWd}`Qa*uE z-w=gWJ0VsCDfV$E?NJDsrW2;hSg z!ug6pv72y^sb!pp$!FIT(=+A+y@9_YbdV$hN?0K<_W~YOZ6VE*=m2>?L*TpCAogp( zO#sN{w9$uuh{b@b3{YQvi8LpM?=#8u=|kL~$zsFK&Ojou_2Oi>bNL+fHS#6tXROvf z8j0VQe0ohWF=H-a4))KI;XBp*ZveVZ5DP+p@9+;fR66!f;FU&b`LOye{8qzkNl?}SY7rzZ8QGO-{n~`Jrr~k#-XbQQ7rpGXh2>en9;6Wv&D<<%cO)^v2heJ})+zzF1) z5IE4X)f3CTfAzn?o)42_z|(G|!0!ltUf@~fI%0Aj170)};o+XoY@?s2r9|Jq8STLq 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 literal 0 HcmV?d00001 diff --git a/site/index.md b/site/index.md new file mode 100644 index 000000000..8fe03c109 --- /dev/null +++ b/site/index.md @@ -0,0 +1,74 @@ +--- +layout: basic +--- + +{% assign last_bench = site.benchmarks | last %} + + +
+ +

+ How is YJIT's speed on its benchmarks as of {{last_bench.date_str}} {{last_bench.time_str}}? +

+ + {% include {{ last_bench.reports.blog_speed_headline_html }} %} + + {% for platform in last_bench.platforms %} + + {% endfor %} +
+ + +
+

Latest Headlining Results vs CRuby

+ +

+ "Overall" in the headline means results on these benchmarks. Click through for more benchmarks. +

+ + + +
+ + {% include {{last_bench.reports.blog_speed_details_x86_64_head_svg}} %} + + Speed of each Ruby implementation (iterations/second) relative to the CRuby interpreter. Higher is better. +
+
+ + +
+

YJIT Results Over Time

+ + + +
+ {% include reports/mini_timelines.html %} +
+
+ + + + + + + + +

+ Do you love extensive details?
+ +

diff --git a/site/memory_timeline.md b/site/memory_timeline.md new file mode 100644 index 000000000..53c133eda --- /dev/null +++ b/site/memory_timeline.md @@ -0,0 +1,393 @@ +--- +layout: basic +--- + + + + +

YJIT Memory Usage Over Time

+ + + +

+ To zoom in, drag over the time range you want to see. Double-click to zoom back out. +

+ +
+ + +
+
+ Select Dataset + + + + + + + + + + + + +
+
+ {% include reports/memory_timeline.html %} +
+ + \ No newline at end of file diff --git a/site/stats-timeline.md b/site/stats-timeline.md new file mode 100644 index 000000000..2b1707d87 --- /dev/null +++ b/site/stats-timeline.md @@ -0,0 +1,396 @@ +--- +layout: basic +--- + + +

YJIT Stats Over Time

+ +

+ "Overall" is a mean of all listed benchmarks. +

+ +

+ To zoom in, drag over the time range you want to see. Double-click to zoom back out. +

+ + + +
+ + +
+
+ Select Dataset + + + + + + + + + + + + +
+
+{% include reports/yjit_stats_timeline.html %} +
+ + diff --git a/site/timeline-deep.md b/site/timeline-deep.md new file mode 100644 index 000000000..61c10b7ce --- /dev/null +++ b/site/timeline-deep.md @@ -0,0 +1,449 @@ +--- +layout: basic +--- + + + + +

YJIT Results Over Time

+ + + +

+ To zoom in, drag over the time range you want to see. Double-click to zoom back out. +

+ +
+ + +
+
+ Select Dataset + + + + + + + + + + + + +
+
+ {% include reports/blog_timeline.html %} +
+ + \ No newline at end of file From 6c37ad1c44fbe0ee55514e88ebdc7045b6b7bf34 Mon Sep 17 00:00:00 2001 From: Noah Gibbs Date: Wed, 8 Mar 2023 17:40:19 +0000 Subject: [PATCH 03/62] Add build success and fail images --- site/images/build-fail.png | Bin 0 -> 11136 bytes site/images/build-success.png | Bin 0 -> 15305 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 site/images/build-fail.png create mode 100644 site/images/build-success.png diff --git a/site/images/build-fail.png b/site/images/build-fail.png new file mode 100644 index 0000000000000000000000000000000000000000..03466060feaa83299fa906c69beb89d4a7e48675 GIT binary patch literal 11136 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 U>AK^xTfgS)%F>HmJb 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 RqXvJ zAYoZIPd;nyGuyr_j*hL^t8hXDtCUw55#U z0{{nl#v^;KCIvDhu;ZMgQbus;h6L$bASGppj09_e6g`2cD&58VaUSIk)LJ{?VzU$- z=M&5f+IT9m7`}eZP(ncBAqmE5dgW%4DKt zce(;n)t3WC&~84TtuTZNw77St6k9t`uV!ThS3g{de*IMI#9?tfbG;R{R#iN)NdHAM zy9aOiP+kkAE^+Jnt-BQo1$Lxb-J*uzdl$q#zr(^ozzss2t4RPyM6V99k^09gF#Ueg&GSazj+Xfc?h5>7?}mkDgr#nxr&2 zZjjVI5lyQbv&>R71wQzG<-&%s`iSt3pFRx+e=OT#XE28!3*MSESd!4Z3_HDs%bO>{i->rYgbO>e>kaZpyejVe3TjJHqWg|j0qB}-&xN|MWo<( z#igVc+Im;#3`@@@N*YN@XruAk%ai=cPvxFm6$z4xzq%OmGa>}IobN~ zBXgOUVBCw{*no-4o>R##U(Bg>k%Q#jlS8tXxV_4`%VuI}f!!F#L(hdW}*)d~EGSGc0FwES(= z!pi0S%j2iP%CN>>tixH$p5p`SDWvn;yW{$#82chvkf3XopP5_Pc&_mRIiRqP@wBcZ zFpl!b)VR$(`LMFVA7IYhKDQpe0M1Ih)fRG3@Q!tCP&szl82VBri34Gzl!Do*I3)_V zyGzD`S9RY6^k0+M+r@$!A_gS$PaW6EIjB-zcx+$Sl1UXa3$GTz;p~LO~hr{VDu`q z%VD`30^d+pNe#0494QWn3k;)rrDVms`~$#`@oML ziI*{lZ&70)p=}sO!eB<^t^PS$#?q6W2us)iKwIe?-dX;Le^TG6{(mXr{@+cdyf1V! Zv46Xmxh;<1e-1@>r=THUCu Date: Thu, 9 Mar 2023 14:23:38 +0000 Subject: [PATCH 04/62] Adjust sizes for build success/fail images --- site/images/build-fail-300x300.png | Bin 0 -> 11136 bytes site/images/build-fail.png | Bin 11136 -> 6241 bytes site/images/build-success-300x300.png | Bin 0 -> 15305 bytes site/images/build-success.png | Bin 15305 -> 7032 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 site/images/build-fail-300x300.png create mode 100644 site/images/build-success-300x300.png diff --git a/site/images/build-fail-300x300.png b/site/images/build-fail-300x300.png new file mode 100644 index 0000000000000000000000000000000000000000..03466060feaa83299fa906c69beb89d4a7e48675 GIT binary patch literal 11136 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 literal 11136 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 U>AK^xTfgS)%F>HmJb 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 RqXvJ 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 RqXvJ zAYoZIPd;nyGuyr_j*hL^t8hXDtCUw55#U z0{{nl#v^;KCIvDhu;ZMgQbus;h6L$bASGppj09_e6g`2cD&58VaUSIk)LJ{?VzU$- z=M&5f+IT9m7`}eZP(ncBAqmE5dgW%4DKt zce(;n)t3WC&~84TtuTZNw77St6k9t`uV!ThS3g{de*IMI#9?tfbG;R{R#iN)NdHAM zy9aOiP+kkAE^+Jnt-BQo1$Lxb-J*uzdl$q#zr(^ozzss2t4RPyM6V99k^09gF#Ueg&GSazj+Xfc?h5>7?}mkDgr#nxr&2 zZjjVI5lyQbv&>R71wQzG<-&%s`iSt3pFRx+e=OT#XE28!3*MSESd!4Z3_HDs%bO>{i->rYgbO>e>kaZpyejVe3TjJHqWg|j0qB}-&xN|MWo<( z#igVc+Im;#3`@@@N*YN@XruAk%ai=cPvxFm6$z4xzq%OmGa>}IobN~ zBXgOUVBCw{*no-4o>R##U(Bg>k%Q#jlS8tXxV_4`%VuI}f!!F#L(hdW}*)d~EGSGc0FwES(= z!pi0S%j2iP%CN>>tixH$p5p`SDWvn;yW{$#82chvkf3XopP5_Pc&_mRIiRqP@wBcZ zFpl!b)VR$(`LMFVA7IYhKDQpe0M1Ih)fRG3@Q!tCP&szl82VBri34Gzl!Do*I3)_V zyGzD`S9RY6^k0+M+r@$!A_gS$PaW6EIjB-zcx+$Sl1UXa3$GTz;p~LO~hr{VDu`q z%VD`30^d+pNe#0494QWn3k;)rrDVms`~$#`@oML ziI*{lZ&70)p=}sO!eB<^t^PS$#?q6W2us)iKwIe?-dX;Le^TG6{(mXr{@+cdyf1V! Zv46Xmxh;<1e-1@>r=THUCu Date: Thu, 9 Mar 2023 16:05:47 +0000 Subject: [PATCH 05/62] Add symlinks and .gitignore as preparation for build steps --- site/.gitignore | 1 + site/_includes/reports | 1 + site/reports | 1 + 3 files changed, 3 insertions(+) create mode 100644 site/.gitignore create mode 120000 site/_includes/reports create mode 120000 site/reports diff --git a/site/.gitignore b/site/.gitignore new file mode 100644 index 000000000..cf30e036b --- /dev/null +++ b/site/.gitignore @@ -0,0 +1 @@ +_site/* diff --git a/site/_includes/reports b/site/_includes/reports new file mode 120000 index 000000000..b536f4ea3 --- /dev/null +++ b/site/_includes/reports @@ -0,0 +1 @@ +../../built-yjit-reports/_includes/reports \ No newline at end of file diff --git a/site/reports b/site/reports new file mode 120000 index 000000000..9c6e8563d --- /dev/null +++ b/site/reports @@ -0,0 +1 @@ +../built-yjit-reports/reports \ No newline at end of file From 4aadac684c5488d120815a314e8ff7dbb0ed17aa Mon Sep 17 00:00:00 2001 From: Noah Gibbs Date: Mon, 13 Mar 2023 13:17:06 +0000 Subject: [PATCH 06/62] Add _benchmarks symlink --- site/_benchmarks | 1 + 1 file changed, 1 insertion(+) create mode 120000 site/_benchmarks diff --git a/site/_benchmarks b/site/_benchmarks new file mode 120000 index 000000000..df502a1b6 --- /dev/null +++ b/site/_benchmarks @@ -0,0 +1 @@ +../built-yjit-reports/_benchmarks \ No newline at end of file From 0a841f110aa035317aec1c973a22cb68445a7b16 Mon Sep 17 00:00:00 2001 From: Noah Gibbs Date: Mon, 13 Mar 2023 14:35:29 +0000 Subject: [PATCH 07/62] Comment-text fix --- site/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/index.md b/site/index.md index 8fe03c109..6ff052fc3 100644 --- a/site/index.md +++ b/site/index.md @@ -20,7 +20,7 @@ layout: basic {% endfor %} - +

Latest Headlining Results vs CRuby

From 31d2c43d812ac547835aa24e5ac6c5b6641ab834 Mon Sep 17 00:00:00 2001 From: Noah Gibbs Date: Wed, 15 Mar 2023 15:40:59 +0000 Subject: [PATCH 08/62] WIP --- site/Gemfile | 24 +++--- site/{about.md => about.html.erb} | 0 site/framework/README.md | 21 +++++ site/framework/render.rb | 123 ++++++++++++++++++++++++++++++ site/{index.md => index.html.erb} | 26 +++---- 5 files changed, 169 insertions(+), 25 deletions(-) rename site/{about.md => about.html.erb} (100%) create mode 100644 site/framework/README.md create mode 100644 site/framework/render.rb rename site/{index.md => index.html.erb} (53%) diff --git a/site/Gemfile b/site/Gemfile index 6290bf92d..4940e0c48 100644 --- a/site/Gemfile +++ b/site/Gemfile @@ -12,26 +12,26 @@ source "https://rubygems.org" #gem "minima", "~> 2.5" # If you want to use GitHub Pages, remove the "gem "jekyll"" above and # uncomment the line below. To upgrade, run `bundle update github-pages`. -gem "github-pages", "~> 207", group: :jekyll_plugins +#gem "github-pages", "~> 207", group: :jekyll_plugins # If you have any plugins, put them here! -group :jekyll_plugins do - gem "jekyll-feed", "~> 0.12" - gem "jekyll-relative-links" -end +#group :jekyll_plugins do +# gem "jekyll-feed", "~> 0.12" +# gem "jekyll-relative-links" +#end -gem "webrick" +#gem "webrick" # The speed report uses the Victor gem -gem "victor" +#gem "victor" # Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem # and associated library. -platforms :mingw, :x64_mingw, :mswin, :jruby do - gem "tzinfo", "~> 1.2" - gem "tzinfo-data" -end +#platforms :mingw, :x64_mingw, :mswin, :jruby do +# gem "tzinfo", "~> 1.2" +# gem "tzinfo-data" +#end # Performance-booster for watching directories on Windows -gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin] +#gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin] diff --git a/site/about.md b/site/about.html.erb similarity index 100% rename from site/about.md rename to site/about.html.erb diff --git a/site/framework/README.md b/site/framework/README.md new file mode 100644 index 000000000..cdee3b5ed --- /dev/null +++ b/site/framework/README.md @@ -0,0 +1,21 @@ +# yjit-metrics static site microframework + +So, funny story about Jekyll and Liquid. I initially chose them because GitHub actions defaults to them, and they're not hard to use. Mostly. + +But Jekyll as been painful. It's hard to reuse files, because the same file can only be included or never-included. You can't ever sometimes-include something. + +And the error messages when you use variables as part of your include file are ***really*** cryptic, and don't include things like line numbers, or the file it's trying and failing to find. + +And it's surprisingly hard to turn a directory of files into a directory of HTML ***more than once***. If you have a _benchmarks directory as a collection, you can't easily have five different HTML pages for each element. You can have ***one***. Or copy your files five times. That works too, but is horrible. + +And Jekyll doesn't allow symlinks from _include to outside of your repo. So it's hard to put together, let's say, a data dir, a generated-reports dir and a Jekyll source dir into a single HTML repo. Which is what I'm doing here. In fact, Jekyll doesn't allow symlinks ***at all***. And I don't really want to copy over 5GB of reports into a new local dir every time I build the site. + +As far as using GitHub Pages for this... turns out there's a 10-minute build time max on GHPages, and sometimes the builds are just randomly slow. So they get unreliable, and you have to go check whether they succeeded or not. Which is ***really*** annoying, given that I'm already running Jekyll myself every time and it's ***much*** faster than that. So I've already done the work, and then GitHub may or may not be willing to replicate it. + +All of this adds up to "Jekyll is really bad for my use case." I could adopt Middleman, which is based on Erb. But Middleman recently had a ***multi-year gap*** in their release history, apparently when they just took awhile to decide if they were going to bother any more. + +So, um, right, that seems like a bad idea too. + +To add insult to injury, there are (as I write this) about six pages of actual MD files, plus two layouts. Not a ton. The amount of actually Jekyll code is ***tiny***. + +So: microframework time. That's annoying. Maybe at some point I'll bite the bullet and switch to Middleman or something. But this is a great example of a case where it's not that hard to do it in Ruby, and the existing frameworks for it are all pretty bad for one reason or another. diff --git a/site/framework/render.rb b/site/framework/render.rb new file mode 100644 index 000000000..c7f8ee4ac --- /dev/null +++ b/site/framework/render.rb @@ -0,0 +1,123 @@ +#!/usr/bin/env ruby -w + +require "erb" +require "yaml" +require "fileutils" + +# For now, keep the equivalent of _config.yml in constants +COLLECTIONS = [ "benchmarks" ] +SPECIAL_DIRS = [ "_layouts", "_includes", "_sass" ] +TOPLEVEL_SKIPPED = [ "_config.yml" ] + +# TODO: handle _sass dir - just pregenerate? +# TODO: load collections +# TODO: render collections + +def all_collections + COLLECTIONS.each do |collection_name| + Dir["_#{collection_name}/*.yml"].each do |item| + end + end +end + +class RenderContext + def initialize(metadata) + @metadata = metadata + end + + # Used for layouts + def content + @metadata["content"] + end + + def method_missing(name, *args, **keywords) + if @metadata[name.to_s] + return @metadata[name.to_s] + end + super + end + + def respond_to_missing?(name) + return true if @metadata[name.to_s] + super + end + + def relative_url(url) + url # This is gonna be wrong + end + + def include(path) + render_file(path, @metadata) + end +end + +def read_file(path) + contents = File.read(path) + + if contents.start_with?("---\n") + front_matter, erb_template = contents.delete_prefix("---\n").split("\n---\n", 2) + front_matter_lines = front_matter.count("\n") + 2 # Two additional lines for the "---" we removed + STDERR.puts "Front_matter_lines: #{front_matter_lines.inspect} front_matter: #{front_matter.inspect}" + return YAML.load(front_matter), front_matter_lines, erb_template + else + return {}, 0, contents + end +end + +def render_file(path, metadata) + front_matter_data, line_offset, erb_template = read_file(path) + + dsl = RenderContext.new(metadata.merge(front_matter_data).merge("content" => "")) + erb_tmpl = ERB.new(erb_template) + erb_tmpl.location = [path, 1 + line_offset] + text = erb_tmpl.result(dsl.send(:binding)) + + if front_matter_data[:layout] + return render_file("_layouts/#{front_matter[:layout]}.erb", metadata.merge("content" => text)) + end + + text +end + +def build_site + # cd to root of repo + Dir.chdir "#{__dir__}/.." + + # Remove old _site directory if present, and replace it with an empty one + FileUtils.rm_rf "_site" + Dir.mkdir "_site" + + Dir["**/*"].each do |repo_file| + next if File.directory?(repo_file) + + if repo_file[0] == "_" + next if repo_file.start_with?("_site/") + next if TOPLEVEL_SKIPPED.include?(repo_file) + next if SPECIAL_DIRS.any? { |dir| repo_file.start_with?(dir + "/") } + next if COLLECTIONS.any? { |coll| repo_file.start_with?("_" + coll) } + raise "Unexpected repo path starting with underscore: #{repo_file.inspect}" + end + + # Note: File.extname/File.basename + + if repo_file.end_with?(".erb") + STDERR.puts "ERB generate: #{repo_file.inspect}" + out_file = File.join("_site", repo_file).delete_suffix(".erb") + new_contents = render_file(repo_file, {}) + File.write(out_file, new_contents) + else + out_loc = "_site/#{repo_file}" + FileUtils.mkdir_p(File.dirname(out_loc)) + FileUtils.cp(repo_file, out_loc) + end + end +end + +# Jekyll has a few subcommands. Build and server are the two I care about. +if ARGV == ["server"] + raise "Add server code here" +elsif ARGV == ["build"] + build_site +else + raise "Real arg parsing would be good. Args: #{ARGV.inspect}" +end diff --git a/site/index.md b/site/index.html.erb similarity index 53% rename from site/index.md rename to site/index.html.erb index 6ff052fc3..e66d2007a 100644 --- a/site/index.md +++ b/site/index.html.erb @@ -2,22 +2,22 @@ layout: basic --- -{% assign last_bench = site.benchmarks | last %} +<% last_bench = site.benchmarks[-1] %>

- How is YJIT's speed on its benchmarks as of {{last_bench.date_str}} {{last_bench.time_str}}? + How is YJIT's speed on its benchmarks as of <%= last_bench.date_str %> <%= last_bench.time_str %>?

- {% include {{ last_bench.reports.blog_speed_headline_html }} %} + {% include <%= last_bench.reports.blog_speed_headline_html %> %} - {% for platform in last_bench.platforms %} + <% for platform in last_bench.platforms %> - {% endfor %} + <% end %>
@@ -29,12 +29,12 @@ layout: basic

- - {% include {{last_bench.reports.blog_speed_details_x86_64_head_svg}} %} + + <%= include last_bench.reports.blog_speed_details_x86_64_head_svg %> Speed of each Ruby implementation (iterations/second) relative to the CRuby interpreter. Higher is better.
@@ -45,7 +45,7 @@ layout: basic

YJIT Results Over Time

@@ -56,7 +56,7 @@ layout: basic @@ -64,11 +64,11 @@ layout: basic

Do you love extensive details?
- + ">

From 3b58dab9ae0fb2dd4ec15a3338b3a6cdf3373610 Mon Sep 17 00:00:00 2001 From: Noah Gibbs Date: Thu, 16 Mar 2023 13:24:18 +0000 Subject: [PATCH 09/62] Writing out the first couple of html files --- site/Gemfile | 4 + site/Gemfile.lock | 278 +----------------- site/_layouts/{basic.html => basic.erb} | 14 +- ...ark_details.html => benchmark_details.erb} | 44 +-- site/_layouts/default.erb | 34 +++ site/_layouts/default.html | 51 ---- site/framework/render.rb | 63 ++-- site/index.html.erb | 6 +- 8 files changed, 113 insertions(+), 381 deletions(-) rename site/_layouts/{basic.html => basic.erb} (89%) rename site/_layouts/{benchmark_details.html => benchmark_details.erb} (83%) create mode 100644 site/_layouts/default.erb delete mode 100644 site/_layouts/default.html diff --git a/site/Gemfile b/site/Gemfile index 4940e0c48..fcf971e0c 100644 --- a/site/Gemfile +++ b/site/Gemfile @@ -1,4 +1,8 @@ source "https://rubygems.org" + +gem "redcarpet" + + # Hello! This is where you manage which Jekyll version is used to run. # When you want to use a different version, change it below, save the # file and run `bundle install`. Run Jekyll with `bundle exec`, like so: diff --git a/site/Gemfile.lock b/site/Gemfile.lock index dcb40b538..fc87a0a5f 100644 --- a/site/Gemfile.lock +++ b/site/Gemfile.lock @@ -1,274 +1,7 @@ GEM remote: https://rubygems.org/ specs: - activesupport (6.0.4.1) - concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 0.7, < 2) - minitest (~> 5.1) - tzinfo (~> 1.1) - zeitwerk (~> 2.2, >= 2.2.2) - addressable (2.8.0) - public_suffix (>= 2.0.2, < 5.0) - coffee-script (2.4.1) - coffee-script-source - execjs - coffee-script-source (1.11.1) - colorator (1.1.0) - commonmarker (0.17.13) - ruby-enum (~> 0.5) - concurrent-ruby (1.1.9) - dnsruby (1.61.7) - simpleidn (~> 0.1) - em-websocket (0.5.2) - eventmachine (>= 0.12.9) - http_parser.rb (~> 0.6.0) - ethon (0.14.0) - ffi (>= 1.15.0) - eventmachine (1.2.7) - execjs (2.8.1) - faraday (1.7.0) - faraday-em_http (~> 1.0) - faraday-em_synchrony (~> 1.0) - faraday-excon (~> 1.1) - faraday-httpclient (~> 1.0.1) - faraday-net_http (~> 1.0) - faraday-net_http_persistent (~> 1.1) - faraday-patron (~> 1.0) - faraday-rack (~> 1.0) - multipart-post (>= 1.2, < 3) - ruby2_keywords (>= 0.0.4) - faraday-em_http (1.0.0) - faraday-em_synchrony (1.0.0) - faraday-excon (1.1.0) - faraday-httpclient (1.0.1) - faraday-net_http (1.0.1) - faraday-net_http_persistent (1.2.0) - faraday-patron (1.0.0) - faraday-rack (1.0.0) - ffi (1.15.3) - forwardable-extended (2.6.0) - gemoji (3.0.1) - github-pages (207) - github-pages-health-check (= 1.16.1) - jekyll (= 3.9.0) - jekyll-avatar (= 0.7.0) - jekyll-coffeescript (= 1.1.1) - jekyll-commonmark-ghpages (= 0.1.6) - jekyll-default-layout (= 0.1.4) - jekyll-feed (= 0.13.0) - jekyll-gist (= 1.5.0) - jekyll-github-metadata (= 2.13.0) - jekyll-mentions (= 1.5.1) - jekyll-optional-front-matter (= 0.3.2) - jekyll-paginate (= 1.1.0) - jekyll-readme-index (= 0.3.0) - jekyll-redirect-from (= 0.15.0) - jekyll-relative-links (= 0.6.1) - jekyll-remote-theme (= 0.4.1) - jekyll-sass-converter (= 1.5.2) - jekyll-seo-tag (= 2.6.1) - jekyll-sitemap (= 1.4.0) - jekyll-swiss (= 1.0.0) - jekyll-theme-architect (= 0.1.1) - jekyll-theme-cayman (= 0.1.1) - jekyll-theme-dinky (= 0.1.1) - jekyll-theme-hacker (= 0.1.1) - jekyll-theme-leap-day (= 0.1.1) - jekyll-theme-merlot (= 0.1.1) - jekyll-theme-midnight (= 0.1.1) - jekyll-theme-minimal (= 0.1.1) - jekyll-theme-modernist (= 0.1.1) - jekyll-theme-primer (= 0.5.4) - jekyll-theme-slate (= 0.1.1) - jekyll-theme-tactile (= 0.1.1) - jekyll-theme-time-machine (= 0.1.1) - jekyll-titles-from-headings (= 0.5.3) - jemoji (= 0.11.1) - kramdown (= 2.3.0) - kramdown-parser-gfm (= 1.1.0) - liquid (= 4.0.3) - mercenary (~> 0.3) - minima (= 2.5.1) - nokogiri (>= 1.10.4, < 2.0) - rouge (= 3.19.0) - terminal-table (~> 1.4) - github-pages-health-check (1.16.1) - addressable (~> 2.3) - dnsruby (~> 1.60) - octokit (~> 4.0) - public_suffix (~> 3.0) - typhoeus (~> 1.3) - html-pipeline (2.14.0) - activesupport (>= 2) - nokogiri (>= 1.4) - http_parser.rb (0.6.0) - i18n (0.9.5) - concurrent-ruby (~> 1.0) - jekyll (3.9.0) - addressable (~> 2.4) - colorator (~> 1.0) - em-websocket (~> 0.5) - i18n (~> 0.7) - jekyll-sass-converter (~> 1.0) - jekyll-watch (~> 2.0) - kramdown (>= 1.17, < 3) - liquid (~> 4.0) - mercenary (~> 0.3.3) - pathutil (~> 0.9) - rouge (>= 1.7, < 4) - safe_yaml (~> 1.0) - jekyll-avatar (0.7.0) - jekyll (>= 3.0, < 5.0) - jekyll-coffeescript (1.1.1) - coffee-script (~> 2.2) - coffee-script-source (~> 1.11.1) - jekyll-commonmark (1.3.1) - commonmarker (~> 0.14) - jekyll (>= 3.7, < 5.0) - jekyll-commonmark-ghpages (0.1.6) - commonmarker (~> 0.17.6) - jekyll-commonmark (~> 1.2) - rouge (>= 2.0, < 4.0) - jekyll-default-layout (0.1.4) - jekyll (~> 3.0) - jekyll-feed (0.13.0) - jekyll (>= 3.7, < 5.0) - jekyll-gist (1.5.0) - octokit (~> 4.2) - jekyll-github-metadata (2.13.0) - jekyll (>= 3.4, < 5.0) - octokit (~> 4.0, != 4.4.0) - jekyll-mentions (1.5.1) - html-pipeline (~> 2.3) - jekyll (>= 3.7, < 5.0) - jekyll-optional-front-matter (0.3.2) - jekyll (>= 3.0, < 5.0) - jekyll-paginate (1.1.0) - jekyll-readme-index (0.3.0) - jekyll (>= 3.0, < 5.0) - jekyll-redirect-from (0.15.0) - jekyll (>= 3.3, < 5.0) - jekyll-relative-links (0.6.1) - jekyll (>= 3.3, < 5.0) - jekyll-remote-theme (0.4.1) - addressable (~> 2.0) - jekyll (>= 3.5, < 5.0) - rubyzip (>= 1.3.0) - jekyll-sass-converter (1.5.2) - sass (~> 3.4) - jekyll-seo-tag (2.6.1) - jekyll (>= 3.3, < 5.0) - jekyll-sitemap (1.4.0) - jekyll (>= 3.7, < 5.0) - jekyll-swiss (1.0.0) - jekyll-theme-architect (0.1.1) - jekyll (~> 3.5) - jekyll-seo-tag (~> 2.0) - jekyll-theme-cayman (0.1.1) - jekyll (~> 3.5) - jekyll-seo-tag (~> 2.0) - jekyll-theme-dinky (0.1.1) - jekyll (~> 3.5) - jekyll-seo-tag (~> 2.0) - jekyll-theme-hacker (0.1.1) - jekyll (~> 3.5) - jekyll-seo-tag (~> 2.0) - jekyll-theme-leap-day (0.1.1) - jekyll (~> 3.5) - jekyll-seo-tag (~> 2.0) - jekyll-theme-merlot (0.1.1) - jekyll (~> 3.5) - jekyll-seo-tag (~> 2.0) - jekyll-theme-midnight (0.1.1) - jekyll (~> 3.5) - jekyll-seo-tag (~> 2.0) - jekyll-theme-minimal (0.1.1) - jekyll (~> 3.5) - jekyll-seo-tag (~> 2.0) - jekyll-theme-modernist (0.1.1) - jekyll (~> 3.5) - jekyll-seo-tag (~> 2.0) - jekyll-theme-primer (0.5.4) - jekyll (> 3.5, < 5.0) - jekyll-github-metadata (~> 2.9) - jekyll-seo-tag (~> 2.0) - jekyll-theme-slate (0.1.1) - jekyll (~> 3.5) - jekyll-seo-tag (~> 2.0) - jekyll-theme-tactile (0.1.1) - jekyll (~> 3.5) - jekyll-seo-tag (~> 2.0) - jekyll-theme-time-machine (0.1.1) - jekyll (~> 3.5) - jekyll-seo-tag (~> 2.0) - jekyll-titles-from-headings (0.5.3) - jekyll (>= 3.3, < 5.0) - jekyll-watch (2.2.1) - listen (~> 3.0) - jemoji (0.11.1) - gemoji (~> 3.0) - html-pipeline (~> 2.2) - jekyll (>= 3.0, < 5.0) - kramdown (2.3.0) - rexml - kramdown-parser-gfm (1.1.0) - kramdown (~> 2.0) - liquid (4.0.3) - listen (3.7.0) - rb-fsevent (~> 0.10, >= 0.10.3) - rb-inotify (~> 0.9, >= 0.9.10) - mercenary (0.3.6) - mini_portile2 (2.6.1) - minima (2.5.1) - jekyll (>= 3.5, < 5.0) - jekyll-feed (~> 0.9) - jekyll-seo-tag (~> 2.1) - minitest (5.14.4) - multipart-post (2.1.1) - nokogiri (1.12.3) - mini_portile2 (~> 2.6.1) - racc (~> 1.4) - octokit (4.21.0) - faraday (>= 0.9) - sawyer (~> 0.8.0, >= 0.5.3) - pathutil (0.16.2) - forwardable-extended (~> 2.6) - public_suffix (3.1.1) - racc (1.5.2) - rb-fsevent (0.11.0) - rb-inotify (0.10.1) - ffi (~> 1.0) - rexml (3.2.5) - rouge (3.19.0) - ruby-enum (0.9.0) - i18n - ruby2_keywords (0.0.5) - rubyzip (2.3.2) - safe_yaml (1.0.5) - sass (3.7.4) - sass-listen (~> 4.0.0) - sass-listen (4.0.0) - rb-fsevent (~> 0.9, >= 0.9.4) - rb-inotify (~> 0.9, >= 0.9.7) - sawyer (0.8.2) - addressable (>= 2.3.5) - faraday (> 0.8, < 2.0) - simpleidn (0.2.1) - unf (~> 0.1.4) - terminal-table (1.8.0) - unicode-display_width (~> 1.1, >= 1.1.1) - thread_safe (0.3.6) - typhoeus (1.4.0) - ethon (>= 0.9.0) - tzinfo (1.2.9) - thread_safe (~> 0.1) - unf (0.1.4) - unf_ext - unf_ext (0.0.7.7) - unicode-display_width (1.7.0) - victor (0.3.4) - webrick (1.7.0) - zeitwerk (2.4.2) + redcarpet (3.6.0) PLATFORMS arm64-darwin-21 @@ -276,14 +9,7 @@ PLATFORMS x86_64-linux DEPENDENCIES - github-pages (~> 207) - jekyll-feed (~> 0.12) - jekyll-relative-links - tzinfo (~> 1.2) - tzinfo-data - victor - wdm (~> 0.1.1) - webrick + redcarpet BUNDLED WITH 2.3.26 diff --git a/site/_layouts/basic.html b/site/_layouts/basic.erb similarity index 89% rename from site/_layouts/basic.html rename to site/_layouts/basic.erb index 1387956e6..f1bb4a5dd 100644 --- a/site/_layouts/basic.html +++ b/site/_layouts/basic.erb @@ -1,13 +1,13 @@ - + - + - -{% seo %}
- +

YJIT Benchmarks

@@ -49,7 +47,7 @@

YJIT Benchmarks

- {{ content }} + <%= content %>
@@ -57,8 +55,8 @@

YJIT Benchmarks

diff --git a/site/_layouts/benchmark_details.html b/site/_layouts/benchmark_details.erb similarity index 83% rename from site/_layouts/benchmark_details.html rename to site/_layouts/benchmark_details.erb index 2bea92073..c8a51f4ce 100644 --- a/site/_layouts/benchmark_details.html +++ b/site/_layouts/benchmark_details.erb @@ -2,10 +2,10 @@ layout: basic --- -

Details for Benchmarks at {{ page.date_str }} {{ page.time_str }}

+

Details for Benchmarks at <%= page.date_str %> <%= page.time_str %>

-{% include {{page.reports.blog_speed_headline_html}} %} +<%= include page.reports.blog_speed_headline_html %>
The basic "faster" measurement is the geomean of all "headlining" x86 benchmarks on this page.
@@ -16,7 +16,7 @@

Headlining Benchmarks

+ data-gh-url="blog_speed_details_<%= page.timestamp %>.PLATFORM.head.svg"> Speed of each Ruby implementation (iterations/second) relative to the CRuby interpreter. Higher is better.
@@ -24,48 +24,48 @@

Headlining Benchmarks

Other Benchmarks

+ data-gh-url="blog_speed_details_<%= page.timestamp %>.PLATFORM.back.svg"> Speed of each Ruby implementation (iterations/second) relative to the CRuby interpreter. Higher is better.

MicroBenchmarks

+ data-gh-url="blog_speed_details_<%= page.timestamp %>.PLATFORM.micro.svg"> Speed of each Ruby implementation (iterations/second) relative to the CRuby interpreter. Higher is better.

Want Raw Graphs and CSV?

Benchmarks Speed Details

+ data-gh-url="blog_speed_details_<%= page.timestamp %>.PLATFORM.html">

Benchmark Memory Usage Details

+ data-gh-url="blog_memory_details_<%= page.timestamp %>.PLATFORM.html">

Number of Iterations and Warmups Tested

-{% include {{page.reports.iteration_count_html}} %} +<%= include page.reports.iteration_count_html %>

Benchmark YJIT Stats

-{% include {{page.reports.blog_yjit_stats_html}} %} +<%= include page.reports.blog_yjit_stats_html %>

Note: currently, all stats are collected on x86_64, not ARM.

@@ -76,7 +76,7 @@

Raw JSON data files


@@ -86,16 +86,16 @@

Far Too Many Details

These are links to HTML reports on GitHub with far, far too much detail about the benchmarking runs per-platform.


-{{ content | markdownify }} +<%= render_markdown content %> - + + + + + + +
+
+ + +

YJIT Benchmarks

+
+
+
+ + +
+
+ + +

Details for Benchmarks at <%= page.date_str %> <%= page.time_str %>

+ +
+ <%= include page.reports[:blog_speed_headline_html] %> +
The basic "faster" measurement is the geomean of all "headlining" x86 benchmarks on this page. +
+ +

Headlining Benchmarks

+ +

+ These are "headlining" because the "overall" speedup above is based on these benchmarks specifically. +

+ +
+ + Speed of each Ruby implementation (iterations/second) relative to the CRuby interpreter. Higher is better. +
+ +

Other Benchmarks

+ +
+ Speed of each Ruby implementation (iterations/second) relative to the CRuby interpreter. Higher is better. +
+ +

MicroBenchmarks

+ +
+ Speed of each Ruby implementation (iterations/second) relative to the CRuby interpreter. Higher is better. +
+ +

Want Raw Graphs and CSV?

+ + + +

Benchmarks Speed Details

+ +
+
+ +

Benchmark Memory Usage Details

+ +
+
+ +

Number of Iterations and Warmups Tested

+ + <%= include page.reports[:iteration_count_html] %> + +

Benchmark YJIT Stats

+ + <%= include page.reports[:blog_yjit_stats_html] %> + +

Note: currently, all stats are collected on x86_64, not ARM.

+ +

Raw JSON data files

+ +

+ All graphs and table data in this page comes from processing these data files, which come from benchmark runs. +

+ + + +
+ +

Far Too Many Details

+ +

These are links to HTML reports on GitHub with far, far too much detail about the benchmarking runs per-platform.

+ + + +
+ <%= content %> + + + + + +
+
+ + + + +
+
+ + + var clipboard = new ClipboardJS('[data-clipboard-text]'); + clipboard.on("success", function(e) { + console.log("Copied to clipboard: " + e.text); + showCopyConfirm(e); + e.clearSelection(); + }); + clipboard.on('error', function(e) { + console.error('Failed copying SHA to clipboard on click'); + console.error('Action:', e.action); + console.error('Trigger:', e.trigger); + }); + + + From 1bee7e410e5b18db4c3639e7fa9e7a134e6e5154 Mon Sep 17 00:00:00 2001 From: Noah Gibbs Date: Mon, 31 Jul 2023 14:50:31 +0100 Subject: [PATCH 23/62] Add autocopy file to framework, use it to put AJAX graphs into a usable location --- site/_framework/render.rb | 9 +++ site/_layouts/benchmark_details.erb | 89 ++++++++++++++--------------- site/autocopy.yml | 9 +++ 3 files changed, 61 insertions(+), 46 deletions(-) create mode 100644 site/autocopy.yml diff --git a/site/_framework/render.rb b/site/_framework/render.rb index 444e208e6..05817635f 100644 --- a/site/_framework/render.rb +++ b/site/_framework/render.rb @@ -195,6 +195,15 @@ def build_site FileUtils.rm_rf "_site" Dir.mkdir "_site" + if File.exist?("autocopy.yml") + require "yaml" + autocopy = YAML.load(File.read("autocopy.yml")) + autocopy.each do |src, dest| + FileUtils.mkdir_p File.dirname(dest) + FileUtils.cp_r Dir.glob(src), dest + end + end + coll_data = parse_collections site_var = OpenStruct.new coll_data metadata = {} diff --git a/site/_layouts/benchmark_details.erb b/site/_layouts/benchmark_details.erb index f8a32e608..37fbb9db7 100644 --- a/site/_layouts/benchmark_details.erb +++ b/site/_layouts/benchmark_details.erb @@ -61,83 +61,82 @@

These are "headlining" because the "overall" speedup above is based on these benchmarks specifically.

- +
- + data-graph-url="blog_speed_details_<%= page.timestamp %>.PLATFORM.head.svg"> + Speed of each Ruby implementation (iterations/second) relative to the CRuby interpreter. Higher is better.
- +

Other Benchmarks

- +
+ data-graph-url="blog_speed_details_<%= page.timestamp %>.PLATFORM.back.svg"> Speed of each Ruby implementation (iterations/second) relative to the CRuby interpreter. Higher is better.
- +

MicroBenchmarks

- +
+ data-graph-url="blog_speed_details_<%= page.timestamp %>.PLATFORM.micro.svg"> Speed of each Ruby implementation (iterations/second) relative to the CRuby interpreter. Higher is better.
- +

Want Raw Graphs and CSV?

- + - +

Benchmarks Speed Details

- +
+ data-graph-url="blog_speed_details_<%= page.timestamp %>.PLATFORM.html">
- +

Benchmark Memory Usage Details

- +
+ data-graph-url="blog_memory_details_<%= page.timestamp %>.PLATFORM.html">
- +

Number of Iterations and Warmups Tested

- + <%= include page.reports[:iteration_count_html] %> - +

Benchmark YJIT Stats

- + <%= include page.reports[:blog_yjit_stats_html] %> - +

Note: currently, all stats are collected on x86_64, not ARM.

- +

Raw JSON data files

- +

All graphs and table data in this page comes from processing these data files, which come from benchmark runs.

- + - +
- +

Far Too Many Details

- +

These are links to HTML reports on GitHub with far, far too much detail about the benchmarking runs per-platform.

- + - +
<%= content %> @@ -146,15 +145,13 @@ // Create platform-selector DOM elements function addPlatformSelector(elt) { - //if(platformsThisTimestamp.length == 1) { return; } - var top_element = document.createElement('div'); - var ghUrl = elt.dataset.ghUrl; + var graphUrl = elt.dataset.graphUrl; var ctr = elt.dataset.platformCounter; - + if(platformsThisTimestamp.length == 1) { top_element.innerHTML = ` -
+
@@ -163,7 +160,7 @@ ` } else { top_element.innerHTML = ` -
+
Select Platform @@ -183,20 +180,20 @@
` } - + // Any text or other content will be at the bottom, below the graph and selector elt.prepend(top_element); } - + // How to turn a GH URL template into a real URL function urlFromTemplate(opts) { var t = opts.template; if(opts.platform) { t = t.replaceAll("PLATFORM", opts.platform); } - return "https://raw.githubusercontent.com/Shopify/yjit-metrics/pages/_includes/reports/" + t; + return "reports/platform_details/" + t; } - + // Load platform-specific graph content into appropriate divs var platform_counter = 1; document.platform_handlers = {}; @@ -205,7 +202,7 @@ platform_counter++; // Next elt's platform_counter is guaranteed different addPlatformSelector(elt); }); - + // We're going to want to AJAX-fetch platform-specific graphs. And if a // fetch is already pending, we need to cancel it. We'll track that with // an array of 'cancellers' (AbortControllers). @@ -213,20 +210,20 @@ var prevPlatform = []; function makePlatGraphRequest(wrapperElt, platform) { var platCtr = wrapperElt.dataset.platCounter; - + // Is there a pending request for this same platform? Let it finish. if(prevPlatform[platCtr] == platform && fetchCancel[platCtr]) { return; } - + setRequestPending(wrapperElt); - + // Is there a pending fetch for another platform? Abort it. if(fetchCancel[platCtr]) { fetchCancel[platCtr].abort(); delete fetchCancel[platCtr]; } - + var url = urlFromTemplate({ template: wrapperElt.dataset.urlTemplate, platform: platform }); var canceller = new AbortController(); // Call .abort() on controller to send abort signal fetchCancel[platCtr] = canceller; diff --git a/site/autocopy.yml b/site/autocopy.yml new file mode 100644 index 000000000..cd835c651 --- /dev/null +++ b/site/autocopy.yml @@ -0,0 +1,9 @@ +--- +- - "_includes/reports/blog_speed_details_*.x86_64*.svg" + - "reports/platform_details/" +- - "_includes/reports/blog_speed_details_*.x86_64*.html" + - "reports/platform_details/" +- - "_includes/reports/blog_speed_details_*.aarch64*.svg" + - "reports/platform_details/" +- - "_includes/reports/blog_speed_details_*.aarch64*.html" + - "reports/platform_details/" \ No newline at end of file From db3d4e7654a1dcf74e2c7eaedfbf643eb3b1ff45 Mon Sep 17 00:00:00 2001 From: Noah Gibbs Date: Mon, 31 Jul 2023 14:56:16 +0100 Subject: [PATCH 24/62] Try expand_path to successfully create dirs under symlinks --- site/_framework/render.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/_framework/render.rb b/site/_framework/render.rb index 05817635f..0052188a6 100644 --- a/site/_framework/render.rb +++ b/site/_framework/render.rb @@ -199,7 +199,7 @@ def build_site require "yaml" autocopy = YAML.load(File.read("autocopy.yml")) autocopy.each do |src, dest| - FileUtils.mkdir_p File.dirname(dest) + FileUtils.mkdir_p File.expand_path(File.dirname(dest)) FileUtils.cp_r Dir.glob(src), dest end end From 6f625ee62a5f654a595358267efa9d84bad80fd2 Mon Sep 17 00:00:00 2001 From: Noah Gibbs Date: Mon, 31 Jul 2023 15:01:50 +0100 Subject: [PATCH 25/62] Try hardlinking to avoid massive copy time/space --- site/_framework/render.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/_framework/render.rb b/site/_framework/render.rb index 0052188a6..6fb3acd42 100644 --- a/site/_framework/render.rb +++ b/site/_framework/render.rb @@ -200,7 +200,7 @@ def build_site autocopy = YAML.load(File.read("autocopy.yml")) autocopy.each do |src, dest| FileUtils.mkdir_p File.expand_path(File.dirname(dest)) - FileUtils.cp_r Dir.glob(src), dest + FileUtils.ln Dir.glob(src), dest end end From c1ac1fc3f2f2934948c5f53f74a9a1ed5fc70984 Mon Sep 17 00:00:00 2001 From: Noah Gibbs Date: Mon, 31 Jul 2023 15:47:07 +0100 Subject: [PATCH 26/62] Try adding force: true to ln to overwrite --- site/_framework/render.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/_framework/render.rb b/site/_framework/render.rb index 6fb3acd42..e721581dc 100644 --- a/site/_framework/render.rb +++ b/site/_framework/render.rb @@ -200,7 +200,7 @@ def build_site autocopy = YAML.load(File.read("autocopy.yml")) autocopy.each do |src, dest| FileUtils.mkdir_p File.expand_path(File.dirname(dest)) - FileUtils.ln Dir.glob(src), dest + FileUtils.ln Dir.glob(src), dest, force: true end end From 89f8068c063c9013aad67a942ba35e66515d6738 Mon Sep 17 00:00:00 2001 From: Noah Gibbs Date: Mon, 31 Jul 2023 16:50:47 +0100 Subject: [PATCH 27/62] Fix relative-path problem with AJAX graphs --- site/_layouts/benchmark_details.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/_layouts/benchmark_details.erb b/site/_layouts/benchmark_details.erb index 37fbb9db7..fa22598bd 100644 --- a/site/_layouts/benchmark_details.erb +++ b/site/_layouts/benchmark_details.erb @@ -191,7 +191,7 @@ if(opts.platform) { t = t.replaceAll("PLATFORM", opts.platform); } - return "reports/platform_details/" + t; + return "/reports/platform_details/" + t; } // Load platform-specific graph content into appropriate divs From 7fbdbb16f822816aec8d15ed6ca4b848fa68b593 Mon Sep 17 00:00:00 2001 From: Noah Gibbs Date: Mon, 31 Jul 2023 17:52:05 +0100 Subject: [PATCH 28/62] Fix path to clipboard.js asset --- site/_layouts/benchmark_details.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/_layouts/benchmark_details.erb b/site/_layouts/benchmark_details.erb index fa22598bd..3eab030e0 100644 --- a/site/_layouts/benchmark_details.erb +++ b/site/_layouts/benchmark_details.erb @@ -6,7 +6,7 @@ - +