From f74d5c1c72dfd9e5bc8685c56e6a11e5649a89eb Mon Sep 17 00:00:00 2001 From: Pietro Albini Date: Mon, 18 Jul 2022 12:05:14 +0200 Subject: [PATCH 01/15] add basic REUSE scaffolding --- .reuse/dep5 | 7 +++++++ LICENSES/LicenseRef-TODO.txt | 2 ++ 2 files changed, 9 insertions(+) create mode 100644 .reuse/dep5 create mode 100644 LICENSES/LicenseRef-TODO.txt diff --git a/.reuse/dep5 b/.reuse/dep5 new file mode 100644 index 0000000000000..03d9f152d5fbe --- /dev/null +++ b/.reuse/dep5 @@ -0,0 +1,7 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ + +# Temporarily mark all files to be licensed with the custom "TODO" license, +# until we import the proper licensing metadata in a separate PR. +Files: * +Copyright: TODO +License: LicenseRef-TODO diff --git a/LICENSES/LicenseRef-TODO.txt b/LICENSES/LicenseRef-TODO.txt new file mode 100644 index 0000000000000..7b193bf7d5e1c --- /dev/null +++ b/LICENSES/LicenseRef-TODO.txt @@ -0,0 +1,2 @@ +Temporary placeholder, only needed until we import the actual licensing +metadata. From 9369e6032e77fd36d426434715a5ed9af2e308d4 Mon Sep 17 00:00:00 2001 From: Pietro Albini Date: Mon, 18 Jul 2022 12:31:50 +0200 Subject: [PATCH 02/15] check REUSE compliance in CI --- .../docker/host-x86_64/mingw-check/Dockerfile | 9 ++ .../mingw-check/reuse-requirements.in | 22 +++ .../mingw-check/reuse-requirements.txt | 145 ++++++++++++++++++ 3 files changed, 176 insertions(+) create mode 100644 src/ci/docker/host-x86_64/mingw-check/reuse-requirements.in create mode 100644 src/ci/docker/host-x86_64/mingw-check/reuse-requirements.txt diff --git a/src/ci/docker/host-x86_64/mingw-check/Dockerfile b/src/ci/docker/host-x86_64/mingw-check/Dockerfile index 9ee84f420b952..c6723d91c8bb4 100644 --- a/src/ci/docker/host-x86_64/mingw-check/Dockerfile +++ b/src/ci/docker/host-x86_64/mingw-check/Dockerfile @@ -1,4 +1,7 @@ FROM ubuntu:18.04 +# FIXME: when bumping the version, remove the Python 3.6-specific changes in +# the reuse-requirements.in file, regenerate reuse-requirements.txt and remove +# this comment. RUN apt-get update && apt-get install -y --no-install-recommends \ g++ \ @@ -8,6 +11,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ curl \ ca-certificates \ python3 \ + python3-pip \ + python3-pkg-resources \ git \ cmake \ sudo \ @@ -27,6 +32,9 @@ RUN npm install eslint@8.6.0 -g COPY scripts/sccache.sh /scripts/ RUN sh /scripts/sccache.sh +COPY host-x86_64/mingw-check/reuse-requirements.txt /tmp/ +RUN pip3 install --no-deps --require-hashes -r /tmp/reuse-requirements.txt + COPY host-x86_64/mingw-check/validate-toolstate.sh /scripts/ COPY host-x86_64/mingw-check/validate-error-codes.sh /scripts/ @@ -40,6 +48,7 @@ ENV SCRIPT python3 ../x.py --stage 2 test src/tools/expand-yaml-anchors && \ python3 ../x.py doc --stage 0 library/test && \ /scripts/validate-toolstate.sh && \ /scripts/validate-error-codes.sh && \ + reuse lint && \ # Runs checks to ensure that there are no ES5 issues in our JS code. es-check es6 ../src/librustdoc/html/static/js/*.js && \ eslint -c ../src/librustdoc/html/static/.eslintrc.js ../src/librustdoc/html/static/js/*.js diff --git a/src/ci/docker/host-x86_64/mingw-check/reuse-requirements.in b/src/ci/docker/host-x86_64/mingw-check/reuse-requirements.in new file mode 100644 index 0000000000000..4964f40aa39ad --- /dev/null +++ b/src/ci/docker/host-x86_64/mingw-check/reuse-requirements.in @@ -0,0 +1,22 @@ +# This is the template for reuse-requirements.txt. +# +# The pip-tools project is used to generate the file again. To install it, the +# recommended way is to: +# +# - Install pipx from https://github.com/pypa/pipx +# - Run `pipx install pip-tools` +# +# Once pip-tools is installed, run this command to regenerate the .txt file: +# +# pip-compile --allow-unsafe --generate-hashes reuse-requirements.in +# + +reuse + +# Some packages dropped support for Python 3.6, which is the version used in +# this builder (due to Ubuntu 18.04). This should be removed once we bump the +# Ubuntu version of the builder. +jinja2 < 3.1 +markupsafe < 2.1 +requests < 2.28 +setuptools < 59.7 diff --git a/src/ci/docker/host-x86_64/mingw-check/reuse-requirements.txt b/src/ci/docker/host-x86_64/mingw-check/reuse-requirements.txt new file mode 100644 index 0000000000000..10a5f73879082 --- /dev/null +++ b/src/ci/docker/host-x86_64/mingw-check/reuse-requirements.txt @@ -0,0 +1,145 @@ +# +# This file is autogenerated by pip-compile with python 3.10 +# To update, run: +# +# pip-compile --allow-unsafe --generate-hashes reuse-requirements.in +# +binaryornot==0.4.4 \ + --hash=sha256:359501dfc9d40632edc9fac890e19542db1a287bbcfa58175b66658392018061 \ + --hash=sha256:b8b71173c917bddcd2c16070412e369c3ed7f0528926f70cac18a6c97fd563e4 + # via reuse +boolean-py==3.8 \ + --hash=sha256:cc24e20f985d60cd4a3a5a1c0956dd12611159d32a75081dabd0c9ab981acaa4 \ + --hash=sha256:d75da0fd0354425fa64f6bbc6cec6ae1485d0eec3447b73187ff8cbf9b572e26 + # via + # license-expression + # reuse +certifi==2022.6.15 \ + --hash=sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d \ + --hash=sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412 + # via requests +chardet==5.0.0 \ + --hash=sha256:0368df2bfd78b5fc20572bb4e9bb7fb53e2c094f60ae9993339e8671d0afb8aa \ + --hash=sha256:d3e64f022d254183001eccc5db4040520c0f23b1a3f33d6413e099eb7f126557 + # via + # binaryornot + # python-debian +charset-normalizer==2.0.12 \ + --hash=sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597 \ + --hash=sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df + # via requests +idna==3.3 \ + --hash=sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff \ + --hash=sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d + # via requests +jinja2==3.0.3 \ + --hash=sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8 \ + --hash=sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7 + # via + # -r reuse-requirements.in + # reuse +license-expression==21.6.14 \ + --hash=sha256:324246eed8e138b4139fefdc0e9dc4161d5075e3929e56983966d37298dca30e \ + --hash=sha256:9de87a427c9a449eee7913472fb9ed03b63036295547369fdbf95f76a8b924b2 + # via + # -r reuse-requirements.in + # reuse +markupsafe==2.0.1 \ + --hash=sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298 \ + --hash=sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64 \ + --hash=sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b \ + --hash=sha256:04635854b943835a6ea959e948d19dcd311762c5c0c6e1f0e16ee57022669194 \ + --hash=sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567 \ + --hash=sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff \ + --hash=sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724 \ + --hash=sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74 \ + --hash=sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646 \ + --hash=sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35 \ + --hash=sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6 \ + --hash=sha256:20dca64a3ef2d6e4d5d615a3fd418ad3bde77a47ec8a23d984a12b5b4c74491a \ + --hash=sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6 \ + --hash=sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad \ + --hash=sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26 \ + --hash=sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38 \ + --hash=sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac \ + --hash=sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7 \ + --hash=sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6 \ + --hash=sha256:4296f2b1ce8c86a6aea78613c34bb1a672ea0e3de9c6ba08a960efe0b0a09047 \ + --hash=sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75 \ + --hash=sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f \ + --hash=sha256:4dc8f9fb58f7364b63fd9f85013b780ef83c11857ae79f2feda41e270468dd9b \ + --hash=sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135 \ + --hash=sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8 \ + --hash=sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a \ + --hash=sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a \ + --hash=sha256:5b6d930f030f8ed98e3e6c98ffa0652bdb82601e7a016ec2ab5d7ff23baa78d1 \ + --hash=sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9 \ + --hash=sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864 \ + --hash=sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914 \ + --hash=sha256:6300b8454aa6930a24b9618fbb54b5a68135092bc666f7b06901f897fa5c2fee \ + --hash=sha256:63f3268ba69ace99cab4e3e3b5840b03340efed0948ab8f78d2fd87ee5442a4f \ + --hash=sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18 \ + --hash=sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8 \ + --hash=sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2 \ + --hash=sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d \ + --hash=sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b \ + --hash=sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b \ + --hash=sha256:89c687013cb1cd489a0f0ac24febe8c7a666e6e221b783e53ac50ebf68e45d86 \ + --hash=sha256:8d206346619592c6200148b01a2142798c989edcb9c896f9ac9722a99d4e77e6 \ + --hash=sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f \ + --hash=sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb \ + --hash=sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833 \ + --hash=sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28 \ + --hash=sha256:9f02365d4e99430a12647f09b6cc8bab61a6564363f313126f775eb4f6ef798e \ + --hash=sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415 \ + --hash=sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902 \ + --hash=sha256:aca6377c0cb8a8253e493c6b451565ac77e98c2951c45f913e0b52facdcff83f \ + --hash=sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d \ + --hash=sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9 \ + --hash=sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d \ + --hash=sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145 \ + --hash=sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066 \ + --hash=sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c \ + --hash=sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1 \ + --hash=sha256:cdfba22ea2f0029c9261a4bd07e830a8da012291fbe44dc794e488b6c9bb353a \ + --hash=sha256:d6c7ebd4e944c85e2c3421e612a7057a2f48d478d79e61800d81468a8d842207 \ + --hash=sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f \ + --hash=sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53 \ + --hash=sha256:deb993cacb280823246a026e3b2d81c493c53de6acfd5e6bfe31ab3402bb37dd \ + --hash=sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134 \ + --hash=sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85 \ + --hash=sha256:f0567c4dc99f264f49fe27da5f735f414c4e7e7dd850cfd8e69f0862d7c74ea9 \ + --hash=sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5 \ + --hash=sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94 \ + --hash=sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509 \ + --hash=sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51 \ + --hash=sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872 + # via + # -r reuse-requirements.in + # jinja2 +python-debian==0.1.44 \ + --hash=sha256:11bd6f01c46da57982bdd66dd595e2d240feb32a85de3fd37c452102fd0337ab \ + --hash=sha256:65592fe3b64f6c6c93d94e2d2599db5e0c22831d3bcff07cb7b96d3840b1333e + # via reuse +requests==2.26.0 \ + --hash=sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24 \ + --hash=sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7 + # via + # -r reuse-requirements.in + # reuse +reuse==1.0.0 \ + --hash=sha256:db3022be2d87f69c8f508b928023de3026f454ce17d01e22f770f7147ac1e8d4 \ + --hash=sha256:e2605e796311c424465d741ea2a1e1ad03bbb90b921d74750119c331ca5af46e + # via -r reuse-requirements.in +urllib3==1.26.10 \ + --hash=sha256:8298d6d56d39be0e3bc13c1c97d133f9b45d797169a0e11cdd0e0489d786f7ec \ + --hash=sha256:879ba4d1e89654d9769ce13121e0f94310ea32e8d2f8cf587b77c08bbcdb30d6 + # via requests + +# The following packages are considered to be unsafe in a requirements file: +setuptools==59.6.0 \ + --hash=sha256:22c7348c6d2976a52632c67f7ab0cdf40147db7789f9aed18734643fe9cf3373 \ + --hash=sha256:4ce92f1e1f8f01233ee9952c04f6b81d1e02939d6e1b488428154974a4d0783e + # via + # -r reuse-requirements.in + # reuse From 8e80c39d2ddfaf2fcba084db2e32b2db461d94c7 Mon Sep 17 00:00:00 2001 From: Titus Date: Mon, 15 Aug 2022 16:18:00 +0200 Subject: [PATCH 03/15] Fix trailing space showing up in example The current text is rendered as: U+005B ..= U+0060 ``[ \ ] ^ _ ` ``, or. This patch changes that to render as: U+005B ..= U+0060 `` [ \ ] ^ _ ` ``, or The reason for that, is that CommonMark has a solution for starting or ending inline code with a backtick/grave accent: padding both sides with a space, makes that padding disappear. --- library/core/src/num/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/core/src/num/mod.rs b/library/core/src/num/mod.rs index f481399fdcf92..72b6dc2818540 100644 --- a/library/core/src/num/mod.rs +++ b/library/core/src/num/mod.rs @@ -623,7 +623,7 @@ impl u8 { /// /// - U+0021 ..= U+002F `! " # $ % & ' ( ) * + , - . /`, or /// - U+003A ..= U+0040 `: ; < = > ? @`, or - /// - U+005B ..= U+0060 ``[ \ ] ^ _ ` ``, or + /// - U+005B ..= U+0060 `` [ \ ] ^ _ ` ``, or /// - U+007B ..= U+007E `{ | } ~` /// /// # Examples From 03db9199890801b8098954d5d6b620fcbef8443d Mon Sep 17 00:00:00 2001 From: Takayuki Maeda Date: Tue, 16 Aug 2022 03:08:25 +0900 Subject: [PATCH 04/15] remove unnecessary stderr files --- .../higher-ranked-projection.badbase.stderr | 17 ----------------- .../higher-ranked-projection.badnll.stderr | 2 -- .../old-lub-glb-hr-noteq1.nllleak.stderr | 2 -- .../old-lub-glb-hr-noteq1.nllnoleak.stderr | 2 -- 4 files changed, 23 deletions(-) delete mode 100644 src/test/ui/associated-types/higher-ranked-projection.badbase.stderr delete mode 100644 src/test/ui/associated-types/higher-ranked-projection.badnll.stderr delete mode 100644 src/test/ui/lub-glb/old-lub-glb-hr-noteq1.nllleak.stderr delete mode 100644 src/test/ui/lub-glb/old-lub-glb-hr-noteq1.nllnoleak.stderr diff --git a/src/test/ui/associated-types/higher-ranked-projection.badbase.stderr b/src/test/ui/associated-types/higher-ranked-projection.badbase.stderr deleted file mode 100644 index 8b2b87223a58a..0000000000000 --- a/src/test/ui/associated-types/higher-ranked-projection.badbase.stderr +++ /dev/null @@ -1,17 +0,0 @@ -error[E0308]: mismatched types - --> $DIR/higher-ranked-projection.rs:25:5 - | -LL | foo(()); - | ^^^^^^^ one type is more general than the other - | - = note: expected reference `&'a ()` - found reference `&()` -note: the lifetime requirement is introduced here - --> $DIR/higher-ranked-projection.rs:16:33 - | -LL | where for<'a> &'a T: Mirror - | ^^^^^^^ - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0308`. diff --git a/src/test/ui/associated-types/higher-ranked-projection.badnll.stderr b/src/test/ui/associated-types/higher-ranked-projection.badnll.stderr deleted file mode 100644 index 217392aa35b15..0000000000000 --- a/src/test/ui/associated-types/higher-ranked-projection.badnll.stderr +++ /dev/null @@ -1,2 +0,0 @@ -error: unknown debugging option: `borrowck` - diff --git a/src/test/ui/lub-glb/old-lub-glb-hr-noteq1.nllleak.stderr b/src/test/ui/lub-glb/old-lub-glb-hr-noteq1.nllleak.stderr deleted file mode 100644 index 217392aa35b15..0000000000000 --- a/src/test/ui/lub-glb/old-lub-glb-hr-noteq1.nllleak.stderr +++ /dev/null @@ -1,2 +0,0 @@ -error: unknown debugging option: `borrowck` - diff --git a/src/test/ui/lub-glb/old-lub-glb-hr-noteq1.nllnoleak.stderr b/src/test/ui/lub-glb/old-lub-glb-hr-noteq1.nllnoleak.stderr deleted file mode 100644 index 217392aa35b15..0000000000000 --- a/src/test/ui/lub-glb/old-lub-glb-hr-noteq1.nllnoleak.stderr +++ /dev/null @@ -1,2 +0,0 @@ -error: unknown debugging option: `borrowck` - From 70dd980c8d27dbb748de0660ceed7cfdc2413914 Mon Sep 17 00:00:00 2001 From: Mohsen Zohrevandi Date: Mon, 15 Aug 2022 16:02:49 -0700 Subject: [PATCH 05/15] Update fortanix-sgx-abi and export some useful SGX usercall traits Update fortanix-sgx-abi to 0.5.0 to add support for cancel queue (see https://github.com/fortanix/rust-sgx/pull/405 and https://github.com/fortanix/rust-sgx/pull/404). Export some useful traits for processing SGX usercall. This is needed for https://github.com/fortanix/rust-sgx/pull/404 to avoid duplication. --- Cargo.lock | 4 ++-- library/std/Cargo.toml | 2 +- library/std/src/os/fortanix_sgx/mod.rs | 1 + .../std/src/sys/sgx/abi/usercalls/alloc.rs | 2 ++ library/std/src/sys/sgx/abi/usercalls/mod.rs | 8 ++++++- library/std/src/sys/sgx/abi/usercalls/raw.rs | 24 ++++++++++++++++--- 6 files changed, 34 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 395f5a127bd3d..cee895acf75d6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1421,9 +1421,9 @@ dependencies = [ [[package]] name = "fortanix-sgx-abi" -version = "0.3.3" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c56c422ef86062869b2d57ae87270608dc5929969dd130a6e248979cf4fb6ca6" +checksum = "57cafc2274c10fab234f176b25903ce17e690fca7597090d50880e047a0389c5" dependencies = [ "compiler_builtins", "rustc-std-workspace-core", diff --git a/library/std/Cargo.toml b/library/std/Cargo.toml index 229e546e08549..3da9565a86d78 100644 --- a/library/std/Cargo.toml +++ b/library/std/Cargo.toml @@ -39,7 +39,7 @@ rand = "0.7" dlmalloc = { version = "0.2.3", features = ['rustc-dep-of-std'] } [target.x86_64-fortanix-unknown-sgx.dependencies] -fortanix-sgx-abi = { version = "0.3.2", features = ['rustc-dep-of-std'] } +fortanix-sgx-abi = { version = "0.5.0", features = ['rustc-dep-of-std'] } [target.'cfg(target_os = "hermit")'.dependencies] hermit-abi = { version = "0.2.0", features = ['rustc-dep-of-std'] } diff --git a/library/std/src/os/fortanix_sgx/mod.rs b/library/std/src/os/fortanix_sgx/mod.rs index a40dabe190ae0..da100b689db84 100644 --- a/library/std/src/os/fortanix_sgx/mod.rs +++ b/library/std/src/os/fortanix_sgx/mod.rs @@ -26,6 +26,7 @@ pub mod usercalls { free, insecure_time, launch_thread, read, read_alloc, send, wait, write, }; pub use crate::sys::abi::usercalls::raw::{do_usercall, Usercalls as UsercallNrs}; + pub use crate::sys::abi::usercalls::raw::{Register, RegisterArgument, ReturnValue}; // fortanix-sgx-abi re-exports pub use crate::sys::abi::usercalls::raw::Error; diff --git a/library/std/src/sys/sgx/abi/usercalls/alloc.rs b/library/std/src/sys/sgx/abi/usercalls/alloc.rs index 66fa1efbf103f..b5bf9c3f2435d 100644 --- a/library/std/src/sys/sgx/abi/usercalls/alloc.rs +++ b/library/std/src/sys/sgx/abi/usercalls/alloc.rs @@ -56,6 +56,8 @@ unsafe impl UserSafeSized for Usercall {} #[unstable(feature = "sgx_platform", issue = "56975")] unsafe impl UserSafeSized for Return {} #[unstable(feature = "sgx_platform", issue = "56975")] +unsafe impl UserSafeSized for Cancel {} +#[unstable(feature = "sgx_platform", issue = "56975")] unsafe impl UserSafeSized for [T; 2] {} /// A type that can be represented in memory as one or more `UserSafeSized`s. diff --git a/library/std/src/sys/sgx/abi/usercalls/mod.rs b/library/std/src/sys/sgx/abi/usercalls/mod.rs index 79d1db5e1c50d..e19e843267a90 100644 --- a/library/std/src/sys/sgx/abi/usercalls/mod.rs +++ b/library/std/src/sys/sgx/abi/usercalls/mod.rs @@ -292,12 +292,17 @@ fn check_os_error(err: Result) -> i32 { } } -trait FromSgxResult { +/// Translate the raw result of an SGX usercall. +#[unstable(feature = "sgx_platform", issue = "56975")] +pub trait FromSgxResult { + /// Return type type Return; + /// Translate the raw result of an SGX usercall. fn from_sgx_result(self) -> IoResult; } +#[unstable(feature = "sgx_platform", issue = "56975")] impl FromSgxResult for (Result, T) { type Return = T; @@ -310,6 +315,7 @@ impl FromSgxResult for (Result, T) { } } +#[unstable(feature = "sgx_platform", issue = "56975")] impl FromSgxResult for Result { type Return = (); diff --git a/library/std/src/sys/sgx/abi/usercalls/raw.rs b/library/std/src/sys/sgx/abi/usercalls/raw.rs index 4267b96ccd504..10c1456d4fd05 100644 --- a/library/std/src/sys/sgx/abi/usercalls/raw.rs +++ b/library/std/src/sys/sgx/abi/usercalls/raw.rs @@ -37,14 +37,23 @@ pub unsafe fn do_usercall( (a, b) } -type Register = u64; +/// A value passed or returned in a CPU register. +#[unstable(feature = "sgx_platform", issue = "56975")] +pub type Register = u64; -trait RegisterArgument { +/// Translate a type from/to Register to be used as an argument. +#[unstable(feature = "sgx_platform", issue = "56975")] +pub trait RegisterArgument { + /// Translate a Register to Self. fn from_register(_: Register) -> Self; + /// Translate self to a Register. fn into_register(self) -> Register; } -trait ReturnValue { +/// Translate a pair of Registers to the raw usercall return value. +#[unstable(feature = "sgx_platform", issue = "56975")] +pub trait ReturnValue { + /// Translate a pair of Registers to the raw usercall return value. fn from_registers(call: &'static str, regs: (Register, Register)) -> Self; } @@ -68,6 +77,7 @@ macro_rules! define_usercalls { macro_rules! define_ra { (< $i:ident > $t:ty) => { + #[unstable(feature = "sgx_platform", issue = "56975")] impl<$i> RegisterArgument for $t { fn from_register(a: Register) -> Self { a as _ @@ -78,6 +88,7 @@ macro_rules! define_ra { } }; ($i:ty as $t:ty) => { + #[unstable(feature = "sgx_platform", issue = "56975")] impl RegisterArgument for $t { fn from_register(a: Register) -> Self { a as $i as _ @@ -88,6 +99,7 @@ macro_rules! define_ra { } }; ($t:ty) => { + #[unstable(feature = "sgx_platform", issue = "56975")] impl RegisterArgument for $t { fn from_register(a: Register) -> Self { a as _ @@ -112,6 +124,7 @@ define_ra!(usize as isize); define_ra!( *const T); define_ra!( *mut T); +#[unstable(feature = "sgx_platform", issue = "56975")] impl RegisterArgument for bool { fn from_register(a: Register) -> bool { if a != 0 { true } else { false } @@ -121,6 +134,7 @@ impl RegisterArgument for bool { } } +#[unstable(feature = "sgx_platform", issue = "56975")] impl RegisterArgument for Option> { fn from_register(a: Register) -> Option> { NonNull::new(a as _) @@ -130,12 +144,14 @@ impl RegisterArgument for Option> { } } +#[unstable(feature = "sgx_platform", issue = "56975")] impl ReturnValue for ! { fn from_registers(call: &'static str, _regs: (Register, Register)) -> Self { rtabort!("Usercall {call}: did not expect to be re-entered"); } } +#[unstable(feature = "sgx_platform", issue = "56975")] impl ReturnValue for () { fn from_registers(call: &'static str, usercall_retval: (Register, Register)) -> Self { rtassert!(usercall_retval.0 == 0); @@ -144,6 +160,7 @@ impl ReturnValue for () { } } +#[unstable(feature = "sgx_platform", issue = "56975")] impl ReturnValue for T { fn from_registers(call: &'static str, usercall_retval: (Register, Register)) -> Self { rtassert!(usercall_retval.1 == 0); @@ -151,6 +168,7 @@ impl ReturnValue for T { } } +#[unstable(feature = "sgx_platform", issue = "56975")] impl ReturnValue for (T, U) { fn from_registers(_call: &'static str, regs: (Register, Register)) -> Self { (T::from_register(regs.0), U::from_register(regs.1)) From 64bd8c1dc427c8bcd69bed7c240b1f1f38bedbd3 Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Wed, 17 Aug 2022 19:02:55 +0000 Subject: [PATCH 06/15] Make same_type_modulo_infer a proper TypeRelation --- .../src/infer/error_reporting/mod.rs | 132 +++++++++++------- compiler/rustc_middle/src/ty/sty.rs | 4 + src/test/ui/implied-bounds/issue-100690.rs | 45 ++++++ .../ui/implied-bounds/issue-100690.stderr | 22 +++ 4 files changed, 150 insertions(+), 53 deletions(-) create mode 100644 src/test/ui/implied-bounds/issue-100690.rs create mode 100644 src/test/ui/implied-bounds/issue-100690.stderr diff --git a/compiler/rustc_infer/src/infer/error_reporting/mod.rs b/compiler/rustc_infer/src/infer/error_reporting/mod.rs index 3c7dac2bfd816..d55708acc9a9b 100644 --- a/compiler/rustc_infer/src/infer/error_reporting/mod.rs +++ b/compiler/rustc_infer/src/infer/error_reporting/mod.rs @@ -66,6 +66,7 @@ use rustc_hir::lang_items::LangItem; use rustc_hir::Node; use rustc_middle::dep_graph::DepContext; use rustc_middle::ty::print::with_no_trimmed_paths; +use rustc_middle::ty::relate::{self, RelateResult, TypeRelation}; use rustc_middle::ty::{ self, error::TypeError, Binder, List, Region, Subst, Ty, TyCtxt, TypeFoldable, TypeSuperVisitable, TypeVisitable, @@ -2660,67 +2661,92 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> { /// Float types, respectively). When comparing two ADTs, these rules apply recursively. pub fn same_type_modulo_infer(&self, a: Ty<'tcx>, b: Ty<'tcx>) -> bool { let (a, b) = self.resolve_vars_if_possible((a, b)); - match (a.kind(), b.kind()) { - (&ty::Adt(def_a, substs_a), &ty::Adt(def_b, substs_b)) => { - if def_a != def_b { - return false; - } + SameTypeModuloInfer(self).relate(a, b).is_ok() + } +} - substs_a - .types() - .zip(substs_b.types()) - .all(|(a, b)| self.same_type_modulo_infer(a, b)) - } - (&ty::FnDef(did_a, substs_a), &ty::FnDef(did_b, substs_b)) => { - if did_a != did_b { - return false; - } +struct SameTypeModuloInfer<'a, 'tcx>(&'a InferCtxt<'a, 'tcx>); - substs_a - .types() - .zip(substs_b.types()) - .all(|(a, b)| self.same_type_modulo_infer(a, b)) - } - (&ty::Int(_) | &ty::Uint(_), &ty::Infer(ty::InferTy::IntVar(_))) +impl<'tcx> TypeRelation<'tcx> for SameTypeModuloInfer<'_, 'tcx> { + fn tcx(&self) -> TyCtxt<'tcx> { + self.0.tcx + } + + fn param_env(&self) -> ty::ParamEnv<'tcx> { + // Unused, only for consts which we treat as always equal + ty::ParamEnv::empty() + } + + fn tag(&self) -> &'static str { + "SameTypeModuloInfer" + } + + fn a_is_expected(&self) -> bool { + true + } + + fn relate_with_variance>( + &mut self, + _variance: ty::Variance, + _info: ty::VarianceDiagInfo<'tcx>, + a: T, + b: T, + ) -> relate::RelateResult<'tcx, T> { + self.relate(a, b) + } + + fn tys(&mut self, a: Ty<'tcx>, b: Ty<'tcx>) -> RelateResult<'tcx, Ty<'tcx>> { + match (a.kind(), b.kind()) { + (ty::Int(_) | ty::Uint(_), ty::Infer(ty::InferTy::IntVar(_))) | ( - &ty::Infer(ty::InferTy::IntVar(_)), - &ty::Int(_) | &ty::Uint(_) | &ty::Infer(ty::InferTy::IntVar(_)), + ty::Infer(ty::InferTy::IntVar(_)), + ty::Int(_) | ty::Uint(_) | ty::Infer(ty::InferTy::IntVar(_)), ) - | (&ty::Float(_), &ty::Infer(ty::InferTy::FloatVar(_))) + | (ty::Float(_), ty::Infer(ty::InferTy::FloatVar(_))) | ( - &ty::Infer(ty::InferTy::FloatVar(_)), - &ty::Float(_) | &ty::Infer(ty::InferTy::FloatVar(_)), + ty::Infer(ty::InferTy::FloatVar(_)), + ty::Float(_) | ty::Infer(ty::InferTy::FloatVar(_)), ) - | (&ty::Infer(ty::InferTy::TyVar(_)), _) - | (_, &ty::Infer(ty::InferTy::TyVar(_))) => true, - (&ty::Ref(_, ty_a, mut_a), &ty::Ref(_, ty_b, mut_b)) => { - mut_a == mut_b && self.same_type_modulo_infer(ty_a, ty_b) - } - (&ty::RawPtr(a), &ty::RawPtr(b)) => { - a.mutbl == b.mutbl && self.same_type_modulo_infer(a.ty, b.ty) - } - (&ty::Slice(a), &ty::Slice(b)) => self.same_type_modulo_infer(a, b), - (&ty::Array(a_ty, a_ct), &ty::Array(b_ty, b_ct)) => { - self.same_type_modulo_infer(a_ty, b_ty) && a_ct == b_ct - } - (&ty::Tuple(a), &ty::Tuple(b)) => { - if a.len() != b.len() { - return false; - } - std::iter::zip(a.iter(), b.iter()).all(|(a, b)| self.same_type_modulo_infer(a, b)) - } - (&ty::FnPtr(a), &ty::FnPtr(b)) => { - let a = a.skip_binder().inputs_and_output; - let b = b.skip_binder().inputs_and_output; - if a.len() != b.len() { - return false; - } - std::iter::zip(a.iter(), b.iter()).all(|(a, b)| self.same_type_modulo_infer(a, b)) - } - // FIXME(compiler-errors): This needs to be generalized more - _ => a == b, + | (ty::Infer(ty::InferTy::TyVar(_)), _) + | (_, ty::Infer(ty::InferTy::TyVar(_))) => Ok(a), + (ty::Infer(_), _) | (_, ty::Infer(_)) => Err(TypeError::Mismatch), + _ => relate::super_relate_tys(self, a, b), } } + + fn regions( + &mut self, + a: ty::Region<'tcx>, + b: ty::Region<'tcx>, + ) -> RelateResult<'tcx, ty::Region<'tcx>> { + if (a.is_var() && b.is_free_or_static()) || (b.is_var() && a.is_free_or_static()) || a == b + { + Ok(a) + } else { + Err(TypeError::Mismatch) + } + } + + fn binders( + &mut self, + a: ty::Binder<'tcx, T>, + b: ty::Binder<'tcx, T>, + ) -> relate::RelateResult<'tcx, ty::Binder<'tcx, T>> + where + T: relate::Relate<'tcx>, + { + Ok(ty::Binder::dummy(self.relate(a.skip_binder(), b.skip_binder())?)) + } + + fn consts( + &mut self, + a: ty::Const<'tcx>, + _b: ty::Const<'tcx>, + ) -> relate::RelateResult<'tcx, ty::Const<'tcx>> { + // FIXME(compiler-errors): This could at least do some first-order + // relation + Ok(a) + } } impl<'a, 'tcx> InferCtxt<'a, 'tcx> { diff --git a/compiler/rustc_middle/src/ty/sty.rs b/compiler/rustc_middle/src/ty/sty.rs index 52c3a38861e65..0070575f2136a 100644 --- a/compiler/rustc_middle/src/ty/sty.rs +++ b/compiler/rustc_middle/src/ty/sty.rs @@ -1617,6 +1617,10 @@ impl<'tcx> Region<'tcx> { _ => self.is_free(), } } + + pub fn is_var(self) -> bool { + matches!(self.kind(), ty::ReVar(_)) + } } /// Type utilities diff --git a/src/test/ui/implied-bounds/issue-100690.rs b/src/test/ui/implied-bounds/issue-100690.rs new file mode 100644 index 0000000000000..5599cd410baad --- /dev/null +++ b/src/test/ui/implied-bounds/issue-100690.rs @@ -0,0 +1,45 @@ +// This code (probably) _should_ compile, but it currently does not because we +// are not smart enough about implied bounds. + +use std::io; + +fn real_dispatch(f: F) -> Result<(), io::Error> +//~^ NOTE required by a bound in this +where + F: FnOnce(&mut UIView) -> Result<(), io::Error> + Send + 'static, + //~^ NOTE required by this bound in `real_dispatch` + //~| NOTE required by a bound in `real_dispatch` +{ + todo!() +} + +#[derive(Debug)] +struct UIView<'a, T: 'a> { + _phantom: std::marker::PhantomData<&'a mut T>, +} + +trait Handle<'a, T: 'a, V, R> { + fn dispatch(&self, f: F) -> Result<(), io::Error> + where + F: FnOnce(&mut V) -> R + Send + 'static; +} + +#[derive(Debug, Clone)] +struct TUIHandle { + _phantom: std::marker::PhantomData, +} + +impl<'a, T: 'a> Handle<'a, T, UIView<'a, T>, Result<(), io::Error>> for TUIHandle { + fn dispatch(&self, f: F) -> Result<(), io::Error> + where + F: FnOnce(&mut UIView<'a, T>) -> Result<(), io::Error> + Send + 'static, + { + real_dispatch(f) + //~^ ERROR expected a `FnOnce<(&mut UIView<'_, T>,)>` closure, found `F` + //~| NOTE expected an `FnOnce<(&mut UIView<'_, T>,)>` closure, found `F` + //~| NOTE expected a closure with arguments + //~| NOTE required by a bound introduced by this call + } +} + +fn main() {} diff --git a/src/test/ui/implied-bounds/issue-100690.stderr b/src/test/ui/implied-bounds/issue-100690.stderr new file mode 100644 index 0000000000000..3f6af70d8ed93 --- /dev/null +++ b/src/test/ui/implied-bounds/issue-100690.stderr @@ -0,0 +1,22 @@ +error[E0277]: expected a `FnOnce<(&mut UIView<'_, T>,)>` closure, found `F` + --> $DIR/issue-100690.rs:37:23 + | +LL | real_dispatch(f) + | ------------- ^ expected an `FnOnce<(&mut UIView<'_, T>,)>` closure, found `F` + | | + | required by a bound introduced by this call + | + = note: expected a closure with arguments `(&mut UIView<'a, T>,)` + found a closure with arguments `(&mut UIView<'_, T>,)` +note: required by a bound in `real_dispatch` + --> $DIR/issue-100690.rs:9:8 + | +LL | fn real_dispatch(f: F) -> Result<(), io::Error> + | ------------- required by a bound in this +... +LL | F: FnOnce(&mut UIView) -> Result<(), io::Error> + Send + 'static, + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `real_dispatch` + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0277`. From 5145c970871e2dbe37228280fe34decd8c26ea4e Mon Sep 17 00:00:00 2001 From: Scott McMurray Date: Wed, 17 Aug 2022 12:09:59 -0700 Subject: [PATCH 07/15] Add LLVM15-specific codegen test for `try`/`?`s that now optimize away These still generated a bunch of code back in Rust 1.63 (), but with LLVM 15 merged they no longer do :tada: --- src/test/codegen/try_question_mark_nop.rs | 54 +++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/test/codegen/try_question_mark_nop.rs diff --git a/src/test/codegen/try_question_mark_nop.rs b/src/test/codegen/try_question_mark_nop.rs new file mode 100644 index 0000000000000..d239387768e6b --- /dev/null +++ b/src/test/codegen/try_question_mark_nop.rs @@ -0,0 +1,54 @@ +// min-llvm-version: 15.0 +// compile-flags: -O -Z merge-functions=disabled --edition=2021 +// only-x86_64 + +#![crate_type = "lib"] +#![feature(try_blocks)] + +// These are now NOPs in LLVM 15, presumably thanks to nikic's change mentioned in +// . +// Unfortunately, as of 2022-08-17 they're not yet nops for `u64`s nor `Option`. + +use std::ops::ControlFlow::{self, Continue, Break}; + +// CHECK-LABEL: @result_nop_match_32 +#[no_mangle] +pub fn result_nop_match_32(x: Result) -> Result { + // CHECK: start + // CHECK-NEXT: ret i64 %0 + match x { + Ok(x) => Ok(x), + Err(x) => Err(x), + } +} + +// CHECK-LABEL: @result_nop_traits_32 +#[no_mangle] +pub fn result_nop_traits_32(x: Result) -> Result { + // CHECK: start + // CHECK-NEXT: ret i64 %0 + try { + x? + } +} + +// CHECK-LABEL: @control_flow_nop_match_32 +#[no_mangle] +pub fn control_flow_nop_match_32(x: ControlFlow) -> ControlFlow { + // CHECK: start + // CHECK-NEXT: ret i64 %0 + match x { + Continue(x) => Continue(x), + Break(x) => Break(x), + } +} + +// CHECK-LABEL: @control_flow_nop_traits_32 +#[no_mangle] +pub fn control_flow_nop_traits_32(x: ControlFlow) -> ControlFlow { + // CHECK: start + // CHECK-NEXT: ret i64 %0 + try { + x? + } +} From b631ca0c2fbc69ce7718b50ff34a7c238f28c05f Mon Sep 17 00:00:00 2001 From: Chris Denton Date: Thu, 18 Aug 2022 07:34:25 +0100 Subject: [PATCH 08/15] Windows: Load synch functions together Attempt to load all the required sync functions and fail if any one of them fails. This reintroduces a macro for optional loading of functions but keeps it separate from the fallback macro rather than having that do two different jobs. --- library/std/src/sys/windows/c.rs | 26 ++-- library/std/src/sys/windows/compat.rs | 120 +++++++++++-------- library/std/src/sys/windows/thread_parker.rs | 27 ++--- 3 files changed, 94 insertions(+), 79 deletions(-) diff --git a/library/std/src/sys/windows/c.rs b/library/std/src/sys/windows/c.rs index c5a30f8bac86d..ef3f6a9ba1755 100644 --- a/library/std/src/sys/windows/c.rs +++ b/library/std/src/sys/windows/c.rs @@ -228,6 +228,8 @@ pub const IPV6_ADD_MEMBERSHIP: c_int = 12; pub const IPV6_DROP_MEMBERSHIP: c_int = 13; pub const MSG_PEEK: c_int = 0x2; +pub const LOAD_LIBRARY_SEARCH_SYSTEM32: u32 = 0x800; + #[repr(C)] #[derive(Copy, Clone)] pub struct linger { @@ -1030,6 +1032,7 @@ extern "system" { pub fn GetProcAddress(handle: HMODULE, name: LPCSTR) -> *mut c_void; pub fn GetModuleHandleA(lpModuleName: LPCSTR) -> HMODULE; pub fn GetModuleHandleW(lpModuleName: LPCWSTR) -> HMODULE; + pub fn LoadLibraryExA(lplibfilename: *const i8, hfile: HANDLE, dwflags: u32) -> HINSTANCE; pub fn GetSystemTimeAsFileTime(lpSystemTimeAsFileTime: LPFILETIME); pub fn GetSystemInfo(lpSystemInfo: LPSYSTEM_INFO); @@ -1250,21 +1253,16 @@ compat_fn_with_fallback! { } } -compat_fn_with_fallback! { - pub static SYNCH_API: &CStr = ansi_str!("api-ms-win-core-synch-l1-2-0"); - #[allow(unused)] - fn WakeByAddressSingle(Address: LPVOID) -> () { - // This fallback is currently tightly coupled to its use in Parker::unpark. - // - // FIXME: If `WakeByAddressSingle` needs to be used anywhere other than - // Parker::unpark then this fallback will be wrong and will need to be decoupled. - crate::sys::windows::thread_parker::unpark_keyed_event(Address) - } +compat_fn_optional! { + crate::sys::compat::load_synch_functions(); + pub fn WaitOnAddress( + Address: LPVOID, + CompareAddress: LPVOID, + AddressSize: SIZE_T, + dwMilliseconds: DWORD + ); + pub fn WakeByAddressSingle(Address: LPVOID); } -pub use crate::sys::compat::WaitOnAddress; -// Change exported name of `WakeByAddressSingle` to make the strange fallback -// behaviour clear. -pub use WakeByAddressSingle::call as wake_by_address_single_or_unpark_keyed_event; compat_fn_with_fallback! { pub static NTDLL: &CStr = ansi_str!("ntdll"); diff --git a/library/std/src/sys/windows/compat.rs b/library/std/src/sys/windows/compat.rs index 473544c4d4f7b..60cc705cef2f9 100644 --- a/library/std/src/sys/windows/compat.rs +++ b/library/std/src/sys/windows/compat.rs @@ -21,6 +21,7 @@ use crate::ffi::{c_void, CStr}; use crate::ptr::NonNull; +use crate::sync::atomic::{AtomicBool, Ordering}; use crate::sys::c; /// Helper macro for creating CStrs from literals and symbol names. @@ -74,6 +75,20 @@ impl Module { NonNull::new(module).map(Self) } + /// Load the library (if not already loaded) + /// + /// # Safety + /// + /// The module must not be unloaded. + pub unsafe fn load_system_library(name: &CStr) -> Option { + let module = c::LoadLibraryExA( + name.as_ptr(), + crate::ptr::null_mut(), + c::LOAD_LIBRARY_SEARCH_SYSTEM32, + ); + NonNull::new(module).map(Self) + } + // Try to get the address of a function. pub fn proc_address(self, name: &CStr) -> Option> { // SAFETY: @@ -144,61 +159,66 @@ macro_rules! compat_fn_with_fallback { )*) } -/// Optionally load `WaitOnAddress`. -/// Unlike the dynamic loading described above, this does not have a fallback. +/// Optionally loaded functions. /// -/// This is rexported from sys::c. You should prefer to import -/// from there in case this changes again in the future. -pub mod WaitOnAddress { - use super::*; - use crate::mem; - use crate::ptr; - use crate::sync::atomic::{AtomicBool, AtomicPtr, Ordering}; - use crate::sys::c; - - static MODULE_NAME: &CStr = ansi_str!("api-ms-win-core-synch-l1-2-0"); - static SYMBOL_NAME: &CStr = ansi_str!("WaitOnAddress"); - - // WaitOnAddress function signature. - type F = unsafe extern "system" fn( - Address: c::LPVOID, - CompareAddress: c::LPVOID, - AddressSize: c::SIZE_T, - dwMilliseconds: c::DWORD, - ); - - // A place to store the loaded function atomically. - static WAIT_ON_ADDRESS: AtomicPtr = AtomicPtr::new(ptr::null_mut()); - - // We can skip trying to load again if we already tried. - static LOAD_MODULE: AtomicBool = AtomicBool::new(true); +/// Actual loading of the function defers to $load_functions. +macro_rules! compat_fn_optional { + ($load_functions:expr; + $( + $(#[$meta:meta])* + $vis:vis fn $symbol:ident($($argname:ident: $argtype:ty),*) $(-> $rettype:ty)?; + )+) => ( + $( + pub mod $symbol { + use super::*; + use crate::ffi::c_void; + use crate::mem; + use crate::ptr::{self, NonNull}; + use crate::sync::atomic::{AtomicPtr, Ordering}; + + pub(in crate::sys) static PTR: AtomicPtr = AtomicPtr::new(ptr::null_mut()); + + type F = unsafe extern "system" fn($($argtype),*) $(-> $rettype)?; + + #[inline(always)] + pub fn option() -> Option { + let f = PTR.load(Ordering::Acquire); + if !f.is_null() { Some(unsafe { mem::transmute(f) }) } else { try_load() } + } - #[inline(always)] - pub fn option() -> Option { - let f = WAIT_ON_ADDRESS.load(Ordering::Acquire); - if !f.is_null() { Some(unsafe { mem::transmute(f) }) } else { try_load() } + #[cold] + fn try_load() -> Option { + $load_functions; + NonNull::new(PTR.load(Ordering::Acquire)).map(|f| unsafe { mem::transmute(f) }) + } + } + )+ + ) +} + +/// Load all needed functions from "api-ms-win-core-synch-l1-2-0". +pub(super) fn load_synch_functions() { + fn try_load() -> Option<()> { + static MODULE_NAME: &CStr = ansi_str!("api-ms-win-core-synch-l1-2-0"); + static WAIT_ON_ADDRESS: &CStr = ansi_str!("WaitOnAddress"); + static WAKE_BY_ADDRESS_SINGLE: &CStr = ansi_str!("WakeByAddressSingle"); + + // Try loading the library and all the required functions. + // If any step fails, then they all fail. + let library = unsafe { Module::load_system_library(MODULE_NAME) }?; + let wait_on_address = library.proc_address(WAIT_ON_ADDRESS)?; + let wake_by_address_single = library.proc_address(WAKE_BY_ADDRESS_SINGLE)?; + + c::WaitOnAddress::PTR.store(wait_on_address.as_ptr(), Ordering::Release); + c::WakeByAddressSingle::PTR.store(wake_by_address_single.as_ptr(), Ordering::Release); + Some(()) } - #[cold] - fn try_load() -> Option { - if LOAD_MODULE.load(Ordering::Acquire) { - // load the module - let mut wait_on_address = None; - if let Some(func) = try_load_inner() { - WAIT_ON_ADDRESS.store(func.as_ptr(), Ordering::Release); - wait_on_address = Some(unsafe { mem::transmute(func) }); - } - // Don't try to load the module again even if loading failed. + // Shortcut if we've already tried (and failed) to load the library. + static LOAD_MODULE: AtomicBool = AtomicBool::new(true); + if LOAD_MODULE.load(Ordering::Acquire) { + if try_load().is_none() { LOAD_MODULE.store(false, Ordering::Release); - wait_on_address - } else { - None } } - - // In the future this could be a `try` block but until then I think it's a - // little bit cleaner as a separate function. - fn try_load_inner() -> Option> { - unsafe { Module::new(MODULE_NAME)?.proc_address(SYMBOL_NAME) } - } } diff --git a/library/std/src/sys/windows/thread_parker.rs b/library/std/src/sys/windows/thread_parker.rs index 16863c9903ac7..2f7ae863b6a45 100644 --- a/library/std/src/sys/windows/thread_parker.rs +++ b/library/std/src/sys/windows/thread_parker.rs @@ -198,8 +198,18 @@ impl Parker { // with park(). if self.state.swap(NOTIFIED, Release) == PARKED { unsafe { - // This calls either WakeByAddressSingle or unpark_keyed_event (see below). - c::wake_by_address_single_or_unpark_keyed_event(self.ptr()); + if let Some(wake_by_address_single) = c::WakeByAddressSingle::option() { + wake_by_address_single(self.ptr()); + } else { + // If we run NtReleaseKeyedEvent before the waiting thread runs + // NtWaitForKeyedEvent, this (shortly) blocks until we can wake it up. + // If the waiting thread wakes up before we run NtReleaseKeyedEvent + // (e.g. due to a timeout), this blocks until we do wake up a thread. + // To prevent this thread from blocking indefinitely in that case, + // park_impl() will, after seeing the state set to NOTIFIED after + // waking up, call NtWaitForKeyedEvent again to unblock us. + c::NtReleaseKeyedEvent(keyed_event_handle(), self.ptr(), 0, ptr::null_mut()); + } } } } @@ -209,19 +219,6 @@ impl Parker { } } -// This function signature makes it compatible with c::WakeByAddressSingle -// so that it can be used as a fallback for that function. -pub unsafe extern "C" fn unpark_keyed_event(address: c::LPVOID) { - // If we run NtReleaseKeyedEvent before the waiting thread runs - // NtWaitForKeyedEvent, this (shortly) blocks until we can wake it up. - // If the waiting thread wakes up before we run NtReleaseKeyedEvent - // (e.g. due to a timeout), this blocks until we do wake up a thread. - // To prevent this thread from blocking indefinitely in that case, - // park_impl() will, after seeing the state set to NOTIFIED after - // waking up, call NtWaitForKeyedEvent again to unblock us. - c::NtReleaseKeyedEvent(keyed_event_handle(), address, 0, ptr::null_mut()); -} - fn keyed_event_handle() -> c::HANDLE { const INVALID: c::HANDLE = ptr::invalid_mut(!0); static HANDLE: AtomicPtr = AtomicPtr::new(INVALID); From 88e3d752e42842a8a5db75d17e44973f72ce14f8 Mon Sep 17 00:00:00 2001 From: Pietro Albini Date: Thu, 18 Aug 2022 15:32:45 +0200 Subject: [PATCH 09/15] import the debian/copyright file from debian MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Angus Lees Co-Authored-By: Fabian Grünbichler Co-Authored-By: Hiroaki Nakamura Co-Authored-By: Jordan Justen Co-Authored-By: Luca Bruno Co-Authored-By: Sylvestre Ledru Co-Authored-By: Ximin Luo --- .reuse/dep5 | 2164 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 2159 insertions(+), 5 deletions(-) diff --git a/.reuse/dep5 b/.reuse/dep5 index 03d9f152d5fbe..0afbe8337467f 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -1,7 +1,2161 @@ Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: rust +Source: https://www.rust-lang.org +Files-Excluded: + *.min.js + src/llvm-emscripten + src/llvm-project +# Fonts already in Debian, covered by d-rustdoc-use-system-font.patch +# TODO make that patch, modify src/librustdoc/html/static/css/rustdoc.css + src/librustdoc/html/static/fonts/noto-sans-* +# Pre-generated docs + src/tools/rustfmt/docs +# Proprietary doc formats + src/doc/book/nostarch/docx +# Fonts already in Debian, covered by d-0003-mdbook-strip-embedded-libs.patch + vendor/mdbook/src/theme/fonts + vendor/mdbook/src/theme/FontAwesome + vendor/mdbook/src/theme/highlight.js + vendor/mdbook/src/theme/highlight.css +# Exclude submodules https://github.com/rust-lang/rust/tree/master/src/tools +# We prefer to do them in different Debian packages so they can have their own +# version numbers. If upstream merges them "properly" (i.e. unify the version +# numbers) then we can merge the packages in Debian. Note that cargotest here +# does actually belong to rustc, it is an integration test suite for rustc to +# check that certain popular crates continue to compile. It is not the same as +# cargo's own test suite (in its own package) also called cargotest. +# NB: don't exclude rust-installer, it's needed for "install" functionality + src/tools/cargo + src/tools/rls + src/tools/remote-test-client + src/tools/remote-test-server + src/tools/rust-analyzer + src/tools/miri +# Embedded GH pages + src/tools/clippy/util/gh-pages +# Misc embedded + vendor/structopt/link-check-headers.json +# Embedded C libraries + vendor/libz-sys/src/zlib* + vendor/lzma-sys*/xz-* +# Embedded binary blobs + vendor/jsonpath_lib/docs + vendor/mdbook/src/theme/playground_editor + vendor/psm/src/arch/wasm32.o + vendor/winapi-*/*/*.a +# Embedded submodule used for CI + library/stdarch/crates/intrinsic-test/acle +# NPM packages we can't be bothered documenting licenses for + vendor/tera/docs/node_modules +# unused dependencies, generated by debian/prune-unused-deps +# DO NOT EDIT below, AUTOGENERATED + vendor/addr2line + vendor/adler-0.2.3 + vendor/always-assert + vendor/anymap + vendor/arbitrary + vendor/ar + vendor/arrayvec-0.7.0 + vendor/autocfg-1.0.0 + vendor/backtrace + vendor/bitflags-1.2.1 + vendor/bitmaps + vendor/bytes + vendor/bytesize + vendor/cargo_metadata-0.14.0 + vendor/cc-1.0.69 + vendor/chalk-recursive + vendor/commoncrypto + vendor/commoncrypto-sys + vendor/core-foundation + vendor/core-foundation-sys + vendor/countme + vendor/cov-mark + vendor/cranelift-bforest + vendor/cranelift-codegen + vendor/cranelift-codegen-meta + vendor/cranelift-codegen-shared + vendor/cranelift-entity + vendor/cranelift-frontend + vendor/cranelift-jit + vendor/cranelift-module + vendor/cranelift-native + vendor/cranelift-object + vendor/crc32fast-1.2.0 + vendor/crossbeam-channel-0.5.0 + vendor/crossbeam-utils-0.8.3 + vendor/crypto-hash + vendor/curl + vendor/curl-sys + vendor/dashmap + vendor/derive_arbitrary + vendor/derive_more + vendor/directories + vendor/dot + vendor/drop_bomb + vendor/either-1.6.0 + vendor/enum-iterator + vendor/enum-iterator-derive + vendor/env_logger + vendor/expect-test-1.0.1 + vendor/filetime-0.2.14 + vendor/flate2-1.0.16 + vendor/foreign-types + vendor/foreign-types-shared + vendor/fsevent-sys + vendor/fs_extra-1.1.0 + vendor/fs_extra + vendor/fst-0.4.5 + vendor/fst + vendor/futures-0.1.29 + vendor/futures + vendor/futures-channel + vendor/futures-core + vendor/futures-executor + vendor/futures-io + vendor/futures-macro + vendor/futures-sink + vendor/futures-task + vendor/futures-util + vendor/fwdansi + vendor/getset + vendor/git2 + vendor/git2-curl + vendor/hashbrown-0.11.0 + vendor/heck-0.3.1 + vendor/hex-0.3.2 + vendor/home + vendor/idna-0.1.5 + vendor/idna-0.2.0 + vendor/im-rc + vendor/inotify + vendor/inotify-sys + vendor/itertools-0.10.1 + vendor/itoa-0.4.6 + vendor/jod-thread + vendor/json + vendor/jsonrpc-client-transports + vendor/jsonrpc-core + vendor/jsonrpc-core-client + vendor/jsonrpc-derive + vendor/jsonrpc-ipc-server + vendor/jsonrpc-pubsub + vendor/jsonrpc-server-utils + vendor/kqueue + vendor/kqueue-sys + vendor/lazycell + vendor/libc-0.2.108 + vendor/libgit2-sys + vendor/libloading-0.6.7 + vendor/libloading-0.7.1 + vendor/libmimalloc-sys + vendor/libnghttp2-sys + vendor/libssh2-sys + vendor/libz-sys + vendor/linked-hash-map + vendor/lsp-codec + vendor/lsp-server + vendor/lsp-types-0.60.0 + vendor/lsp-types + vendor/mach + vendor/matches-0.1.8 + vendor/measureme-9.1.2 + vendor/memmap2 + vendor/mimalloc + vendor/miniz_oxide-0.4.0 + vendor/mio-0.7.13 + vendor/mio + vendor/miow + vendor/notify + vendor/ntapi + vendor/object + vendor/once_cell-1.7.2 + vendor/oorandom + vendor/openssl + vendor/openssl-probe + vendor/openssl-src + vendor/openssl-sys + vendor/ordslice + vendor/os_info + vendor/parity-tokio-ipc + vendor/paste + vendor/percent-encoding-1.0.1 + vendor/perf-event + vendor/pin-project-lite-0.2.4 + vendor/pin-utils + vendor/pretty_env_logger + vendor/proc-macro2-1.0.30 + vendor/proc-macro-crate + vendor/proc-macro-hack + vendor/proc-macro-nested + vendor/pulldown-cmark-0.8.0 + vendor/pulldown-cmark-to-cmark + vendor/quote-1.0.7 + vendor/racer + vendor/rand_xoshiro-0.4.0 + vendor/rayon-1.3.1 + vendor/rayon-core-1.7.1 + vendor/regalloc + vendor/region + vendor/rls-vfs + vendor/rowan + vendor/rustc-ap-rustc_arena + vendor/rustc-ap-rustc_ast + vendor/rustc-ap-rustc_ast_pretty + vendor/rustc-ap-rustc_data_structures + vendor/rustc-ap-rustc_errors + vendor/rustc-ap-rustc_feature + vendor/rustc-ap-rustc_fs_util + vendor/rustc-ap-rustc_graphviz + vendor/rustc-ap-rustc_index + vendor/rustc-ap-rustc_lexer-722.0.0 + vendor/rustc-ap-rustc_lexer + vendor/rustc-ap-rustc_lint_defs + vendor/rustc-ap-rustc_macros + vendor/rustc-ap-rustc_parse + vendor/rustc-ap-rustc_serialize + vendor/rustc-ap-rustc_session + vendor/rustc-ap-rustc_span + vendor/rustc-ap-rustc_target + vendor/rustc_version + vendor/ryu-1.0.5 + vendor/salsa + vendor/salsa-macros + vendor/schannel + vendor/security-framework + vendor/security-framework-sys + vendor/semver-1.0.3 + vendor/serde-1.0.125 + vendor/serde_derive-1.0.125 + vendor/serde_ignored + vendor/serde_json-1.0.59 + vendor/serde_repr-0.1.6 + vendor/serde_repr + vendor/sharded-slab-0.1.1 + vendor/signal-hook-registry + vendor/sized-chunks + vendor/slab + vendor/smol_str + vendor/snap-1.0.1 + vendor/socket2 + vendor/strip-ansi-escapes + vendor/syn-1.0.80 + vendor/target-lexicon + vendor/text-size + vendor/thread_local-1.0.1 + vendor/threadpool + vendor/tikv-jemallocator + vendor/tikv-jemalloc-ctl + vendor/tikv-jemalloc-sys-0.4.1+5.2.1-patched + vendor/tikv-jemalloc-sys + vendor/tinyvec-0.3.4 + vendor/tokio + vendor/tokio-stream + vendor/tokio-util + vendor/tower-service + vendor/typed-arena + vendor/ungrammar + vendor/unicode-bidi-0.3.4 + vendor/unicode-normalization-0.1.13 + vendor/unicode-segmentation-1.6.0 + vendor/url-1.7.2 + vendor/utf8parse + vendor/vcpkg + vendor/vergen + vendor/vte + vendor/walkdir-2.3.1 + vendor/windows_aarch64_msvc + vendor/windows_i686_gnu + vendor/windows_i686_msvc + vendor/windows-sys + vendor/windows_x86_64_gnu + vendor/windows_x86_64_msvc + vendor/write-json + vendor/xflags + vendor/xflags-macros + vendor/xshell + vendor/xshell-macros + vendor/yaml-merge-keys + vendor/yaml-rust +# DO NOT EDIT above, AUTOGENERATED -# Temporarily mark all files to be licensed with the custom "TODO" license, -# until we import the proper licensing metadata in a separate PR. -Files: * -Copyright: TODO -License: LicenseRef-TODO +Files: C*.md + R*.md + Cargo.lock + Cargo.toml + COPYRIGHT + LICENSE* + compiler/* + configure + config.toml.example + git-commit-hash + library/* + src/README.md + src/bootstrap/* + src/build_helper/* + src/ci/* + src/doc/* + src/etc/* + src/lib* + src/rust* + src/stage0.json + src/tools/* + src/test/* + src/version + version + x.py +Copyright: 2006-2009 Graydon Hoare + 2009-2012 Mozilla Foundation + 2012-2017 The Rust Project Developers (see AUTHORS.txt) +License: MIT or Apache-2.0 + +Files: library/std/src/sync/mpsc/mpsc_queue.rs + library/std/src/sync/mpsc/spsc_queue.rs +Copyright: 2010-2011 Dmitry Vyukov +License: BSD-2-Clause + +Files: src/librustdoc/html/static/fonts/FiraSans* +Copyright: 2014, Mozilla Foundation, 2014, Telefonica S.A. +License: SIL-OPEN-FONT + +Files: src/librustdoc/html/static/fonts/NanumBarun* +Copyright: 2010 NAVER Corporation +License: SIL-OPEN-FONT + +Files: src/librustdoc/html/static/fonts/SourceCodePro* +Copyright: 2010, 2012 Adobe Systems Incorporated +License: SIL-OPEN-FONT + +Files: src/librustdoc/html/static/fonts/SourceSerif4* +Copyright: 2014-2021 Adobe Systems Incorporated +License: SIL-OPEN-FONT + +Files: vendor/compiler_builtins/* +Copyright: 2016-2019 Jorge Aparicio +License: MIT or Apache-2.0 +Comment: see https://github.com/rust-lang-nursery/compiler-builtins + +Files: vendor/compiletest_rs/* +Copyright: 2015-2020 The Rust Project Developers + 2015-2020 Thomas Bracht Laumann Jespersen + 2015-2020 Manish Goregaokar +License: Apache-2.0 or MIT +Comment: see https://github.com/laumann/compiletest-rs + +Files: + vendor/bitflags/* + vendor/cc/* + vendor/cmake/* + vendor/env_logger-0*/* + vendor/getopts/* + vendor/glob/* + vendor/libc/* + vendor/log/* + vendor/regex/* + vendor/regex-syntax/* + vendor/rustc-hash/* + vendor/time/* +Copyright: 2010-2021 The Rust Project Developers +License: MIT or Apache-2.0 +Comment: + This is a collection of external crates embedded here to bootstrap cargo. + Most of them come from the original upstream Rust project, thus share the + same MIT/Apache-2.0 dual-license. See https://github.com/rust-lang. + Exceptions are noted below. + +Files: vendor/num-integer/* + vendor/num-traits/* +Copyright: 2014-2018 The Rust Project Developers +License: MIT or Apache-2.0 +Comment: see https://github.com/rust-num/num + +Files: + vendor/string_cache/* + vendor/string_cache_codegen/* + vendor/unicode-bidi/* +Copyright: 2015-2017 Alex Crichton + 2015-2017 Keegan McAllister + 2015-2017 Chris Morgan + 2014-2017 The html5ever Project Developers + 2014-2017 The Servo Project Developers + 2013-2017 Simon Sapin +License: MIT or Apache-2.0 +Comment: see https://github.com/servo/ + +Files: + vendor/getrandom/* + vendor/getrandom-0*/* + vendor/rand/* + vendor/rand-0*/* + vendor/rand_chacha/* + vendor/rand_chacha-0*/* + vendor/rand_core/* + vendor/rand_core-0*/* + vendor/rand_hc/* + vendor/rand_hc-0*/* + vendor/rand_pcg/* + vendor/rand_xorshift/* + vendor/rand_xoshiro/* +Copyright: 2010-2019 The Rand Project Developers + 2010-2019 The Rust Project Developers +License: MIT or Apache-2.0 +Comment: + see https://github.com/rust-random/getrandom + see https://github.com/rust-random/rand + see https://github.com/rust-random/small-rngs + +Files: + vendor/cfg-if-0*/* + vendor/cfg-if/* + vendor/filetime/* + vendor/flate2/* + vendor/fnv/* + vendor/jobserver/* + vendor/lzma-sys/* + vendor/pkg-config/* + vendor/proc-macro2/* + vendor/rustc-demangle/* + vendor/scoped-tls/* + vendor/tar/* + vendor/toml/* + vendor/xz2/* +Copyright: 2014-2020 Alex Crichton + 2015-2017 The Rust Project Developers +License: MIT or Apache-2.0 +Comment: see https://github.com/alexcrichton/ + +Files: vendor/dlmalloc/* +Copyright: 2017-2019 Alex Crichton +License: MIT or Apache-2.0 +Comment: see https://github.com/alexcrichton/dlmalloc-rs + +Files: vendor/dlmalloc/src/dlmalloc.c +Copyright: 2000-2012 Doug Lea +License: CC0-1.0 + +Files: vendor/tester/* +Copyright: 2016-2019 The Rust Project Developers +License: MIT OR Apache-2.0 +Comment: see https://github.com/messense/rustc-test + +Files: vendor/addr2line-0*/* +Copyright: + 2016-2021 Nick Fitzgerald + 2016-2021 Philip Craig + 2016-2021 Jon Gjengset + 2016-2021 Noah Bergbauer +License: Apache-2.0 or MIT +Comment: see https://github.com/gimli-rs/addr2line + +Files: vendor/adler/* +Copyright: 2020-2020 Jonas Schievink +License: 0BSD or MIT or Apache-2.0 +Comment: see https://github.com/jonas-schievink/adler.git + +Files: vendor/ammonia/* +Copyright: 2015-2018 Michael Howell +License: MIT or Apache-2.0 +Comment: see https://github.com/notriddle/ammonia + +Files: vendor/annotate-snippets/* +Copyright: 2018-2020 Zibi Braniecki +License: Apache-2.0 or MIT +Comment: see https://github.com/zbraniecki/annotate-snippets-rs + +Files: + vendor/ansi_term/* + vendor/ansi_term-0*/* +Copyright: + 2014-2020 ogham@bsago.me + 2014-2020 Ryan Scheel (Havvy) + 2014-2020 Josh Triplett +License: MIT +Comment: see https://github.com/ogham/rust-ansi-term + +Files: vendor/aho-corasick/* + vendor/memchr/* +Copyright: 2015 Andrew Gallant + 2015-2018 bluss +License: MIT or Unlicense +Comment: see upstream projects, + * https://github.com/BurntSushi/aho-corasick + * https://github.com/BurntSushi/rust-memchr + +Files: vendor/array_tool/* +Copyright: 2015-2018 Daniel P. Clark <6ftdan@gmail.com> +License: MIT OR Apache-2.0 +Comment: see https://github.com/danielpclark/array_tool + +Files: vendor/autocfg/* +Copyright: 2018-2020 Josh Stone +License: Apache-2.0 or MIT + +Files: vendor/atty/* +Copyright: 2015-2017 softprops +License: MIT +Comment: see https://github.com/softprops/atty + +Files: + vendor/block-buffer/* + vendor/block-buffer-0*/* + vendor/block-padding/* + vendor/byte-tools/* + vendor/cpuid-bool/* + vendor/digest/* + vendor/digest-0*/* + vendor/fake-simd/* + vendor/md-5/* + vendor/opaque-debug/* + vendor/opaque-debug-0*/* + vendor/sha-1-0*/* + vendor/sha-1/* + vendor/sha2/* +Copyright: 2016-2020 RustCrypto Developers +License: MIT or Apache-2.0 +Comment: + see https://github.com/RustCrypto/hashes + see https://github.com/RustCrypto/traits + see https://github.com/RustCrypto/utils + +Files: vendor/bstr/* +Copyright: 2018-2020 Andrew Gallant +License: MIT OR Apache-2.0 +Comment: see https://github.com/BurntSushi/bstr + +Files: vendor/bytecount/* +Copyright: 2016-2020 Andre Bogus + 2016-2020 Joshua Landau +License: Apache-2.0 or MIT +Comment: see https://github.com/llogiq/bytecount + +Files: + vendor/byteorder/* + vendor/globset/* + vendor/ignore/* + vendor/same-file/* + vendor/termcolor/* + vendor/walkdir/* + vendor/winapi-util/* +Copyright: 2015-2020 Andrew Gallant +License: Unlicense or MIT +Comment: + see https://github.com/BurntSushi/byteorder + see https://github.com/BurntSushi/same-file + see https://github.com/BurntSushi/walkdir + see https://github.com/BurntSushi/winapi-util + see https://github.com/BurntSushi/ripgrep/tree/master/globset + see https://github.com/BurntSushi/ripgrep/tree/master/ignore + see https://github.com/BurntSushi/ripgrep/tree/master/termcolor + +Files: vendor/camino/* +Copyright: 2020-2022 Without Boats + 2020-2022 Ashley Williams + 2020-2022 Steve Klabnik + 2020-2022 Rain +License: MIT OR Apache-2.0 +Comment: see https://github.com/withoutboats/camino + +Files: + vendor/cargo_metadata/* + vendor/cargo_metadata-0*/* +Copyright: 2016-2020 Oliver Schneider +License: MIT +Comment: + see https://github.com/oli-obk/cargo_metadata + +Files: vendor/cargo-platform/* +Copyright: 2019-2022 The Cargo Project Developers +License: MIT OR Apache-2.0 +Comment: see https://github.com/rust-lang/cargo + +Files: vendor/ppv-lite86/* +Copyright: 2019-2019 The CryptoCorrosion Contributors +License: MIT or Apache-2.0 +Comment: see https://github.com/cryptocorrosion/cryptocorrosion + +Files: + vendor/chalk-derive/* + vendor/chalk-engine/* + vendor/chalk-ir/* + vendor/chalk-solve/* +Copyright: + 2015-2022 Rust Compiler Team + 2015-2022 Chalk developers +License: Apache-2.0 or MIT +Comment: see https://github.com/rust-lang/chalk + +Files: vendor/chrono/* +Copyright: 2014-2018 Kang Seonghoon +License: MIT or Apache-2.0 +Comment: see https://github.com/chronotope/chrono + +Files: vendor/clap/* +Copyright: 2015-2017 Kevin K. +License: MIT +Comment: see https://github.com/kbknapp/clap-rs.git + +Files: vendor/colored/* +Copyright: 2016-2020 Thomas Wickham +License: MPL-2.0 +Comment: see https://github.com/mackwic/colored + +Files: vendor/crc32fast/* +Copyright: 2018-2019 Sam Rijs + 2018-2019 Alex Crichton +License: MIT OR Apache-2.0 +Comment: see https://github.com/srijs/rust-crc32fast + +Files: + vendor/crossbeam-channel/* + vendor/crossbeam-deque/* + vendor/crossbeam-deque-0*/* + vendor/crossbeam-epoch/* + vendor/crossbeam-epoch-0*/* + vendor/crossbeam-queue/* + vendor/crossbeam-utils/* + vendor/crossbeam-utils-0*/* +Copyright: 2015-2021 The Crossbeam Project Developers +License: MIT or Apache-2.0 +Comment: see https://github.com/crossbeam-rs + +Files: vendor/cstr/* +Copyright: 2018-2020 Xidorn Quan +License: MIT +Comment: see https://github.com/upsuper/cstr + +Files: vendor/ctor/* +Copyright: 2018-2020 Matt Mastracci +License: Apache-2.0 OR MIT +Comment: see https://github.com/mmastrac/rust-ctor + +Files: vendor/datafrog/* +Copyright: + 2018 Frank McSherry + 2018 The Rust Project Developers + 2018 Datafrog Developers +License: Apache-2.0 or MIT +Comment: see https://github.com/rust-lang-nursery/datafrog + +Files: vendor/derive-new/* +Copyright: 2016-2020 Nick Cameron +License: MIT +Comment: see https://github.com/nrc/derive-new + +Files: vendor/diff/* +Copyright: 2015-2017 Utkarsh Kukreti +License: MIT or Apache-2.0 +Comment: see https://github.com/utkarshkukreti/diff.rs + +Files: + vendor/anyhow/* + vendor/dissimilar/* + vendor/itoa/* + vendor/quote/* + vendor/syn/* +Copyright: 2016-2022 David Tolnay +License: MIT or Apache-2.0 +Comment: + see https://github.com/dtolnay/anyhow + see https://github.com/dtolnay/dissimilar + see https://github.com/dtolnay/itoa + see https://github.com/dtolnay/quote + see https://github.com/dtolnay/syn + +Files: + vendor/arrayvec/* + vendor/either/* + vendor/fixedbitset/* + vendor/itertools/* + vendor/itertools-0*/* + vendor/maplit/* + vendor/scopeguard/* +Copyright: 2014-2020 bluss +License: MIT or Apache-2.0 +Comment: + see https://github.com/bluss/rust-itertools + see https://github.com/bluss/either + see https://github.com/bluss/arrayvec + see https://github.com/bluss/fixedbitset + see https://github.com/bluss/maplit + see https://github.com/bluss/scopeguard + +Files: vendor/difference/* +Copyright: 2015-2018 Johann Hofmann +License: MIT +Comment: see https://github.com/johannhof/difference.rs + +Files: + vendor/dirs/* + vendor/dirs-sys/* +Copyright: 2015-2020 Simon Ochsenreither + 2015-2020 dirs-rs contributors +License: MIT OR Apache-2.0 +Comment: + see https://github.com/dirs-dev/dirs-rs + see https://github.com/dirs-dev/dirs-sys-rs + +Files: + vendor/dirs-next/* + vendor/dirs-sys-next/* +Copyright: 2017-2021 The @xdg-rs members +License: MIT OR Apache-2.0 +Comment: see https://github.com/xdg-rs/dirs + +Files: vendor/elasticlunr-rs/* +Copyright: 2017-2018 Matt Ickstadt +License: MIT or Apache-2.0 +Comment: see https://github.com/mattico/elasticlunr-rs + +Files: vendor/ena/* +Copyright: 2015-2020 Niko Matsakis +License: MIT or Apache-2.0 +Comment: see https://github.com/nikomatsakis/ena + +Files: vendor/expect-test/* +Copyright: 2020-2022 rust-analyzer developers +License: MIT OR Apache-2.0 +Comment: see https://github.com/rust-analyzer/expect-test + +Files: vendor/fallible-iterator/* +Copyright: 2016-2019 Steven Fackler +License: MIT or Apache-2.0 +Comment: see https://github.com/sfackler/rust-fallible-iterator + +Files: vendor/fortanix-sgx-abi/* +Copyright: 2015-2019 Jethro Beekman +License: MPL-2.0 +Comment: see https://github.com/fortanix/rust-sgx + +Files: vendor/fs-err/* +Copyright: 2020-2020 Andrew Hickman +License: MIT or Apache-2.0 +Comment: see https://github.com/andrewhickman/fs-err + +Files: vendor/futf/* +Copyright: 2015-2018 Keegan McAllister +License: MIT or Apache-2.0 +Comment: see https://github.com/servo/futf + +Files: + vendor/generic-array/* + vendor/generic-array-0*/* +Copyright: + 2015-2020 Bartłomiej Kamiński + 2015-2020 Aaron Trent +License: MIT +Comment: see https://github.com/fizyk20/generic-array.git + +Files: + vendor/gimli-0*/* + vendor/gimli/* +Copyright: + 2016-2021 Nick Fitzgerald + 2016-2021 Philip Craig +License: Apache-2.0 or MIT +Comment: see https://github.com/gimli-rs/gimli + +Files: vendor/globwalk/* +Copyright: 2018-2020 Gilad Naaman +License: MIT +Comment: see https://github.com/gilnaa/globwalk + +Files: vendor/gsgdt/* +Copyright: 2020 Vishnunarayan K I +License: MIT or Apache-2.0 +Comment: see https://github.com/vn-ki/gsgdt-rs + +Files: vendor/handlebars/* +Copyright: 2014-2017 Ning Sun +License: MIT +Comment: see https://github.com/sunng87/handlebars-rust + +Files: vendor/heck/* +Copyright: 2017-2018 Without Boats +License: MIT OR Apache-2.0 +Comment: see https://github.com/withoutboats/heck + +Files: vendor/hermit-abi/* +Copyright: 2019-2019 Stefan Lankes +License: MIT or Apache-2.0 +Comment: see https://github.com/hermitcore/hermit-abi + +Files: vendor/hex/* +Copyright: 2015-2020 KokaKiwi +License: MIT OR Apache-2.0 +Comment: see https://github.com/KokaKiwi/rust-hex + +Files: + vendor/html5ever/* + vendor/markup5ever/* + vendor/markup5ever_rcdom/* +Copyright: 2014-2020 The html5ever Project Developers +License: MIT or Apache-2.0 +Comment: see https://github.com/servo/html5ever + +Files: + vendor/humantime/* + vendor/humantime-*/* +Copyright: + 2016-2018 Paul Colomiets + 2016 The humantime Developers + 2016 Pyfisch + 2005-2013 Rich Felker +License: MIT or Apache-2.0 + +Files: vendor/if_chain/* +Copyright: 2016-2020 Chris Wong +License: MIT or Apache-2.0 +Comment: see https://github.com/lfairy/if_chain + +Files: + vendor/form_urlencoded/* + vendor/idna/* + vendor/percent-encoding/* + vendor/url/* +Copyright: 2013-2021 The rust-url developers +License: MIT or Apache-2.0 +Comment: see https://github.com/servo/rust-url/ + +Files: vendor/indexmap/* +Copyright: 2016-2019 bluss + 2016-2019 Josh Stone +License: Apache-2.0 or MIT +Comment: see https://github.com/bluss/indexmap + +Files: + vendor/indoc/* + vendor/unindent/* +Copyright: 2016-2022 David Tolnay +License: MIT OR Apache-2.0 +Comment: see https://github.com/dtolnay/indoc + +Files: vendor/instant/* +Copyright: 2019-2020 sebcrozet +License: BSD-3-Clause +Comment: see https://github.com/sebcrozet/instant + +Files: vendor/jsonpath_lib/* +Copyright: 2018-2021 Changseok Han +License: MIT +Comment: see https://github.com/freestrings/jsonpath + +Files: vendor/lazy_static/* +Copyright: 2014-2018 Marvin Löbel +License: MIT or Apache-2.0 +Comment: + see https://github.com/rust-lang-nursery/lazy-static.rs + see https://github.com/Kimundi/owning-ref-rs + +Files: vendor/libloading/* +Copyright: 2015-2022 Simonas Kazlauskas +License: ISC +Comment: see https://github.com/nagisa/rust_libloading/ + +Files: vendor/libm/* +Copyright: 2018-2021 Jorge Aparicio +License: MIT OR Apache-2.0 +Comment: see https://github.com/rust-lang-nursery/libm + +Files: vendor/mac/* +Copyright: 2014-2017 Jonathan Reem +License: MIT +Comment: + see https://github.com/reem/rust-mac.git + +Files: vendor/matchers/* +Copyright: 2019-2019 Eliza Weisman +License: MIT +Comment: see https://github.com/hawkw/matchers + +Files: vendor/matches/* +Copyright: 2014-2017 Simon Sapin +License: MIT +Comment: see https://github.com/SimonSapin + +Files: vendor/maybe-uninit/* +Copyright: 2019-2019 est31 + 2019-2019 The Rust Project Developers +License: Apache-2.0 OR MIT +Comment: see https://github.com/est31/maybe-uninit + +Files: vendor/mdbook/* +Copyright: 2015-2017 Mathieu David +License: MPL-2.0 +Comment: see https://github.com/azerupi/mdBook + +Files: vendor/measureme/* +Copyright: 2019-2020 Wesley Wiser + 2019-2020 Michael Woerister +License: MIT OR Apache-2.0 +Comment: see https://github.com/rust-lang/measureme + +Files: vendor/memmap2-0*/* +Copyright: 2015-2021 Dan Burkert + 2015-2021 Evgeniy Reizner +License: MIT or Apache-2.0 +Comment: see https://github.com/RazrFalcon/memmap2-rs + +Files: + vendor/memoffset/* + vendor/memoffset-0*/* +Copyright: 2017-2019 Gilad Naaman +License: MIT +Comment: see https://github.com/Gilnaa/memoffset + +Files: + vendor/macro-utils/* + vendor/minifier/* +Copyright: 2017-2018 Guillaume Gomez +License: MIT +Comment: + see https://github.com/GuillaumeGomez/macro_utils + see https://github.com/GuillaumeGomez/minifier-rs + +Files: + vendor/miniz_oxide/* +Copyright: 2017-2020 Frommi +License: MIT +Comment: see https://github.com/Frommi/miniz_oxide + +Files: vendor/miow-0.3.7/* +Copyright: 2014-2021 Alex Crichton +License: MIT or Apache-2.0 +Comment: see https://github.com/yoshuawuyts/miow + +Files: vendor/new_debug_unreachable/* +Copyright: 2014-2018 Matt Brubeck + 2014-2018 Jonathan Reem +License: MIT +Comment: see https://github.com/mbrubeck/rust-debug-unreachable + +Files: vendor/num_cpus/* +Copyright: 2015 Sean McArthur +License: MIT +Comment: see https://github.com/seanmonstar/num_cpus + +Files: vendor/object-0*/* +Copyright: + 2016-2020 Nick Fitzgerald + 2016-2020 Philip Craig +License: Apache-2.0 or MIT +Comment: see https://github.com/gimli-rs/object + +Files: vendor/odht/* +Copyright: 2021 Michael Woerister +License: Apache-2.0 or MIT +Comment: see https://github.com/rust-lang/odht + +Files: vendor/opener/* +Copyright: 2018-2020 Brian Bowman +License: MIT OR Apache-2.0 +Comment: see https://github.com/Seeker14491/opener + +Files: vendor/once_cell/* +Copyright: 2018-2019 Aleksey Kladov +License: MIT OR Apache-2.0 +Comment: see https://github.com/matklad/once_cell + +Files: vendor/output_vt100/* +Copyright: 2019-2019 Phuntsok Drak-pa +License: MIT +Comment: see https://github.com/Phundrak/output-vt100-rs + +Files: + vendor/hashbrown/* + vendor/lock_api/* + vendor/thread_local/* + vendor/parking_lot/* + vendor/parking_lot_core/* +Copyright: 2016-2019 Amanieu d'Antras +License: MIT or Apache-2.0 +Comment: + see https://github.com/rust-lang/hashbrown + see https://github.com/Amanieu/thread_local-rs + see https://github.com/Amanieu/parking_lot + +Files: vendor/packed_simd_2/* +Copyright: 2018-2021 Gonzalo Brito Gadeschi + 2018-2021 Jubilee Young +License: MIT or Apache-2.0 +Comment: see https://github.com/rust-lang-nursery/packed_simd + +Files: vendor/pathdiff/* +Copyright: 2017-2020 Manish Goregaokar +License: MIT or Apache-2.0 +Comment: see https://github.com/Manishearth/pathdiff + +Files: vendor/perf-event-open-sys/* +Copyright: 2019-2020 Jim Blandy +License: MIT OR Apache-2.0 +Comment: see https://github.com/jimblandy/perf-event.git + +Files: + vendor/pest/* + vendor/pest_derive/* + vendor/pest_generator/* + vendor/pest_meta/* +Copyright: 2016-2019 Dragoș Tiselice +License: MIT or Apache-2.0 +Comment: + see https://github.com/dragostis/pest + see https://github.com/pest-parser/pest + +Files: vendor/polonius-engine/* +Copyright: 2018-2018 The Rust Project Developers + 2018-2018 Polonius Developers +License: Apache-2.0 or MIT +Comment: see https://github.com/rust-lang-nursery/polonius + +Files: vendor/petgraph/* +Copyright: 2014-2018 bluss + 2014-2018 mitchmindtree +License: MIT or Apache-2.0 +Comment: see https://github.com/bluss/petgraph + +Files: + vendor/phf/* + vendor/phf_codegen/* + vendor/phf_generator/* + vendor/phf_shared/* +Copyright: 2014-2018 Steven Fackler +License: MIT +Comment: see https://github.com/sfackler/rust-phf + +Files: vendor/pin-project-lite/* +Copyright: 2018-2021 Taiki Endo +License: Apache-2.0 or MIT +Comment: + see https://github.com/taiki-e/pin-project-lite + +Files: vendor/precomputed-hash/* +Copyright: 2017-2017 Emilio Cobos Álvarez +License: MIT +Comment: see https://github.com/emilio/precomputed-hash + +Files: vendor/pretty_assertions/* +Copyright: 2017-2018 Colin Kiegel + 2017-2018 Florent Fayolle +License: MIT or Apache-2.0 +Comment: see https://github.com/colin-kiegel/rust-pretty-assertions + +Files: + vendor/proc-macro-error/* + vendor/proc-macro-error-attr/* +Copyright: 2019-2020 CreepySkeleton +License: MIT OR Apache-2.0 +Comment: see https://gitlab.com/CreepySkeleton/proc-macro-error + +Files: vendor/psm/* +Copyright: 2015-2020 Simonas Kazlauskas +License: MIT or Apache-2.0 +Comment: see https://github.com/rust-lang/stacker/ + +Files: vendor/pulldown-cmark/* +Copyright: 2015-2017 Raph Levien +License: MIT +Comment: see https://github.com/google/pulldown-cmark + +Files: vendor/punycode/* +Copyright: 2015-2019 mcarton +License: MIT +Comment: see https://github.com/mcarton/rust-punycode.git + +Files: + vendor/quick-error/* + vendor/quick-error-1*/* +Copyright: + 2015-2020 Paul Colomiets + 2015-2020 Colin Kiegel +License: MIT or Apache-2.0 +Comment: see http://github.com/tailhook/quick-error + +Files: vendor/quine-mc_cluskey/* +Copyright: 2016-2016 Oliver Schneider +License: MIT +Comment: see https://github.com/oli-obk/quine-mc_cluskey + +Files: + vendor/rayon/* + vendor/rayon-core/* + vendor/rustc-rayon/* + vendor/rustc-rayon-core/* +Copyright: 2014-2018 Niko Matsakis + 2014-2018 Josh Stone +License: Apache-2.0 or MIT +Comment: + see https://github.com/rayon-rs/rayon + see https://github.com/Zoxc/rayon/tree/rustc + +Files: vendor/redox_users/* +Copyright: 2017-2021 Jose Narvaez + 2017-2021 Wesley Hershberger +License: MIT +Comment: see https://gitlab.redox-os.org/redox-os/users + +Files: vendor/redox_syscall/* +Copyright: 2016-2021 Jeremy Soller +License: MIT +Comment: + see https://github.com/redox-os/syscall + +Files: vendor/regex-automata/* +Copyright: 2018-2020 Andrew Gallant +License: Unlicense or MIT +Comment: see https://github.com/BurntSushi/regex-automata + +Files: vendor/remove_dir_all/* +Copyright: 2017-2018 Aaronepower +License: MIT or Apache-2.0 +Comment: see https://github.com/Aaronepower/remove_dir_all.git + +Files: vendor/rls-data/* + vendor/rls-span/* +Copyright: 2016-2017 Nick Cameron +License: Apache-2.0 or MIT +Comment: see https://github.com/nrc/rls-span + see https://github.com/nrc/rls-data + +Files: vendor/rustc-semver/* +Copyright: 2020-2020 flip1995 +License: MIT OR Apache-2.0 +Comment: see https://github.com/flip1995/rustc-semver + +Files: vendor/rustc_tools_util/* +Copyright: 2014-2021 Matthias Krüger +License: MIT or Apache-2.0 +Comment: see https://github.com/rust-lang/rust-clippy + +Files: + vendor/rustfix/* + vendor/rustfix-0*/* +Copyright: + 2016-2021 Pascal Hertleif + 2016-2021 Oliver Schneider +License: Apache-2.0 or MIT +Comment: see https://github.com/killercup/rustfix + +Files: vendor/rustversion/* +Copyright: 2019-2021 David Tolnay +License: MIT OR Apache-2.0 +Comment: see https://github.com/dtolnay/rustversion + +Files: vendor/ryu/* +Copyright: 2018-2018 David Tolnay +License: Apache-2.0 or BSL-1.0 +Comment: see https://github.com/dtolnay/ryu + +Files: + vendor/semver-0*/* + vendor/semver/* + vendor/semver-parser/* +Copyright: + 2014-2020 Steve Klabnik + 2014-2020 The Rust Project Developers +License: MIT or Apache-2.0 +Comment: + see https://github.com/steveklabnik/semver + see https://github.com/steveklabnik/semver-parser + +Files: vendor/serde/* + vendor/serde_json/* +Copyright: 2014-2017 Erick Tryzelaar +License: MIT or Apache-2.0 +Comment: + see https://github.com/serde-rs/serde + see https://github.com/serde-rs/json + +Files: vendor/serde_derive/* +Copyright: 2014-2017 Erick Tryzelaar + 2016-2017 David Tolnay +License: MIT or Apache-2.0 +Comment: see https://github.com/serde-rs/serde + +Files: vendor/sharded-slab/* +Copyright: 2019-2020 Eliza Weisman +License: MIT +Comment: see https://github.com/hawkw/sharded-slab + +Files: vendor/shell-escape/* +Copyright: 2016-2020 Steven Fackler +License: MIT or Apache-2.0 +Comment: see https://github.com/sfackler/shell-escape + +Files: vendor/shlex/* +Copyright: 2015-2015 comex +License: MIT or Apache-2.0 +Comment: see https://github.com/comex/rust-shlex + +Files: vendor/siphasher/* +Copyright: 2016-2018 Frank Denis +License: MIT or Apache-2.0 +Comment: see https://github.com/jedisct1/rust-siphash + +Files: vendor/smallvec/* +Copyright: 2015-2020 Simon Sapin +License: MPL-2.0 +Comment: see https://github.com/servo/rust-smallvec + +Files: vendor/snap/* +Copyright: 2016-2020 Andrew Gallant +License: BSD-3-Clause +Comment: see https://github.com/BurntSushi/rust-snappy + +Files: vendor/stable_deref_trait/* +Copyright: 2017-2017 Robert Grosse +License: MIT or Apache-2.0 +Comment: see https://github.com/storyyeller/stable_deref_trait + +Files: vendor/stacker/* +Copyright: 2015-2020 Alex Crichton + 2015-2020 Simonas Kazlauskas +License: MIT or Apache-2.0 +Comment: see https://github.com/rust-lang/stacker + +Files: vendor/strsim/* +Copyright: 2015 Danny Guo +License: MIT +Comment: see https://github.com/dguo/strsim-rs + +Files: + vendor/structopt/* + vendor/structopt-derive/* +Copyright: 2017-2020 Guillaume Pinot + 2017-2020 others +License: Apache-2.0 OR MIT +Comment: see https://github.com/TeXitoi/structopt + +Files: + vendor/strum/* + vendor/strum_macros/* +Copyright: 2015-2018 Peter Glotfelty +License: MIT + +Files: vendor/synstructure/* +Copyright: + 2016-2019 Nika Layzell +License: MIT +Comment: see https://github.com/mystor/synstructure + +Files: vendor/tempfile/* +Copyright: 2015-2018 Steven Allen + 2015-2018 The Rust Project Developers + 2015-2018 Ashley Mannix + 2015-2018 Jason White +License: MIT or Apache-2.0 +Comment: see https://github.com/Stebalien/tempfile + +Files: vendor/tendril/* +Copyright: 2015-2017 Keegan McAllister + 2015-2017 Simon Sapin + 2015-2017 Chris Morgan +License: MIT or Apache-2.0 +Comment: see https://github.com/servo/tendril + +Files: vendor/tera/* +Copyright: 2015-2021 Vincent Prouillet +License: MIT +Comment: see https://github.com/Keats/tera + +Files: + vendor/term/* + vendor/term-0*/* +Copyright: + 2014-2021 The Rust Project Developers + 2014-2021 Steven Allen +License: MIT or Apache-2.0 +Comment: see https://github.com/Stebalien/term + +Files: vendor/termize/* +Copyright: 2016-2020 Yuki Okushi +License: MIT or Apache-2.0 +Comment: see https://github.com/JohnTitor/termize + +Files: vendor/textwrap/* +Copyright: 2016-2017 Martin Geisler +License: MIT +Comment: see https://github.com/mgeisler/textwrap + +Files: + vendor/thiserror/* + vendor/thiserror-impl/* +Copyright: 2019-2020 David Tolnay +License: MIT OR Apache-2.0 +Comment: see https://github.com/dtolnay/thiserror + +Files: vendor/thorin-dwp/* +Copyright: 2021-2022 David Wood +License: MIT OR Apache-2.0 +Comment: see https://github.com/davidtwco/thorin + +Files: vendor/tinyvec/* +Copyright: 2020 Lokathor +License: Zlib +Comment: see https://github.com/Lokathor/tinyvec + +Files: vendor/tinyvec_macros/* +Copyright: 2020 Soveu +License: MIT or Apache-2.0 or Zlib +Comment: see https://github.com/Soveu/tinyvec_macros + +Files: vendor/topological-sort/* +Copyright: 2015-2018 gifnksm +License: MIT OR Apache-2.0 +Comment: see https://github.com/gifnksm/topological-sort-rs + +Files: + vendor/tracing/* + vendor/tracing-attributes/* + vendor/tracing-core/* + vendor/tracing-log/* + vendor/tracing-subscriber/* +Copyright: + 2018-2020 Eliza Weisman + 2018-2020 Tokio Contributors + 2018-2020 David Barsky +License: MIT +Comment: see https://github.com/tokio-rs/tracing + +Files: vendor/tracing-tree/* +Copyright: 2020-2020 David Barsky + 2020-2020 Nathan Whitaker +License: MIT OR Apache-2.0 +Comment: see https://github.com/davidbarsky/tracing-tree + +Files: vendor/typenum/* +Copyright: 2015-2019 Paho Lurie-Gregg + 2015-2019 Andre Bogus +License: MIT or Apache-2.0 +Comment: see https://github.com/paholg/typenum + +Files: vendor/version_check/* +Copyright: 2017-2019 Sergio Benitez +License: MIT or Apache-2.0 +Comment: see https://github.com/SergioBenitez/version_check + +Files: + vendor/ucd-parse/* + vendor/ucd-trie/* +Copyright: 2017-2020 Andrew Gallant +License: MIT or Apache-2.0 +Comment: + see https://github.com/BurntSushi/rucd + see https://github.com/BurntSushi/ucd-generate + +Files: vendor/unicase/* +Copyright: 2014-2019 Sean McArthur +License: MIT or Apache-2.0 +Comment: see https://github.com/seanmonstar/unicase + +Files: vendor/unicode_categories/* +Copyright: 2015-2016 Sean Gillespie +License: MIT OR Apache-2.0 +Comment: see https://github.com/swgillespie/unicode-categories + +Files: vendor/unic-*/* +Copyright: 2017-2022 The UNIC Project Developers +License: MIT or Apache-2.0 +Comment: see https://github.com/open-i18n/rust-unic/ + +Files: + vendor/unicode-normalization/* + vendor/unicode-segmentation/* + vendor/unicode-width/* +Copyright: 2015-2019 kwantam +License: MIT or Apache-2.0 +Comment: + see https://github.com/unicode-rs/unicode-normalization + see https://github.com/unicode-rs/unicode-segmentation + see https://github.com/unicode-rs/unicode-width + +Files: vendor/unicode-xid/* +Copyright: 2015-2017 erick.tryzelaar + 2015-2017 kwantam +License: MIT or Apache-2.0 +Comment: see https://github.com/unicode-rs/unicode-xid + +Files: vendor/unicode-script/* +Copyright: 2017-2020 Manish Goregaokar +License: MIT or Apache-2.0 +Comment: see https://github.com/unicode-rs/unicode-script + +Files: vendor/unicode-security/* +Copyright: 2020-2020 Charles Lew + 2020-2020 Manish Goregaokar +License: MIT or Apache-2.0 +Comment: see https://github.com/unicode-rs/unicode-security + +Files: vendor/unified-diff/* +Copyright: 2021-2021 Michael Howell + 2021-2021 The Rust Project Developers +License: MIT OR Apache-2.0 +Comment: see https://github.com/notriddle/rust-unified-diff + +Files: vendor/utf-8/* +Copyright: 2015-2018 Simon Sapin +License: MIT OR Apache-2.0 +Comment: see https://github.com/SimonSapin/rust-utf8 + +Files: vendor/vec_map/* +Copyright: 2015-2017 Alexis Beingessner + 2015-2017 Andrew Paseltiner + 2015-2017 contain-rs developers + 2015-2017 The Rust Project Developers +License: MIT or Apache-2.0 +Comment: see https://github.com/contain-rs/vec-map + +Files: vendor/wasi/* +Copyright: 2019-2020 The Cranelift Project Developers +License: Apache-2.0 with LLVM exception or Apache-2.0 or MIT +Comment: see https://github.com/CraneStation/rust-wasi + +Files: vendor/winapi/* +Copyright: + 2014-2019 Peter Atashian + 2014-2019 winapi-rs developers +License: MIT +Comment: see https://github.com/retep998/winapi-rs + +Files: vendor/winapi-*-pc-windows-gnu/* +Copyright: 2014-2018 Peter Atashian +License: MIT or Apache-2.0 +Comment: see https://github.com/retep998/winapi-rs + +Files: vendor/xattr/* +Copyright: 2015-2017 Steven Allen +License: MIT or Apache-2.0 +Comment: see https://github.com/Stebalien/xattr + +Files: vendor/xml5ever/* +Copyright: 2014-2020 The xml5ever project developers +License: MIT or Apache-2.0 +Comment: see https://github.com/servo/html5ever + +Files: vendor/yaml-rust-0*/* +Copyright: 2015-2020 Yuheng Chen +License: MIT or Apache-2.0 +Comment: see https://github.com/chyh1990/yaml-rust + +Files: vendor/yansi-term/* +Copyright: 2014-2020 ogham@bsago.me + 2014-2020 Ryan Scheel (Havvy) + 2014-2020 Josh Triplett + 2014-2020 Juan Aguilar Santillana +License: MIT +Comment: see https://github.com/botika/yansi-term + +Files: debian/* +Copyright: 2013-2018 Debian Rust Maintainers +License: MIT or Apache-2.0 + +Files: debian/icons/rust-logo-32x32-blk.png +Copyright: Mozilla Foundation +License: CC-BY +Comment: + Relevant discussion in https://github.com/rust-lang/rust/issues/11562 + +License: 0BSD + Permission to use, copy, modify, and/or distribute this software for + any purpose with or without fee is hereby granted. + . + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +License: Apache-2.0 + On Debian systems, the full text of the Apache License Version 2.0 + can be found in the file `/usr/share/common-licenses/Apache-2.0'. + +License: Apache-2.0 with LLVM exception + On Debian systems, the full text of the Apache License Version 2.0 + can be found in the file `/usr/share/common-licenses/Apache-2.0'. + Additionally, the LLVM exception is as follows: + . + As an exception, if, as a result of your compiling your source code, portions + of this Software are embedded into an Object form of such source code, you + may redistribute such embedded portions in such Object form without complying + with the conditions of Sections 4(a), 4(b) and 4(d) of the License. + . + In addition, if you combine or link compiled forms of this Software with + software that is licensed under the GPLv2 ("Combined Software") and if a + court of competent jurisdiction determines that the patent provision (Section + 3), the indemnity provision (Section 9) or other Section of the License + conflicts with the conditions of the GPLv2, you may retroactively and + prospectively choose to deem waived or otherwise exclude such Section(s) of + the License, but only in their entirety and only with respect to the Combined + Software. + +License: BSD-2-clause + Redistribution and use in source and binary forms, with + or without modification, are permitted provided that the + following conditions are met: + . + 1. Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + 2. Redistributions in binary form must reproduce the + above copyright notice, this list of conditions and + the following disclaimer in the documentation and/or + other materials provided with the distribution. + . + THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: CC0-1.0 + On Debian systems, the full text of the CC0 1.0 Universal + License can be found in the file + `/usr/share/common-licenses/CC0-1.0'. + +License: ISC + Permission to use, copy, modify, and/or distribute this software for any purpose + with or without fee is hereby granted, provided that the above copyright notice + and this permission notice appear in all copies. + . + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS + OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF + THIS SOFTWARE. + +License: MIT + Permission is hereby granted, free of charge, to any + person obtaining a copy of this software and associated + documentation files (the "Software"), to deal in the + Software without restriction, including without + limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of + the Software, and to permit persons to whom the Software + is furnished to do so, subject to the following + conditions: + . + The above copyright notice and this permission notice + shall be included in all copies or substantial portions + of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF + ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED + TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT + SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR + IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +License: BSL-1.0 + Permission is hereby granted, free of charge, to any person or organization + obtaining a copy of the software and accompanying documentation covered by + this license (the "Software") to use, reproduce, display, distribute, + execute, and transmit the Software, and to prepare derivative works of the + Software, and to permit third-parties to whom the Software is furnished to + do so, all subject to the following: + . + The copyright notices in the Software and this entire statement, including + the above license grant, this restriction and the following disclaimer, + must be included in all copies of the Software, in whole or in part, and + all derivative works of the Software, unless such copies or derivative + works are solely in the form of machine-executable object code generated by + a source language processor. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT + SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE + FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +License: BSD-3-clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the organization nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDER AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +License: Unlicense + This is free and unencumbered software released into the public domain. + . + Anyone is free to copy, modify, publish, use, compile, sell, or + distribute this software, either in source code form or as a compiled + binary, for any purpose, commercial or non-commercial, and by any + means. + . + In jurisdictions that recognize copyright laws, the author or authors + of this software dedicate any and all copyright interest in the + software to the public domain. We make this dedication for the + benefit of the public at large and to the detriment of our heirs and + successors. We intend this dedication to be an overt act of + relinquishment in perpetuity of all present and future rights to this + software under copyright law. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + . + For more information, please refer to + +License: SIL-OPEN-FONT + This Font Software is licensed under the SIL Open Font License, + Version 1.1. + . + This license is copied below, and is also available with a FAQ at: + http://scripts.sil.org/OFL + . + SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 + . + PREAMBLE The goals of the Open Font License (OFL) are to stimulate + worldwide development of collaborative font projects, to support the font + creation efforts of academic and linguistic communities, and to provide + a free and open framework in which fonts may be shared and improved in + partnership with others. + . + The OFL allows the licensed fonts to be used, studied, modified and + redistributed freely as long as they are not sold by themselves. + The fonts, including any derivative works, can be bundled, embedded, + redistributed and/or sold with any software provided that any reserved + names are not used by derivative works. The fonts and derivatives, + however, cannot be released under any other type of license. The + requirement for fonts to remain under this license does not apply to + any document created using the fonts or their derivatives. + . + DEFINITIONS + "Font Software" refers to the set of files released by the Copyright + Holder(s) under this license and clearly marked as such. + This may include source files, build scripts and documentation. + . + "Reserved Font Name" refers to any names specified as such after the + copyright statement(s). + . + "Original Version" refers to the collection of Font Software components + as distributed by the Copyright Holder(s). + . + "Modified Version" refers to any derivative made by adding to, deleting, + or substituting ? in part or in whole ? + any of the components of the Original Version, by changing formats or + by porting the Font Software to a new environment. + . + "Author" refers to any designer, engineer, programmer, technical writer + or other person who contributed to the Font Software. + . + PERMISSION & CONDITIONS + . + Permission is hereby granted, free of charge, to any person obtaining a + copy of the Font Software, to use, study, copy, merge, embed, modify, + redistribute, and sell modified and unmodified copies of the Font + Software, subject to the following conditions: + . + 1) Neither the Font Software nor any of its individual components,in + Original or Modified Versions, may be sold by itself. + . + 2) Original or Modified Versions of the Font Software may be bundled, + redistributed and/or sold with any software, provided that each copy + contains the above copyright notice and this license. These can be + included either as stand-alone text files, human-readable headers or + in the appropriate machine-readable metadata fields within text or + binary files as long as those fields can be easily viewed by the user. + . + 3) No Modified Version of the Font Software may use the Reserved Font + Name(s) unless explicit written permission is granted by the + corresponding Copyright Holder. This restriction only applies to the + primary font name as presented to the users. + . + 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font + Software shall not be used to promote, endorse or advertise any + Modified Version, except to acknowledge the contribution(s) of the + Copyright Holder(s) and the Author(s) or with their explicit written + permission. + 5) The Font Software, modified or unmodified, in part or in whole, must + be distributed entirely under this license, and must not be distributed + under any other license. The requirement for fonts to remain under + this license does not apply to any document created using the Font + Software. + . + TERMINATION + This license becomes null and void if any of the above conditions are not met. + . + DISCLAIMER + THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT + OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE + COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL + DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF THE USE OR INABILITY + +License: GPL-2+ + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + . + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + . + On Debian systems, see /usr/share/common-licenses/GPL-2 for the full + text of the GPL version 2. + +License: CC-BY + Attribution 4.0 International + . + ======================================================================= + . + Creative Commons Corporation ("Creative Commons") is not a law firm and + does not provide legal services or legal advice. Distribution of + Creative Commons public licenses does not create a lawyer-client or + other relationship. Creative Commons makes its licenses and related + information available on an "as-is" basis. Creative Commons gives no + warranties regarding its licenses, any material licensed under their + terms and conditions, or any related information. Creative Commons + disclaims all liability for damages resulting from their use to the + fullest extent possible. + . + Using Creative Commons Public Licenses + . + Creative Commons public licenses provide a standard set of terms and + conditions that creators and other rights holders may use to share + original works of authorship and other material subject to copyright + and certain other rights specified in the public license below. The + following considerations are for informational purposes only, are not + exhaustive, and do not form part of our licenses. + . + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + . + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More_considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + . + ======================================================================= + . + Creative Commons Attribution 4.0 International Public License + . + By exercising the Licensed Rights (defined below), You accept and agree + to be bound by the terms and conditions of this Creative Commons + Attribution 4.0 International Public License ("Public License"). To the + extent this Public License may be interpreted as a contract, You are + granted the Licensed Rights in consideration of Your acceptance of + these terms and conditions, and the Licensor grants You such rights in + consideration of benefits the Licensor receives from making the + Licensed Material available under these terms and conditions. + . + . + Section 1 -- Definitions. + . + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + . + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + . + c. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + . + d. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + . + e. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + . + f. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + . + g. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + . + h. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + . + i. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + . + j. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + . + k. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + . + . + Section 2 -- Scope. + . + a. License grant. + . + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + . + a. reproduce and Share the Licensed Material, in whole or + in part; and + . + b. produce, reproduce, and Share Adapted Material. + . + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + . + 3. Term. The term of this Public License is specified in Section + 6(a). + . + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + . + 5. Downstream recipients. + . + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + . + b. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + . + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + . + b. Other rights. + . + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + . + 2. Patent and trademark rights are not licensed under this + Public License. + . + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + . + . + Section 3 -- License Conditions. + . + Your exercise of the Licensed Rights is expressly made subject to the + following conditions. + . + a. Attribution. + . + 1. If You Share the Licensed Material (including in modified + form), You must: + . + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + . + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + . + ii. a copyright notice; + . + iii. a notice that refers to this Public License; + . + iv. a notice that refers to the disclaimer of + warranties; + . + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + . + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + . + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + . + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + . + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + . + 4. If You Share Adapted Material You produce, the Adapter's + License You apply must not prevent recipients of the Adapted + Material from complying with this Public License. + . + . + Section 4 -- Sui Generis Database Rights. + . + Where the Licensed Rights include Sui Generis Database Rights that + apply to Your use of the Licensed Material: + . + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + . + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material; and + . + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + . + For the avoidance of doubt, this Section 4 supplements and does not + replace Your obligations under this Public License where the Licensed + Rights include other Copyright and Similar Rights. + . + . + Section 5 -- Disclaimer of Warranties and Limitation of Liability. + . + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + . + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + . + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + . + . + Section 6 -- Term and Termination. + . + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + . + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + . + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + . + 2. upon express reinstatement by the Licensor. + . + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + . + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + . + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + . + . + Section 7 -- Other Terms and Conditions. + . + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + . + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + . + . + Section 8 -- Interpretation. + . + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + . + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + . + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + . + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + . + . + ======================================================================= + . + Creative Commons is not a party to its public licenses. + Notwithstanding, Creative Commons may elect to apply one of its public + licenses to material it publishes and in those instances will be + considered the "Licensor." Except for the limited purpose of indicating + that material is shared under a Creative Commons public license or as + otherwise permitted by the Creative Commons policies published at + creativecommons.org/policies, Creative Commons does not authorize the + use of the trademark "Creative Commons" or any other trademark or logo + of Creative Commons without its prior written consent including, + without limitation, in connection with any unauthorized modifications + to any of its public licenses or any other arrangements, + understandings, or agreements concerning use of licensed material. For + the avoidance of doubt, this paragraph does not form part of the public + licenses. + . + Creative Commons may be contacted at creativecommons.org. + +License: MPL-2.0 + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + . + On Debian systems, see /usr/share/common-licenses/MPL-2.0 for the full + text of the MPL version 2.0. + +License: Zlib + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + . + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + . + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. From a0c08c68c7db8b8296787fe7ff364a855f0a9295 Mon Sep 17 00:00:00 2001 From: Pietro Albini Date: Thu, 18 Aug 2022 16:03:26 +0200 Subject: [PATCH 10/15] cleanup .reuse/dep5 --- .reuse/dep5 | 2145 +-------------------------------------------------- 1 file changed, 6 insertions(+), 2139 deletions(-) diff --git a/.reuse/dep5 b/.reuse/dep5 index 0afbe8337467f..e040f73b9e1f7 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -1,312 +1,9 @@ Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ -Upstream-Name: rust -Source: https://www.rust-lang.org Files-Excluded: - *.min.js - src/llvm-emscripten src/llvm-project -# Fonts already in Debian, covered by d-rustdoc-use-system-font.patch -# TODO make that patch, modify src/librustdoc/html/static/css/rustdoc.css - src/librustdoc/html/static/fonts/noto-sans-* -# Pre-generated docs - src/tools/rustfmt/docs -# Proprietary doc formats - src/doc/book/nostarch/docx -# Fonts already in Debian, covered by d-0003-mdbook-strip-embedded-libs.patch - vendor/mdbook/src/theme/fonts - vendor/mdbook/src/theme/FontAwesome - vendor/mdbook/src/theme/highlight.js - vendor/mdbook/src/theme/highlight.css -# Exclude submodules https://github.com/rust-lang/rust/tree/master/src/tools -# We prefer to do them in different Debian packages so they can have their own -# version numbers. If upstream merges them "properly" (i.e. unify the version -# numbers) then we can merge the packages in Debian. Note that cargotest here -# does actually belong to rustc, it is an integration test suite for rustc to -# check that certain popular crates continue to compile. It is not the same as -# cargo's own test suite (in its own package) also called cargotest. -# NB: don't exclude rust-installer, it's needed for "install" functionality - src/tools/cargo - src/tools/rls - src/tools/remote-test-client - src/tools/remote-test-server - src/tools/rust-analyzer - src/tools/miri -# Embedded GH pages - src/tools/clippy/util/gh-pages -# Misc embedded - vendor/structopt/link-check-headers.json -# Embedded C libraries - vendor/libz-sys/src/zlib* - vendor/lzma-sys*/xz-* -# Embedded binary blobs - vendor/jsonpath_lib/docs - vendor/mdbook/src/theme/playground_editor - vendor/psm/src/arch/wasm32.o - vendor/winapi-*/*/*.a -# Embedded submodule used for CI - library/stdarch/crates/intrinsic-test/acle -# NPM packages we can't be bothered documenting licenses for - vendor/tera/docs/node_modules -# unused dependencies, generated by debian/prune-unused-deps -# DO NOT EDIT below, AUTOGENERATED - vendor/addr2line - vendor/adler-0.2.3 - vendor/always-assert - vendor/anymap - vendor/arbitrary - vendor/ar - vendor/arrayvec-0.7.0 - vendor/autocfg-1.0.0 - vendor/backtrace - vendor/bitflags-1.2.1 - vendor/bitmaps - vendor/bytes - vendor/bytesize - vendor/cargo_metadata-0.14.0 - vendor/cc-1.0.69 - vendor/chalk-recursive - vendor/commoncrypto - vendor/commoncrypto-sys - vendor/core-foundation - vendor/core-foundation-sys - vendor/countme - vendor/cov-mark - vendor/cranelift-bforest - vendor/cranelift-codegen - vendor/cranelift-codegen-meta - vendor/cranelift-codegen-shared - vendor/cranelift-entity - vendor/cranelift-frontend - vendor/cranelift-jit - vendor/cranelift-module - vendor/cranelift-native - vendor/cranelift-object - vendor/crc32fast-1.2.0 - vendor/crossbeam-channel-0.5.0 - vendor/crossbeam-utils-0.8.3 - vendor/crypto-hash - vendor/curl - vendor/curl-sys - vendor/dashmap - vendor/derive_arbitrary - vendor/derive_more - vendor/directories - vendor/dot - vendor/drop_bomb - vendor/either-1.6.0 - vendor/enum-iterator - vendor/enum-iterator-derive - vendor/env_logger - vendor/expect-test-1.0.1 - vendor/filetime-0.2.14 - vendor/flate2-1.0.16 - vendor/foreign-types - vendor/foreign-types-shared - vendor/fsevent-sys - vendor/fs_extra-1.1.0 - vendor/fs_extra - vendor/fst-0.4.5 - vendor/fst - vendor/futures-0.1.29 - vendor/futures - vendor/futures-channel - vendor/futures-core - vendor/futures-executor - vendor/futures-io - vendor/futures-macro - vendor/futures-sink - vendor/futures-task - vendor/futures-util - vendor/fwdansi - vendor/getset - vendor/git2 - vendor/git2-curl - vendor/hashbrown-0.11.0 - vendor/heck-0.3.1 - vendor/hex-0.3.2 - vendor/home - vendor/idna-0.1.5 - vendor/idna-0.2.0 - vendor/im-rc - vendor/inotify - vendor/inotify-sys - vendor/itertools-0.10.1 - vendor/itoa-0.4.6 - vendor/jod-thread - vendor/json - vendor/jsonrpc-client-transports - vendor/jsonrpc-core - vendor/jsonrpc-core-client - vendor/jsonrpc-derive - vendor/jsonrpc-ipc-server - vendor/jsonrpc-pubsub - vendor/jsonrpc-server-utils - vendor/kqueue - vendor/kqueue-sys - vendor/lazycell - vendor/libc-0.2.108 - vendor/libgit2-sys - vendor/libloading-0.6.7 - vendor/libloading-0.7.1 - vendor/libmimalloc-sys - vendor/libnghttp2-sys - vendor/libssh2-sys - vendor/libz-sys - vendor/linked-hash-map - vendor/lsp-codec - vendor/lsp-server - vendor/lsp-types-0.60.0 - vendor/lsp-types - vendor/mach - vendor/matches-0.1.8 - vendor/measureme-9.1.2 - vendor/memmap2 - vendor/mimalloc - vendor/miniz_oxide-0.4.0 - vendor/mio-0.7.13 - vendor/mio - vendor/miow - vendor/notify - vendor/ntapi - vendor/object - vendor/once_cell-1.7.2 - vendor/oorandom - vendor/openssl - vendor/openssl-probe - vendor/openssl-src - vendor/openssl-sys - vendor/ordslice - vendor/os_info - vendor/parity-tokio-ipc - vendor/paste - vendor/percent-encoding-1.0.1 - vendor/perf-event - vendor/pin-project-lite-0.2.4 - vendor/pin-utils - vendor/pretty_env_logger - vendor/proc-macro2-1.0.30 - vendor/proc-macro-crate - vendor/proc-macro-hack - vendor/proc-macro-nested - vendor/pulldown-cmark-0.8.0 - vendor/pulldown-cmark-to-cmark - vendor/quote-1.0.7 - vendor/racer - vendor/rand_xoshiro-0.4.0 - vendor/rayon-1.3.1 - vendor/rayon-core-1.7.1 - vendor/regalloc - vendor/region - vendor/rls-vfs - vendor/rowan - vendor/rustc-ap-rustc_arena - vendor/rustc-ap-rustc_ast - vendor/rustc-ap-rustc_ast_pretty - vendor/rustc-ap-rustc_data_structures - vendor/rustc-ap-rustc_errors - vendor/rustc-ap-rustc_feature - vendor/rustc-ap-rustc_fs_util - vendor/rustc-ap-rustc_graphviz - vendor/rustc-ap-rustc_index - vendor/rustc-ap-rustc_lexer-722.0.0 - vendor/rustc-ap-rustc_lexer - vendor/rustc-ap-rustc_lint_defs - vendor/rustc-ap-rustc_macros - vendor/rustc-ap-rustc_parse - vendor/rustc-ap-rustc_serialize - vendor/rustc-ap-rustc_session - vendor/rustc-ap-rustc_span - vendor/rustc-ap-rustc_target - vendor/rustc_version - vendor/ryu-1.0.5 - vendor/salsa - vendor/salsa-macros - vendor/schannel - vendor/security-framework - vendor/security-framework-sys - vendor/semver-1.0.3 - vendor/serde-1.0.125 - vendor/serde_derive-1.0.125 - vendor/serde_ignored - vendor/serde_json-1.0.59 - vendor/serde_repr-0.1.6 - vendor/serde_repr - vendor/sharded-slab-0.1.1 - vendor/signal-hook-registry - vendor/sized-chunks - vendor/slab - vendor/smol_str - vendor/snap-1.0.1 - vendor/socket2 - vendor/strip-ansi-escapes - vendor/syn-1.0.80 - vendor/target-lexicon - vendor/text-size - vendor/thread_local-1.0.1 - vendor/threadpool - vendor/tikv-jemallocator - vendor/tikv-jemalloc-ctl - vendor/tikv-jemalloc-sys-0.4.1+5.2.1-patched - vendor/tikv-jemalloc-sys - vendor/tinyvec-0.3.4 - vendor/tokio - vendor/tokio-stream - vendor/tokio-util - vendor/tower-service - vendor/typed-arena - vendor/ungrammar - vendor/unicode-bidi-0.3.4 - vendor/unicode-normalization-0.1.13 - vendor/unicode-segmentation-1.6.0 - vendor/url-1.7.2 - vendor/utf8parse - vendor/vcpkg - vendor/vergen - vendor/vte - vendor/walkdir-2.3.1 - vendor/windows_aarch64_msvc - vendor/windows_i686_gnu - vendor/windows_i686_msvc - vendor/windows-sys - vendor/windows_x86_64_gnu - vendor/windows_x86_64_msvc - vendor/write-json - vendor/xflags - vendor/xflags-macros - vendor/xshell - vendor/xshell-macros - vendor/yaml-merge-keys - vendor/yaml-rust -# DO NOT EDIT above, AUTOGENERATED -Files: C*.md - R*.md - Cargo.lock - Cargo.toml - COPYRIGHT - LICENSE* - compiler/* - configure - config.toml.example - git-commit-hash - library/* - src/README.md - src/bootstrap/* - src/build_helper/* - src/ci/* - src/doc/* - src/etc/* - src/lib* - src/rust* - src/stage0.json - src/tools/* - src/test/* - src/version - version - x.py -Copyright: 2006-2009 Graydon Hoare - 2009-2012 Mozilla Foundation - 2012-2017 The Rust Project Developers (see AUTHORS.txt) +Files: * +Copyright: The Rust Project Developers (see https://thanks.rust-lang.org) License: MIT or Apache-2.0 Files: library/std/src/sync/mpsc/mpsc_queue.rs @@ -316,1846 +13,16 @@ License: BSD-2-Clause Files: src/librustdoc/html/static/fonts/FiraSans* Copyright: 2014, Mozilla Foundation, 2014, Telefonica S.A. -License: SIL-OPEN-FONT +License: OFL-1.1 Files: src/librustdoc/html/static/fonts/NanumBarun* Copyright: 2010 NAVER Corporation -License: SIL-OPEN-FONT +License: OFL-1.1 Files: src/librustdoc/html/static/fonts/SourceCodePro* Copyright: 2010, 2012 Adobe Systems Incorporated -License: SIL-OPEN-FONT +License: OFL-1.1 Files: src/librustdoc/html/static/fonts/SourceSerif4* Copyright: 2014-2021 Adobe Systems Incorporated -License: SIL-OPEN-FONT - -Files: vendor/compiler_builtins/* -Copyright: 2016-2019 Jorge Aparicio -License: MIT or Apache-2.0 -Comment: see https://github.com/rust-lang-nursery/compiler-builtins - -Files: vendor/compiletest_rs/* -Copyright: 2015-2020 The Rust Project Developers - 2015-2020 Thomas Bracht Laumann Jespersen - 2015-2020 Manish Goregaokar -License: Apache-2.0 or MIT -Comment: see https://github.com/laumann/compiletest-rs - -Files: - vendor/bitflags/* - vendor/cc/* - vendor/cmake/* - vendor/env_logger-0*/* - vendor/getopts/* - vendor/glob/* - vendor/libc/* - vendor/log/* - vendor/regex/* - vendor/regex-syntax/* - vendor/rustc-hash/* - vendor/time/* -Copyright: 2010-2021 The Rust Project Developers -License: MIT or Apache-2.0 -Comment: - This is a collection of external crates embedded here to bootstrap cargo. - Most of them come from the original upstream Rust project, thus share the - same MIT/Apache-2.0 dual-license. See https://github.com/rust-lang. - Exceptions are noted below. - -Files: vendor/num-integer/* - vendor/num-traits/* -Copyright: 2014-2018 The Rust Project Developers -License: MIT or Apache-2.0 -Comment: see https://github.com/rust-num/num - -Files: - vendor/string_cache/* - vendor/string_cache_codegen/* - vendor/unicode-bidi/* -Copyright: 2015-2017 Alex Crichton - 2015-2017 Keegan McAllister - 2015-2017 Chris Morgan - 2014-2017 The html5ever Project Developers - 2014-2017 The Servo Project Developers - 2013-2017 Simon Sapin -License: MIT or Apache-2.0 -Comment: see https://github.com/servo/ - -Files: - vendor/getrandom/* - vendor/getrandom-0*/* - vendor/rand/* - vendor/rand-0*/* - vendor/rand_chacha/* - vendor/rand_chacha-0*/* - vendor/rand_core/* - vendor/rand_core-0*/* - vendor/rand_hc/* - vendor/rand_hc-0*/* - vendor/rand_pcg/* - vendor/rand_xorshift/* - vendor/rand_xoshiro/* -Copyright: 2010-2019 The Rand Project Developers - 2010-2019 The Rust Project Developers -License: MIT or Apache-2.0 -Comment: - see https://github.com/rust-random/getrandom - see https://github.com/rust-random/rand - see https://github.com/rust-random/small-rngs - -Files: - vendor/cfg-if-0*/* - vendor/cfg-if/* - vendor/filetime/* - vendor/flate2/* - vendor/fnv/* - vendor/jobserver/* - vendor/lzma-sys/* - vendor/pkg-config/* - vendor/proc-macro2/* - vendor/rustc-demangle/* - vendor/scoped-tls/* - vendor/tar/* - vendor/toml/* - vendor/xz2/* -Copyright: 2014-2020 Alex Crichton - 2015-2017 The Rust Project Developers -License: MIT or Apache-2.0 -Comment: see https://github.com/alexcrichton/ - -Files: vendor/dlmalloc/* -Copyright: 2017-2019 Alex Crichton -License: MIT or Apache-2.0 -Comment: see https://github.com/alexcrichton/dlmalloc-rs - -Files: vendor/dlmalloc/src/dlmalloc.c -Copyright: 2000-2012 Doug Lea -License: CC0-1.0 - -Files: vendor/tester/* -Copyright: 2016-2019 The Rust Project Developers -License: MIT OR Apache-2.0 -Comment: see https://github.com/messense/rustc-test - -Files: vendor/addr2line-0*/* -Copyright: - 2016-2021 Nick Fitzgerald - 2016-2021 Philip Craig - 2016-2021 Jon Gjengset - 2016-2021 Noah Bergbauer -License: Apache-2.0 or MIT -Comment: see https://github.com/gimli-rs/addr2line - -Files: vendor/adler/* -Copyright: 2020-2020 Jonas Schievink -License: 0BSD or MIT or Apache-2.0 -Comment: see https://github.com/jonas-schievink/adler.git - -Files: vendor/ammonia/* -Copyright: 2015-2018 Michael Howell -License: MIT or Apache-2.0 -Comment: see https://github.com/notriddle/ammonia - -Files: vendor/annotate-snippets/* -Copyright: 2018-2020 Zibi Braniecki -License: Apache-2.0 or MIT -Comment: see https://github.com/zbraniecki/annotate-snippets-rs - -Files: - vendor/ansi_term/* - vendor/ansi_term-0*/* -Copyright: - 2014-2020 ogham@bsago.me - 2014-2020 Ryan Scheel (Havvy) - 2014-2020 Josh Triplett -License: MIT -Comment: see https://github.com/ogham/rust-ansi-term - -Files: vendor/aho-corasick/* - vendor/memchr/* -Copyright: 2015 Andrew Gallant - 2015-2018 bluss -License: MIT or Unlicense -Comment: see upstream projects, - * https://github.com/BurntSushi/aho-corasick - * https://github.com/BurntSushi/rust-memchr - -Files: vendor/array_tool/* -Copyright: 2015-2018 Daniel P. Clark <6ftdan@gmail.com> -License: MIT OR Apache-2.0 -Comment: see https://github.com/danielpclark/array_tool - -Files: vendor/autocfg/* -Copyright: 2018-2020 Josh Stone -License: Apache-2.0 or MIT - -Files: vendor/atty/* -Copyright: 2015-2017 softprops -License: MIT -Comment: see https://github.com/softprops/atty - -Files: - vendor/block-buffer/* - vendor/block-buffer-0*/* - vendor/block-padding/* - vendor/byte-tools/* - vendor/cpuid-bool/* - vendor/digest/* - vendor/digest-0*/* - vendor/fake-simd/* - vendor/md-5/* - vendor/opaque-debug/* - vendor/opaque-debug-0*/* - vendor/sha-1-0*/* - vendor/sha-1/* - vendor/sha2/* -Copyright: 2016-2020 RustCrypto Developers -License: MIT or Apache-2.0 -Comment: - see https://github.com/RustCrypto/hashes - see https://github.com/RustCrypto/traits - see https://github.com/RustCrypto/utils - -Files: vendor/bstr/* -Copyright: 2018-2020 Andrew Gallant -License: MIT OR Apache-2.0 -Comment: see https://github.com/BurntSushi/bstr - -Files: vendor/bytecount/* -Copyright: 2016-2020 Andre Bogus - 2016-2020 Joshua Landau -License: Apache-2.0 or MIT -Comment: see https://github.com/llogiq/bytecount - -Files: - vendor/byteorder/* - vendor/globset/* - vendor/ignore/* - vendor/same-file/* - vendor/termcolor/* - vendor/walkdir/* - vendor/winapi-util/* -Copyright: 2015-2020 Andrew Gallant -License: Unlicense or MIT -Comment: - see https://github.com/BurntSushi/byteorder - see https://github.com/BurntSushi/same-file - see https://github.com/BurntSushi/walkdir - see https://github.com/BurntSushi/winapi-util - see https://github.com/BurntSushi/ripgrep/tree/master/globset - see https://github.com/BurntSushi/ripgrep/tree/master/ignore - see https://github.com/BurntSushi/ripgrep/tree/master/termcolor - -Files: vendor/camino/* -Copyright: 2020-2022 Without Boats - 2020-2022 Ashley Williams - 2020-2022 Steve Klabnik - 2020-2022 Rain -License: MIT OR Apache-2.0 -Comment: see https://github.com/withoutboats/camino - -Files: - vendor/cargo_metadata/* - vendor/cargo_metadata-0*/* -Copyright: 2016-2020 Oliver Schneider -License: MIT -Comment: - see https://github.com/oli-obk/cargo_metadata - -Files: vendor/cargo-platform/* -Copyright: 2019-2022 The Cargo Project Developers -License: MIT OR Apache-2.0 -Comment: see https://github.com/rust-lang/cargo - -Files: vendor/ppv-lite86/* -Copyright: 2019-2019 The CryptoCorrosion Contributors -License: MIT or Apache-2.0 -Comment: see https://github.com/cryptocorrosion/cryptocorrosion - -Files: - vendor/chalk-derive/* - vendor/chalk-engine/* - vendor/chalk-ir/* - vendor/chalk-solve/* -Copyright: - 2015-2022 Rust Compiler Team - 2015-2022 Chalk developers -License: Apache-2.0 or MIT -Comment: see https://github.com/rust-lang/chalk - -Files: vendor/chrono/* -Copyright: 2014-2018 Kang Seonghoon -License: MIT or Apache-2.0 -Comment: see https://github.com/chronotope/chrono - -Files: vendor/clap/* -Copyright: 2015-2017 Kevin K. -License: MIT -Comment: see https://github.com/kbknapp/clap-rs.git - -Files: vendor/colored/* -Copyright: 2016-2020 Thomas Wickham -License: MPL-2.0 -Comment: see https://github.com/mackwic/colored - -Files: vendor/crc32fast/* -Copyright: 2018-2019 Sam Rijs - 2018-2019 Alex Crichton -License: MIT OR Apache-2.0 -Comment: see https://github.com/srijs/rust-crc32fast - -Files: - vendor/crossbeam-channel/* - vendor/crossbeam-deque/* - vendor/crossbeam-deque-0*/* - vendor/crossbeam-epoch/* - vendor/crossbeam-epoch-0*/* - vendor/crossbeam-queue/* - vendor/crossbeam-utils/* - vendor/crossbeam-utils-0*/* -Copyright: 2015-2021 The Crossbeam Project Developers -License: MIT or Apache-2.0 -Comment: see https://github.com/crossbeam-rs - -Files: vendor/cstr/* -Copyright: 2018-2020 Xidorn Quan -License: MIT -Comment: see https://github.com/upsuper/cstr - -Files: vendor/ctor/* -Copyright: 2018-2020 Matt Mastracci -License: Apache-2.0 OR MIT -Comment: see https://github.com/mmastrac/rust-ctor - -Files: vendor/datafrog/* -Copyright: - 2018 Frank McSherry - 2018 The Rust Project Developers - 2018 Datafrog Developers -License: Apache-2.0 or MIT -Comment: see https://github.com/rust-lang-nursery/datafrog - -Files: vendor/derive-new/* -Copyright: 2016-2020 Nick Cameron -License: MIT -Comment: see https://github.com/nrc/derive-new - -Files: vendor/diff/* -Copyright: 2015-2017 Utkarsh Kukreti -License: MIT or Apache-2.0 -Comment: see https://github.com/utkarshkukreti/diff.rs - -Files: - vendor/anyhow/* - vendor/dissimilar/* - vendor/itoa/* - vendor/quote/* - vendor/syn/* -Copyright: 2016-2022 David Tolnay -License: MIT or Apache-2.0 -Comment: - see https://github.com/dtolnay/anyhow - see https://github.com/dtolnay/dissimilar - see https://github.com/dtolnay/itoa - see https://github.com/dtolnay/quote - see https://github.com/dtolnay/syn - -Files: - vendor/arrayvec/* - vendor/either/* - vendor/fixedbitset/* - vendor/itertools/* - vendor/itertools-0*/* - vendor/maplit/* - vendor/scopeguard/* -Copyright: 2014-2020 bluss -License: MIT or Apache-2.0 -Comment: - see https://github.com/bluss/rust-itertools - see https://github.com/bluss/either - see https://github.com/bluss/arrayvec - see https://github.com/bluss/fixedbitset - see https://github.com/bluss/maplit - see https://github.com/bluss/scopeguard - -Files: vendor/difference/* -Copyright: 2015-2018 Johann Hofmann -License: MIT -Comment: see https://github.com/johannhof/difference.rs - -Files: - vendor/dirs/* - vendor/dirs-sys/* -Copyright: 2015-2020 Simon Ochsenreither - 2015-2020 dirs-rs contributors -License: MIT OR Apache-2.0 -Comment: - see https://github.com/dirs-dev/dirs-rs - see https://github.com/dirs-dev/dirs-sys-rs - -Files: - vendor/dirs-next/* - vendor/dirs-sys-next/* -Copyright: 2017-2021 The @xdg-rs members -License: MIT OR Apache-2.0 -Comment: see https://github.com/xdg-rs/dirs - -Files: vendor/elasticlunr-rs/* -Copyright: 2017-2018 Matt Ickstadt -License: MIT or Apache-2.0 -Comment: see https://github.com/mattico/elasticlunr-rs - -Files: vendor/ena/* -Copyright: 2015-2020 Niko Matsakis -License: MIT or Apache-2.0 -Comment: see https://github.com/nikomatsakis/ena - -Files: vendor/expect-test/* -Copyright: 2020-2022 rust-analyzer developers -License: MIT OR Apache-2.0 -Comment: see https://github.com/rust-analyzer/expect-test - -Files: vendor/fallible-iterator/* -Copyright: 2016-2019 Steven Fackler -License: MIT or Apache-2.0 -Comment: see https://github.com/sfackler/rust-fallible-iterator - -Files: vendor/fortanix-sgx-abi/* -Copyright: 2015-2019 Jethro Beekman -License: MPL-2.0 -Comment: see https://github.com/fortanix/rust-sgx - -Files: vendor/fs-err/* -Copyright: 2020-2020 Andrew Hickman -License: MIT or Apache-2.0 -Comment: see https://github.com/andrewhickman/fs-err - -Files: vendor/futf/* -Copyright: 2015-2018 Keegan McAllister -License: MIT or Apache-2.0 -Comment: see https://github.com/servo/futf - -Files: - vendor/generic-array/* - vendor/generic-array-0*/* -Copyright: - 2015-2020 Bartłomiej Kamiński - 2015-2020 Aaron Trent -License: MIT -Comment: see https://github.com/fizyk20/generic-array.git - -Files: - vendor/gimli-0*/* - vendor/gimli/* -Copyright: - 2016-2021 Nick Fitzgerald - 2016-2021 Philip Craig -License: Apache-2.0 or MIT -Comment: see https://github.com/gimli-rs/gimli - -Files: vendor/globwalk/* -Copyright: 2018-2020 Gilad Naaman -License: MIT -Comment: see https://github.com/gilnaa/globwalk - -Files: vendor/gsgdt/* -Copyright: 2020 Vishnunarayan K I -License: MIT or Apache-2.0 -Comment: see https://github.com/vn-ki/gsgdt-rs - -Files: vendor/handlebars/* -Copyright: 2014-2017 Ning Sun -License: MIT -Comment: see https://github.com/sunng87/handlebars-rust - -Files: vendor/heck/* -Copyright: 2017-2018 Without Boats -License: MIT OR Apache-2.0 -Comment: see https://github.com/withoutboats/heck - -Files: vendor/hermit-abi/* -Copyright: 2019-2019 Stefan Lankes -License: MIT or Apache-2.0 -Comment: see https://github.com/hermitcore/hermit-abi - -Files: vendor/hex/* -Copyright: 2015-2020 KokaKiwi -License: MIT OR Apache-2.0 -Comment: see https://github.com/KokaKiwi/rust-hex - -Files: - vendor/html5ever/* - vendor/markup5ever/* - vendor/markup5ever_rcdom/* -Copyright: 2014-2020 The html5ever Project Developers -License: MIT or Apache-2.0 -Comment: see https://github.com/servo/html5ever - -Files: - vendor/humantime/* - vendor/humantime-*/* -Copyright: - 2016-2018 Paul Colomiets - 2016 The humantime Developers - 2016 Pyfisch - 2005-2013 Rich Felker -License: MIT or Apache-2.0 - -Files: vendor/if_chain/* -Copyright: 2016-2020 Chris Wong -License: MIT or Apache-2.0 -Comment: see https://github.com/lfairy/if_chain - -Files: - vendor/form_urlencoded/* - vendor/idna/* - vendor/percent-encoding/* - vendor/url/* -Copyright: 2013-2021 The rust-url developers -License: MIT or Apache-2.0 -Comment: see https://github.com/servo/rust-url/ - -Files: vendor/indexmap/* -Copyright: 2016-2019 bluss - 2016-2019 Josh Stone -License: Apache-2.0 or MIT -Comment: see https://github.com/bluss/indexmap - -Files: - vendor/indoc/* - vendor/unindent/* -Copyright: 2016-2022 David Tolnay -License: MIT OR Apache-2.0 -Comment: see https://github.com/dtolnay/indoc - -Files: vendor/instant/* -Copyright: 2019-2020 sebcrozet -License: BSD-3-Clause -Comment: see https://github.com/sebcrozet/instant - -Files: vendor/jsonpath_lib/* -Copyright: 2018-2021 Changseok Han -License: MIT -Comment: see https://github.com/freestrings/jsonpath - -Files: vendor/lazy_static/* -Copyright: 2014-2018 Marvin Löbel -License: MIT or Apache-2.0 -Comment: - see https://github.com/rust-lang-nursery/lazy-static.rs - see https://github.com/Kimundi/owning-ref-rs - -Files: vendor/libloading/* -Copyright: 2015-2022 Simonas Kazlauskas -License: ISC -Comment: see https://github.com/nagisa/rust_libloading/ - -Files: vendor/libm/* -Copyright: 2018-2021 Jorge Aparicio -License: MIT OR Apache-2.0 -Comment: see https://github.com/rust-lang-nursery/libm - -Files: vendor/mac/* -Copyright: 2014-2017 Jonathan Reem -License: MIT -Comment: - see https://github.com/reem/rust-mac.git - -Files: vendor/matchers/* -Copyright: 2019-2019 Eliza Weisman -License: MIT -Comment: see https://github.com/hawkw/matchers - -Files: vendor/matches/* -Copyright: 2014-2017 Simon Sapin -License: MIT -Comment: see https://github.com/SimonSapin - -Files: vendor/maybe-uninit/* -Copyright: 2019-2019 est31 - 2019-2019 The Rust Project Developers -License: Apache-2.0 OR MIT -Comment: see https://github.com/est31/maybe-uninit - -Files: vendor/mdbook/* -Copyright: 2015-2017 Mathieu David -License: MPL-2.0 -Comment: see https://github.com/azerupi/mdBook - -Files: vendor/measureme/* -Copyright: 2019-2020 Wesley Wiser - 2019-2020 Michael Woerister -License: MIT OR Apache-2.0 -Comment: see https://github.com/rust-lang/measureme - -Files: vendor/memmap2-0*/* -Copyright: 2015-2021 Dan Burkert - 2015-2021 Evgeniy Reizner -License: MIT or Apache-2.0 -Comment: see https://github.com/RazrFalcon/memmap2-rs - -Files: - vendor/memoffset/* - vendor/memoffset-0*/* -Copyright: 2017-2019 Gilad Naaman -License: MIT -Comment: see https://github.com/Gilnaa/memoffset - -Files: - vendor/macro-utils/* - vendor/minifier/* -Copyright: 2017-2018 Guillaume Gomez -License: MIT -Comment: - see https://github.com/GuillaumeGomez/macro_utils - see https://github.com/GuillaumeGomez/minifier-rs - -Files: - vendor/miniz_oxide/* -Copyright: 2017-2020 Frommi -License: MIT -Comment: see https://github.com/Frommi/miniz_oxide - -Files: vendor/miow-0.3.7/* -Copyright: 2014-2021 Alex Crichton -License: MIT or Apache-2.0 -Comment: see https://github.com/yoshuawuyts/miow - -Files: vendor/new_debug_unreachable/* -Copyright: 2014-2018 Matt Brubeck - 2014-2018 Jonathan Reem -License: MIT -Comment: see https://github.com/mbrubeck/rust-debug-unreachable - -Files: vendor/num_cpus/* -Copyright: 2015 Sean McArthur -License: MIT -Comment: see https://github.com/seanmonstar/num_cpus - -Files: vendor/object-0*/* -Copyright: - 2016-2020 Nick Fitzgerald - 2016-2020 Philip Craig -License: Apache-2.0 or MIT -Comment: see https://github.com/gimli-rs/object - -Files: vendor/odht/* -Copyright: 2021 Michael Woerister -License: Apache-2.0 or MIT -Comment: see https://github.com/rust-lang/odht - -Files: vendor/opener/* -Copyright: 2018-2020 Brian Bowman -License: MIT OR Apache-2.0 -Comment: see https://github.com/Seeker14491/opener - -Files: vendor/once_cell/* -Copyright: 2018-2019 Aleksey Kladov -License: MIT OR Apache-2.0 -Comment: see https://github.com/matklad/once_cell - -Files: vendor/output_vt100/* -Copyright: 2019-2019 Phuntsok Drak-pa -License: MIT -Comment: see https://github.com/Phundrak/output-vt100-rs - -Files: - vendor/hashbrown/* - vendor/lock_api/* - vendor/thread_local/* - vendor/parking_lot/* - vendor/parking_lot_core/* -Copyright: 2016-2019 Amanieu d'Antras -License: MIT or Apache-2.0 -Comment: - see https://github.com/rust-lang/hashbrown - see https://github.com/Amanieu/thread_local-rs - see https://github.com/Amanieu/parking_lot - -Files: vendor/packed_simd_2/* -Copyright: 2018-2021 Gonzalo Brito Gadeschi - 2018-2021 Jubilee Young -License: MIT or Apache-2.0 -Comment: see https://github.com/rust-lang-nursery/packed_simd - -Files: vendor/pathdiff/* -Copyright: 2017-2020 Manish Goregaokar -License: MIT or Apache-2.0 -Comment: see https://github.com/Manishearth/pathdiff - -Files: vendor/perf-event-open-sys/* -Copyright: 2019-2020 Jim Blandy -License: MIT OR Apache-2.0 -Comment: see https://github.com/jimblandy/perf-event.git - -Files: - vendor/pest/* - vendor/pest_derive/* - vendor/pest_generator/* - vendor/pest_meta/* -Copyright: 2016-2019 Dragoș Tiselice -License: MIT or Apache-2.0 -Comment: - see https://github.com/dragostis/pest - see https://github.com/pest-parser/pest - -Files: vendor/polonius-engine/* -Copyright: 2018-2018 The Rust Project Developers - 2018-2018 Polonius Developers -License: Apache-2.0 or MIT -Comment: see https://github.com/rust-lang-nursery/polonius - -Files: vendor/petgraph/* -Copyright: 2014-2018 bluss - 2014-2018 mitchmindtree -License: MIT or Apache-2.0 -Comment: see https://github.com/bluss/petgraph - -Files: - vendor/phf/* - vendor/phf_codegen/* - vendor/phf_generator/* - vendor/phf_shared/* -Copyright: 2014-2018 Steven Fackler -License: MIT -Comment: see https://github.com/sfackler/rust-phf - -Files: vendor/pin-project-lite/* -Copyright: 2018-2021 Taiki Endo -License: Apache-2.0 or MIT -Comment: - see https://github.com/taiki-e/pin-project-lite - -Files: vendor/precomputed-hash/* -Copyright: 2017-2017 Emilio Cobos Álvarez -License: MIT -Comment: see https://github.com/emilio/precomputed-hash - -Files: vendor/pretty_assertions/* -Copyright: 2017-2018 Colin Kiegel - 2017-2018 Florent Fayolle -License: MIT or Apache-2.0 -Comment: see https://github.com/colin-kiegel/rust-pretty-assertions - -Files: - vendor/proc-macro-error/* - vendor/proc-macro-error-attr/* -Copyright: 2019-2020 CreepySkeleton -License: MIT OR Apache-2.0 -Comment: see https://gitlab.com/CreepySkeleton/proc-macro-error - -Files: vendor/psm/* -Copyright: 2015-2020 Simonas Kazlauskas -License: MIT or Apache-2.0 -Comment: see https://github.com/rust-lang/stacker/ - -Files: vendor/pulldown-cmark/* -Copyright: 2015-2017 Raph Levien -License: MIT -Comment: see https://github.com/google/pulldown-cmark - -Files: vendor/punycode/* -Copyright: 2015-2019 mcarton -License: MIT -Comment: see https://github.com/mcarton/rust-punycode.git - -Files: - vendor/quick-error/* - vendor/quick-error-1*/* -Copyright: - 2015-2020 Paul Colomiets - 2015-2020 Colin Kiegel -License: MIT or Apache-2.0 -Comment: see http://github.com/tailhook/quick-error - -Files: vendor/quine-mc_cluskey/* -Copyright: 2016-2016 Oliver Schneider -License: MIT -Comment: see https://github.com/oli-obk/quine-mc_cluskey - -Files: - vendor/rayon/* - vendor/rayon-core/* - vendor/rustc-rayon/* - vendor/rustc-rayon-core/* -Copyright: 2014-2018 Niko Matsakis - 2014-2018 Josh Stone -License: Apache-2.0 or MIT -Comment: - see https://github.com/rayon-rs/rayon - see https://github.com/Zoxc/rayon/tree/rustc - -Files: vendor/redox_users/* -Copyright: 2017-2021 Jose Narvaez - 2017-2021 Wesley Hershberger -License: MIT -Comment: see https://gitlab.redox-os.org/redox-os/users - -Files: vendor/redox_syscall/* -Copyright: 2016-2021 Jeremy Soller -License: MIT -Comment: - see https://github.com/redox-os/syscall - -Files: vendor/regex-automata/* -Copyright: 2018-2020 Andrew Gallant -License: Unlicense or MIT -Comment: see https://github.com/BurntSushi/regex-automata - -Files: vendor/remove_dir_all/* -Copyright: 2017-2018 Aaronepower -License: MIT or Apache-2.0 -Comment: see https://github.com/Aaronepower/remove_dir_all.git - -Files: vendor/rls-data/* - vendor/rls-span/* -Copyright: 2016-2017 Nick Cameron -License: Apache-2.0 or MIT -Comment: see https://github.com/nrc/rls-span - see https://github.com/nrc/rls-data - -Files: vendor/rustc-semver/* -Copyright: 2020-2020 flip1995 -License: MIT OR Apache-2.0 -Comment: see https://github.com/flip1995/rustc-semver - -Files: vendor/rustc_tools_util/* -Copyright: 2014-2021 Matthias Krüger -License: MIT or Apache-2.0 -Comment: see https://github.com/rust-lang/rust-clippy - -Files: - vendor/rustfix/* - vendor/rustfix-0*/* -Copyright: - 2016-2021 Pascal Hertleif - 2016-2021 Oliver Schneider -License: Apache-2.0 or MIT -Comment: see https://github.com/killercup/rustfix - -Files: vendor/rustversion/* -Copyright: 2019-2021 David Tolnay -License: MIT OR Apache-2.0 -Comment: see https://github.com/dtolnay/rustversion - -Files: vendor/ryu/* -Copyright: 2018-2018 David Tolnay -License: Apache-2.0 or BSL-1.0 -Comment: see https://github.com/dtolnay/ryu - -Files: - vendor/semver-0*/* - vendor/semver/* - vendor/semver-parser/* -Copyright: - 2014-2020 Steve Klabnik - 2014-2020 The Rust Project Developers -License: MIT or Apache-2.0 -Comment: - see https://github.com/steveklabnik/semver - see https://github.com/steveklabnik/semver-parser - -Files: vendor/serde/* - vendor/serde_json/* -Copyright: 2014-2017 Erick Tryzelaar -License: MIT or Apache-2.0 -Comment: - see https://github.com/serde-rs/serde - see https://github.com/serde-rs/json - -Files: vendor/serde_derive/* -Copyright: 2014-2017 Erick Tryzelaar - 2016-2017 David Tolnay -License: MIT or Apache-2.0 -Comment: see https://github.com/serde-rs/serde - -Files: vendor/sharded-slab/* -Copyright: 2019-2020 Eliza Weisman -License: MIT -Comment: see https://github.com/hawkw/sharded-slab - -Files: vendor/shell-escape/* -Copyright: 2016-2020 Steven Fackler -License: MIT or Apache-2.0 -Comment: see https://github.com/sfackler/shell-escape - -Files: vendor/shlex/* -Copyright: 2015-2015 comex -License: MIT or Apache-2.0 -Comment: see https://github.com/comex/rust-shlex - -Files: vendor/siphasher/* -Copyright: 2016-2018 Frank Denis -License: MIT or Apache-2.0 -Comment: see https://github.com/jedisct1/rust-siphash - -Files: vendor/smallvec/* -Copyright: 2015-2020 Simon Sapin -License: MPL-2.0 -Comment: see https://github.com/servo/rust-smallvec - -Files: vendor/snap/* -Copyright: 2016-2020 Andrew Gallant -License: BSD-3-Clause -Comment: see https://github.com/BurntSushi/rust-snappy - -Files: vendor/stable_deref_trait/* -Copyright: 2017-2017 Robert Grosse -License: MIT or Apache-2.0 -Comment: see https://github.com/storyyeller/stable_deref_trait - -Files: vendor/stacker/* -Copyright: 2015-2020 Alex Crichton - 2015-2020 Simonas Kazlauskas -License: MIT or Apache-2.0 -Comment: see https://github.com/rust-lang/stacker - -Files: vendor/strsim/* -Copyright: 2015 Danny Guo -License: MIT -Comment: see https://github.com/dguo/strsim-rs - -Files: - vendor/structopt/* - vendor/structopt-derive/* -Copyright: 2017-2020 Guillaume Pinot - 2017-2020 others -License: Apache-2.0 OR MIT -Comment: see https://github.com/TeXitoi/structopt - -Files: - vendor/strum/* - vendor/strum_macros/* -Copyright: 2015-2018 Peter Glotfelty -License: MIT - -Files: vendor/synstructure/* -Copyright: - 2016-2019 Nika Layzell -License: MIT -Comment: see https://github.com/mystor/synstructure - -Files: vendor/tempfile/* -Copyright: 2015-2018 Steven Allen - 2015-2018 The Rust Project Developers - 2015-2018 Ashley Mannix - 2015-2018 Jason White -License: MIT or Apache-2.0 -Comment: see https://github.com/Stebalien/tempfile - -Files: vendor/tendril/* -Copyright: 2015-2017 Keegan McAllister - 2015-2017 Simon Sapin - 2015-2017 Chris Morgan -License: MIT or Apache-2.0 -Comment: see https://github.com/servo/tendril - -Files: vendor/tera/* -Copyright: 2015-2021 Vincent Prouillet -License: MIT -Comment: see https://github.com/Keats/tera - -Files: - vendor/term/* - vendor/term-0*/* -Copyright: - 2014-2021 The Rust Project Developers - 2014-2021 Steven Allen -License: MIT or Apache-2.0 -Comment: see https://github.com/Stebalien/term - -Files: vendor/termize/* -Copyright: 2016-2020 Yuki Okushi -License: MIT or Apache-2.0 -Comment: see https://github.com/JohnTitor/termize - -Files: vendor/textwrap/* -Copyright: 2016-2017 Martin Geisler -License: MIT -Comment: see https://github.com/mgeisler/textwrap - -Files: - vendor/thiserror/* - vendor/thiserror-impl/* -Copyright: 2019-2020 David Tolnay -License: MIT OR Apache-2.0 -Comment: see https://github.com/dtolnay/thiserror - -Files: vendor/thorin-dwp/* -Copyright: 2021-2022 David Wood -License: MIT OR Apache-2.0 -Comment: see https://github.com/davidtwco/thorin - -Files: vendor/tinyvec/* -Copyright: 2020 Lokathor -License: Zlib -Comment: see https://github.com/Lokathor/tinyvec - -Files: vendor/tinyvec_macros/* -Copyright: 2020 Soveu -License: MIT or Apache-2.0 or Zlib -Comment: see https://github.com/Soveu/tinyvec_macros - -Files: vendor/topological-sort/* -Copyright: 2015-2018 gifnksm -License: MIT OR Apache-2.0 -Comment: see https://github.com/gifnksm/topological-sort-rs - -Files: - vendor/tracing/* - vendor/tracing-attributes/* - vendor/tracing-core/* - vendor/tracing-log/* - vendor/tracing-subscriber/* -Copyright: - 2018-2020 Eliza Weisman - 2018-2020 Tokio Contributors - 2018-2020 David Barsky -License: MIT -Comment: see https://github.com/tokio-rs/tracing - -Files: vendor/tracing-tree/* -Copyright: 2020-2020 David Barsky - 2020-2020 Nathan Whitaker -License: MIT OR Apache-2.0 -Comment: see https://github.com/davidbarsky/tracing-tree - -Files: vendor/typenum/* -Copyright: 2015-2019 Paho Lurie-Gregg - 2015-2019 Andre Bogus -License: MIT or Apache-2.0 -Comment: see https://github.com/paholg/typenum - -Files: vendor/version_check/* -Copyright: 2017-2019 Sergio Benitez -License: MIT or Apache-2.0 -Comment: see https://github.com/SergioBenitez/version_check - -Files: - vendor/ucd-parse/* - vendor/ucd-trie/* -Copyright: 2017-2020 Andrew Gallant -License: MIT or Apache-2.0 -Comment: - see https://github.com/BurntSushi/rucd - see https://github.com/BurntSushi/ucd-generate - -Files: vendor/unicase/* -Copyright: 2014-2019 Sean McArthur -License: MIT or Apache-2.0 -Comment: see https://github.com/seanmonstar/unicase - -Files: vendor/unicode_categories/* -Copyright: 2015-2016 Sean Gillespie -License: MIT OR Apache-2.0 -Comment: see https://github.com/swgillespie/unicode-categories - -Files: vendor/unic-*/* -Copyright: 2017-2022 The UNIC Project Developers -License: MIT or Apache-2.0 -Comment: see https://github.com/open-i18n/rust-unic/ - -Files: - vendor/unicode-normalization/* - vendor/unicode-segmentation/* - vendor/unicode-width/* -Copyright: 2015-2019 kwantam -License: MIT or Apache-2.0 -Comment: - see https://github.com/unicode-rs/unicode-normalization - see https://github.com/unicode-rs/unicode-segmentation - see https://github.com/unicode-rs/unicode-width - -Files: vendor/unicode-xid/* -Copyright: 2015-2017 erick.tryzelaar - 2015-2017 kwantam -License: MIT or Apache-2.0 -Comment: see https://github.com/unicode-rs/unicode-xid - -Files: vendor/unicode-script/* -Copyright: 2017-2020 Manish Goregaokar -License: MIT or Apache-2.0 -Comment: see https://github.com/unicode-rs/unicode-script - -Files: vendor/unicode-security/* -Copyright: 2020-2020 Charles Lew - 2020-2020 Manish Goregaokar -License: MIT or Apache-2.0 -Comment: see https://github.com/unicode-rs/unicode-security - -Files: vendor/unified-diff/* -Copyright: 2021-2021 Michael Howell - 2021-2021 The Rust Project Developers -License: MIT OR Apache-2.0 -Comment: see https://github.com/notriddle/rust-unified-diff - -Files: vendor/utf-8/* -Copyright: 2015-2018 Simon Sapin -License: MIT OR Apache-2.0 -Comment: see https://github.com/SimonSapin/rust-utf8 - -Files: vendor/vec_map/* -Copyright: 2015-2017 Alexis Beingessner - 2015-2017 Andrew Paseltiner - 2015-2017 contain-rs developers - 2015-2017 The Rust Project Developers -License: MIT or Apache-2.0 -Comment: see https://github.com/contain-rs/vec-map - -Files: vendor/wasi/* -Copyright: 2019-2020 The Cranelift Project Developers -License: Apache-2.0 with LLVM exception or Apache-2.0 or MIT -Comment: see https://github.com/CraneStation/rust-wasi - -Files: vendor/winapi/* -Copyright: - 2014-2019 Peter Atashian - 2014-2019 winapi-rs developers -License: MIT -Comment: see https://github.com/retep998/winapi-rs - -Files: vendor/winapi-*-pc-windows-gnu/* -Copyright: 2014-2018 Peter Atashian -License: MIT or Apache-2.0 -Comment: see https://github.com/retep998/winapi-rs - -Files: vendor/xattr/* -Copyright: 2015-2017 Steven Allen -License: MIT or Apache-2.0 -Comment: see https://github.com/Stebalien/xattr - -Files: vendor/xml5ever/* -Copyright: 2014-2020 The xml5ever project developers -License: MIT or Apache-2.0 -Comment: see https://github.com/servo/html5ever - -Files: vendor/yaml-rust-0*/* -Copyright: 2015-2020 Yuheng Chen -License: MIT or Apache-2.0 -Comment: see https://github.com/chyh1990/yaml-rust - -Files: vendor/yansi-term/* -Copyright: 2014-2020 ogham@bsago.me - 2014-2020 Ryan Scheel (Havvy) - 2014-2020 Josh Triplett - 2014-2020 Juan Aguilar Santillana -License: MIT -Comment: see https://github.com/botika/yansi-term - -Files: debian/* -Copyright: 2013-2018 Debian Rust Maintainers -License: MIT or Apache-2.0 - -Files: debian/icons/rust-logo-32x32-blk.png -Copyright: Mozilla Foundation -License: CC-BY -Comment: - Relevant discussion in https://github.com/rust-lang/rust/issues/11562 - -License: 0BSD - Permission to use, copy, modify, and/or distribute this software for - any purpose with or without fee is hereby granted. - . - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN - AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -License: Apache-2.0 - On Debian systems, the full text of the Apache License Version 2.0 - can be found in the file `/usr/share/common-licenses/Apache-2.0'. - -License: Apache-2.0 with LLVM exception - On Debian systems, the full text of the Apache License Version 2.0 - can be found in the file `/usr/share/common-licenses/Apache-2.0'. - Additionally, the LLVM exception is as follows: - . - As an exception, if, as a result of your compiling your source code, portions - of this Software are embedded into an Object form of such source code, you - may redistribute such embedded portions in such Object form without complying - with the conditions of Sections 4(a), 4(b) and 4(d) of the License. - . - In addition, if you combine or link compiled forms of this Software with - software that is licensed under the GPLv2 ("Combined Software") and if a - court of competent jurisdiction determines that the patent provision (Section - 3), the indemnity provision (Section 9) or other Section of the License - conflicts with the conditions of the GPLv2, you may retroactively and - prospectively choose to deem waived or otherwise exclude such Section(s) of - the License, but only in their entirety and only with respect to the Combined - Software. - -License: BSD-2-clause - Redistribution and use in source and binary forms, with - or without modification, are permitted provided that the - following conditions are met: - . - 1. Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - 2. Redistributions in binary form must reproduce the - above copyright notice, this list of conditions and - the following disclaimer in the documentation and/or - other materials provided with the distribution. - . - THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -License: CC0-1.0 - On Debian systems, the full text of the CC0 1.0 Universal - License can be found in the file - `/usr/share/common-licenses/CC0-1.0'. - -License: ISC - Permission to use, copy, modify, and/or distribute this software for any purpose - with or without fee is hereby granted, provided that the above copyright notice - and this permission notice appear in all copies. - . - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS - OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF - THIS SOFTWARE. - -License: MIT - Permission is hereby granted, free of charge, to any - person obtaining a copy of this software and associated - documentation files (the "Software"), to deal in the - Software without restriction, including without - limitation the rights to use, copy, modify, merge, - publish, distribute, sublicense, and/or sell copies of - the Software, and to permit persons to whom the Software - is furnished to do so, subject to the following - conditions: - . - The above copyright notice and this permission notice - shall be included in all copies or substantial portions - of the Software. - . - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF - ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED - TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A - PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT - SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR - IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - -License: BSL-1.0 - Permission is hereby granted, free of charge, to any person or organization - obtaining a copy of the software and accompanying documentation covered by - this license (the "Software") to use, reproduce, display, distribute, - execute, and transmit the Software, and to prepare derivative works of the - Software, and to permit third-parties to whom the Software is furnished to - do so, all subject to the following: - . - The copyright notices in the Software and this entire statement, including - the above license grant, this restriction and the following disclaimer, - must be included in all copies of the Software, in whole or in part, and - all derivative works of the Software, unless such copies or derivative - works are solely in the form of machine-executable object code generated by - a source language processor. - . - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT - SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE - FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - -License: BSD-3-clause - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. Neither the name of the organization nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - . - THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDER AND CONTRIBUTORS ``AS IS'' AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. - -License: Unlicense - This is free and unencumbered software released into the public domain. - . - Anyone is free to copy, modify, publish, use, compile, sell, or - distribute this software, either in source code form or as a compiled - binary, for any purpose, commercial or non-commercial, and by any - means. - . - In jurisdictions that recognize copyright laws, the author or authors - of this software dedicate any and all copyright interest in the - software to the public domain. We make this dedication for the - benefit of the public at large and to the detriment of our heirs and - successors. We intend this dedication to be an overt act of - relinquishment in perpetuity of all present and future rights to this - software under copyright law. - . - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY - CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - . - For more information, please refer to - -License: SIL-OPEN-FONT - This Font Software is licensed under the SIL Open Font License, - Version 1.1. - . - This license is copied below, and is also available with a FAQ at: - http://scripts.sil.org/OFL - . - SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 - . - PREAMBLE The goals of the Open Font License (OFL) are to stimulate - worldwide development of collaborative font projects, to support the font - creation efforts of academic and linguistic communities, and to provide - a free and open framework in which fonts may be shared and improved in - partnership with others. - . - The OFL allows the licensed fonts to be used, studied, modified and - redistributed freely as long as they are not sold by themselves. - The fonts, including any derivative works, can be bundled, embedded, - redistributed and/or sold with any software provided that any reserved - names are not used by derivative works. The fonts and derivatives, - however, cannot be released under any other type of license. The - requirement for fonts to remain under this license does not apply to - any document created using the fonts or their derivatives. - . - DEFINITIONS - "Font Software" refers to the set of files released by the Copyright - Holder(s) under this license and clearly marked as such. - This may include source files, build scripts and documentation. - . - "Reserved Font Name" refers to any names specified as such after the - copyright statement(s). - . - "Original Version" refers to the collection of Font Software components - as distributed by the Copyright Holder(s). - . - "Modified Version" refers to any derivative made by adding to, deleting, - or substituting ? in part or in whole ? - any of the components of the Original Version, by changing formats or - by porting the Font Software to a new environment. - . - "Author" refers to any designer, engineer, programmer, technical writer - or other person who contributed to the Font Software. - . - PERMISSION & CONDITIONS - . - Permission is hereby granted, free of charge, to any person obtaining a - copy of the Font Software, to use, study, copy, merge, embed, modify, - redistribute, and sell modified and unmodified copies of the Font - Software, subject to the following conditions: - . - 1) Neither the Font Software nor any of its individual components,in - Original or Modified Versions, may be sold by itself. - . - 2) Original or Modified Versions of the Font Software may be bundled, - redistributed and/or sold with any software, provided that each copy - contains the above copyright notice and this license. These can be - included either as stand-alone text files, human-readable headers or - in the appropriate machine-readable metadata fields within text or - binary files as long as those fields can be easily viewed by the user. - . - 3) No Modified Version of the Font Software may use the Reserved Font - Name(s) unless explicit written permission is granted by the - corresponding Copyright Holder. This restriction only applies to the - primary font name as presented to the users. - . - 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font - Software shall not be used to promote, endorse or advertise any - Modified Version, except to acknowledge the contribution(s) of the - Copyright Holder(s) and the Author(s) or with their explicit written - permission. - 5) The Font Software, modified or unmodified, in part or in whole, must - be distributed entirely under this license, and must not be distributed - under any other license. The requirement for fonts to remain under - this license does not apply to any document created using the Font - Software. - . - TERMINATION - This license becomes null and void if any of the above conditions are not met. - . - DISCLAIMER - THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT - OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE - COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL - DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF THE USE OR INABILITY - -License: GPL-2+ - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - . - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - . - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - . - On Debian systems, see /usr/share/common-licenses/GPL-2 for the full - text of the GPL version 2. - -License: CC-BY - Attribution 4.0 International - . - ======================================================================= - . - Creative Commons Corporation ("Creative Commons") is not a law firm and - does not provide legal services or legal advice. Distribution of - Creative Commons public licenses does not create a lawyer-client or - other relationship. Creative Commons makes its licenses and related - information available on an "as-is" basis. Creative Commons gives no - warranties regarding its licenses, any material licensed under their - terms and conditions, or any related information. Creative Commons - disclaims all liability for damages resulting from their use to the - fullest extent possible. - . - Using Creative Commons Public Licenses - . - Creative Commons public licenses provide a standard set of terms and - conditions that creators and other rights holders may use to share - original works of authorship and other material subject to copyright - and certain other rights specified in the public license below. The - following considerations are for informational purposes only, are not - exhaustive, and do not form part of our licenses. - . - Considerations for licensors: Our public licenses are - intended for use by those authorized to give the public - permission to use material in ways otherwise restricted by - copyright and certain other rights. Our licenses are - irrevocable. Licensors should read and understand the terms - and conditions of the license they choose before applying it. - Licensors should also secure all rights necessary before - applying our licenses so that the public can reuse the - material as expected. Licensors should clearly mark any - material not subject to the license. This includes other CC- - licensed material, or material used under an exception or - limitation to copyright. More considerations for licensors: - wiki.creativecommons.org/Considerations_for_licensors - . - Considerations for the public: By using one of our public - licenses, a licensor grants the public permission to use the - licensed material under specified terms and conditions. If - the licensor's permission is not necessary for any reason--for - example, because of any applicable exception or limitation to - copyright--then that use is not regulated by the license. Our - licenses grant only permissions under copyright and certain - other rights that a licensor has authority to grant. Use of - the licensed material may still be restricted for other - reasons, including because others have copyright or other - rights in the material. A licensor may make special requests, - such as asking that all changes be marked or described. - Although not required by our licenses, you are encouraged to - respect those requests where reasonable. More_considerations - for the public: - wiki.creativecommons.org/Considerations_for_licensees - . - ======================================================================= - . - Creative Commons Attribution 4.0 International Public License - . - By exercising the Licensed Rights (defined below), You accept and agree - to be bound by the terms and conditions of this Creative Commons - Attribution 4.0 International Public License ("Public License"). To the - extent this Public License may be interpreted as a contract, You are - granted the Licensed Rights in consideration of Your acceptance of - these terms and conditions, and the Licensor grants You such rights in - consideration of benefits the Licensor receives from making the - Licensed Material available under these terms and conditions. - . - . - Section 1 -- Definitions. - . - a. Adapted Material means material subject to Copyright and Similar - Rights that is derived from or based upon the Licensed Material - and in which the Licensed Material is translated, altered, - arranged, transformed, or otherwise modified in a manner requiring - permission under the Copyright and Similar Rights held by the - Licensor. For purposes of this Public License, where the Licensed - Material is a musical work, performance, or sound recording, - Adapted Material is always produced where the Licensed Material is - synched in timed relation with a moving image. - . - b. Adapter's License means the license You apply to Your Copyright - and Similar Rights in Your contributions to Adapted Material in - accordance with the terms and conditions of this Public License. - . - c. Copyright and Similar Rights means copyright and/or similar rights - closely related to copyright including, without limitation, - performance, broadcast, sound recording, and Sui Generis Database - Rights, without regard to how the rights are labeled or - categorized. For purposes of this Public License, the rights - specified in Section 2(b)(1)-(2) are not Copyright and Similar - Rights. - . - d. Effective Technological Measures means those measures that, in the - absence of proper authority, may not be circumvented under laws - fulfilling obligations under Article 11 of the WIPO Copyright - Treaty adopted on December 20, 1996, and/or similar international - agreements. - . - e. Exceptions and Limitations means fair use, fair dealing, and/or - any other exception or limitation to Copyright and Similar Rights - that applies to Your use of the Licensed Material. - . - f. Licensed Material means the artistic or literary work, database, - or other material to which the Licensor applied this Public - License. - . - g. Licensed Rights means the rights granted to You subject to the - terms and conditions of this Public License, which are limited to - all Copyright and Similar Rights that apply to Your use of the - Licensed Material and that the Licensor has authority to license. - . - h. Licensor means the individual(s) or entity(ies) granting rights - under this Public License. - . - i. Share means to provide material to the public by any means or - process that requires permission under the Licensed Rights, such - as reproduction, public display, public performance, distribution, - dissemination, communication, or importation, and to make material - available to the public including in ways that members of the - public may access the material from a place and at a time - individually chosen by them. - . - j. Sui Generis Database Rights means rights other than copyright - resulting from Directive 96/9/EC of the European Parliament and of - the Council of 11 March 1996 on the legal protection of databases, - as amended and/or succeeded, as well as other essentially - equivalent rights anywhere in the world. - . - k. You means the individual or entity exercising the Licensed Rights - under this Public License. Your has a corresponding meaning. - . - . - Section 2 -- Scope. - . - a. License grant. - . - 1. Subject to the terms and conditions of this Public License, - the Licensor hereby grants You a worldwide, royalty-free, - non-sublicensable, non-exclusive, irrevocable license to - exercise the Licensed Rights in the Licensed Material to: - . - a. reproduce and Share the Licensed Material, in whole or - in part; and - . - b. produce, reproduce, and Share Adapted Material. - . - 2. Exceptions and Limitations. For the avoidance of doubt, where - Exceptions and Limitations apply to Your use, this Public - License does not apply, and You do not need to comply with - its terms and conditions. - . - 3. Term. The term of this Public License is specified in Section - 6(a). - . - 4. Media and formats; technical modifications allowed. The - Licensor authorizes You to exercise the Licensed Rights in - all media and formats whether now known or hereafter created, - and to make technical modifications necessary to do so. The - Licensor waives and/or agrees not to assert any right or - authority to forbid You from making technical modifications - necessary to exercise the Licensed Rights, including - technical modifications necessary to circumvent Effective - Technological Measures. For purposes of this Public License, - simply making modifications authorized by this Section 2(a) - (4) never produces Adapted Material. - . - 5. Downstream recipients. - . - a. Offer from the Licensor -- Licensed Material. Every - recipient of the Licensed Material automatically - receives an offer from the Licensor to exercise the - Licensed Rights under the terms and conditions of this - Public License. - . - b. No downstream restrictions. You may not offer or impose - any additional or different terms or conditions on, or - apply any Effective Technological Measures to, the - Licensed Material if doing so restricts exercise of the - Licensed Rights by any recipient of the Licensed - Material. - . - 6. No endorsement. Nothing in this Public License constitutes or - may be construed as permission to assert or imply that You - are, or that Your use of the Licensed Material is, connected - with, or sponsored, endorsed, or granted official status by, - the Licensor or others designated to receive attribution as - provided in Section 3(a)(1)(A)(i). - . - b. Other rights. - . - 1. Moral rights, such as the right of integrity, are not - licensed under this Public License, nor are publicity, - privacy, and/or other similar personality rights; however, to - the extent possible, the Licensor waives and/or agrees not to - assert any such rights held by the Licensor to the limited - extent necessary to allow You to exercise the Licensed - Rights, but not otherwise. - . - 2. Patent and trademark rights are not licensed under this - Public License. - . - 3. To the extent possible, the Licensor waives any right to - collect royalties from You for the exercise of the Licensed - Rights, whether directly or through a collecting society - under any voluntary or waivable statutory or compulsory - licensing scheme. In all other cases the Licensor expressly - reserves any right to collect such royalties. - . - . - Section 3 -- License Conditions. - . - Your exercise of the Licensed Rights is expressly made subject to the - following conditions. - . - a. Attribution. - . - 1. If You Share the Licensed Material (including in modified - form), You must: - . - a. retain the following if it is supplied by the Licensor - with the Licensed Material: - . - i. identification of the creator(s) of the Licensed - Material and any others designated to receive - attribution, in any reasonable manner requested by - the Licensor (including by pseudonym if - designated); - . - ii. a copyright notice; - . - iii. a notice that refers to this Public License; - . - iv. a notice that refers to the disclaimer of - warranties; - . - v. a URI or hyperlink to the Licensed Material to the - extent reasonably practicable; - . - b. indicate if You modified the Licensed Material and - retain an indication of any previous modifications; and - . - c. indicate the Licensed Material is licensed under this - Public License, and include the text of, or the URI or - hyperlink to, this Public License. - . - 2. You may satisfy the conditions in Section 3(a)(1) in any - reasonable manner based on the medium, means, and context in - which You Share the Licensed Material. For example, it may be - reasonable to satisfy the conditions by providing a URI or - hyperlink to a resource that includes the required - information. - . - 3. If requested by the Licensor, You must remove any of the - information required by Section 3(a)(1)(A) to the extent - reasonably practicable. - . - 4. If You Share Adapted Material You produce, the Adapter's - License You apply must not prevent recipients of the Adapted - Material from complying with this Public License. - . - . - Section 4 -- Sui Generis Database Rights. - . - Where the Licensed Rights include Sui Generis Database Rights that - apply to Your use of the Licensed Material: - . - a. for the avoidance of doubt, Section 2(a)(1) grants You the right - to extract, reuse, reproduce, and Share all or a substantial - portion of the contents of the database; - . - b. if You include all or a substantial portion of the database - contents in a database in which You have Sui Generis Database - Rights, then the database in which You have Sui Generis Database - Rights (but not its individual contents) is Adapted Material; and - . - c. You must comply with the conditions in Section 3(a) if You Share - all or a substantial portion of the contents of the database. - . - For the avoidance of doubt, this Section 4 supplements and does not - replace Your obligations under this Public License where the Licensed - Rights include other Copyright and Similar Rights. - . - . - Section 5 -- Disclaimer of Warranties and Limitation of Liability. - . - a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE - EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS - AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF - ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, - IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, - WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, - ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT - KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT - ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. - . - b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE - TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, - NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, - INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, - COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR - USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR - DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR - IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. - . - c. The disclaimer of warranties and limitation of liability provided - above shall be interpreted in a manner that, to the extent - possible, most closely approximates an absolute disclaimer and - waiver of all liability. - . - . - Section 6 -- Term and Termination. - . - a. This Public License applies for the term of the Copyright and - Similar Rights licensed here. However, if You fail to comply with - this Public License, then Your rights under this Public License - terminate automatically. - . - b. Where Your right to use the Licensed Material has terminated under - Section 6(a), it reinstates: - . - 1. automatically as of the date the violation is cured, provided - it is cured within 30 days of Your discovery of the - violation; or - . - 2. upon express reinstatement by the Licensor. - . - For the avoidance of doubt, this Section 6(b) does not affect any - right the Licensor may have to seek remedies for Your violations - of this Public License. - . - c. For the avoidance of doubt, the Licensor may also offer the - Licensed Material under separate terms or conditions or stop - distributing the Licensed Material at any time; however, doing so - will not terminate this Public License. - . - d. Sections 1, 5, 6, 7, and 8 survive termination of this Public - License. - . - . - Section 7 -- Other Terms and Conditions. - . - a. The Licensor shall not be bound by any additional or different - terms or conditions communicated by You unless expressly agreed. - . - b. Any arrangements, understandings, or agreements regarding the - Licensed Material not stated herein are separate from and - independent of the terms and conditions of this Public License. - . - . - Section 8 -- Interpretation. - . - a. For the avoidance of doubt, this Public License does not, and - shall not be interpreted to, reduce, limit, restrict, or impose - conditions on any use of the Licensed Material that could lawfully - be made without permission under this Public License. - . - b. To the extent possible, if any provision of this Public License is - deemed unenforceable, it shall be automatically reformed to the - minimum extent necessary to make it enforceable. If the provision - cannot be reformed, it shall be severed from this Public License - without affecting the enforceability of the remaining terms and - conditions. - . - c. No term or condition of this Public License will be waived and no - failure to comply consented to unless expressly agreed to by the - Licensor. - . - d. Nothing in this Public License constitutes or may be interpreted - as a limitation upon, or waiver of, any privileges and immunities - that apply to the Licensor or You, including from the legal - processes of any jurisdiction or authority. - . - . - ======================================================================= - . - Creative Commons is not a party to its public licenses. - Notwithstanding, Creative Commons may elect to apply one of its public - licenses to material it publishes and in those instances will be - considered the "Licensor." Except for the limited purpose of indicating - that material is shared under a Creative Commons public license or as - otherwise permitted by the Creative Commons policies published at - creativecommons.org/policies, Creative Commons does not authorize the - use of the trademark "Creative Commons" or any other trademark or logo - of Creative Commons without its prior written consent including, - without limitation, in connection with any unauthorized modifications - to any of its public licenses or any other arrangements, - understandings, or agreements concerning use of licensed material. For - the avoidance of doubt, this paragraph does not form part of the public - licenses. - . - Creative Commons may be contacted at creativecommons.org. - -License: MPL-2.0 - This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. - . - On Debian systems, see /usr/share/common-licenses/MPL-2.0 for the full - text of the MPL version 2.0. - -License: Zlib - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - . - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - . - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. +License: OFL-1.1 From 00c8306cdbf008ea60dd8f4418772e71a7f9ca6e Mon Sep 17 00:00:00 2001 From: Pietro Albini Date: Thu, 18 Aug 2022 16:03:55 +0200 Subject: [PATCH 11/15] import license changes --- LICENSES/Apache-2.0.txt | 73 ++++++++++++++++++++++++++++++++++++ LICENSES/BSD-2-Clause.txt | 9 +++++ LICENSES/LicenseRef-TODO.txt | 2 - LICENSES/MIT.txt | 9 +++++ LICENSES/OFL-1.1.txt | 43 +++++++++++++++++++++ 5 files changed, 134 insertions(+), 2 deletions(-) create mode 100644 LICENSES/Apache-2.0.txt create mode 100644 LICENSES/BSD-2-Clause.txt delete mode 100644 LICENSES/LicenseRef-TODO.txt create mode 100644 LICENSES/MIT.txt create mode 100644 LICENSES/OFL-1.1.txt diff --git a/LICENSES/Apache-2.0.txt b/LICENSES/Apache-2.0.txt new file mode 100644 index 0000000000000..137069b823873 --- /dev/null +++ b/LICENSES/Apache-2.0.txt @@ -0,0 +1,73 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + + (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + + You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + +To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/LICENSES/BSD-2-Clause.txt b/LICENSES/BSD-2-Clause.txt new file mode 100644 index 0000000000000..5f662b354cd40 --- /dev/null +++ b/LICENSES/BSD-2-Clause.txt @@ -0,0 +1,9 @@ +Copyright (c) + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/LICENSES/LicenseRef-TODO.txt b/LICENSES/LicenseRef-TODO.txt deleted file mode 100644 index 7b193bf7d5e1c..0000000000000 --- a/LICENSES/LicenseRef-TODO.txt +++ /dev/null @@ -1,2 +0,0 @@ -Temporary placeholder, only needed until we import the actual licensing -metadata. diff --git a/LICENSES/MIT.txt b/LICENSES/MIT.txt new file mode 100644 index 0000000000000..2071b23b0e085 --- /dev/null +++ b/LICENSES/MIT.txt @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/LICENSES/OFL-1.1.txt b/LICENSES/OFL-1.1.txt new file mode 100644 index 0000000000000..6fe84ee21ebe5 --- /dev/null +++ b/LICENSES/OFL-1.1.txt @@ -0,0 +1,43 @@ +SIL OPEN FONT LICENSE + +Version 1.1 - 26 February 2007 + +PREAMBLE + +The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. + +The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. + +DEFINITIONS + +"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the copyright statement(s). + +"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, or substituting — in part or in whole — any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. + +"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS + +Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. + +5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. + +TERMINATION + +This license becomes null and void if any of the above conditions are not met. + +DISCLAIMER + +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. From efd305e0ec1c1f973a5e3d610f268036640d9613 Mon Sep 17 00:00:00 2001 From: Chris Denton Date: Thu, 18 Aug 2022 18:34:19 +0100 Subject: [PATCH 12/15] Simplify load/store --- library/std/src/sys/windows/compat.rs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/library/std/src/sys/windows/compat.rs b/library/std/src/sys/windows/compat.rs index 60cc705cef2f9..e2d5e1e881a87 100644 --- a/library/std/src/sys/windows/compat.rs +++ b/library/std/src/sys/windows/compat.rs @@ -214,11 +214,8 @@ pub(super) fn load_synch_functions() { Some(()) } - // Shortcut if we've already tried (and failed) to load the library. + // Try to load the module but skip loading if a previous attempt failed. static LOAD_MODULE: AtomicBool = AtomicBool::new(true); - if LOAD_MODULE.load(Ordering::Acquire) { - if try_load().is_none() { - LOAD_MODULE.store(false, Ordering::Release); - } - } + let module_loaded = LOAD_MODULE.load(Ordering::Acquire) && try_load().is_some(); + LOAD_MODULE.store(module_loaded, Ordering::Release) } From 625e7e9579c25b90384ddc8413fee04019f2cacf Mon Sep 17 00:00:00 2001 From: Chris Denton Date: Thu, 18 Aug 2022 19:08:49 +0100 Subject: [PATCH 13/15] Use const instead of static --- library/std/src/sys/windows/compat.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/library/std/src/sys/windows/compat.rs b/library/std/src/sys/windows/compat.rs index e2d5e1e881a87..9c8ddc3aa1d25 100644 --- a/library/std/src/sys/windows/compat.rs +++ b/library/std/src/sys/windows/compat.rs @@ -199,9 +199,9 @@ macro_rules! compat_fn_optional { /// Load all needed functions from "api-ms-win-core-synch-l1-2-0". pub(super) fn load_synch_functions() { fn try_load() -> Option<()> { - static MODULE_NAME: &CStr = ansi_str!("api-ms-win-core-synch-l1-2-0"); - static WAIT_ON_ADDRESS: &CStr = ansi_str!("WaitOnAddress"); - static WAKE_BY_ADDRESS_SINGLE: &CStr = ansi_str!("WakeByAddressSingle"); + const MODULE_NAME: &CStr = ansi_str!("api-ms-win-core-synch-l1-2-0"); + const WAIT_ON_ADDRESS: &CStr = ansi_str!("WaitOnAddress"); + const WAKE_BY_ADDRESS_SINGLE: &CStr = ansi_str!("WakeByAddressSingle"); // Try loading the library and all the required functions. // If any step fails, then they all fail. From ebeb77e79e2edec8dd6de989f13d18da6f0c9915 Mon Sep 17 00:00:00 2001 From: Takayuki Maeda Date: Sat, 20 Aug 2022 20:47:41 +0900 Subject: [PATCH 14/15] add TaKO8Ki to translation-related mention groups --- triagebot.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/triagebot.toml b/triagebot.toml index 4d3f748195b80..8a90bc0e3c143 100644 --- a/triagebot.toml +++ b/triagebot.toml @@ -362,12 +362,12 @@ cc = ["@oli-obk", "@RalfJung", "@JakobDegen", "@davidtwco", "@celinval", "@vakar [mentions."compiler/rustc_error_messages"] message = "`rustc_error_messages` was changed" -cc = ["@davidtwco", "@compiler-errors", "@JohnTitor", "@estebank"] +cc = ["@davidtwco", "@compiler-errors", "@JohnTitor", "@estebank", "@TaKO8Ki"] [mentions."compiler/rustc_errors/src/translation.rs"] message = "`rustc_errors::translation` was changed" -cc = ["@davidtwco", "@compiler-errors", "@JohnTitor", "@estebank"] +cc = ["@davidtwco", "@compiler-errors", "@JohnTitor", "@estebank", "@TaKO8Ki"] [mentions."compiler/rustc_macros/src/diagnostics"] message = "`rustc_macros::diagnostics` was changed" -cc = ["@davidtwco", "@compiler-errors", "@JohnTitor", "@estebank"] +cc = ["@davidtwco", "@compiler-errors", "@JohnTitor", "@estebank", "@TaKO8Ki"] From e8ee0b7b2b9f004c51f7a10eeff0fbfe79af28d8 Mon Sep 17 00:00:00 2001 From: dylni <46035563+dylni@users.noreply.github.com> Date: Sat, 20 Aug 2022 12:49:20 -0400 Subject: [PATCH 15/15] Expose `Utf8Lossy` as `Utf8Chunks` --- library/alloc/src/lib.rs | 1 + library/alloc/src/str.rs | 2 + library/alloc/src/string.rs | 16 +- library/core/src/str/lossy.rs | 244 +++++++++++++++-------- library/core/src/str/mod.rs | 6 +- library/core/tests/lib.rs | 1 + library/core/tests/str_lossy.rs | 138 ++++++------- library/std/src/lib.rs | 1 + library/std/src/sys/unix/os_str.rs | 40 ++-- library/std/src/sys/unix/os_str/tests.rs | 8 + 10 files changed, 273 insertions(+), 184 deletions(-) diff --git a/library/alloc/src/lib.rs b/library/alloc/src/lib.rs index 315469387e5ae..dfff2fb691ba7 100644 --- a/library/alloc/src/lib.rs +++ b/library/alloc/src/lib.rs @@ -141,6 +141,7 @@ #![feature(unchecked_math)] #![feature(unicode_internals)] #![feature(unsize)] +#![feature(utf8_chunks)] #![feature(std_internals)] // // Language features: diff --git a/library/alloc/src/str.rs b/library/alloc/src/str.rs index d5ed2c4adf4f1..b94b1b1ce216a 100644 --- a/library/alloc/src/str.rs +++ b/library/alloc/src/str.rs @@ -71,6 +71,8 @@ pub use core::str::{RSplit, Split}; pub use core::str::{RSplitN, SplitN}; #[stable(feature = "rust1", since = "1.0.0")] pub use core::str::{RSplitTerminator, SplitTerminator}; +#[unstable(feature = "utf8_chunks", issue = "99543")] +pub use core::str::{Utf8Chunk, Utf8Chunks}; /// Note: `str` in `Concat` is not meaningful here. /// This type parameter of the trait only exists to enable another impl. diff --git a/library/alloc/src/string.rs b/library/alloc/src/string.rs index b1513e5e0f31c..8eb030369a197 100644 --- a/library/alloc/src/string.rs +++ b/library/alloc/src/string.rs @@ -58,9 +58,9 @@ use core::ops::Bound::{Excluded, Included, Unbounded}; use core::ops::{self, Index, IndexMut, Range, RangeBounds}; use core::ptr; use core::slice; -#[cfg(not(no_global_oom_handling))] -use core::str::lossy; use core::str::pattern::Pattern; +#[cfg(not(no_global_oom_handling))] +use core::str::Utf8Chunks; #[cfg(not(no_global_oom_handling))] use crate::borrow::{Cow, ToOwned}; @@ -628,11 +628,11 @@ impl String { #[cfg(not(no_global_oom_handling))] #[stable(feature = "rust1", since = "1.0.0")] pub fn from_utf8_lossy(v: &[u8]) -> Cow<'_, str> { - let mut iter = lossy::Utf8Lossy::from_bytes(v).chunks(); + let mut iter = Utf8Chunks::new(v); let first_valid = if let Some(chunk) = iter.next() { - let lossy::Utf8LossyChunk { valid, broken } = chunk; - if broken.is_empty() { + let valid = chunk.valid(); + if chunk.invalid().is_empty() { debug_assert_eq!(valid.len(), v.len()); return Cow::Borrowed(valid); } @@ -647,9 +647,9 @@ impl String { res.push_str(first_valid); res.push_str(REPLACEMENT); - for lossy::Utf8LossyChunk { valid, broken } in iter { - res.push_str(valid); - if !broken.is_empty() { + for chunk in iter { + res.push_str(chunk.valid()); + if !chunk.invalid().is_empty() { res.push_str(REPLACEMENT); } } diff --git a/library/core/src/str/lossy.rs b/library/core/src/str/lossy.rs index 6ec1c93908fc7..59f873d1268ce 100644 --- a/library/core/src/str/lossy.rs +++ b/library/core/src/str/lossy.rs @@ -1,51 +1,170 @@ -use crate::char; -use crate::fmt::{self, Write}; -use crate::mem; +use crate::fmt; +use crate::fmt::Formatter; +use crate::fmt::Write; +use crate::iter::FusedIterator; use super::from_utf8_unchecked; use super::validations::utf8_char_width; -/// Lossy UTF-8 string. -#[unstable(feature = "str_internals", issue = "none")] -pub struct Utf8Lossy { - bytes: [u8], +/// An item returned by the [`Utf8Chunks`] iterator. +/// +/// A `Utf8Chunk` stores a sequence of [`u8`] up to the first broken character +/// when decoding a UTF-8 string. +/// +/// # Examples +/// +/// ``` +/// #![feature(utf8_chunks)] +/// +/// use std::str::Utf8Chunks; +/// +/// // An invalid UTF-8 string +/// let bytes = b"foo\xF1\x80bar"; +/// +/// // Decode the first `Utf8Chunk` +/// let chunk = Utf8Chunks::new(bytes).next().unwrap(); +/// +/// // The first three characters are valid UTF-8 +/// assert_eq!("foo", chunk.valid()); +/// +/// // The fourth character is broken +/// assert_eq!(b"\xF1\x80", chunk.invalid()); +/// ``` +#[unstable(feature = "utf8_chunks", issue = "99543")] +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct Utf8Chunk<'a> { + valid: &'a str, + invalid: &'a [u8], } -impl Utf8Lossy { +impl<'a> Utf8Chunk<'a> { + /// Returns the next validated UTF-8 substring. + /// + /// This substring can be empty at the start of the string or between + /// broken UTF-8 characters. #[must_use] - pub fn from_bytes(bytes: &[u8]) -> &Utf8Lossy { - // SAFETY: Both use the same memory layout, and UTF-8 correctness isn't required. - unsafe { mem::transmute(bytes) } + #[unstable(feature = "utf8_chunks", issue = "99543")] + pub fn valid(&self) -> &'a str { + self.valid } - pub fn chunks(&self) -> Utf8LossyChunksIter<'_> { - Utf8LossyChunksIter { source: &self.bytes } + /// Returns the invalid sequence that caused a failure. + /// + /// The returned slice will have a maximum length of 3 and starts after the + /// substring given by [`valid`]. Decoding will resume after this sequence. + /// + /// If empty, this is the last chunk in the string. If non-empty, an + /// unexpected byte was encountered or the end of the input was reached + /// unexpectedly. + /// + /// Lossy decoding would replace this sequence with [`U+FFFD REPLACEMENT + /// CHARACTER`]. + /// + /// [`valid`]: Self::valid + /// [`U+FFFD REPLACEMENT CHARACTER`]: crate::char::REPLACEMENT_CHARACTER + #[must_use] + #[unstable(feature = "utf8_chunks", issue = "99543")] + pub fn invalid(&self) -> &'a [u8] { + self.invalid } } -/// Iterator over lossy UTF-8 string -#[must_use = "iterators are lazy and do nothing unless consumed"] +#[must_use] +#[unstable(feature = "str_internals", issue = "none")] +pub struct Debug<'a>(&'a [u8]); + #[unstable(feature = "str_internals", issue = "none")] -#[allow(missing_debug_implementations)] -pub struct Utf8LossyChunksIter<'a> { +impl fmt::Debug for Debug<'_> { + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_char('"')?; + + for chunk in Utf8Chunks::new(self.0) { + // Valid part. + // Here we partially parse UTF-8 again which is suboptimal. + { + let valid = chunk.valid(); + let mut from = 0; + for (i, c) in valid.char_indices() { + let esc = c.escape_debug(); + // If char needs escaping, flush backlog so far and write, else skip + if esc.len() != 1 { + f.write_str(&valid[from..i])?; + for c in esc { + f.write_char(c)?; + } + from = i + c.len_utf8(); + } + } + f.write_str(&valid[from..])?; + } + + // Broken parts of string as hex escape. + for &b in chunk.invalid() { + write!(f, "\\x{:02X}", b)?; + } + } + + f.write_char('"') + } +} + +/// An iterator used to decode a slice of mostly UTF-8 bytes to string slices +/// ([`&str`]) and byte slices ([`&[u8]`][byteslice]). +/// +/// If you want a simple conversion from UTF-8 byte slices to string slices, +/// [`from_utf8`] is easier to use. +/// +/// [byteslice]: slice +/// [`from_utf8`]: super::from_utf8 +/// +/// # Examples +/// +/// This can be used to create functionality similar to +/// [`String::from_utf8_lossy`] without allocating heap memory: +/// +/// ``` +/// #![feature(utf8_chunks)] +/// +/// use std::str::Utf8Chunks; +/// +/// fn from_utf8_lossy(input: &[u8], mut push: F) where F: FnMut(&str) { +/// for chunk in Utf8Chunks::new(input) { +/// push(chunk.valid()); +/// +/// if !chunk.invalid().is_empty() { +/// push("\u{FFFD}"); +/// } +/// } +/// } +/// ``` +/// +/// [`String::from_utf8_lossy`]: ../../std/string/struct.String.html#method.from_utf8_lossy +#[must_use = "iterators are lazy and do nothing unless consumed"] +#[unstable(feature = "utf8_chunks", issue = "99543")] +#[derive(Clone)] +pub struct Utf8Chunks<'a> { source: &'a [u8], } -#[unstable(feature = "str_internals", issue = "none")] -#[derive(PartialEq, Eq, Debug)] -pub struct Utf8LossyChunk<'a> { - /// Sequence of valid chars. - /// Can be empty between broken UTF-8 chars. - pub valid: &'a str, - /// Single broken char, empty if none. - /// Empty iff iterator item is last. - pub broken: &'a [u8], +impl<'a> Utf8Chunks<'a> { + /// Creates a new iterator to decode the bytes. + #[unstable(feature = "utf8_chunks", issue = "99543")] + pub fn new(bytes: &'a [u8]) -> Self { + Self { source: bytes } + } + + #[doc(hidden)] + #[unstable(feature = "str_internals", issue = "none")] + pub fn debug(&self) -> Debug<'_> { + Debug(self.source) + } } -impl<'a> Iterator for Utf8LossyChunksIter<'a> { - type Item = Utf8LossyChunk<'a>; +#[unstable(feature = "utf8_chunks", issue = "99543")] +impl<'a> Iterator for Utf8Chunks<'a> { + type Item = Utf8Chunk<'a>; - fn next(&mut self) -> Option> { + fn next(&mut self) -> Option> { if self.source.is_empty() { return None; } @@ -130,71 +249,22 @@ impl<'a> Iterator for Utf8LossyChunksIter<'a> { // SAFETY: `valid_up_to <= i` because it is only ever assigned via // `valid_up_to = i` and `i` only increases. - let (valid, broken) = unsafe { inspected.split_at_unchecked(valid_up_to) }; + let (valid, invalid) = unsafe { inspected.split_at_unchecked(valid_up_to) }; - Some(Utf8LossyChunk { + Some(Utf8Chunk { // SAFETY: All bytes up to `valid_up_to` are valid UTF-8. valid: unsafe { from_utf8_unchecked(valid) }, - broken, + invalid, }) } } -impl fmt::Display for Utf8Lossy { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - // If we're the empty string then our iterator won't actually yield - // anything, so perform the formatting manually - if self.bytes.is_empty() { - return "".fmt(f); - } - - for Utf8LossyChunk { valid, broken } in self.chunks() { - // If we successfully decoded the whole chunk as a valid string then - // we can return a direct formatting of the string which will also - // respect various formatting flags if possible. - if valid.len() == self.bytes.len() { - assert!(broken.is_empty()); - return valid.fmt(f); - } - - f.write_str(valid)?; - if !broken.is_empty() { - f.write_char(char::REPLACEMENT_CHARACTER)?; - } - } - Ok(()) - } -} - -impl fmt::Debug for Utf8Lossy { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.write_char('"')?; +#[unstable(feature = "utf8_chunks", issue = "99543")] +impl FusedIterator for Utf8Chunks<'_> {} - for Utf8LossyChunk { valid, broken } in self.chunks() { - // Valid part. - // Here we partially parse UTF-8 again which is suboptimal. - { - let mut from = 0; - for (i, c) in valid.char_indices() { - let esc = c.escape_debug(); - // If char needs escaping, flush backlog so far and write, else skip - if esc.len() != 1 { - f.write_str(&valid[from..i])?; - for c in esc { - f.write_char(c)?; - } - from = i + c.len_utf8(); - } - } - f.write_str(&valid[from..])?; - } - - // Broken parts of string as hex escape. - for &b in broken { - write!(f, "\\x{:02x}", b)?; - } - } - - f.write_char('"') +#[unstable(feature = "utf8_chunks", issue = "99543")] +impl fmt::Debug for Utf8Chunks<'_> { + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.debug_struct("Utf8Chunks").field("source", &self.debug()).finish() } } diff --git a/library/core/src/str/mod.rs b/library/core/src/str/mod.rs index c4f2e283eb3bc..5723188db69a1 100644 --- a/library/core/src/str/mod.rs +++ b/library/core/src/str/mod.rs @@ -22,9 +22,9 @@ use crate::slice::{self, SliceIndex}; pub mod pattern; -#[unstable(feature = "str_internals", issue = "none")] -#[allow(missing_docs)] -pub mod lossy; +mod lossy; +#[unstable(feature = "utf8_chunks", issue = "99543")] +pub use lossy::{Utf8Chunk, Utf8Chunks}; #[stable(feature = "rust1", since = "1.0.0")] pub use converts::{from_utf8, from_utf8_unchecked}; diff --git a/library/core/tests/lib.rs b/library/core/tests/lib.rs index db94368f6e0cc..68dc8a87c7673 100644 --- a/library/core/tests/lib.rs +++ b/library/core/tests/lib.rs @@ -96,6 +96,7 @@ #![feature(waker_getters)] #![feature(slice_flatten)] #![feature(provide_any)] +#![feature(utf8_chunks)] #![deny(unsafe_op_in_unsafe_fn)] extern crate test; diff --git a/library/core/tests/str_lossy.rs b/library/core/tests/str_lossy.rs index d4b47a4708e4b..9d3f0b65fdb94 100644 --- a/library/core/tests/str_lossy.rs +++ b/library/core/tests/str_lossy.rs @@ -1,85 +1,85 @@ -use core::str::lossy::*; +use core::str::Utf8Chunks; #[test] fn chunks() { - let mut iter = Utf8Lossy::from_bytes(b"hello").chunks(); - assert_eq!(Some(Utf8LossyChunk { valid: "hello", broken: b"" }), iter.next()); - assert_eq!(None, iter.next()); + macro_rules! assert_chunks { + ( $string:expr, $(($valid:expr, $invalid:expr)),* $(,)? ) => {{ + let mut iter = Utf8Chunks::new($string); + $( + let chunk = iter.next().expect("missing chunk"); + assert_eq!($valid, chunk.valid()); + assert_eq!($invalid, chunk.invalid()); + )* + assert_eq!(None, iter.next()); + }}; + } - let mut iter = Utf8Lossy::from_bytes("ศไทย中华Việt Nam".as_bytes()).chunks(); - assert_eq!(Some(Utf8LossyChunk { valid: "ศไทย中华Việt Nam", broken: b"" }), iter.next()); - assert_eq!(None, iter.next()); - - let mut iter = Utf8Lossy::from_bytes(b"Hello\xC2 There\xFF Goodbye").chunks(); - assert_eq!(Some(Utf8LossyChunk { valid: "Hello", broken: b"\xC2" }), iter.next()); - assert_eq!(Some(Utf8LossyChunk { valid: " There", broken: b"\xFF" }), iter.next()); - assert_eq!(Some(Utf8LossyChunk { valid: " Goodbye", broken: b"" }), iter.next()); - assert_eq!(None, iter.next()); - - let mut iter = Utf8Lossy::from_bytes(b"Hello\xC0\x80 There\xE6\x83 Goodbye").chunks(); - assert_eq!(Some(Utf8LossyChunk { valid: "Hello", broken: b"\xC0" }), iter.next()); - assert_eq!(Some(Utf8LossyChunk { valid: "", broken: b"\x80" }), iter.next()); - assert_eq!(Some(Utf8LossyChunk { valid: " There", broken: b"\xE6\x83" }), iter.next()); - assert_eq!(Some(Utf8LossyChunk { valid: " Goodbye", broken: b"" }), iter.next()); - assert_eq!(None, iter.next()); - - let mut iter = Utf8Lossy::from_bytes(b"\xF5foo\xF5\x80bar").chunks(); - assert_eq!(Some(Utf8LossyChunk { valid: "", broken: b"\xF5" }), iter.next()); - assert_eq!(Some(Utf8LossyChunk { valid: "foo", broken: b"\xF5" }), iter.next()); - assert_eq!(Some(Utf8LossyChunk { valid: "", broken: b"\x80" }), iter.next()); - assert_eq!(Some(Utf8LossyChunk { valid: "bar", broken: b"" }), iter.next()); - assert_eq!(None, iter.next()); - - let mut iter = Utf8Lossy::from_bytes(b"\xF1foo\xF1\x80bar\xF1\x80\x80baz").chunks(); - assert_eq!(Some(Utf8LossyChunk { valid: "", broken: b"\xF1" }), iter.next()); - assert_eq!(Some(Utf8LossyChunk { valid: "foo", broken: b"\xF1\x80" }), iter.next()); - assert_eq!(Some(Utf8LossyChunk { valid: "bar", broken: b"\xF1\x80\x80" }), iter.next()); - assert_eq!(Some(Utf8LossyChunk { valid: "baz", broken: b"" }), iter.next()); - assert_eq!(None, iter.next()); - - let mut iter = Utf8Lossy::from_bytes(b"\xF4foo\xF4\x80bar\xF4\xBFbaz").chunks(); - assert_eq!(Some(Utf8LossyChunk { valid: "", broken: b"\xF4" }), iter.next()); - assert_eq!(Some(Utf8LossyChunk { valid: "foo", broken: b"\xF4\x80" }), iter.next()); - assert_eq!(Some(Utf8LossyChunk { valid: "bar", broken: b"\xF4" }), iter.next()); - assert_eq!(Some(Utf8LossyChunk { valid: "", broken: b"\xBF" }), iter.next()); - assert_eq!(Some(Utf8LossyChunk { valid: "baz", broken: b"" }), iter.next()); - assert_eq!(None, iter.next()); - - let mut iter = Utf8Lossy::from_bytes(b"\xF0\x80\x80\x80foo\xF0\x90\x80\x80bar").chunks(); - assert_eq!(Some(Utf8LossyChunk { valid: "", broken: b"\xF0" }), iter.next()); - assert_eq!(Some(Utf8LossyChunk { valid: "", broken: b"\x80" }), iter.next()); - assert_eq!(Some(Utf8LossyChunk { valid: "", broken: b"\x80" }), iter.next()); - assert_eq!(Some(Utf8LossyChunk { valid: "", broken: b"\x80" }), iter.next()); - assert_eq!(Some(Utf8LossyChunk { valid: "foo\u{10000}bar", broken: b"" }), iter.next()); - assert_eq!(None, iter.next()); + assert_chunks!(b"hello", ("hello", b"")); + assert_chunks!("ศไทย中华Việt Nam".as_bytes(), ("ศไทย中华Việt Nam", b"")); + assert_chunks!( + b"Hello\xC2 There\xFF Goodbye", + ("Hello", b"\xC2"), + (" There", b"\xFF"), + (" Goodbye", b""), + ); + assert_chunks!( + b"Hello\xC0\x80 There\xE6\x83 Goodbye", + ("Hello", b"\xC0"), + ("", b"\x80"), + (" There", b"\xE6\x83"), + (" Goodbye", b""), + ); + assert_chunks!( + b"\xF5foo\xF5\x80bar", + ("", b"\xF5"), + ("foo", b"\xF5"), + ("", b"\x80"), + ("bar", b""), + ); + assert_chunks!( + b"\xF1foo\xF1\x80bar\xF1\x80\x80baz", + ("", b"\xF1"), + ("foo", b"\xF1\x80"), + ("bar", b"\xF1\x80\x80"), + ("baz", b""), + ); + assert_chunks!( + b"\xF4foo\xF4\x80bar\xF4\xBFbaz", + ("", b"\xF4"), + ("foo", b"\xF4\x80"), + ("bar", b"\xF4"), + ("", b"\xBF"), + ("baz", b""), + ); + assert_chunks!( + b"\xF0\x80\x80\x80foo\xF0\x90\x80\x80bar", + ("", b"\xF0"), + ("", b"\x80"), + ("", b"\x80"), + ("", b"\x80"), + ("foo\u{10000}bar", b""), + ); // surrogates - let mut iter = Utf8Lossy::from_bytes(b"\xED\xA0\x80foo\xED\xBF\xBFbar").chunks(); - assert_eq!(Some(Utf8LossyChunk { valid: "", broken: b"\xED" }), iter.next()); - assert_eq!(Some(Utf8LossyChunk { valid: "", broken: b"\xA0" }), iter.next()); - assert_eq!(Some(Utf8LossyChunk { valid: "", broken: b"\x80" }), iter.next()); - assert_eq!(Some(Utf8LossyChunk { valid: "foo", broken: b"\xED" }), iter.next()); - assert_eq!(Some(Utf8LossyChunk { valid: "", broken: b"\xBF" }), iter.next()); - assert_eq!(Some(Utf8LossyChunk { valid: "", broken: b"\xBF" }), iter.next()); - assert_eq!(Some(Utf8LossyChunk { valid: "bar", broken: b"" }), iter.next()); - assert_eq!(None, iter.next()); -} - -#[test] -fn display() { - assert_eq!( - "Hello\u{FFFD}\u{FFFD} There\u{FFFD} Goodbye", - &Utf8Lossy::from_bytes(b"Hello\xC0\x80 There\xE6\x83 Goodbye").to_string() + assert_chunks!( + b"\xED\xA0\x80foo\xED\xBF\xBFbar", + ("", b"\xED"), + ("", b"\xA0"), + ("", b"\x80"), + ("foo", b"\xED"), + ("", b"\xBF"), + ("", b"\xBF"), + ("bar", b""), ); } #[test] fn debug() { assert_eq!( - "\"Hello\\xc0\\x80 There\\xe6\\x83 Goodbye\\u{10d4ea}\"", + "\"Hello\\xC0\\x80 There\\xE6\\x83 Goodbye\\u{10d4ea}\"", &format!( "{:?}", - Utf8Lossy::from_bytes(b"Hello\xC0\x80 There\xE6\x83 Goodbye\xf4\x8d\x93\xaa") - ) + Utf8Chunks::new(b"Hello\xC0\x80 There\xE6\x83 Goodbye\xf4\x8d\x93\xaa").debug(), + ), ); } diff --git a/library/std/src/lib.rs b/library/std/src/lib.rs index 9fd426d3ac4e2..773fbf125823d 100644 --- a/library/std/src/lib.rs +++ b/library/std/src/lib.rs @@ -258,6 +258,7 @@ #![feature(staged_api)] #![feature(thread_local)] #![feature(try_blocks)] +#![feature(utf8_chunks)] // // Library features (core): #![feature(array_error_internals)] diff --git a/library/std/src/sys/unix/os_str.rs b/library/std/src/sys/unix/os_str.rs index ccbc182240cf3..017e2af29d4f4 100644 --- a/library/std/src/sys/unix/os_str.rs +++ b/library/std/src/sys/unix/os_str.rs @@ -11,7 +11,7 @@ use crate::str; use crate::sync::Arc; use crate::sys_common::{AsInner, IntoInner}; -use core::str::lossy::{Utf8Lossy, Utf8LossyChunk}; +use core::str::Utf8Chunks; #[cfg(test)] #[path = "../unix/os_str/tests.rs"] @@ -29,26 +29,32 @@ pub struct Slice { } impl fmt::Debug for Slice { - fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result { - // Writes out a valid unicode string with the correct escape sequences - - formatter.write_str("\"")?; - for Utf8LossyChunk { valid, broken } in Utf8Lossy::from_bytes(&self.inner).chunks() { - for c in valid.chars().flat_map(|c| c.escape_debug()) { - formatter.write_char(c)? - } - - for b in broken { - write!(formatter, "\\x{:02X}", b)?; - } - } - formatter.write_str("\"") + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + fmt::Debug::fmt(&Utf8Chunks::new(&self.inner).debug(), f) } } impl fmt::Display for Slice { - fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result { - fmt::Display::fmt(&Utf8Lossy::from_bytes(&self.inner), formatter) + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + // If we're the empty string then our iterator won't actually yield + // anything, so perform the formatting manually + if self.inner.is_empty() { + return "".fmt(f); + } + + for chunk in Utf8Chunks::new(&self.inner) { + let valid = chunk.valid(); + // If we successfully decoded the whole chunk as a valid string then + // we can return a direct formatting of the string which will also + // respect various formatting flags if possible. + if chunk.invalid().is_empty() { + return valid.fmt(f); + } + + f.write_str(valid)?; + f.write_char(char::REPLACEMENT_CHARACTER)?; + } + Ok(()) } } diff --git a/library/std/src/sys/unix/os_str/tests.rs b/library/std/src/sys/unix/os_str/tests.rs index 213277f01f2a6..22ba0c9235041 100644 --- a/library/std/src/sys/unix/os_str/tests.rs +++ b/library/std/src/sys/unix/os_str/tests.rs @@ -8,3 +8,11 @@ fn slice_debug_output() { assert_eq!(output, expected); } + +#[test] +fn display() { + assert_eq!( + "Hello\u{FFFD}\u{FFFD} There\u{FFFD} Goodbye", + Slice::from_u8_slice(b"Hello\xC0\x80 There\xE6\x83 Goodbye").to_string(), + ); +}