diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/Cargo.lock distinst-0.3.2~1546629268~18.10~d20fe0c~dev/Cargo.lock --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/Cargo.lock 2018-11-27 22:07:44.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/Cargo.lock 2019-01-04 19:14:28.000000000 +0000 @@ -3,7 +3,7 @@ version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -25,10 +25,10 @@ [[package]] name = "arrayvec" -version = "0.4.7" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -44,30 +44,36 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] +name = "autocfg" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] name = "backtrace" -version = "0.3.9" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-demangle 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "backtrace-sys" -version = "0.1.24" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -116,7 +122,7 @@ version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -132,17 +138,17 @@ dependencies = [ "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.21 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cc" -version = "1.0.25" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -165,7 +171,7 @@ dependencies = [ "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "libloading 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -210,12 +216,12 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -232,7 +238,7 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "libdbus-sys 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -241,9 +247,9 @@ version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.21 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.18 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.23 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -251,7 +257,7 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "redox_users 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -262,10 +268,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "libparted 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "os-detect 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "os-detect 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "sys-mount 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "sysfs-class 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -289,21 +295,21 @@ "distinst-timezones 0.1.0", "distinst-utils 0.1.0", "envfile 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fern 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "fstab-generate 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "fern 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)", + "fstab-generate 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "hostname-validator 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "itertools 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.7.11 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "libparted 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "logind-dbus 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "os-detect 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "os-detect 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "os-release 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "partition-identity 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "partition-identity 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "pbr 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-mounts 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-mounts 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "sys-mount 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -350,16 +356,16 @@ "distinst-external-commands 0.1.0", "distinst-utils 0.1.0", "envfile 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fstab-generate 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "itertools 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "fstab-generate 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.7.11 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "libparted 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "os-detect 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "partition-identity 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-mounts 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "os-detect 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "partition-identity 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-mounts 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "sys-mount 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -374,7 +380,7 @@ "disk-types 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "distinst-utils 0.1.0", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-mounts 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-mounts 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "sys-mount 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -400,7 +406,7 @@ "iso3166-1 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "isolang 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", "serde-xml-rs 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.21 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -409,7 +415,7 @@ name = "distinst-squashfs" version = "0.1.0" dependencies = [ - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -430,9 +436,9 @@ dependencies = [ "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", "distinst 0.5.0", - "failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "pbr 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -443,7 +449,7 @@ "cbindgen 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "distinst 0.5.0", "distinst-external-commands 0.1.0", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -472,7 +478,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "errno-dragonfly 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -482,32 +488,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "failure" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", + "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "failure_derive" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.21 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.18 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.23 (registry+https://github.com/rust-lang/crates.io-index)", "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "fern" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -515,11 +521,11 @@ [[package]] name = "fstab-generate" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "disk-types 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "partition-identity 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "partition-identity 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -572,7 +578,7 @@ [[package]] name = "itertools" -version = "0.7.8" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -604,7 +610,7 @@ [[package]] name = "libc" -version = "0.2.43" +version = "0.2.46" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -630,7 +636,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "libparted-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -673,7 +679,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -681,16 +687,16 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "memchr" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -701,7 +707,7 @@ [[package]] name = "nodrop" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -714,20 +720,20 @@ [[package]] name = "num_cpus" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "os-detect" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "os-release 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "partition-identity 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "partition-identity 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "sys-mount 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -742,8 +748,12 @@ [[package]] name = "partition-identity" -version = "0.1.7" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "pbr" @@ -751,9 +761,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -803,7 +813,7 @@ [[package]] name = "proc-macro2" -version = "0.4.21" +version = "0.4.24" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -816,10 +826,11 @@ [[package]] name = "proc-mounts" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "partition-identity 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -849,10 +860,10 @@ [[package]] name = "quote" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.21 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -861,7 +872,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -872,7 +883,7 @@ dependencies = [ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -896,7 +907,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -917,13 +928,13 @@ dependencies = [ "crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "redox_syscall" -version = "0.1.40" +version = "0.1.50" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -931,7 +942,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.50 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -940,9 +951,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "argon2rs 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.50 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -951,7 +962,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -959,12 +970,12 @@ [[package]] name = "regex" -version = "1.0.6" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -974,15 +985,15 @@ version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "ucd-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "regex-syntax" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "ucd-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -995,7 +1006,7 @@ [[package]] name = "rustc-demangle" -version = "0.1.9" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1013,7 +1024,7 @@ [[package]] name = "ryu" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1031,7 +1042,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1049,7 +1060,7 @@ [[package]] name = "serde" -version = "1.0.80" +version = "1.0.84" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "serde_derive 1.0.21 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1061,7 +1072,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", "xml-rs 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1086,12 +1097,12 @@ [[package]] name = "serde_json" -version = "1.0.32" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "ryu 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1128,18 +1139,18 @@ version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.21 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "syn" -version = "0.15.18" +version = "0.15.23" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.21 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1156,9 +1167,9 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.21 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.18 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.23 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1176,7 +1187,7 @@ version = "0.58.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", "syntex_pos 0.58.1 (registry+https://github.com/rust-lang/crates.io-index)", "term 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1210,7 +1221,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "loopdev 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1242,8 +1253,8 @@ version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.50 (registry+https://github.com/rust-lang/crates.io-index)", "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1265,25 +1276,25 @@ [[package]] name = "time" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.50 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "toml" -version = "0.4.8" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "ucd-util" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1321,7 +1332,7 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1365,11 +1376,12 @@ "checksum aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1e9a933f4e58658d7b12defcf96dc5c720f20832deebe3e0a19efd3b6aaeeb9e" "checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" "checksum argon2rs 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3f67b0b6a86dae6e67ff4ca2b6201396074996379fba2b92ff649126f37cb392" -"checksum arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "a1e964f9e24d588183fcb43503abda40d288c8657dfc27311516ce2f05675aef" +"checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" "checksum aster 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4ccfdf7355d9db158df68f976ed030ab0f6578af811f5a7bb6dcf221ec24e0e0" "checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652" -"checksum backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "89a47830402e9981c5c41223151efcced65a0510c13097c769cede7efb34782a" -"checksum backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)" = "c66d56ac8dabd07f6aacdaf633f4b8262f5b3601a810a0dcddffd5c22c69daa0" +"checksum autocfg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4e5f34df7a019573fb8bdc7e24a2bfebe51a2a1d6bfdbaeccedb3c41fc574727" +"checksum backtrace 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "b5b493b66e03090ebc4343eb02f94ff944e0cbc9ac6571491d170ba026741eb5" +"checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6" "checksum bindgen 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)" = "33024f55a754d920637461adf87fb485702a69bdf7ac1d307b7e18da93bae505" "checksum bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d" "checksum bitflags 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1370e9fc2a6ae53aea8b7a5110edbd08836ed87c88736dfabccade1c2b44bff4" @@ -1378,7 +1390,7 @@ "checksum blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" "checksum cascade 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4b5cbaa4408b6ddb46140f9a1d7c9b8d5e971cb30d1eef9465acac891868e623" "checksum cbindgen 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d0e209cc89082245f8bc1cd2b37ed0b202a07a20926acb80c8cc5fd69e5c422a" -"checksum cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)" = "f159dfd43363c4d08055a07703eb7a3406b0dac4d0584d96965a3262db3c9d16" +"checksum cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4a8b715cb4597106ea87c7c84b2f1d452c7492033765df7f32651e66fcf749" "checksum cexpr 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "42aac45e9567d97474a834efdee3081b3c942b2205be932092f53354ce503d6c" "checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4" "checksum clang-sys 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)" = "611ec2e3a7623afd8a8c0d027887b6b55759d894abbf5fe11b9dc11b50d5b49a" @@ -1397,10 +1409,10 @@ "checksum envfile 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "417b5f7494d642249d369a673196c3d3576eac6abd6063664347d2bfe74fc86d" "checksum errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c2a071601ed01b988f896ab14b95e67335d1eeb50190932a1320f7fe3cadc84e" "checksum errno-dragonfly 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "14ca354e36190500e1e1fb267c647932382b54053c50b14970856c0b00a35067" -"checksum failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6dd377bcc1b1b7ce911967e3ec24fa19c3224394ec05b54aa7b083d498341ac7" -"checksum failure_derive 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "64c2d913fe8ed3b6c6518eedf4538255b989945c14c2a7d5cbff62a5e2120596" -"checksum fern 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "57915fe00a83af935983eb2d00b0ecc62419c4741b28c207ecbf98fd4a1b94c8" -"checksum fstab-generate 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "de8a86b6b9ae9e7b47a060f2e0462e689edba6e2b41ad3ad9c6330467cf3d07e" +"checksum failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "795bd83d3abeb9220f257e597aa0080a508b27533824adf336529648f6abf7e2" +"checksum failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1063915fd7ef4309e222a5a07cf9c319fb9c7836b1f89b85458672dbb127e1" +"checksum fern 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b48af88aaf938b11baef948a5599e66e709cf92854aa2b87c71f1bcf20f80a01" +"checksum fstab-generate 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e6722c84e98f582963786d78be132df525119720bb7a5dc2a0c40e359e6f545b" "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" "checksum gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)" = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" @@ -1409,12 +1421,12 @@ "checksum hostname-validator 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "70b8bcb948d9f63a35f0527cde7ca4f4794e817451eaebd47a3c92ef6905c129" "checksum iso3166-1 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ece62adcb2a0461fcda598d6de350e0b385dc355ac6ac3984428c8eb973eb9ac" "checksum isolang 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9e5855a5a1ba5957e064977b94e5cd15ecbe83904a5191576be11615186cd868" -"checksum itertools 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)" = "f58856976b776fedd95533137617a02fb25719f40e7d9b01c7043cd65474f450" +"checksum itertools 0.7.11 (registry+https://github.com/rust-lang/crates.io-index)" = "0d47946d458e94a1b7bcabbf6521ea7c037062c81f534615abcad76e84d4970d" "checksum itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1306f3464951f30e30d12373d31c79fbd52d236e5e896fd92f96ec7babbbe60b" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73" "checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1" -"checksum libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)" = "76e3a3ef172f1a0b9a9ff0dd1491ae5e6c948b94479a3021819ba7d860c8645d" +"checksum libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)" = "023a4cd09b2ff695f9734c1934145a315594b7986398496841c7031a5a1bbdbd" "checksum libdbus-sys 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "99c78106156a964aadc1c59f7798276967be6705243b60f3ab7e131e3841db88" "checksum libloading 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "fd38073de8f7965d0c17d30546d4bb6da311ab428d1c7a3fc71dff7f9d4979b9" "checksum libparted 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a46101492e623f2d20b057d101408d26ec9bbd83cf83b8de6fb523d143164703" @@ -1424,14 +1436,14 @@ "checksum logind-dbus 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bba92213266fa4e8e7976c1b5904cf1e9f1963499d4432415f8c0a2bf34eeafd" "checksum loopdev 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ac9e35cfb6646d67059f2ca8913a90e6c60633053c103df423975297f33d6fcc" "checksum memchr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "148fab2e51b4f1cfc66da2a7c32981d1d3c083a803978268bb11fe4b86925e7a" -"checksum memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0a3eb002f0535929f1199681417029ebea04aadc0c7a4224b46be99c7f5d6a16" +"checksum memchr 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "db4c41318937f6e76648f42826b1d9ade5c09cafb5aef7e351240a70f39206e9" "checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" -"checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" +"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" "checksum nom 3.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05aec50c70fd288702bcd93284a8444607f3292dbdf2a30de5ea5dcdbe72287b" -"checksum num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30" -"checksum os-detect 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c42d4bbf05eb63347ad4e8a2acb8242cbbd2e7d10ddcd2eb7572ff38d9f39a4f" +"checksum num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5a69d464bdc213aaaff628444e99578ede64e9c854025aa43b9796530afa9238" +"checksum os-detect 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0aea13363b04f639cec843005eef8527671b1cca253f3bcc279b0cbed90c1171" "checksum os-release 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "82f29ae2f71b53ec19cc23385f8e4f3d90975195aa3d09171ba3bef7159bec27" -"checksum partition-identity 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "63980992bd7ba72ae074d8e408af71aa5290cadccc5a80be1590dd9572c4f386" +"checksum partition-identity 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "08bee0933f5f97475cfd0041fb511532b0f01b63bba547216c3d361240a5630a" "checksum pbr 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "deb73390ab68d81992bd994d145f697451bb0b54fd39738e72eef32458ad6907" "checksum peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" "checksum phf 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)" = "cec29da322b242f4c3098852c77a0ca261c9c01b806cae85a5572a1eb94db9a6" @@ -1439,13 +1451,13 @@ "checksum phf_generator 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)" = "03dc191feb9b08b0dc1330d6549b795b9d81aec19efe6b4a45aec8d4caee0c4b" "checksum phf_shared 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)" = "b539898d22d4273ded07f64a05737649dc69095d92cb87c7097ec68e3f150b93" "checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c" -"checksum proc-macro2 0.4.21 (registry+https://github.com/rust-lang/crates.io-index)" = "ab2fc21ba78ac73e4ff6b3818ece00be4e175ffbef4d0a717d978b48b24150c4" +"checksum proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)" = "77619697826f31a02ae974457af0b29b723e5619e113e9397b8b82c6bd253f09" "checksum proc-modules 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "06792648b53d7262ce47878e98111be3edf109b070b6eb1b67964bb55831bab5" -"checksum proc-mounts 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8b1511bbfdc0fdd4acf0bab54df6793767e8ca87749b882f4d3b7dc53621e2e7" +"checksum proc-mounts 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3dbfc3eb15d90df4f4b3c0631f6b1e85e987c01b188bfadd02a504e5c95d9007" "checksum quasi 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "18c45c4854d6d1cf5d531db97c75880feb91c958b0720f4ec1057135fec358b3" "checksum quasi_codegen 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "51b9e25fa23c044c1803f43ca59c98dac608976dd04ce799411edd58ece776d4" "checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a" -"checksum quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "63b5829244f52738cfee93b3a165c1911388675be000c888d2fae620dee8fa5b" +"checksum quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "53fa22a1994bd0f9372d7a816207d8a2677ad0325b073f5c5332760f0fb62b5c" "checksum rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8356f47b32624fef5b3301c1be97e5944ecdd595409cc5da11d05f211db6cfbd" "checksum rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e464cd887e869cddcae8792a4ee31d23c7edd516700695608f5b98c67ee0131c" "checksum rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1961a422c4d189dfb50ffa9320bf1f2a9bd54ecb92792fb9477f99a1045f3372" @@ -1453,34 +1465,34 @@ "checksum raw-cpuid 5.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fe3c460bd35fdb75644e94ab498372bdf29a4849367ce7ba74cf358edce590c4" "checksum rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "373814f27745b2686b350dd261bfd24576a6fb0e2c5919b3a2b6005f820b0473" "checksum rayon-core 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b055d1e92aba6877574d8fe604a63c8b5df60f60e5982bf7ccbb1338ea527356" -"checksum redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "c214e91d3ecf43e9a4e41e578973adeb14b474f2bee858742d127af75a0112b1" +"checksum redox_syscall 0.1.50 (registry+https://github.com/rust-lang/crates.io-index)" = "52ee9a534dc1301776eff45b4fa92d2c39b1d8c3d3357e6eb593e0d795506fc2" "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" "checksum redox_users 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "214a97e49be64fd2c86f568dd0cb2c757d2cc53de95b273b6ad0a1c908482f26" "checksum regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9329abc99e39129fcceabd24cf5d85b4671ef7c29c50e972bc5afe32438ec384" -"checksum regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ee84f70c8c08744ea9641a731c7fadb475bf2ecc52d7f627feb833e0b3990467" +"checksum regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "37e7cbbd370869ce2e8dff25c7018702d10b21a20ef7135316f8daecd6c25b7f" "checksum regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7d707a4fa2637f2dca2ef9fd02225ec7661fe01a53623c1e6515b6916511f7a7" -"checksum regex-syntax 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "fbc557aac2b708fe84121caf261346cc2eed71978024337e42eb46b8a252ac6e" +"checksum regex-syntax 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4e47a2ed29da7a9e1960e1639e7a982e6edc6d49be308a3b02daf511504a16d1" "checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" -"checksum rustc-demangle 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "bcfe5b13211b4d78e5c2cadfebd7769197d95c639c35a50057eb4c05de811395" +"checksum rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "adacaae16d02b6ec37fdc7acfcddf365978de76d1983d3ee22afc260e1ca9619" "checksum rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -"checksum ryu 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7153dd96dade874ab973e098cb62fcdbb89a03682e46b144fd09550998d4a4a7" +"checksum ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "eb9e9b8cde282a9fe6a42dd4681319bfb63f121b8a8ee9439c6f4107e58a46f7" "checksum scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" "checksum sedregex 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f163198de3050c9c9a05a2deb6dd4d53d491a404d50ddf1ff64691e363ca37d7" "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" -"checksum serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)" = "15c141fc7027dd265a47c090bf864cf62b42c4d228bbcf4e51a0c9e2b0d3f7ef" +"checksum serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)" = "0e732ed5a5592c17d961555e3b552985baf98d50ce418b7b655f31f6ba7eb1b7" "checksum serde-xml-rs 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0c06881f4313eec67d4ecfcd8e14339f6042cfc0de4b1bd3ceae74c29d597f68" "checksum serde_derive 1.0.21 (registry+https://github.com/rust-lang/crates.io-index)" = "652bc323d694dc925829725ec6c890156d8e70ae5202919869cb00fe2eff3788" "checksum serde_derive_internals 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)" = "32f1926285523b2db55df263d2aa4eb69ddcfa7a7eade6430323637866b513ab" -"checksum serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)" = "43344e7ce05d0d8280c5940cabb4964bea626aa58b1ec0e8c73fa2a8512a38ce" +"checksum serde_json 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)" = "bdf540260cfee6da923831f4776ddc495ada940c30117977c70f1313a6130545" "checksum siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" "checksum smart-default 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3e7392ae8cdf79428cc98170bf264af7219887def8a30bb61d7ad2200313e88d" "checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" "checksum syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad" "checksum syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)" = "261ae9ecaa397c42b960649561949d69311f08eeaea86a65696e6e46517cf741" -"checksum syn 0.15.18 (registry+https://github.com/rust-lang/crates.io-index)" = "90c39a061e2f412a9f869540471ab679e85e50c6b05604daf28bc3060f75c430" +"checksum syn 0.15.23 (registry+https://github.com/rust-lang/crates.io-index)" = "9545a6a093a3f0bd59adb472700acc08cad3776f860f16a897dfce8c88721cbc" "checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6" "checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" "checksum syntex 0.58.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a8f5e3aaa79319573d19938ea38d068056b826db9883a5d47f86c1cecc688f0e" @@ -1494,9 +1506,9 @@ "checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" "checksum textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "307686869c93e71f94da64286f9a9524c0f308a9e1c87a583de8e9c9039ad3f6" "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" -"checksum time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "d825be0eb33fda1a7e68012d51e9c7f451dc1a69391e7fdc197060bb8c56667b" -"checksum toml 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "4a2ecc31b0351ea18b3fe11274b8db6e4d82bce861bbb22e6dbed40417902c65" -"checksum ucd-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d0f8bfa9ff0cadcd210129ad9d2c5f145c13e9ced3d3e5d948a6213487d52444" +"checksum time 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "847da467bf0db05882a9e2375934a8a55cffdc9db0d128af1518200260ba1f6c" +"checksum toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f" +"checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86" "checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526" "checksum unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/Cargo.toml 2018-11-27 22:07:44.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/Cargo.toml 2019-01-04 19:14:28.000000000 +0000 @@ -50,17 +50,17 @@ distinst-utils = { path = "crates/utils" } envfile = "0.1.0" fern = "0.5.6" -fstab-generate = "0.1.1" +fstab-generate = "0.1.2" hostname-validator = "1.0.0" itertools = "0.7.8" libc = "0.2.43" libparted = "0.1.3" log = "0.4.5" logind-dbus = "0.1.0" -os-detect = "0.2.1" +os-detect = "0.2.2" os-release = "0.1.0" -partition-identity = "0.1.6" -proc-mounts = "0.1.0" +partition-identity = "0.2.0" +proc-mounts = "=0.1.2" rayon = "1.0.2" sys-mount = "1.1.0" tempdir = "0.3.7" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/crates/disks/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/crates/disks/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/crates/disks/Cargo.toml 2018-11-27 22:07:44.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/crates/disks/Cargo.toml 2019-01-04 19:14:28.000000000 +0000 @@ -20,14 +20,14 @@ envfile = "0.1.0" failure = "0.1.3" failure_derive = "0.1.3" -fstab-generate = "0.1.1" +fstab-generate = "0.1.2" itertools = "0.7.8" libc = "0.2.43" libparted = "0.1.3" log = "0.4.5" -os-detect = "0.2.1" -partition-identity = "0.1.7" -proc-mounts = "0.1.0" +os-detect = "0.2.2" +partition-identity = "0.2.0" +proc-mounts = "0.1.2" rand = "0.5.5" rayon = "1.0.2" sys-mount = "1.1.0" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/crates/disks/src/config/disks.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/crates/disks/src/config/disks.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/crates/disks/src/config/disks.rs 2018-11-27 22:07:44.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/crates/disks/src/config/disks.rs 2019-01-04 19:14:28.000000000 +0000 @@ -49,7 +49,7 @@ } } - remove.into_iter().for_each(|id| { + remove.into_iter().rev().for_each(|id| { self.physical.remove(id); }); } @@ -178,9 +178,14 @@ let targets = self.get_partitions() .filter(|part| part.target.is_some() && part.filesystem.is_some()); + enum MountKind { + Direct { device: PathBuf, fs: &'static str }, + Bind { source: PathBuf } + } + // The mount path will actually consist of the target concatenated with the // root. NOTE: It is assumed that the target is an absolute path. - let paths: BTreeMap = targets + let paths: BTreeMap = targets .map(|target| { // Path mangling commences here, since we need to concatenate an absolute // path onto another absolute path, and the standard library opts for @@ -209,12 +214,19 @@ PathBuf::from(OsString::from_vec(target_mount)) }; - let fs = match target.filesystem.unwrap() { - FileSystem::Fat16 | FileSystem::Fat32 => "vfat", - fs => fs.into(), - }; + // If a partition is already mounted, we should perform a bind mount. + // If it is not mounted, we can mount it directly. + let kind = if let Some(source) = target.mount_point.clone() { + MountKind::Bind { source } + } else { + let fs = match target.filesystem.unwrap() { + FileSystem::Fat16 | FileSystem::Fat32 => "vfat", + fs => fs.into(), + }; - (target_mount, (target.device_path.clone(), fs)) + MountKind::Direct { device: target.device_path.clone(), fs } + }; + (target_mount, kind) }) .collect(); @@ -224,18 +236,23 @@ // the correct order. let mut mounts = Vec::new(); - for (target_mount, (device_path, filesystem)) in paths { + for (target_mount, kind) in paths { if let Err(why) = fs::create_dir_all(&target_mount) { error!("unable to create '{}': {}", why, target_mount.display()); } - mounts.push(Mount::new( - device_path, - &target_mount, - filesystem, - MountFlags::empty(), - None, - )?.into_unmount_drop(UnmountFlags::DETACH)); + let mount = match kind { + MountKind::Direct { device, fs } => { + info!("mounting {:?} ({}) to {:?}", device, fs, target_mount); + Mount::new(device, &target_mount, fs, MountFlags::empty(), None)? + } + MountKind::Bind { source } => { + info!("bind mounting {:?} to {:?}", source, target_mount); + Mount::new(source, &target_mount, "", MountFlags::BIND, None)? + } + }; + + mounts.push(mount.into_unmount_drop(UnmountFlags::DETACH)); } Ok(Mounts(mounts)) diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/crates/external/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/crates/external/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/crates/external/Cargo.toml 2018-11-27 22:07:44.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/crates/external/Cargo.toml 2019-01-04 19:14:28.000000000 +0000 @@ -12,7 +12,7 @@ disk-types = "0.1.2" distinst-utils = { path = "../utils" } log = "0.4.5" -proc-mounts = "0.1.0" +proc-mounts = "0.1.2" rand = "0.5.5" sys-mount = "1.1.0" tempdir = "0.3.7" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/debian/changelog distinst-0.3.2~1546629268~18.10~d20fe0c~dev/debian/changelog --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/debian/changelog 2018-11-27 22:07:44.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/debian/changelog 2019-01-04 19:14:28.000000000 +0000 @@ -1,6 +1,6 @@ -distinst (0.3.2~1543356464~18.10~ebabaeb~dev) cosmic; urgency=medium +distinst (0.3.2~1546629268~18.10~d20fe0c~dev) cosmic; urgency=medium * Auto Build - -- Pop OS (ISO Signing Key) Tue, 27 Nov 2018 15:07:44 -0700 + -- Pop OS (ISO Signing Key) Fri, 4 Jan 2019 12:14:28 -0700 diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/src/auto/options/apply.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/src/auto/options/apply.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/src/auto/options/apply.rs 2018-11-27 22:07:44.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/src/auto/options/apply.rs 2019-01-04 19:14:28.000000000 +0000 @@ -323,7 +323,8 @@ .get_partitions_mut() .iter_mut() .find(|d| d.get_device_path() == path) - .ok_or(InstallOptionError::PartitionNotFound { uuid: uuid.clone() })?; + .ok_or(InstallOptionError::PartitionNotFound { uuid: uuid.clone() })? + .set_mount("/recovery".into()); } let (start, end); diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/src/installer/steps/configure/chroot_conf.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/src/installer/steps/configure/chroot_conf.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/src/installer/steps/configure/chroot_conf.rs 2018-11-27 22:07:44.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/src/installer/steps/configure/chroot_conf.rs 2019-01-04 19:14:28.000000000 +0000 @@ -255,11 +255,12 @@ let efi_mount = mounts.get_mount_by_dest(&efi_path) .expect("efi is mount not associated with block device"); - let recovery_partuuid = PartitionID::get_partuuid(&recovery_mount.source) - .expect("/recovery does not have a PartUUID"); let efi_partuuid = PartitionID::get_partuuid(&efi_mount.source) .expect("efi partiton does not have a PartUUID"); + let recovery_partuuid = PartitionID::get_partuuid(&recovery_mount.source) + .expect("/recovery does not have a PartUUID"); + let recovery_uuid = PartitionID::get_uuid(&recovery_mount.source) .or_else(|| PartitionID::get_uuid(&efi_mount.source)) .expect("/recovery does not have a UUID"); @@ -269,6 +270,11 @@ .run_with_stdout()?; let cdrom_uuid = cdrom_uuid.trim(); + // If we are installing from the recovery partition, then we can skip this step. + if recovery_uuid.id == cdrom_uuid { + return Ok(()); + } + let casper = ["casper-", &recovery_uuid.id].concat(); let recovery = ["Recovery-", &recovery_uuid.id].concat(); if recovery_uuid.id != cdrom_uuid { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/arrayvec/build.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/arrayvec/build.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/arrayvec/build.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/arrayvec/build.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,79 @@ + +use std::env; +use std::io::Write; +use std::process::{Command, Stdio}; + +fn main() { + // we need to output *some* file to opt out of the default + println!("cargo:rerun-if-changed=build.rs"); + + detect_maybe_uninit(); +} + +fn detect_maybe_uninit() { + let has_unstable_union_with_md = probe(&maybe_uninit_code(true)); + if has_unstable_union_with_md { + println!("cargo:rustc-cfg=has_manually_drop_in_union"); + println!("cargo:rustc-cfg=has_union_feature"); + return; + } + + let has_stable_union_with_md = probe(&maybe_uninit_code(false)); + if has_stable_union_with_md { + println!("cargo:rustc-cfg=has_manually_drop_in_union"); + } +} + +// To guard against changes in this currently unstable feature, use +// a detection tests instead of a Rustc version and/or date test. +fn maybe_uninit_code(use_feature: bool) -> String { + let feature = if use_feature { "#![feature(untagged_unions)]" } else { "" }; + + let code = " + #![allow(warnings)] + use std::mem::ManuallyDrop; + + #[derive(Copy)] + pub union MaybeUninit { + empty: (), + value: ManuallyDrop, + } + + impl Clone for MaybeUninit where T: Copy + { + fn clone(&self) -> Self { *self } + } + + fn main() { + let value1 = MaybeUninit::<[i32; 3]> { empty: () }; + let value2 = MaybeUninit { value: ManuallyDrop::new([1, 2, 3]) }; + } + "; + + + [feature, code].concat() +} + +/// Test if a code snippet can be compiled +fn probe(code: &str) -> bool { + let rustc = env::var_os("RUSTC").unwrap_or_else(|| "rustc".into()); + let out_dir = env::var_os("OUT_DIR").expect("environment variable OUT_DIR"); + + let mut child = Command::new(rustc) + .arg("--out-dir") + .arg(out_dir) + .arg("--emit=obj") + .arg("-") + .stdin(Stdio::piped()) + .spawn() + .expect("rustc probe"); + + child + .stdin + .as_mut() + .expect("rustc stdin") + .write_all(code.as_bytes()) + .expect("write rustc stdin"); + + child.wait().expect("rustc probe").success() +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/arrayvec/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/arrayvec/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/arrayvec/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/arrayvec/.cargo-checksum.json 2019-01-04 19:47:54.000000000 +0000 @@ -1 +1 @@ -{"files":{".travis.yml":"bf6cbef485df5dc0d0e09b5ac33d36030f2b60a334d68e9b2dbc7a8fb42476c7","Cargo.toml":"e1e5ac21c02995e77e3292b7b66cc0b742d831af25be74568ef4d50a7e90265d","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"0245ee104228a100ce5fceecf43e25faae450494d9173f43fd94c27d69fdac13","README.rst":"e1fcfabc122bed96bd9c7e336167bcef6842553287327a64468096366078c81b","benches/arraystring.rs":"f12b890977117ebde4ca42bcd6b91f2a6a087f2b235aaca6d15e30d125ae9f67","benches/extend.rs":"8c8f78df7e90b62c7e160cf5ea6c61b90bc4035a9704b6a179a1e01d8fafe2e9","custom.css":"e6f2cd299392337b4e2959c52f422e5b7be11920ea98d10db44d10ddef5ed47c","src/array.rs":"9e73f982e33e5ff6dfa86ec139cab9edf17e117563f2595cb263461c1ace3adb","src/array_string.rs":"af240c1194725e382e8d21e07ccb9aa5e9b18f6160c207d8b587002e812bae51","src/char.rs":"64a08f6a743b67bf2c96483f91c2fdaea79f6e91df5cd752f770b16a6b1d5b1e","src/errors.rs":"dde99bffaddfd45396aab7e07642cc018ef5435fe60c4f26a2c05a36555be18c","src/lib.rs":"8ceaa8c793bfd36bce13b940b4bd5bde4a6648f247dc594b8d75d23e930fa2c6","src/range.rs":"65744ab7def208a1ab155ea2448fe9ea7fc14f33211361b1041f540125b32efd","tests/serde.rs":"ef3986a82656b09f3fbb14358e767051ffabe09592c61e69ea695cb88760e8ba","tests/tests.rs":"0d8d54f5f33ed9cb83d8b18fcbce4ee74ae85f1a2d9f65d22ad4a487498534e6"},"package":"a1e964f9e24d588183fcb43503abda40d288c8657dfc27311516ce2f05675aef"} \ No newline at end of file +{"files":{".cargo_vcs_info.json":"8606d4b5a6717e57ded4bcf52ec382ce12ea68bcc5b9e4c3cd12b12b946678be",".travis.yml":"70ef3dafc89ed2fc9cfdea9c871608003408e29672a2e4e56729a40b149238b3","Cargo.toml":"d872ffe6a3ad8b45904f063d969b61f35cc377ecaa5a992c64583eac913de115","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"0245ee104228a100ce5fceecf43e25faae450494d9173f43fd94c27d69fdac13","README.rst":"d12f2eb81aa3c7f3e3eb61bb0eb9ab2aeef395783e70b04123c69fed93d0c521","benches/arraystring.rs":"f12b890977117ebde4ca42bcd6b91f2a6a087f2b235aaca6d15e30d125ae9f67","benches/extend.rs":"8c8f78df7e90b62c7e160cf5ea6c61b90bc4035a9704b6a179a1e01d8fafe2e9","build.rs":"9e9320b95b9f62436d774913c8f2311dbac50bf4bb2ddc347789c90a6e52930c","custom.css":"e6f2cd299392337b4e2959c52f422e5b7be11920ea98d10db44d10ddef5ed47c","src/array.rs":"67fb063ee515bfd4968ede219dff81091a5935ef93529ebd1bb2a716ea3ed3d3","src/array_string.rs":"8a1a4cfc1699e2373815e57dc676a87a30629f91a9e861c866ccc6cb1381eadf","src/char.rs":"64a08f6a743b67bf2c96483f91c2fdaea79f6e91df5cd752f770b16a6b1d5b1e","src/errors.rs":"dde99bffaddfd45396aab7e07642cc018ef5435fe60c4f26a2c05a36555be18c","src/lib.rs":"78c2b07c79c6bc406ffa5706712b34bbb9485637ace84a499a8d8fb7450f93b8","src/maybe_uninit.rs":"7cca39ffe0f122716baaa174b433ff5fe9c93560f8e54fc077a0083500eaa1dd","src/maybe_uninit_nodrop.rs":"7fb2e24bf815dd6e1d104056fa9be4a11de7e0f0e5474742af186c580a6b47cc","src/range.rs":"65744ab7def208a1ab155ea2448fe9ea7fc14f33211361b1041f540125b32efd","tests/serde.rs":"ef3986a82656b09f3fbb14358e767051ffabe09592c61e69ea695cb88760e8ba","tests/tests.rs":"6d14eb73705eb749d5aed26a71af746d72d3c119ee878d4dd86f770305c1ad52"},"package":"92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/arrayvec/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/arrayvec/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/arrayvec/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/arrayvec/Cargo.toml 2019-01-04 19:47:54.000000000 +0000 @@ -12,7 +12,7 @@ [package] name = "arrayvec" -version = "0.4.7" +version = "0.4.10" authors = ["bluss"] description = "A vector with fixed capacity, backed by an array (it can be stored on the stack too). Implements fixed capacity ArrayVec and ArrayString." documentation = "https://docs.rs/arrayvec/" @@ -50,7 +50,11 @@ [dev-dependencies.serde_test] version = "1.0" +[build-dependencies] + [features] +array-sizes-129-255 = [] +array-sizes-33-128 = [] default = ["std"] serde-1 = ["serde"] std = [] diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/arrayvec/.cargo_vcs_info.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/arrayvec/.cargo_vcs_info.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/arrayvec/.cargo_vcs_info.json 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/arrayvec/.cargo_vcs_info.json 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,5 @@ +{ + "git": { + "sha1": "21661facf8f5d65b4bd6701e48d218eb957314fa" + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/arrayvec/README.rst distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/arrayvec/README.rst --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/arrayvec/README.rst 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/arrayvec/README.rst 2019-01-04 19:47:54.000000000 +0000 @@ -22,6 +22,34 @@ Recent Changes (arrayvec) ------------------------- +- 0.4.10 + + - Use ``repr(C)`` in the ``union`` version that was introduced in 0.4.9, to + allay some soundness concerns. + +- 0.4.9 + + - Use ``union`` in the implementation on when this is detected to be supported + (nightly only for now). This is a better solution for treating uninitialized + regions correctly, and we'll use it in stable Rust as soon as we are able. + When this is enabled, the ``ArrayVec`` has no space overhead in its memory + layout, although the size of the vec should not be relied upon. (See `#114`_) + - ``ArrayString`` updated to not use uninitialized memory, it instead zeros its + backing array. This will be refined in the next version, since we + need to make changes to the user visible API. + - The ``use_union`` feature now does nothing (like its documentation foretold). + +.. _`#114`: https://github.com/bluss/arrayvec/pull/114 + +- 0.4.8 + + - Implement Clone and Debug for ``IntoIter`` by @clarcharr + - Add more array sizes under crate features. These cover all in the range + up to 128 and 129 to 255 respectively (we have a few of those by default): + + - ``array-size-33-128`` + - ``array-size-129-255`` + - 0.4.7 - Fix future compat warning about raw pointer casts diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/arrayvec/src/array.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/arrayvec/src/array.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/arrayvec/src/array.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/arrayvec/src/array.rs 2019-01-04 19:47:54.000000000 +0000 @@ -1,5 +1,17 @@ /// Trait for fixed size arrays. +/// +/// This trait is implemented for some specific array sizes, see +/// the implementor list below. At the current state of Rust we can't +/// make this fully general for every array size. +/// +/// The following crate features add more array sizes (and they are not +/// enabled by default due to their impact on compliation speed). +/// +/// - `array-sizes-33-128`: All sizes 33 to 128 are implemented +/// (a few in this range are included by default). +/// - `array-sizes-129-255`: All sizes 129 to 255 are implemented +/// (a few in this range are included by default). pub unsafe trait Array { /// The array’s element type type Item; @@ -65,10 +77,13 @@ unsafe impl Array for [T; $len] { type Item = T; type Index = $index_type; + #[doc(hidden)] #[inline(always)] fn as_ptr(&self) -> *const T { self as *const _ as *const _ } + #[doc(hidden)] #[inline(always)] fn as_mut_ptr(&mut self) -> *mut T { self as *mut _ as *mut _} + #[doc(hidden)] #[inline(always)] fn capacity() -> usize { $len } } @@ -77,15 +92,44 @@ macro_rules! fix_array_impl_recursive { ($index_type:ty, ) => (); - ($index_type:ty, $len:expr, $($more:expr,)*) => ( - fix_array_impl!($index_type, $len); - fix_array_impl_recursive!($index_type, $($more,)*); + ($index_type:ty, $($len:expr,)*) => ( + $(fix_array_impl!($index_type, $len);)* ); } -fix_array_impl_recursive!(u8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 40, 48, 50, 56, 64, 72, 96, 100, 128, 160, 192, 200, 224,); +fix_array_impl_recursive!(u8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, ); + +#[cfg(not(feature="array-sizes-33-128"))] +fix_array_impl_recursive!(u8, 32, 40, 48, 50, 56, 64, 72, 96, 100, 128, ); + +#[cfg(feature="array-sizes-33-128")] +fix_array_impl_recursive!(u8, +32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, +52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, +72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, +92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, +109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, +125, 126, 127, 128, +); + +#[cfg(not(feature="array-sizes-129-255"))] +fix_array_impl_recursive!(u8, 160, 192, 200, 224,); + +#[cfg(feature="array-sizes-129-255")] +fix_array_impl_recursive!(u8, +129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, +141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, +157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, +173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, +189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, +205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, +221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, +237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, +253, 254, 255, +); + fix_array_impl_recursive!(u16, 256, 384, 512, 768, 1024, 2048, 4096, 8192, 16384, 32768,); // This array size doesn't exist on 16-bit #[cfg(any(target_pointer_width="32", target_pointer_width="64"))] diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/arrayvec/src/array_string.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/arrayvec/src/array_string.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/arrayvec/src/array_string.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/arrayvec/src/array_string.rs 2019-01-04 19:47:54.000000000 +0000 @@ -26,6 +26,7 @@ /// if needed. #[derive(Copy)] pub struct ArrayString> { + // FIXME: Use Copyable union for xs when we can xs: A, len: A::Index, } @@ -53,7 +54,8 @@ pub fn new() -> ArrayString { unsafe { ArrayString { - xs: ::new_array(), + // FIXME: Use Copyable union for xs when we can + xs: mem::zeroed(), len: Index::from(0), } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/arrayvec/src/lib.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/arrayvec/src/lib.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/arrayvec/src/lib.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/arrayvec/src/lib.rs 2019-01-04 19:47:54.000000000 +0000 @@ -7,17 +7,12 @@ //! - Optional, enabled by default //! - Use libstd; disable to use `no_std` instead. //! -//! - `use_union` -//! - Optional -//! - Requires Rust nightly channel -//! - Experimental: This flag uses nightly so it *may break* unexpectedly -//! at some point; since it doesn't change API this flag may also change -//! to do nothing in the future. -//! - Use the unstable feature untagged unions for the internal implementation, -//! which may have reduced space overhead //! - `serde-1` //! - Optional //! - Enable serialization for ArrayVec and ArrayString using serde 1.0 +//! - `array-sizes-33-128`, `array-sizes-129-255` +//! - Optional +//! - Enable more array sizes (see [Array] for more information) //! //! ## Rust Version //! @@ -25,13 +20,17 @@ //! #![doc(html_root_url="https://docs.rs/arrayvec/0.4/")] #![cfg_attr(not(feature="std"), no_std)] -extern crate nodrop; +#![cfg_attr(has_union_feature, feature(untagged_unions))] + #[cfg(feature="serde-1")] extern crate serde; #[cfg(not(feature="std"))] extern crate core as std; +#[cfg(not(has_manually_drop_in_union))] +extern crate nodrop; + use std::cmp; use std::iter; use std::mem; @@ -50,11 +49,14 @@ #[cfg(feature="std")] use std::io; -#[cfg(not(feature="use_union"))] -use nodrop::NoDrop; -#[cfg(feature="use_union")] -use std::mem::ManuallyDrop as NoDrop; +#[cfg(has_manually_drop_in_union)] +mod maybe_uninit; +#[cfg(not(has_manually_drop_in_union))] +#[path="maybe_uninit_nodrop.rs"] +mod maybe_uninit; + +use maybe_uninit::MaybeUninit; #[cfg(feature="serde-1")] use serde::{Serialize, Deserialize, Serializer, Deserializer}; @@ -72,14 +74,6 @@ pub use errors::CapacityError; -unsafe fn new_array() -> A { - // Note: Returning an uninitialized value here only works - // if we can be sure the data is never used. The nullable pointer - // inside enum optimization conflicts with this this for example, - // so we need to be extra careful. See `NoDrop` enum. - mem::uninitialized() -} - /// A vector with a fixed capacity. /// /// The `ArrayVec` is a vector backed by a fixed size array. It keeps track of @@ -93,7 +87,7 @@ /// /// ArrayVec can be converted into a by value iterator. pub struct ArrayVec { - xs: NoDrop, + xs: MaybeUninit, len: A::Index, } @@ -130,7 +124,7 @@ /// ``` pub fn new() -> ArrayVec { unsafe { - ArrayVec { xs: NoDrop::new(new_array()), len: Index::from(0) } + ArrayVec { xs: MaybeUninit::uninitialized(), len: Index::from(0) } } } @@ -257,7 +251,8 @@ /// It is an error if the index is greater than the length or if the /// arrayvec is full. /// - /// ***Panics*** on errors. See `try_result` for fallible version. + /// ***Panics*** if the array is full or the `index` is out of bounds. See + /// `try_insert` for fallible version. /// /// ``` /// use arrayvec::ArrayVec; @@ -513,7 +508,6 @@ self.len = Index::from(length); } - /// Create a draining iterator that removes the specified range in the vector /// and yields the removed items from start to end. The element range is /// removed even if the iterator is not consumed until the end. @@ -573,7 +567,7 @@ Err(self) } else { unsafe { - let array = ptr::read(&*self.xs); + let array = ptr::read(self.xs.ptr() as *const A); mem::forget(self); Ok(array) } @@ -602,7 +596,7 @@ #[inline] fn deref(&self) -> &[A::Item] { unsafe { - slice::from_raw_parts(self.xs.as_ptr(), self.len()) + slice::from_raw_parts(self.xs.ptr(), self.len()) } } } @@ -612,7 +606,7 @@ fn deref_mut(&mut self) -> &mut [A::Item] { let len = self.len(); unsafe { - slice::from_raw_parts_mut(self.xs.as_mut_ptr(), len) + slice::from_raw_parts_mut(self.xs.ptr_mut(), len) } } } @@ -628,7 +622,7 @@ /// ``` impl From for ArrayVec { fn from(array: A) -> Self { - ArrayVec { xs: NoDrop::new(array), len: Index::from(A::capacity()) } + ArrayVec { xs: MaybeUninit::from(array), len: Index::from(A::capacity()) } } } @@ -747,6 +741,30 @@ } } +impl Clone for IntoIter +where + A::Item: Clone, +{ + fn clone(&self) -> IntoIter { + self.v[self.index.to_usize()..] + .iter() + .cloned() + .collect::>() + .into_iter() + } +} + +impl fmt::Debug for IntoIter +where + A::Item: fmt::Debug, +{ + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + f.debug_list() + .entries(&self.v[self.index.to_usize()..]) + .finish() + } +} + /// A draining iterator for `ArrayVec`. pub struct Drain<'a, A> where A: Array, @@ -893,22 +911,16 @@ fn clone_from(&mut self, rhs: &Self) { // recursive case for the common prefix let prefix = cmp::min(self.len(), rhs.len()); - { - let a = &mut self[..prefix]; - let b = &rhs[..prefix]; - for i in 0..prefix { - a[i].clone_from(&b[i]); - } - } + self[..prefix].clone_from_slice(&rhs[..prefix]); + if prefix < self.len() { // rhs was shorter for _ in 0..self.len() - prefix { self.pop(); } } else { - for elt in &rhs[self.len()..] { - self.push(elt.clone()); - } + let rhs_elems = rhs[self.len()..].iter().cloned(); + self.extend(rhs_elems); } } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/arrayvec/src/maybe_uninit_nodrop.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/arrayvec/src/maybe_uninit_nodrop.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/arrayvec/src/maybe_uninit_nodrop.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/arrayvec/src/maybe_uninit_nodrop.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,41 @@ + +use array::Array; +use nodrop::NoDrop; +use std::mem::uninitialized; + +/// A combination of NoDrop and “maybe uninitialized”; +/// this wraps a value that can be wholly or partially uninitialized. +/// +/// NOTE: This is known to not be a good solution, but it's the one we have kept +/// working on stable Rust. Stable improvements are encouraged, in any form, +/// but of course we are waiting for a real, stable, MaybeUninit. +pub struct MaybeUninit(NoDrop); +// why don't we use ManuallyDrop here: It doesn't inhibit +// enum layout optimizations that depend on T, and we support older Rust. + +impl MaybeUninit { + /// Create a new MaybeUninit with uninitialized interior + pub unsafe fn uninitialized() -> Self { + Self::from(uninitialized()) + } + + /// Create a new MaybeUninit from the value `v`. + pub fn from(v: T) -> Self { + MaybeUninit(NoDrop::new(v)) + } + + /// Return a raw pointer to the start of the interior array + pub fn ptr(&self) -> *const T::Item + where T: Array + { + &*self.0 as *const T as *const _ + } + + /// Return a mut raw pointer to the start of the interior array + pub fn ptr_mut(&mut self) -> *mut T::Item + where T: Array + { + &mut *self.0 as *mut T as *mut _ + } +} + diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/arrayvec/src/maybe_uninit.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/arrayvec/src/maybe_uninit.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/arrayvec/src/maybe_uninit.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/arrayvec/src/maybe_uninit.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,46 @@ + + +use array::Array; +use std::mem::ManuallyDrop; + +/// A combination of ManuallyDrop and “maybe uninitialized”; +/// this wraps a value that can be wholly or partially uninitialized; +/// it also has no drop regardless of the type of T. +#[repr(C)] // for cast from self ptr to value +pub union MaybeUninit { + empty: (), + value: ManuallyDrop, +} +// Why we don't use std's MaybeUninit on nightly? See the ptr method + +impl MaybeUninit { + /// Create a new MaybeUninit with uninitialized interior + pub unsafe fn uninitialized() -> Self { + MaybeUninit { empty: () } + } + + /// Create a new MaybeUninit from the value `v`. + pub fn from(v: T) -> Self { + MaybeUninit { value: ManuallyDrop::new(v) } + } + + // Raw pointer casts written so that we don't reference or access the + // uninitialized interior value + + /// Return a raw pointer to the start of the interior array + pub fn ptr(&self) -> *const T::Item + where T: Array + { + // std MaybeUninit creates a &self.value reference here which is + // not guaranteed to be sound in our case - we will partially + // initialize the value, not always wholly. + self as *const _ as *const T::Item + } + + /// Return a mut raw pointer to the start of the interior array + pub fn ptr_mut(&mut self) -> *mut T::Item + where T: Array + { + self as *mut _ as *mut T::Item + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/arrayvec/tests/tests.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/arrayvec/tests/tests.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/arrayvec/tests/tests.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/arrayvec/tests/tests.rs 2019-01-04 19:47:54.000000000 +0000 @@ -55,6 +55,7 @@ let flag = &Cell::new(0); + #[derive(Clone)] struct Bump<'a>(&'a Cell); impl<'a> Drop for Bump<'a> { @@ -105,6 +106,24 @@ assert_eq!(flag.get(), 3); } + // test cloning into_iter + flag.set(0); + { + let mut array = ArrayVec::<[_; 3]>::new(); + array.push(Bump(flag)); + array.push(Bump(flag)); + array.push(Bump(flag)); + let mut iter = array.into_iter(); + assert_eq!(flag.get(), 0); + iter.next(); + assert_eq!(flag.get(), 1); + let clone = iter.clone(); + assert_eq!(flag.get(), 1); + drop(clone); + assert_eq!(flag.get(), 3); + drop(iter); + assert_eq!(flag.get(), 5); + } } #[test] @@ -146,6 +165,14 @@ } #[test] +fn test_still_works_with_option_arrayvec() { + type RefArray = ArrayVec<[&'static i32; 2]>; + let array = Some(RefArray::new()); + assert!(array.is_some()); + println!("{:?}", array); +} + +#[test] fn test_drain() { let mut v = ArrayVec::from([0; 8]); v.pop(); @@ -466,3 +493,27 @@ assert_eq!(s.len(), 0); assert_eq!(v.len(), 0); } + +#[cfg(feature="array-sizes-33-128")] +#[test] +fn test_sizes_33_128() { + ArrayVec::from([0u8; 52]); + ArrayVec::from([0u8; 127]); +} + +#[cfg(feature="array-sizes-129-255")] +#[test] +fn test_sizes_129_255() { + ArrayVec::from([0u8; 237]); + ArrayVec::from([0u8; 255]); +} + + +#[test] +fn test_nightly_uses_maybe_uninit() { + if option_env!("ARRAYVECTEST_ENSURE_UNION").map(|s| !s.is_empty()).unwrap_or(false) { + assert!(cfg!(has_manually_drop_in_union)); + type ByteArray = ArrayVec<[u8; 4]>; + assert!(mem::size_of::() == 5); + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/arrayvec/.travis.yml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/arrayvec/.travis.yml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/arrayvec/.travis.yml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/arrayvec/.travis.yml 2019-01-04 19:47:54.000000000 +0000 @@ -9,21 +9,30 @@ env: - NODEFAULT=1 - NODROP_FEATURES='use_needs_drop' + - rust: 1.22.1 + env: + - FEATURES='array-sizes-33-128 array-sizes-129-255' + - rust: stable + env: + - FEATURES='array-sizes-33-128 array-sizes-129-255' - rust: beta - rust: nightly env: - NODEFAULT=1 + - ARRAYVECTEST_ENSURE_UNION=1 - rust: nightly env: - NODROP_FEATURES='use_needs_drop' + - ARRAYVECTEST_ENSURE_UNION=1 - rust: nightly env: - FEATURES='serde use_union' - NODROP_FEATURES='use_union' + - ARRAYVECTEST_ENSURE_UNION=1 branches: only: - master - - 0.3 + - 0.4 script: - | ([ ! -z "$NODROP_FEATURES" ] || cargo build --verbose --features "$FEATURES") && diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/.cargo-checksum.json 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/.cargo-checksum.json 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1 @@ +{"files":{".travis.yml":"016518ad2bdeaa60d4b31ba660a190c852af52f1e2f29fdb6d2d734c5d15961e","Cargo.toml":"45d83bf70a43c91ae7b441e0bb9e6be43f6f10e96f59eee58855a92beeeb0bd8","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"27995d58ad5c1145c1a8cd86244ce844886958a35eb2b78c6b772748669999ac","README.md":"9deb6c4ce1011130eb2d2e32c47a9d3e82237c45a4e5a4f7ef0a7bb687b0e345","examples/integers.rs":"589ff4271566dfa322becddf3e2c7b592e6e0bc97b02892ce75619b7e452e930","examples/paths.rs":"1b30e466b824ce8df7ad0a55334424131d9d2573d6cf9f7d5d50c09c8901d526","examples/traits.rs":"cbee6a3e1f7db60b02ae25b714926517144a77cb492021f492774cf0e1865a9e","examples/versions.rs":"38535e6d9f5bfae0de474a3db79a40e8f5da8ba9334c5ff4c363de9bc99d4d12","src/error.rs":"12de7dafea4a35d1dc2f0fa79bfa038386bbbea72bf083979f4ddf227999eeda","src/lib.rs":"b4ae89dfb38d979badba9b3e6b8e170be53a210e3d3cd566746a9bc2aec20a23","src/tests.rs":"34bdceeffdbdd7f2535a6ed8272482b17325dba044c91bb96f3f8caeec58a83d","src/version.rs":"165324950f2195aaf068c47a4f2f0992b2bf18d8b7f4f17b6b264767523c0e5d"},"package":"4e5f34df7a019573fb8bdc7e24a2bfebe51a2a1d6bfdbaeccedb3c41fc574727"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/Cargo.toml 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/Cargo.toml 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,24 @@ +# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO +# +# When uploading crates to the registry Cargo will automatically +# "normalize" Cargo.toml files for maximal compatibility +# with all versions of Cargo and also rewrite `path` dependencies +# to registry (e.g. crates.io) dependencies +# +# If you believe there's an error in this file please file an +# issue against the rust-lang/cargo repository. If you're +# editing this file be aware that the upstream Cargo.toml +# will likely look very different (and much more reasonable) + +[package] +name = "autocfg" +version = "0.1.1" +authors = ["Josh Stone "] +description = "Automatic cfg for Rust compiler features" +readme = "README.md" +keywords = ["rustc", "build", "autoconf"] +categories = ["development-tools::build-utils"] +license = "Apache-2.0/MIT" +repository = "https://github.com/cuviper/autocfg" + +[dependencies] diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/examples/integers.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/examples/integers.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/examples/integers.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/examples/integers.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,9 @@ +extern crate autocfg; + +fn main() { + // Normally, cargo will set `OUT_DIR` for build scripts. + let ac = autocfg::AutoCfg::with_dir("target").unwrap(); + for i in 3..8 { + ac.emit_has_type(&format!("i{}", 1 << i)); + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/examples/paths.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/examples/paths.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/examples/paths.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/examples/paths.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,22 @@ +extern crate autocfg; + +fn main() { + // Normally, cargo will set `OUT_DIR` for build scripts. + let ac = autocfg::AutoCfg::with_dir("target").unwrap(); + + // since ancient times... + ac.emit_has_path("std::vec::Vec"); + ac.emit_path_cfg("std::vec::Vec", "has_vec"); + + // rustc 1.10.0 + ac.emit_has_path("std::panic::PanicInfo"); + ac.emit_path_cfg("std::panic::PanicInfo", "has_panic_info"); + + // rustc 1.20.0 + ac.emit_has_path("std::mem::ManuallyDrop"); + ac.emit_path_cfg("std::mem::ManuallyDrop", "has_manually_drop"); + + // rustc 1.25.0 + ac.emit_has_path("std::ptr::NonNull"); + ac.emit_path_cfg("std::ptr::NonNull", "has_non_null"); +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/examples/traits.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/examples/traits.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/examples/traits.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/examples/traits.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,26 @@ +extern crate autocfg; + +fn main() { + // Normally, cargo will set `OUT_DIR` for build scripts. + let ac = autocfg::AutoCfg::with_dir("target").unwrap(); + + // since ancient times... + ac.emit_has_trait("std::ops::Add"); + ac.emit_trait_cfg("std::ops::Add", "has_ops"); + + // trait parameters have to be provided + ac.emit_has_trait("std::borrow::Borrow"); + ac.emit_trait_cfg("std::borrow::Borrow", "has_borrow"); + + // rustc 1.8.0 + ac.emit_has_trait("std::ops::AddAssign"); + ac.emit_trait_cfg("std::ops::AddAssign", "has_assign_ops"); + + // rustc 1.12.0 + ac.emit_has_trait("std::iter::Sum"); + ac.emit_trait_cfg("std::iter::Sum", "has_sum"); + + // rustc 1.28.0 + ac.emit_has_trait("std::alloc::GlobalAlloc"); + ac.emit_trait_cfg("std::alloc::GlobalAlloc", "has_global_alloc"); +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/examples/versions.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/examples/versions.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/examples/versions.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/examples/versions.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,9 @@ +extern crate autocfg; + +fn main() { + // Normally, cargo will set `OUT_DIR` for build scripts. + let ac = autocfg::AutoCfg::with_dir("target").unwrap(); + for i in 0..100 { + ac.emit_rustc_version(1, i); + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/LICENSE-APACHE distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/LICENSE-APACHE --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/LICENSE-APACHE 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/LICENSE-APACHE 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,201 @@ + 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 -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/LICENSE-MIT distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/LICENSE-MIT --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/LICENSE-MIT 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/LICENSE-MIT 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,25 @@ +Copyright (c) 2018 Josh Stone + +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 -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/README.md distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/README.md --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/README.md 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/README.md 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,61 @@ +autocfg +======= + +[![autocfg crate](https://img.shields.io/crates/v/autocfg.svg)](https://crates.io/crates/autocfg) +[![autocfg documentation](https://docs.rs/autocfg/badge.svg)](https://docs.rs/autocfg) +![minimum rustc 1.0](https://img.shields.io/badge/rustc-1.0+-red.svg) +[![Travis Status](https://travis-ci.org/cuviper/autocfg.svg?branch=master)](https://travis-ci.org/cuviper/autocfg) + +A Rust library for build scripts to automatically configure code based on +compiler support. Code snippets are dynamically tested to see if the `rustc` +will accept them, rather than hard-coding specific version support. + + +## Usage + +Add this to your `Cargo.toml`: + +```toml +[build-dependencies] +autocfg = "0.1" +``` + +Then use it in your `build.rs` script to detect compiler features. For +example, to test for 128-bit integer support, it might look like: + +```rust +extern crate autocfg; + +fn main() { + let ac = autocfg::new(); + ac.emit_has_type("i128"); + + // (optional) We don't need to rerun for anything external. + println!("cargo:rerun-if-changed=build.rs"); +} +``` + +If the type test succeeds, this will write a `cargo:rustc-cfg=has_i128` line +for Cargo, which translates to Rust arguments `--cfg has_i128`. Then in the +rest of your Rust code, you can add `#[cfg(has_i128)]` conditions on code that +should only be used when the compiler supports it. + + +## Minimum Rust version policy + +This crate's minimum supported `rustc` version is `1.0.0`. Compatibility is +its entire reason for existence, so this crate will be extremely conservative +about raising this requirement. If this is ever deemed necessary, it will be +treated as a major breaking change for semver purposes. + + +## License + +This project is licensed under either of + + * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or + http://www.apache.org/licenses/LICENSE-2.0) + * MIT license ([LICENSE-MIT](LICENSE-MIT) or + http://opensource.org/licenses/MIT) + +at your option. diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/src/error.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/src/error.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/src/error.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/src/error.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,69 @@ +use std::error; +use std::fmt; +use std::io; +use std::num; +use std::str; + +/// A common error type for the `autocfg` crate. +#[derive(Debug)] +pub struct Error { + kind: ErrorKind, +} + +impl error::Error for Error { + fn description(&self) -> &str { + "AutoCfg error" + } + + fn cause(&self) -> Option<&error::Error> { + match self.kind { + ErrorKind::Io(ref e) => Some(e), + ErrorKind::Num(ref e) => Some(e), + ErrorKind::Utf8(ref e) => Some(e), + ErrorKind::Other(_) => None, + } + } +} + +impl fmt::Display for Error { + fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> { + match self.kind { + ErrorKind::Io(ref e) => e.fmt(f), + ErrorKind::Num(ref e) => e.fmt(f), + ErrorKind::Utf8(ref e) => e.fmt(f), + ErrorKind::Other(s) => s.fmt(f), + } + } +} + +#[derive(Debug)] +enum ErrorKind { + Io(io::Error), + Num(num::ParseIntError), + Utf8(str::Utf8Error), + Other(&'static str), +} + +pub fn from_io(e: io::Error) -> Error { + Error { + kind: ErrorKind::Io(e), + } +} + +pub fn from_num(e: num::ParseIntError) -> Error { + Error { + kind: ErrorKind::Num(e), + } +} + +pub fn from_utf8(e: str::Utf8Error) -> Error { + Error { + kind: ErrorKind::Utf8(e), + } +} + +pub fn from_str(s: &'static str) -> Error { + Error { + kind: ErrorKind::Other(s), + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/src/lib.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/src/lib.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/src/lib.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/src/lib.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,263 @@ +//! A Rust library for build scripts to automatically configure code based on +//! compiler support. Code snippets are dynamically tested to see if the `rustc` +//! will accept them, rather than hard-coding specific version support. +//! +//! +//! ## Usage +//! +//! Add this to your `Cargo.toml`: +//! +//! ```toml +//! [build-dependencies] +//! autocfg = "0.1" +//! ``` +//! +//! Then use it in your `build.rs` script to detect compiler features. For +//! example, to test for 128-bit integer support, it might look like: +//! +//! ```rust +//! extern crate autocfg; +//! +//! fn main() { +//! # // Normally, cargo will set `OUT_DIR` for build scripts. +//! # std::env::set_var("OUT_DIR", "target"); +//! let ac = autocfg::new(); +//! ac.emit_has_type("i128"); +//! +//! // (optional) We don't need to rerun for anything external. +//! println!("cargo:rerun-if-changed=build.rs"); +//! } +//! ``` +//! +//! If the type test succeeds, this will write a `cargo:rustc-cfg=has_i128` line +//! for Cargo, which translates to Rust arguments `--cfg has_i128`. Then in the +//! rest of your Rust code, you can add `#[cfg(has_i128)]` conditions on code that +//! should only be used when the compiler supports it. + +#![deny(missing_debug_implementations)] +#![deny(missing_docs)] + +use std::env; +use std::ffi::OsString; +use std::fs; +use std::io::Write; +use std::path::PathBuf; +use std::process::{Command, Stdio}; + +mod error; +pub use error::Error; + +mod version; +use version::Version; + +#[cfg(test)] +mod tests; + +/// Helper to detect compiler features for `cfg` output in build scripts. +#[derive(Clone, Debug)] +pub struct AutoCfg { + out_dir: PathBuf, + rustc: PathBuf, + rustc_version: Version, + target: Option, +} + +/// Writes a config flag for rustc on standard out. +pub fn emit(cfg: &str) { + println!("cargo:rustc-cfg={}", cfg); +} + +/// Create a new `AutoCfg` instance. +/// +/// # Panics +/// +/// Panics if `AutoCfg::new()` returns an error. +pub fn new() -> AutoCfg { + AutoCfg::new().unwrap() +} + +impl AutoCfg { + /// Create a new `AutoCfg` instance. + /// + /// # Common errors + /// + /// - `rustc` can't be executed, from `RUSTC` or in the `PATH`. + /// - The version output from `rustc` can't be parsed. + /// - `OUT_DIR` is not set in the environment, or is not a writable directory. + /// + pub fn new() -> Result { + match env::var_os("OUT_DIR") { + Some(d) => Self::with_dir(d), + None => Err(error::from_str("no OUT_DIR specified!")), + } + } + + /// Create a new `AutoCfg` instance with the specified output directory. + /// + /// # Common errors + /// + /// - `rustc` can't be executed, from `RUSTC` or in the `PATH`. + /// - The version output from `rustc` can't be parsed. + /// - `dir` is not a writable directory. + /// + pub fn with_dir>(dir: T) -> Result { + let rustc = env::var_os("RUSTC").unwrap_or_else(|| "rustc".into()); + let rustc: PathBuf = rustc.into(); + let rustc_version = try!(Version::from_rustc(&rustc)); + + // Sanity check the output directory + let dir = dir.into(); + let meta = try!(fs::metadata(&dir).map_err(error::from_io)); + if !meta.is_dir() || meta.permissions().readonly() { + return Err(error::from_str("output path is not a writable directory")); + } + + Ok(AutoCfg { + out_dir: dir, + rustc: rustc, + rustc_version: rustc_version, + target: env::var_os("TARGET"), + }) + } + + /// Test whether the current `rustc` reports a version greater than + /// or equal to "`major`.`minor`". + pub fn probe_rustc_version(&self, major: usize, minor: usize) -> bool { + self.rustc_version >= Version::new(major, minor, 0) + } + + /// Sets a `cfg` value of the form `rustc_major_minor`, like `rustc_1_29`, + /// if the current `rustc` is at least that version. + pub fn emit_rustc_version(&self, major: usize, minor: usize) { + if self.probe_rustc_version(major, minor) { + emit(&format!("rustc_{}_{}", major, minor)); + } + } + + fn probe>(&self, code: T) -> Result { + use std::sync::atomic::{AtomicUsize, Ordering, ATOMIC_USIZE_INIT}; + + static ID: AtomicUsize = ATOMIC_USIZE_INIT; + + let id = ID.fetch_add(1, Ordering::Relaxed); + let mut command = Command::new(&self.rustc); + command + .arg(format!("--crate-name=probe{}", id)) + .arg("--crate-type=lib") + .arg("--out-dir") + .arg(&self.out_dir) + .arg("--emit=llvm-ir"); + + if let Some(target) = self.target.as_ref() { + command.arg("--target").arg(target); + } + + command.arg("-").stdin(Stdio::piped()); + let mut child = try!(command.spawn().map_err(error::from_io)); + try!( + child + .stdin + .take() + .expect("rustc stdin") + .write_all(code.as_ref()) + .map_err(error::from_io) + ); + + let status = try!(child.wait().map_err(error::from_io)); + Ok(status.success()) + } + + /// Tests whether the given path can be used. + /// + /// The test code is subject to change, but currently looks like: + /// + /// ```ignore + /// pub use PATH; + /// ``` + pub fn probe_path(&self, path: &str) -> bool { + self.probe(format!("pub use {};", path)).unwrap_or(false) + } + + /// Emits a config value `has_PATH` if `probe_path` returns true. + /// + /// Any non-identifier characters in the `path` will be replaced with + /// `_` in the generated config value. + pub fn emit_has_path(&self, path: &str) { + if self.probe_path(path) { + emit(&format!("has_{}", mangle(path))); + } + } + + /// Emits the given `cfg` value if `probe_path` returns true. + pub fn emit_path_cfg(&self, path: &str, cfg: &str) { + if self.probe_path(path) { + emit(cfg); + } + } + + /// Tests whether the given trait can be used. + /// + /// The test code is subject to change, but currently looks like: + /// + /// ```ignore + /// pub trait Probe: TRAIT + Sized {} + /// ``` + pub fn probe_trait(&self, name: &str) -> bool { + self.probe(format!("pub trait Probe: {} + Sized {{}}", name)) + .unwrap_or(false) + } + + /// Emits a config value `has_TRAIT` if `probe_trait` returns true. + /// + /// Any non-identifier characters in the trait `name` will be replaced with + /// `_` in the generated config value. + pub fn emit_has_trait(&self, name: &str) { + if self.probe_trait(name) { + emit(&format!("has_{}", mangle(name))); + } + } + + /// Emits the given `cfg` value if `probe_trait` returns true. + pub fn emit_trait_cfg(&self, name: &str, cfg: &str) { + if self.probe_trait(name) { + emit(cfg); + } + } + + /// Tests whether the given type can be used. + /// + /// The test code is subject to change, but currently looks like: + /// + /// ```ignore + /// pub type Probe = TYPE; + /// ``` + pub fn probe_type(&self, name: &str) -> bool { + self.probe(format!("pub type Probe = {};", name)) + .unwrap_or(false) + } + + /// Emits a config value `has_TYPE` if `probe_type` returns true. + /// + /// Any non-identifier characters in the type `name` will be replaced with + /// `_` in the generated config value. + pub fn emit_has_type(&self, name: &str) { + if self.probe_type(name) { + emit(&format!("has_{}", mangle(name))); + } + } + + /// Emits the given `cfg` value if `probe_type` returns true. + pub fn emit_type_cfg(&self, name: &str, cfg: &str) { + if self.probe_type(name) { + emit(cfg); + } + } +} + +fn mangle(s: &str) -> String { + s.chars() + .map(|c| match c { + 'A'...'Z' | 'a'...'z' | '0'...'9' => c, + _ => '_', + }).collect() +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/src/tests.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/src/tests.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/src/tests.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/src/tests.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,57 @@ +use super::AutoCfg; + +#[test] +fn autocfg_version() { + let ac = AutoCfg::with_dir("target").unwrap(); + println!("version: {:?}", ac.rustc_version); + assert!(ac.probe_rustc_version(1, 0)); +} + +#[test] +fn version_cmp() { + use super::version::Version; + let v123 = Version::new(1, 2, 3); + + assert!(Version::new(1, 0, 0) < v123); + assert!(Version::new(1, 2, 2) < v123); + assert!(Version::new(1, 2, 3) == v123); + assert!(Version::new(1, 2, 4) > v123); + assert!(Version::new(1, 10, 0) > v123); + assert!(Version::new(2, 0, 0) > v123); +} + +#[test] +fn probe_add() { + let ac = AutoCfg::with_dir("target").unwrap(); + assert!(ac.probe_path("std::ops::Add")); + assert!(ac.probe_trait("std::ops::Add")); + assert!(ac.probe_trait("std::ops::Add")); + assert!(ac.probe_trait("std::ops::Add")); + assert!(ac.probe_type("std::ops::Add")); +} + +#[test] +fn probe_as_ref() { + let ac = AutoCfg::with_dir("target").unwrap(); + assert!(ac.probe_path("std::convert::AsRef")); + assert!(ac.probe_trait("std::convert::AsRef")); + assert!(ac.probe_type("std::convert::AsRef")); +} + +#[test] +fn probe_i128() { + let ac = AutoCfg::with_dir("target").unwrap(); + let missing = !ac.probe_rustc_version(1, 26); + assert!(missing ^ ac.probe_path("std::i128")); + assert!(missing ^ ac.probe_type("i128")); +} + +#[test] +fn probe_sum() { + let ac = AutoCfg::with_dir("target").unwrap(); + let missing = !ac.probe_rustc_version(1, 12); + assert!(missing ^ ac.probe_path("std::iter::Sum")); + assert!(missing ^ ac.probe_trait("std::iter::Sum")); + assert!(missing ^ ac.probe_trait("std::iter::Sum")); + assert!(missing ^ ac.probe_type("std::iter::Sum")); +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/src/version.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/src/version.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/src/version.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/src/version.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,62 @@ +use std::path::Path; +use std::process::Command; +use std::str; + +use super::{error, Error}; + +/// A version structure for making relative comparisons. +#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] +pub struct Version { + major: usize, + minor: usize, + patch: usize, +} + +impl Version { + /// Creates a `Version` instance for a specific `major.minor.patch` version. + pub fn new(major: usize, minor: usize, patch: usize) -> Self { + Version { + major: major, + minor: minor, + patch: patch, + } + } + + pub fn from_rustc(rustc: &Path) -> Result { + // Get rustc's verbose version + let output = try!( + Command::new(rustc) + .args(&["--version", "--verbose"]) + .output() + .map_err(error::from_io) + ); + if !output.status.success() { + return Err(error::from_str("could not execute rustc")); + } + let output = try!(str::from_utf8(&output.stdout).map_err(error::from_utf8)); + + // Find the release line in the verbose version output. + let release = match output.lines().find(|line| line.starts_with("release: ")) { + Some(line) => &line["release: ".len()..], + None => return Err(error::from_str("could not find rustc release")), + }; + + // Strip off any extra channel info, e.g. "-beta.N", "-nightly" + let version = match release.find('-') { + Some(i) => &release[..i], + None => release, + }; + + // Split the version into semver components. + let mut iter = version.splitn(3, '.'); + let major = try!(iter.next().ok_or(error::from_str("missing major version"))); + let minor = try!(iter.next().ok_or(error::from_str("missing minor version"))); + let patch = try!(iter.next().ok_or(error::from_str("missing patch version"))); + + Ok(Version::new( + try!(major.parse().map_err(error::from_num)), + try!(minor.parse().map_err(error::from_num)), + try!(patch.parse().map_err(error::from_num)), + )) + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/.travis.yml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/.travis.yml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/autocfg/.travis.yml 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/autocfg/.travis.yml 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,11 @@ +language: rust +rust: + - 1.0.0 + - 1.5.0 + - 1.10.0 + - 1.15.0 + - 1.20.0 + - 1.25.0 + - stable + - beta + - nightly diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/appveyor.yml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/appveyor.yml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/appveyor.yml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/appveyor.yml 2019-01-04 19:47:54.000000000 +0000 @@ -18,3 +18,9 @@ test_script: - cargo test --target %TARGET% + - cargo build --target %TARGET% --no-default-features + - cargo build --target %TARGET% --no-default-features --features dbghelp + +branches: + only: + - master diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/build.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/build.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/build.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/build.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,13 @@ +extern crate autocfg; + +fn main() { + let ac = autocfg::new(); + + // ffi types moved from `std` to `core` in Rust 1.30, so we need to adjust imports based on + // this. + // + // + ac.emit_rustc_version(1, 30); + + println!("cargo:rerun-if-changed=build.rs"); +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/.cargo-checksum.json 2019-01-04 19:47:54.000000000 +0000 @@ -1 +1 @@ -{"files":{".gitmodules":"4d659086ee4fa6cff644c23a4c86410dcf672bbd3b0f55127b0be7b80f32aa87",".travis.yml":"78ec96336927928ba6b4214ff75ae6e2743485aabb48127add1c7f2bb98573ab","Cargo.toml":"8f2c15cc33e55c532bef00c06823eb9d06676b0e674f330cf78c6bbdf957ab21","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"914767b814ee5c5d794468902d1863649a8cfec36072df81884d396580e9748a","appveyor.yml":"568f76b9e68b862e3a21c64ce34894ff5e753c6019f45de27df0335809420030","ci/android-ndk.sh":"89fafa41d08ff477f949bfc163d04d1eb34fdee370f7a695cfba4ef34c164a55","ci/docker/aarch64-linux-android/Dockerfile":"c97f23fe2892f406d3deb7479c89e1c1dbbdbd0db456ac699f9399852300348d","ci/docker/aarch64-unknown-linux-gnu/Dockerfile":"97fa8f20c6899ee36b47371d485b64a2e96b626a2746b5f434c01eae9168b2a1","ci/docker/arm-linux-androideabi/Dockerfile":"11f6963365de062cf0ac81debec00aee29932df2714d8505f9f6383722d211a8","ci/docker/arm-unknown-linux-gnueabihf/Dockerfile":"41133d712ef13f05e67796857db86476b3ed9c6355d5eb56115575b06d739e04","ci/docker/armv7-linux-androideabi/Dockerfile":"39038d17a423683e0af27a050b34dea610729fb0085814ec6c81726a7f52556f","ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile":"2a216244baad705491f249278083994bf68744a2759f51e768b2f92e0da7c360","ci/docker/i586-unknown-linux-gnu/Dockerfile":"ef898c914590d721488ca11e62f3d7c26852346e1612deb0f3e12ab011187109","ci/docker/i686-linux-android/Dockerfile":"9181e5fe5503077652659bc3353c3c21fcf4fc6b03730430fb40d6adc3096079","ci/docker/i686-unknown-linux-gnu/Dockerfile":"ef898c914590d721488ca11e62f3d7c26852346e1612deb0f3e12ab011187109","ci/docker/powerpc-unknown-linux-gnu/Dockerfile":"83e0e3adbb2d6f2398e70d2c8f71ee301fe99e24554f902602c2f2bb067c2f2c","ci/docker/powerpc64-unknown-linux-gnu/Dockerfile":"828b657e1748bcd8d331794624d5fc1cd07087a051e507eb9206757985194bf1","ci/docker/x86_64-linux-android/Dockerfile":"074bb2906ba587466490ab9d802eb817b9f23eb54aa095ee53e1a33be5569328","ci/docker/x86_64-pc-windows-gnu/Dockerfile":"0822e270108ec39a6b93721598156031a0469ed680e62ce4acd13bbb1a952b9d","ci/docker/x86_64-unknown-linux-gnu/Dockerfile":"e1c202a6831b17e017b4737e80d5b992905895b086bbc06285fc9c337cadbc23","ci/docker/x86_64-unknown-linux-musl/Dockerfile":"2efbba08cc8fff8d2431dde92517df7d122dc754c778820c668f1ac29a885290","ci/run-docker.sh":"517db62fa790712734a1410b27995134ec88c613a0cae548382fb0d3f0b55080","ci/run.sh":"30a3807c195cd86d8b8884e1228cd061aa112b26c54277beebf5108777a36fe9","examples/backtrace.rs":"fd6e1cc6c3378ec7d41cd03b2bef187051298dceb01147e71f207dbb8a0c4867","examples/raw.rs":"f07be26d1f97cd7ac79290ac99d19c4eec5d27031fe270ab5364c25d9c2ad9e0","src/backtrace/dbghelp.rs":"d052fa4bcb4f3c012e0066d01c18d89a9c0003a6e022ebdca5a03bf09ab7a973","src/backtrace/libunwind.rs":"cc9cdc1d389571cdedf43dfc2d39b8c3af85531a3965ed700c724f436afb213e","src/backtrace/mod.rs":"91a544bd9e89da6b580e2580ab15ead354f13243bca50516ff5cefe68a8cd199","src/backtrace/noop.rs":"dc4a6602e9852b945c382194402314d3d68c8ca90199af9a8159419fb91a3c99","src/backtrace/unix_backtrace.rs":"31204989a8852428792a1c99d36717559aad14d93526e8a37744214adf188268","src/capture.rs":"a6f379300f6a578c52fce5927461fb0d084b2eb080113561a2e0cc11aa1f5c73","src/dylib.rs":"09f3d7f32849cf0daa4de9df48f8e4a4d5ba62e20723c79578201bd271dc4777","src/lib.rs":"e0176033b10579b02228f8860a4beb684fa4c246dc6225425ebe8897c662b589","src/symbolize/coresymbolication.rs":"95c7dab3e65dd7217de5dd22cd550192c1505dfada56040197675ea3b9b380f1","src/symbolize/dbghelp.rs":"6bf7c3cc9542e4084aca417b67af25da0d0caa7df83787e92046f5918d32e9d8","src/symbolize/dladdr.rs":"8287cbca440a9e92e74d88c5a7b920f6b4cf6d8f50bc8b0f61aca5ba42d5b5ec","src/symbolize/gimli.rs":"c385d4ac9a2c87c1eddf5a999bb17d46ff400026766e8c8b1fef7afc747a19e5","src/symbolize/libbacktrace.rs":"0cdad7de2501baef9da193ee6aab21c453d26348a2071c805a133efe1209eaa1","src/symbolize/mod.rs":"2fcf4a6c8319d886e03f7a45fbb25d7e35c4c6021ae3d49d243ce901f213e5c9","src/symbolize/noop.rs":"b622fcecb4e22b42c3d3e2ef5dc5a6ab14601fec83c7797ee1fbbacc12fe6ca1","tests/long_fn_name.rs":"a59eebef3e9403a566b2cdcb7c76e3237675883fa018baca6fe55801f5d11b80","tests/smoke.rs":"f3c03fc5d31281f6a08232814a7b1ca74f514014f0f8098cb014d6e7d7eb6541"},"package":"89a47830402e9981c5c41223151efcced65a0510c13097c769cede7efb34782a"} \ No newline at end of file +{"files":{".cargo_vcs_info.json":"58bd3f3c324c518e15510f799651a628f7fd707e0929a9ff58b9e09395d117bb",".gitmodules":"4d659086ee4fa6cff644c23a4c86410dcf672bbd3b0f55127b0be7b80f32aa87",".travis.yml":"d6bc2c62c8f0ab18bf72f1ba86860f5808e4a3cdfb21ef079a81f2a299c24280","Cargo.toml":"c97b88d6abe6886c23820cf213e5ea3023a978f0a83cd65cb57fd52a913d137b","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"633f9db18c7121e890a1b76d73506acfeaf536fd4b04fd2f1e4344e31ddbadeb","appveyor.yml":"38f8e674bc29b852da95ba18294c43299f5dc3c5bfbb90380756ffdcfc4ea416","build.rs":"06f7c4ddf43b3f9d0dd94dd000211dce13b38ab3f258fe28795d803402cf2678","ci/android-ndk.sh":"89fafa41d08ff477f949bfc163d04d1eb34fdee370f7a695cfba4ef34c164a55","ci/docker/aarch64-linux-android/Dockerfile":"c97f23fe2892f406d3deb7479c89e1c1dbbdbd0db456ac699f9399852300348d","ci/docker/aarch64-unknown-linux-gnu/Dockerfile":"97fa8f20c6899ee36b47371d485b64a2e96b626a2746b5f434c01eae9168b2a1","ci/docker/arm-linux-androideabi/Dockerfile":"11f6963365de062cf0ac81debec00aee29932df2714d8505f9f6383722d211a8","ci/docker/arm-unknown-linux-gnueabihf/Dockerfile":"41133d712ef13f05e67796857db86476b3ed9c6355d5eb56115575b06d739e04","ci/docker/armv7-linux-androideabi/Dockerfile":"39038d17a423683e0af27a050b34dea610729fb0085814ec6c81726a7f52556f","ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile":"2a216244baad705491f249278083994bf68744a2759f51e768b2f92e0da7c360","ci/docker/i586-unknown-linux-gnu/Dockerfile":"ef898c914590d721488ca11e62f3d7c26852346e1612deb0f3e12ab011187109","ci/docker/i686-linux-android/Dockerfile":"9181e5fe5503077652659bc3353c3c21fcf4fc6b03730430fb40d6adc3096079","ci/docker/i686-unknown-linux-gnu/Dockerfile":"ef898c914590d721488ca11e62f3d7c26852346e1612deb0f3e12ab011187109","ci/docker/powerpc-unknown-linux-gnu/Dockerfile":"83e0e3adbb2d6f2398e70d2c8f71ee301fe99e24554f902602c2f2bb067c2f2c","ci/docker/powerpc64-unknown-linux-gnu/Dockerfile":"828b657e1748bcd8d331794624d5fc1cd07087a051e507eb9206757985194bf1","ci/docker/x86_64-linux-android/Dockerfile":"074bb2906ba587466490ab9d802eb817b9f23eb54aa095ee53e1a33be5569328","ci/docker/x86_64-pc-windows-gnu/Dockerfile":"0822e270108ec39a6b93721598156031a0469ed680e62ce4acd13bbb1a952b9d","ci/docker/x86_64-unknown-linux-gnu/Dockerfile":"e1c202a6831b17e017b4737e80d5b992905895b086bbc06285fc9c337cadbc23","ci/docker/x86_64-unknown-linux-musl/Dockerfile":"2efbba08cc8fff8d2431dde92517df7d122dc754c778820c668f1ac29a885290","ci/run-docker.sh":"517db62fa790712734a1410b27995134ec88c613a0cae548382fb0d3f0b55080","ci/run.sh":"30a3807c195cd86d8b8884e1228cd061aa112b26c54277beebf5108777a36fe9","examples/backtrace.rs":"fd6e1cc6c3378ec7d41cd03b2bef187051298dceb01147e71f207dbb8a0c4867","examples/raw.rs":"f07be26d1f97cd7ac79290ac99d19c4eec5d27031fe270ab5364c25d9c2ad9e0","src/backtrace/dbghelp.rs":"d2a2a8225287190aa4d4b3ffcc73ef6cafff64ab43465461c23fbeb25ec67915","src/backtrace/libunwind.rs":"0c83046b7186de2007c3a30beeaa21c132ddf40b61804b8d7caee14f337b6d5d","src/backtrace/mod.rs":"486cd5557ae39bff0f5f292bc2e436cf72c92d8a48b059362958a6e93afc819c","src/backtrace/noop.rs":"7b477dfaa32111bd6f01afa602d1482ece36ae7d68537ed300d2c49a41c46c46","src/backtrace/unix_backtrace.rs":"848c97afa93e0ea54062ff4639a83d14ef4d59b3065d6f0daf34811d388cbc6e","src/capture.rs":"a896a223298bba0fbae016915ceb260a7430d0bfceab2c9aaad1f29bc06e82fd","src/dylib.rs":"4eed51dbe3e14b5f9736c320228ee85fb68d8431061fa895b6873b63ced36aa2","src/lib.rs":"46e4f18452d137260e7c5a9cb44dbe5f2106066c242008ec4cefa10558f681d9","src/symbolize/coresymbolication.rs":"e7e35304b603b8d7feefe382ae2cc45060965d93cad726e199d9d1d337b0b1a2","src/symbolize/dbghelp.rs":"403bf1d1e277524e38d48f0d605506e35fa034e93a6521018f0207f71e6066f7","src/symbolize/dladdr.rs":"96f4a8a79ad4c62cb53220f8161cd8bfb6ecb9965fb69dcafc43505f9db593f9","src/symbolize/gimli.rs":"4a673804b4f15864a737fe40868957eb981849e7cb3a526880633cbdd532946e","src/symbolize/libbacktrace.rs":"bde430c380d3b3c357c88b1f8d2c1bdea2dc48b1136b797a7bf6cf8d87f76a4f","src/symbolize/mod.rs":"d92ee83c3c3f8ff247249e7af4c24e19a7df03a2ae3c01c79dec5385dd0f5c09","src/symbolize/noop.rs":"b98fc6987e0a5a6a9f19bee4bb09843be1974dd00db1518565ced06eeb34d3b5","src/types.rs":"c25241673e9035294f13a8413ec2fd05f19ae5f0f16986028c9a51286f06cdec","tests/long_fn_name.rs":"2a61a3829e543b21f4c162be34e633aa63d0c0ef8eb13b075f51234519672bea","tests/skip_inner_frames.rs":"c5dee2bbae9b19fa77f92cec076b5f915fb95003a24ea0046de13d7ff978a227","tests/smoke.rs":"16f3306f12e0ef185f03d16f50d81904e22e50b6e5c46acab407c298f8a88b64"},"package":"b5b493b66e03090ebc4343eb02f94ff944e0cbc9ac6571491d170ba026741eb5"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/Cargo.toml 2019-01-04 19:47:54.000000000 +0000 @@ -12,20 +12,42 @@ [package] name = "backtrace" -version = "0.3.9" +version = "0.3.13" authors = ["Alex Crichton ", "The Rust Project Developers"] +autoexamples = true +autotests = true description = "A library to acquire a stack trace (backtrace) at runtime in a Rust program.\n" homepage = "https://github.com/alexcrichton/backtrace-rs" documentation = "https://docs.rs/backtrace" readme = "README.md" license = "MIT/Apache-2.0" repository = "https://github.com/alexcrichton/backtrace-rs" + +[[example]] +name = "backtrace" +required-features = ["std"] + +[[example]] +name = "raw" +required-features = ["std"] + +[[test]] +name = "skip_inner_frames" +required-features = ["std"] + +[[test]] +name = "long_fn_name" +required-features = ["std"] + +[[test]] +name = "smoke" +required-features = ["std"] [dependencies.addr2line] -version = "0.6.0" +version = "0.7.0" optional = true [dependencies.cfg-if] -version = "0.1" +version = "0.1.6" [dependencies.cpp_demangle] version = "0.2.3" @@ -33,19 +55,19 @@ default-features = false [dependencies.findshlibs] -version = "0.3.3" +version = "0.4.0" optional = true [dependencies.gimli] -version = "0.15.0" +version = "0.16.0" optional = true [dependencies.memmap] -version = "0.6.2" +version = "0.7.0" optional = true [dependencies.object] -version = "0.7.0" +version = "0.9.0" optional = true [dependencies.rustc-demangle] @@ -62,25 +84,28 @@ [dependencies.serde_derive] version = "1.0" optional = true +[build-dependencies.autocfg] +version = "0.1" [features] coresymbolication = [] -dbghelp = ["winapi"] -default = ["libunwind", "libbacktrace", "coresymbolication", "dladdr", "dbghelp"] +dbghelp = [] +default = ["std", "libunwind", "libbacktrace", "coresymbolication", "dladdr", "dbghelp"] dladdr = [] gimli-symbolize = ["addr2line", "findshlibs", "gimli", "memmap", "object"] kernel32 = [] -libbacktrace = ["backtrace-sys"] +libbacktrace = ["backtrace-sys", "std"] libunwind = [] serialize-rustc = ["rustc-serialize"] serialize-serde = ["serde", "serde_derive"] +std = [] unix-backtrace = [] [target."cfg(all(unix, not(target_os = \"fuchsia\"), not(target_os = \"emscripten\"), not(target_os = \"macos\"), not(target_os = \"ios\")))".dependencies.backtrace-sys] version = "0.1.17" optional = true [target."cfg(unix)".dependencies.libc] -version = "0.2" +version = "0.2.45" +default-features = false [target."cfg(windows)".dependencies.winapi] version = "0.3.3" -features = ["std", "dbghelp", "processthreadsapi", "winnt", "minwindef"] -optional = true +features = ["dbghelp", "processthreadsapi", "winnt", "minwindef"] diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/.cargo_vcs_info.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/.cargo_vcs_info.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/.cargo_vcs_info.json 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/.cargo_vcs_info.json 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,5 @@ +{ + "git": { + "sha1": "444a13d12f99b8634f5bf5de0d17330ea34da689" + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/README.md distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/README.md --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/README.md 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/README.md 2019-01-04 19:47:54.000000000 +0000 @@ -6,8 +6,8 @@ [Documentation](https://docs.rs/backtrace) A library for acquiring backtraces at runtime for Rust. This library aims to -enhance the support given by the standard library at `std::rt` by providing a -more stable and programmatic interface. +enhance the support of the standard library by providing a more stable and +programmatic interface. ## Install diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/backtrace/dbghelp.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/backtrace/dbghelp.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/backtrace/dbghelp.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/backtrace/dbghelp.rs 2019-01-04 19:47:54.000000000 +0000 @@ -10,14 +10,17 @@ #![allow(bad_style)] -use std::mem; -use winapi::ctypes::*; +use core::mem; +use core::prelude::v1::*; + use winapi::shared::minwindef::*; use winapi::um::processthreadsapi; use winapi::um::winnt::{self, CONTEXT}; use winapi::um::dbghelp; use winapi::um::dbghelp::*; +use types::c_void; + pub struct Frame { inner: STACKFRAME64, } @@ -32,50 +35,43 @@ } } +#[repr(C, align(16))] // required by `CONTEXT`, is a FIXME in winapi right now +struct MyContext(CONTEXT); + #[inline(always)] -pub fn trace(cb: &mut FnMut(&super::Frame) -> bool) { - // According to windows documentation, all dbghelp functions are - // single-threaded. - let _g = ::lock::lock(); - - unsafe { - // Allocate necessary structures for doing the stack walk - let process = processthreadsapi::GetCurrentProcess(); - let thread = processthreadsapi::GetCurrentThread(); - - // The CONTEXT structure needs to be aligned on a 16-byte boundary for - // 64-bit Windows, but currently we don't have a way to express that in - // Rust. Allocations are generally aligned to 16-bytes, though, so we - // box this up. - let mut context = Box::new(mem::zeroed::()); - winnt::RtlCaptureContext(&mut *context); - let mut frame = super::Frame { - inner: Frame { inner: mem::zeroed() }, - }; - let image = init_frame(&mut frame.inner.inner, &context); - - // Initialize this process's symbols - let _c = ::dbghelp_init(); - - // And now that we're done with all the setup, do the stack walking! - while dbghelp::StackWalk64(image as DWORD, - process, - thread, - &mut frame.inner.inner, - &mut *context as *mut _ as *mut _, - None, - Some(dbghelp::SymFunctionTableAccess64), - Some(dbghelp::SymGetModuleBase64), - None) == TRUE { - if frame.inner.inner.AddrPC.Offset == frame.inner.inner.AddrReturn.Offset || - frame.inner.inner.AddrPC.Offset == 0 || - frame.inner.inner.AddrReturn.Offset == 0 { - break - } - - if !cb(&frame) { - break - } +pub unsafe fn trace(cb: &mut FnMut(&super::Frame) -> bool) { + // Allocate necessary structures for doing the stack walk + let process = processthreadsapi::GetCurrentProcess(); + let thread = processthreadsapi::GetCurrentThread(); + + let mut context = mem::zeroed::(); + winnt::RtlCaptureContext(&mut context.0); + let mut frame = super::Frame { + inner: Frame { inner: mem::zeroed() }, + }; + let image = init_frame(&mut frame.inner.inner, &context.0); + + // Initialize this process's symbols + let _c = ::dbghelp_init(); + + // And now that we're done with all the setup, do the stack walking! + while dbghelp::StackWalk64(image as DWORD, + process, + thread, + &mut frame.inner.inner, + &mut context.0 as *mut CONTEXT as *mut _, + None, + Some(dbghelp::SymFunctionTableAccess64), + Some(dbghelp::SymGetModuleBase64), + None) == TRUE { + if frame.inner.inner.AddrPC.Offset == frame.inner.inner.AddrReturn.Offset || + frame.inner.inner.AddrPC.Offset == 0 || + frame.inner.inner.AddrReturn.Offset == 0 { + break + } + + if !cb(&frame) { + break } } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/backtrace/libunwind.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/backtrace/libunwind.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/backtrace/libunwind.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/backtrace/libunwind.rs 2019-01-04 19:47:54.000000000 +0000 @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -use std::os::raw::c_void; +use types::c_void; pub struct Frame { ctx: *mut uw::_Unwind_Context, @@ -48,10 +48,8 @@ } #[inline(always)] -pub fn trace(mut cb: &mut FnMut(&super::Frame) -> bool) { - unsafe { - uw::_Unwind_Backtrace(trace_fn, &mut cb as *mut _ as *mut _); - } +pub unsafe fn trace(mut cb: &mut FnMut(&super::Frame) -> bool) { + uw::_Unwind_Backtrace(trace_fn, &mut cb as *mut _ as *mut _); extern fn trace_fn(ctx: *mut uw::_Unwind_Context, arg: *mut c_void) -> uw::_Unwind_Reason_Code { @@ -83,8 +81,8 @@ mod uw { pub use self::_Unwind_Reason_Code::*; - use libc; - use std::os::raw::{c_int, c_void}; + use libc::{self, c_int}; + use types::c_void; #[repr(C)] pub enum _Unwind_Reason_Code { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/backtrace/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/backtrace/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/backtrace/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/backtrace/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -1,6 +1,5 @@ -use std::fmt; - -use std::os::raw::c_void; +use core::fmt; +use types::c_void; /// Inspects the current call-stack, passing all active frames into the closure /// provided to calculate a stack trace. @@ -23,6 +22,11 @@ /// example, capture a backtrace to be inspected later, then the `Backtrace` /// type may be more appropriate. /// +/// # Required features +/// +/// This function requires the `std` feature of the `backtrace` crate to be +/// enabled, and the `std` feature is enabled by default. +/// /// # Example /// /// ``` @@ -36,12 +40,24 @@ /// }); /// } /// ``` -#[inline(never)] // if this is never inlined then the first frame can be known - // to be skipped -pub fn trace bool>(mut cb: F) { +#[inline(always)] +#[cfg(feature = "std")] +pub fn trace bool>(cb: F) { + let _guard = ::lock::lock(); + unsafe { trace_unsynchronized(cb) } +} + +/// Same as `trace`, only unsafe as it's unsynchronized. +/// +/// This function does not have synchronization guarentees but is available +/// when the `std` feature of this crate isn't compiled in. See the `trace` +/// function for more documentation and examples. +#[inline(never)] +pub unsafe fn trace_unsynchronized bool>(mut cb: F) { trace_imp(&mut cb) } + /// A trait representing one frame of a backtrace, yielded to the `trace` /// function of this crate. /// diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/backtrace/noop.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/backtrace/noop.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/backtrace/noop.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/backtrace/noop.rs 2019-01-04 19:47:54.000000000 +0000 @@ -1,4 +1,4 @@ -use std::os::raw::c_void; +use types::c_void; #[inline(always)] pub fn trace(_cb: &mut FnMut(&super::Frame) -> bool) {} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/backtrace/unix_backtrace.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/backtrace/unix_backtrace.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/backtrace/unix_backtrace.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/backtrace/unix_backtrace.rs 2019-01-04 19:47:54.000000000 +0000 @@ -8,8 +8,10 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -use std::mem; -use std::os::raw::{c_void, c_int}; +use core::mem; +use libc::c_int; + +use types::c_void; pub struct Frame { addr: *mut c_void, @@ -25,15 +27,14 @@ } #[inline(always)] -pub fn trace(cb: &mut FnMut(&super::Frame) -> bool) { +pub unsafe fn trace(cb: &mut FnMut(&super::Frame) -> bool) { const SIZE: usize = 100; let mut buf: [*mut c_void; SIZE]; let cnt; - unsafe { - buf = mem::zeroed(); - cnt = backtrace(buf.as_mut_ptr(), SIZE as c_int); - } + + buf = mem::zeroed(); + cnt = backtrace(buf.as_mut_ptr(), SIZE as c_int); for addr in buf[..cnt as usize].iter() { let cx = super::Frame { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/capture.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/capture.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/capture.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/capture.rs 2019-01-04 19:47:54.000000000 +0000 @@ -1,19 +1,26 @@ +use std::prelude::v1::*; use std::fmt; -use std::mem; -use std::os::raw::c_void; use std::path::{Path, PathBuf}; use {trace, resolve, SymbolName}; +use types::c_void; /// Representation of an owned and self-contained backtrace. /// /// This structure can be used to capture a backtrace at various points in a /// program and later used to inspect what the backtrace was at that time. +/// +/// `Backtrace` supports pretty-printing of backtraces through its `Debug` +/// implementation. #[derive(Clone)] #[cfg_attr(feature = "serialize-rustc", derive(RustcDecodable, RustcEncodable))] #[cfg_attr(feature = "serialize-serde", derive(Deserialize, Serialize))] pub struct Backtrace { + // Frames here are listed from top-to-bottom of the stack frames: Vec, + // The index we believe is the actual start of the backtrace, omitting + // frames like `Backtrace::new` and `backtrace::trace`. + actual_start_index: usize, } /// Captured version of a frame in a backtrace. @@ -59,10 +66,11 @@ /// /// let current_backtrace = Backtrace::new(); /// ``` + #[inline(never)] // want to make sure there's a frame here to remove pub fn new() -> Backtrace { - let mut bt = Backtrace::new_unresolved(); + let mut bt = Self::create(Self::new as usize); bt.resolve(); - return bt + bt } /// Similar to `new` except that this does not resolve any symbols, this @@ -83,18 +91,39 @@ /// current_backtrace.resolve(); /// println!("{:?}", current_backtrace); // symbol names now present /// ``` + #[inline(never)] // want to make sure there's a frame here to remove pub fn new_unresolved() -> Backtrace { + Self::create(Self::new_unresolved as usize) + } + + fn create(ip: usize) -> Backtrace { + let ip_lo = ip; + let ip_hi = ip + 128; + let mut frames = Vec::new(); + let mut actual_start_index = None; trace(|frame| { + let ip = frame.ip() as usize; frames.push(BacktraceFrame { - ip: frame.ip() as usize, + ip, symbol_address: frame.symbol_address() as usize, symbols: None, }); + + if cfg!(not(all(target_os = "windows", target_arch = "x86"))) && + ip >= ip_lo && + ip <= ip_hi && + actual_start_index.is_none() + { + actual_start_index = Some(frames.len()); + } true }); - Backtrace { frames: frames } + Backtrace { + frames, + actual_start_index: actual_start_index.unwrap_or(0), + } } /// Returns the frames from when this backtrace was captured. @@ -103,7 +132,7 @@ /// and the last frame is likely something about how this thread or the main /// function started. pub fn frames(&self) -> &[BacktraceFrame] { - &self.frames + &self.frames[self.actual_start_index..] } /// If this backtrace was created from `new_unresolved` then this function @@ -118,7 +147,7 @@ symbols.push(BacktraceSymbol { name: symbol.name().map(|m| m.as_bytes().to_vec()), addr: symbol.addr().map(|a| a as usize), - filename: symbol.filename().map(|m| m.to_path_buf()), + filename: symbol.filename().map(|m| m.to_owned()), lineno: symbol.lineno(), }); }); @@ -130,7 +159,8 @@ impl From> for Backtrace { fn from(frames: Vec) -> Self { Backtrace { - frames: frames + frames, + actual_start_index: 0, } } } @@ -190,38 +220,47 @@ impl fmt::Debug for Backtrace { fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { - let hex_width = mem::size_of::() * 2 + 2; + write!(fmt, "stack backtrace:")?; - try!(write!(fmt, "stack backtrace:")); + let iter = if fmt.alternate() { + self.frames.iter() + } else { + self.frames[self.actual_start_index..].iter() + }; - for (idx, frame) in self.frames().iter().enumerate() { + for (idx, frame) in iter.enumerate() { let ip = frame.ip(); - try!(write!(fmt, "\n{:4}: {:2$?}", idx, ip, hex_width)); + write!(fmt, "\n{:4}: ", idx)?; let symbols = match frame.symbols { Some(ref s) => s, None => { - try!(write!(fmt, " - ")); + write!(fmt, " ({:?})", ip)?; continue } }; if symbols.len() == 0 { - try!(write!(fmt, " - ")); + write!(fmt, " ({:?})", ip)?; + continue; } for (idx, symbol) in symbols.iter().enumerate() { if idx != 0 { - try!(write!(fmt, "\n {:1$}", "", hex_width)); + write!(fmt, "\n ")?; } if let Some(name) = symbol.name() { - try!(write!(fmt, " - {}", name)); + write!(fmt, "{}", name)?; } else { - try!(write!(fmt, " - ")); + write!(fmt, "")?; + } + + if idx == 0 { + write!(fmt, " ({:?})", ip)?; } if let (Some(file), Some(line)) = (symbol.filename(), symbol.lineno()) { - try!(write!(fmt, "\n {:3$}at {}:{}", "", file.display(), line, hex_width)); + write!(fmt, "\n at {}:{}", file.display(), line)?; } } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/dylib.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/dylib.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/dylib.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/dylib.rs 2019-01-04 19:47:54.000000000 +0000 @@ -1,7 +1,6 @@ -use std::ffi::CString; -use std::marker; -use std::mem; -use std::sync::atomic::{AtomicUsize, Ordering}; +use core::marker; +use core::mem; +use core::sync::atomic::{AtomicUsize, Ordering}; use libc::{self, c_char, c_void}; @@ -26,8 +25,8 @@ if self.init.load(Ordering::SeqCst) != 0 { return true } - let name = CString::new(path).unwrap(); - let ptr = libc::dlopen(name.as_ptr() as *const c_char, libc::RTLD_LAZY); + assert!(path.as_bytes()[path.len() - 1] == 0); + let ptr = libc::dlopen(path.as_ptr() as *const c_char, libc::RTLD_LAZY); if ptr.is_null() { return false } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/lib.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/lib.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/lib.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/lib.rs 2019-01-04 19:47:54.000000000 +0000 @@ -46,6 +46,8 @@ //! extern crate backtrace; //! //! fn main() { +//! # // Unsafe here so test passes on no_std. +//! # #[cfg(feature = "std")] { //! backtrace::trace(|frame| { //! let ip = frame.ip(); //! let symbol_address = frame.symbol_address(); @@ -63,15 +65,20 @@ //! true // keep going to the next frame //! }); //! } +//! # } //! ``` #![doc(html_root_url = "https://docs.rs/backtrace")] #![deny(missing_docs)] -#![deny(warnings)] +#![no_std] + +#[cfg(feature = "std")] +#[macro_use] extern crate std; #[cfg(unix)] extern crate libc; -#[cfg(all(windows, feature = "winapi"))] extern crate winapi; +#[cfg(windows)] +extern crate winapi; #[cfg(feature = "serde_derive")] #[cfg_attr(feature = "serde_derive", macro_use)] @@ -103,14 +110,23 @@ #[macro_use] mod dylib; -pub use backtrace::{trace, Frame}; +pub use backtrace::{trace_unsynchronized, Frame}; mod backtrace; -pub use symbolize::{resolve, Symbol, SymbolName}; +pub use symbolize::{resolve_unsynchronized, Symbol, SymbolName}; mod symbolize; -pub use capture::{Backtrace, BacktraceFrame, BacktraceSymbol}; -mod capture; +pub use types::BytesOrWideString; +mod types; + +cfg_if! { + if #[cfg(feature = "std")] { + pub use backtrace::trace; + pub use symbolize::resolve; + pub use capture::{Backtrace, BacktraceFrame, BacktraceSymbol}; + mod capture; + } +} #[allow(dead_code)] struct Bomb { @@ -127,9 +143,10 @@ } #[allow(dead_code)] +#[cfg(feature = "std")] mod lock { use std::cell::Cell; - use std::mem; + use std::boxed::Box; use std::sync::{Once, Mutex, MutexGuard, ONCE_INIT}; pub struct LockGuard(MutexGuard<'static, ()>); @@ -154,7 +171,7 @@ LOCK_HELD.with(|s| s.set(true)); unsafe { INIT.call_once(|| { - LOCK = mem::transmute(Box::new(Mutex::new(()))); + LOCK = Box::into_raw(Box::new(Mutex::new(()))); }); Some(LockGuard((*LOCK).lock().unwrap())) } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/symbolize/coresymbolication.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/symbolize/coresymbolication.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/symbolize/coresymbolication.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/symbolize/coresymbolication.rs 2019-01-04 19:47:54.000000000 +0000 @@ -10,19 +10,17 @@ #![allow(bad_style)] -use std::ffi::{CStr, OsStr}; -use std::mem; -use std::os::raw::{c_void, c_char, c_int}; -use std::os::unix::prelude::*; -use std::path::Path; -use std::ptr; -use std::sync::atomic::ATOMIC_USIZE_INIT; +use core::mem; +use core::ptr; +use core::slice; +use core::sync::atomic::ATOMIC_USIZE_INIT; -use libc::{self, Dl_info}; +use libc::{self, Dl_info, c_char, c_int}; use SymbolName; use dylib::Dylib; use dylib::Symbol as DylibSymbol; +use types::{BytesOrWideString, c_void}; #[repr(C)] #[derive(Copy, Clone, PartialEq)] @@ -57,7 +55,8 @@ None } else { Some(SymbolName::new(unsafe { - CStr::from_ptr(name).to_bytes() + let len = libc::strlen(name); + slice::from_raw_parts(name as *const u8, len) })) } } @@ -69,15 +68,16 @@ } } - pub fn filename(&self) -> Option<&Path> { + pub fn filename_raw(&self) -> Option { match *self { Symbol::Core { path, .. } => { if path.is_null() { None } else { - Some(Path::new(OsStr::from_bytes(unsafe { - CStr::from_ptr(path).to_bytes() - }))) + Some(BytesOrWideString::Bytes(unsafe { + let len = libc::strlen(path); + slice::from_raw_parts(path as *const u8, len) + })) } } Symbol::Dladdr(_) => None, @@ -102,8 +102,8 @@ static $name: ::dylib::Symbol $ret> = ::dylib::Symbol { name: concat!(stringify!($name), "\0"), - addr: ::std::sync::atomic::ATOMIC_USIZE_INIT, - _marker: ::std::marker::PhantomData, + addr: ::core::sync::atomic::ATOMIC_USIZE_INIT, + _marker: ::core::marker::PhantomData, }; )*) } @@ -131,7 +131,7 @@ unsafe fn try_resolve(addr: *mut c_void, cb: &mut FnMut(&super::Symbol)) -> bool { let path = "/System/Library/PrivateFrameworks/CoreSymbolication.framework\ - /Versions/A/CoreSymbolication"; + /Versions/A/CoreSymbolication\0"; if !CORESYMBOLICATION.init(path) { return false; } @@ -177,16 +177,14 @@ rv } -pub fn resolve(addr: *mut c_void, cb: &mut FnMut(&super::Symbol)) { - unsafe { - if try_resolve(addr, cb) { - return - } - let mut info: Dl_info = mem::zeroed(); - if libc::dladdr(addr as *mut _, &mut info) != 0 { - cb(&super::Symbol { - inner: Symbol::Dladdr(info), - }); - } +pub unsafe fn resolve(addr: *mut c_void, cb: &mut FnMut(&super::Symbol)) { + if try_resolve(addr, cb) { + return + } + let mut info: Dl_info = mem::zeroed(); + if libc::dladdr(addr as *mut _, &mut info) != 0 { + cb(&super::Symbol { + inner: Symbol::Dladdr(info), + }); } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/symbolize/dbghelp.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/symbolize/dbghelp.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/symbolize/dbghelp.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/symbolize/dbghelp.rs 2019-01-04 19:47:54.000000000 +0000 @@ -10,11 +10,19 @@ #![allow(bad_style)] -use std::ffi::OsString; -use std::mem; -use std::path::Path; -use std::os::windows::prelude::*; -use std::slice; +// This is a hack for compatibility with rustc 1.25.0. The no_std mode of this +// crate is not supported pre-1.30.0, but in std mode the `char` module here +// moved in rustc 1.26.0 (ish). As a result, in std mode we use `std::char` to +// retain compatibility with rustc 1.25.0, but in `no_std` mode (which is +// 1.30.0+ already) we use `core::char`. +#[cfg(feature = "std")] +use std::char; +#[cfg(not(feature = "std"))] +use core::char; + +use core::mem; +use core::slice; + use winapi::ctypes::*; use winapi::shared::basetsd::*; use winapi::shared::minwindef::*; @@ -23,96 +31,145 @@ use winapi::um::dbghelp::*; use SymbolName; +use types::BytesOrWideString; +// Store an OsString on std so we can provide the symbol name and filename. pub struct Symbol { - name: OsString, + name: *const [u8], addr: *mut c_void, line: Option, - filename: Option, + filename: Option<*const [u16]>, + #[cfg(feature = "std")] + _filename_cache: Option<::std::ffi::OsString>, + #[cfg(not(feature = "std"))] + _filename_cache: (), } impl Symbol { pub fn name(&self) -> Option { - self.name.to_str().map(|s| SymbolName::new(s.as_bytes())) + Some(SymbolName::new(unsafe { &*self.name })) } pub fn addr(&self) -> Option<*mut c_void> { Some(self.addr as *mut _) } - pub fn filename(&self) -> Option<&Path> { - self.filename.as_ref().map(Path::new) + pub fn filename_raw(&self) -> Option { + self.filename.map(|slice| { + unsafe { + BytesOrWideString::Wide(&*slice) + } + }) } pub fn lineno(&self) -> Option { self.line } + + #[cfg(feature = "std")] + pub fn filename(&self) -> Option<&::std::ffi::OsString> { + self._filename_cache.as_ref() + } } -pub fn resolve(addr: *mut c_void, cb: &mut FnMut(&super::Symbol)) { - // According to windows documentation, all dbghelp functions are - // single-threaded. - let _g = ::lock::lock(); - - unsafe { - let size = 2 * MAX_SYM_NAME + mem::size_of::(); - let mut data = vec![0u8; size]; - let info = &mut *(data.as_mut_ptr() as *mut SYMBOL_INFOW); - info.MaxNameLen = MAX_SYM_NAME as ULONG; - // the struct size in C. the value is different to - // `size_of::() - MAX_SYM_NAME + 1` (== 81) - // due to struct alignment. - info.SizeOfStruct = 88; - - let _c = ::dbghelp_init(); - - let mut displacement = 0u64; - let ret = dbghelp::SymFromAddrW(processthreadsapi::GetCurrentProcess(), - addr as DWORD64, - &mut displacement, - info); - if ret != TRUE { - return - } +#[repr(C, align(8))] +struct Aligned8(T); - // If the symbol name is greater than MaxNameLen, SymFromAddrW will - // give a buffer of (MaxNameLen - 1) characters and set NameLen to - // the real value. - let name_len = ::std::cmp::min(info.NameLen as usize, - info.MaxNameLen as usize - 1); - - let name = slice::from_raw_parts(info.Name.as_ptr() as *const u16, - name_len); - let name = OsString::from_wide(name); - - let mut line = mem::zeroed::(); - line.SizeOfStruct = mem::size_of::() as DWORD; - let mut displacement = 0; - let ret = dbghelp::SymGetLineFromAddrW64(processthreadsapi::GetCurrentProcess(), - addr as DWORD64, - &mut displacement, - &mut line); - let mut filename = None; - let mut lineno = None; - if ret == TRUE { - lineno = Some(line.LineNumber as u32); - - let base = line.FileName; - let mut len = 0; - while *base.offset(len) != 0 { - len += 1; +pub unsafe fn resolve(addr: *mut c_void, cb: &mut FnMut(&super::Symbol)) { + const SIZE: usize = 2 * MAX_SYM_NAME + mem::size_of::(); + let mut data = Aligned8([0u8; SIZE]); + let data = &mut data.0; + let info = &mut *(data.as_mut_ptr() as *mut SYMBOL_INFOW); + info.MaxNameLen = MAX_SYM_NAME as ULONG; + // the struct size in C. the value is different to + // `size_of::() - MAX_SYM_NAME + 1` (== 81) + // due to struct alignment. + info.SizeOfStruct = 88; + + let _c = ::dbghelp_init(); + + let mut displacement = 0u64; + let ret = dbghelp::SymFromAddrW(processthreadsapi::GetCurrentProcess(), + addr as DWORD64, + &mut displacement, + info); + if ret != TRUE { + return + } + + // If the symbol name is greater than MaxNameLen, SymFromAddrW will + // give a buffer of (MaxNameLen - 1) characters and set NameLen to + // the real value. + let name_len = ::core::cmp::min(info.NameLen as usize, + info.MaxNameLen as usize - 1); + let name_ptr = info.Name.as_ptr() as *const u16; + let name = slice::from_raw_parts(name_ptr, name_len); + + // Reencode the utf-16 symbol to utf-8 so we can use `SymbolName::new` like + // all other platforms + let mut name_len = 0; + let mut name_buffer = [0; 256]; + { + let mut remaining = &mut name_buffer[..]; + for c in char::decode_utf16(name.iter().cloned()) { + let c = c.unwrap_or(char::REPLACEMENT_CHARACTER); + let len = c.len_utf8(); + if len < remaining.len() { + c.encode_utf8(remaining); + let tmp = remaining; + remaining = &mut tmp[len..]; + name_len += len; + } else { + break } - let name = slice::from_raw_parts(base, len as usize); - filename = Some(OsString::from_wide(name)); + } + } + let name = &name_buffer[..name_len] as *const [u8]; + + let mut line = mem::zeroed::(); + line.SizeOfStruct = mem::size_of::() as DWORD; + let mut displacement = 0; + let ret = dbghelp::SymGetLineFromAddrW64(processthreadsapi::GetCurrentProcess(), + addr as DWORD64, + &mut displacement, + &mut line); + + let mut filename = None; + let mut lineno = None; + if ret == TRUE { + lineno = Some(line.LineNumber as u32); + + let base = line.FileName; + let mut len = 0; + while *base.offset(len) != 0 { + len += 1; } - cb(&super::Symbol { - inner: Symbol { - name: name, - addr: info.Address as *mut _, - line: lineno, - filename: filename, - }, - }) + let len = len as usize; + + filename = Some(slice::from_raw_parts(base, len) as *const [u16]); } + + + cb(&super::Symbol { + inner: Symbol { + name, + addr: info.Address as *mut _, + line: lineno, + filename, + _filename_cache: cache(filename), + }, + }) +} + +#[cfg(feature = "std")] +unsafe fn cache(filename: Option<*const [u16]>) -> Option<::std::ffi::OsString> { + use std::os::windows::ffi::OsStringExt; + filename.map(|f| { + ::std::ffi::OsString::from_wide(&*f) + }) +} + +#[cfg(not(feature = "std"))] +unsafe fn cache(_filename: Option<*const [u16]>) { } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/symbolize/dladdr.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/symbolize/dladdr.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/symbolize/dladdr.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/symbolize/dladdr.rs 2019-01-04 19:47:54.000000000 +0000 @@ -8,11 +8,9 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -use std::ffi::CStr; -use std::mem; -use std::os::raw::c_void; -use std::path::Path; +use core::{mem, slice}; +use types::{BytesOrWideString, c_void}; use libc::{self, Dl_info}; use SymbolName; @@ -26,9 +24,11 @@ if self.inner.dli_sname.is_null() { None } else { - Some(SymbolName::new(unsafe { - CStr::from_ptr(self.inner.dli_sname).to_bytes() - })) + let ptr = self.inner.dli_sname as *const u8; + unsafe { + let len = libc::strlen(self.inner.dli_sname); + Some(SymbolName::new(slice::from_raw_parts(ptr, len))) + } } } @@ -36,7 +36,7 @@ Some(self.inner.dli_saddr as *mut _) } - pub fn filename(&self) -> Option<&Path> { + pub fn filename_raw(&self) -> Option { None } @@ -45,15 +45,13 @@ } } -pub fn resolve(addr: *mut c_void, cb: &mut FnMut(&super::Symbol)) { - unsafe { - let mut info: super::Symbol = super::Symbol { - inner: Symbol { - inner: mem::zeroed(), - }, - }; - if libc::dladdr(addr as *mut _, &mut info.inner.inner) != 0 { - cb(&info) - } +pub unsafe fn resolve(addr: *mut c_void, cb: &mut FnMut(&super::Symbol)) { + let mut info: super::Symbol = super::Symbol { + inner: Symbol { + inner: mem::zeroed(), + }, + }; + if libc::dladdr(addr as *mut _, &mut info.inner.inner) != 0 { + cb(&info) } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/symbolize/gimli.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/symbolize/gimli.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/symbolize/gimli.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/symbolize/gimli.rs 2019-01-04 19:47:54.000000000 +0000 @@ -7,20 +7,22 @@ use std::env; use std::fs::File; use std::mem; -use std::os::raw::c_void; -use std::path::{Path, PathBuf}; +use libc::c_void; +use std::path::PathBuf; use std::u32; +use std::prelude::v1::*; use SymbolName; +use types::BytesOrWideString; const MAPPINGS_CACHE_SIZE: usize = 4; -type Dwarf<'map> = addr2line::Context>; +type Dwarf = addr2line::Context>; type Symbols<'map> = object::SymbolMap<'map>; struct Mapping { + dwarf: Dwarf, // 'static lifetime is a lie to hack around lack of support for self-referential structs. - dwarf: Dwarf<'static>, symbols: Symbols<'static>, _map: Mmap, } @@ -35,7 +37,7 @@ let dwarf = addr2line::Context::new(&object).ok()?; let symbols = object.symbol_map(); // Convert to 'static lifetimes. - unsafe { (mem::transmute(dwarf), mem::transmute(symbols)) } + (dwarf, unsafe { mem::transmute(symbols) }) }; Some(Mapping { dwarf, @@ -182,14 +184,14 @@ pub struct Symbol { addr: usize, - file: Option, + file: Option, line: Option, name: Option, } impl Symbol { fn new(addr: usize, - file: Option, + file: Option, line: Option, name: Option) -> Symbol { @@ -209,8 +211,8 @@ Some(self.addr as *mut c_void) } - pub fn filename(&self) -> Option<&Path> { - self.file.as_ref().map(|f| f.as_ref()) + pub fn filename_raw(&self) -> Option { + self.file.as_ref().map(|f| BytesOrWideString::Bytes(f.as_bytes())) } pub fn lineno(&self) -> Option { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/symbolize/libbacktrace.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/symbolize/libbacktrace.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/symbolize/libbacktrace.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/symbolize/libbacktrace.rs 2019-01-04 19:47:54.000000000 +0000 @@ -12,16 +12,16 @@ extern crate backtrace_sys as bt; -use libc::uintptr_t; -use std::ffi::{CStr, OsStr}; -use std::os::raw::{c_void, c_char, c_int}; -use std::os::unix::prelude::*; -use std::path::Path; -use std::ptr; +use std::ffi::CStr; +use std::{ptr, slice}; use std::sync::{ONCE_INIT, Once}; +use libc::{self, c_char, c_int, c_void, uintptr_t}; + use SymbolName; +use types::BytesOrWideString; + pub enum Symbol { Syminfo { pc: uintptr_t, @@ -56,13 +56,15 @@ if pc == 0 {None} else {Some(pc as *mut _)} } - pub fn filename(&self) -> Option<&Path> { + pub fn filename_raw(&self) -> Option { match *self { Symbol::Syminfo { .. } => None, Symbol::Pcinfo { filename, .. } => { - Some(Path::new(OsStr::from_bytes(unsafe { - CStr::from_ptr(filename).to_bytes() - }))) + let ptr = filename as *const u8; + unsafe { + let len = libc::strlen(filename); + Some(BytesOrWideString::Bytes(slice::from_raw_parts(ptr, len))) + } } } } @@ -158,23 +160,20 @@ STATE } -pub fn resolve(symaddr: *mut c_void, mut cb: &mut FnMut(&super::Symbol)) { - let _guard = ::lock::lock(); - +pub unsafe fn resolve(symaddr: *mut c_void, mut cb: &mut FnMut(&super::Symbol)) +{ // backtrace errors are currently swept under the rug - unsafe { - let state = init_state(); - if state.is_null() { - return - } + let state = init_state(); + if state.is_null() { + return + } - let ret = bt::backtrace_pcinfo(state, symaddr as uintptr_t, - pcinfo_cb, error_cb, - &mut cb as *mut _ as *mut _); - if ret != 0 { - bt::backtrace_syminfo(state, symaddr as uintptr_t, - syminfo_cb, error_cb, - &mut cb as *mut _ as *mut _); - } + let ret = bt::backtrace_pcinfo(state, symaddr as uintptr_t, + pcinfo_cb, error_cb, + &mut cb as *mut _ as *mut _); + if ret != 0 { + bt::backtrace_syminfo(state, symaddr as uintptr_t, + syminfo_cb, error_cb, + &mut cb as *mut _ as *mut _); } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/symbolize/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/symbolize/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/symbolize/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/symbolize/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -1,9 +1,13 @@ -use std::fmt; -#[cfg(not(feature = "cpp_demangle"))] -use std::marker::PhantomData; -use std::os::raw::c_void; -use std::path::Path; -use std::str; +use core::{fmt, str}; + +cfg_if! { + if #[cfg(feature = "std")] { + use std::path::Path; + use std::prelude::v1::*; + } +} + +use types::{BytesOrWideString, c_void}; use rustc_demangle::{try_demangle, Demangle}; /// Resolve an address to a symbol, passing the symbol to the specified @@ -19,6 +23,11 @@ /// Symbols yielded represent the execution at the specified `addr`, returning /// file/line pairs for that address (if available). /// +/// # Required features +/// +/// This function requires the `std` feature of the `backtrace` crate to be +/// enabled, and the `std` feature is enabled by default. +/// /// # Example /// /// ``` @@ -36,10 +45,24 @@ /// }); /// } /// ``` -pub fn resolve(addr: *mut c_void, mut cb: F) { - resolve_imp(addr, &mut cb) +#[cfg(feature = "std")] +pub fn resolve(addr: *mut c_void, cb: F) { + let _guard = ::lock::lock(); + unsafe { resolve_unsynchronized(addr, cb) } +} + +/// Same as `resolve`, only unsafe as it's unsynchronized. +/// +/// This function does not have synchronization guarentees but is available when +/// the `std` feature of this crate isn't compiled in. See the `resolve` +/// function for more documentation and examples. +pub unsafe fn resolve_unsynchronized(addr: *mut c_void, mut cb: F) + where F: FnMut(&Symbol) +{ + resolve_imp(addr as *mut _, &mut cb) } + /// A trait representing the resolution of a symbol in a file. /// /// This trait is yielded as a trait object to the closure given to the @@ -69,19 +92,16 @@ /// Returns the starting address of this function. pub fn addr(&self) -> Option<*mut c_void> { - self.inner.addr() + self.inner.addr().map(|p| p as *mut _) } - /// Returns the file name where this function was defined. - /// - /// This is currently only available when libbacktrace is being used (e.g. - /// unix platforms other than OSX) and when a binary is compiled with - /// debuginfo. If neither of these conditions is met then this will likely - /// return `None`. - pub fn filename(&self) -> Option<&Path> { - self.inner.filename() + /// Returns the raw filename as a slice. This is mainly useful for `no_std` + /// environments. + pub fn filename_raw(&self) -> Option { + self.inner.filename_raw() } + /// Returns the line number for where this symbol is currently executing. /// /// This return value is typically `Some` if `filename` returns `Some`, and @@ -89,6 +109,39 @@ pub fn lineno(&self) -> Option { self.inner.lineno() } + + /// Returns the file name where this function was defined. + /// + /// This is currently only available when libbacktrace is being used (e.g. + /// unix platforms other than OSX) and when a binary is compiled with + /// debuginfo. If neither of these conditions is met then this will likely + /// return `None`. + /// + /// This function requires the `std` feature to be enabled for this crate. + #[cfg(feature = "std")] + pub fn filename(&self) -> Option<&Path> { + #[cfg(unix)] + { + use std::ffi::OsStr; + use std::os::unix::ffi::OsStrExt; + + match self.filename_raw() { + Some(BytesOrWideString::Bytes(slice)) => { + Some(Path::new(OsStr::from_bytes(slice))) + } + None => None, + _ => unreachable!(), + } + } + #[cfg(windows)] + { + self.inner.filename().map(Path::new) + } + #[cfg(all(not(windows), not(unix)))] + { + None + } + } } impl fmt::Debug for Symbol { @@ -100,9 +153,13 @@ if let Some(addr) = self.addr() { d.field("addr", &addr); } - if let Some(filename) = self.filename() { - d.field("filename", &filename); + + #[cfg(feature = "std")] { + if let Some(filename) = self.filename() { + d.field("filename", &filename); + } } + if let Some(lineno) = self.lineno() { d.field("lineno", &lineno); } @@ -110,7 +167,6 @@ } } - cfg_if! { if #[cfg(feature = "cpp_demangle")] { // Maybe a parsed C++ symbol, if parsing the mangled symbol as Rust @@ -127,6 +183,8 @@ } } } else { + use core::marker::PhantomData; + // Make sure to keep this zero-sized, so that the `cpp_demangle` feature // has no cost when disabled. struct OptionCppSymbol<'a>(PhantomData<&'a ()>); @@ -188,6 +246,30 @@ } } +fn format_symbol_name(fmt: fn(&str, &mut fmt::Formatter) -> fmt::Result, + mut bytes: &[u8], + f: &mut fmt::Formatter) + -> fmt::Result +{ + while bytes.len() > 0 { + match str::from_utf8(bytes) { + Ok(name) => { + fmt(name, f)?; + break + } + Err(err) => { + fmt("\u{FFFD}", f)?; + + match err.error_len() { + Some(len) => bytes = &bytes[err.valid_up_to() + len..], + None => break, + } + } + } + } + Ok(()) +} + cfg_if! { if #[cfg(feature = "cpp_demangle")] { impl<'a> fmt::Display for SymbolName<'a> { @@ -197,7 +279,7 @@ } else if let Some(ref cpp) = self.cpp_demangled.0 { cpp.fmt(f) } else { - String::from_utf8_lossy(self.bytes).fmt(f) + format_symbol_name(fmt::Display::fmt, self.bytes, f) } } } @@ -207,7 +289,7 @@ if let Some(ref s) = self.demangled { s.fmt(f) } else { - String::from_utf8_lossy(self.bytes).fmt(f) + format_symbol_name(fmt::Display::fmt, self.bytes, f) } } } @@ -215,7 +297,7 @@ } cfg_if! { - if #[cfg(feature = "cpp_demangle")] { + if #[cfg(all(feature = "std", feature = "cpp_demangle"))] { impl<'a> fmt::Debug for SymbolName<'a> { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { use std::fmt::Write; @@ -234,7 +316,7 @@ } } - String::from_utf8_lossy(self.bytes).fmt(f) + format_symbol_name(fmt::Debug::fmt, self.bytes, f) } } } else { @@ -243,7 +325,7 @@ if let Some(ref s) = self.demangled { s.fmt(f) } else { - String::from_utf8_lossy(self.bytes).fmt(f) + format_symbol_name(fmt::Debug::fmt, self.bytes, f) } } } @@ -255,7 +337,8 @@ mod dbghelp; use self::dbghelp::resolve as resolve_imp; use self::dbghelp::Symbol as SymbolImp; - } else if #[cfg(all(feature = "gimli-symbolize", + } else if #[cfg(all(feature = "std", + feature = "gimli-symbolize", unix, target_os = "linux"))] { mod gimli; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/symbolize/noop.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/symbolize/noop.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/symbolize/noop.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/symbolize/noop.rs 2019-01-04 19:47:54.000000000 +0000 @@ -1,9 +1,7 @@ -use std::path::Path; -use std::os::raw::c_void; - +use types::{BytesOrWideString, c_void}; use SymbolName; -pub fn resolve(_addr: *mut c_void, _cb: &mut FnMut(&super::Symbol)) { +pub unsafe fn resolve(_addr: *mut c_void, _cb: &mut FnMut(&super::Symbol)) { } pub struct Symbol; @@ -17,7 +15,7 @@ None } - pub fn filename(&self) -> Option<&Path> { + pub fn filename_raw(&self) -> Option { None } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/types.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/types.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/src/types.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/src/types.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,79 @@ +//! Platform dependent types. + +cfg_if! { + if #[cfg(feature = "std")] { + pub use std::os::raw::c_void; + use std::borrow::Cow; + use std::fmt; + use std::path::PathBuf; + use std::prelude::v1::*; + } else if #[cfg(rustc_1_30)] { + pub use core::ffi::c_void; + } else { + compile_error!("`backtrace` requires Rust >=1.30.0 to support `no_std`."); + } +} + +/// A platform independent representation of a string. When working with `std` +/// enabled it is recommended to the convenience methods for providing +/// conversions to `std` types. +#[derive(Debug)] +pub enum BytesOrWideString<'a> { + /// A slice, typically provided on Unix platforms. + Bytes(&'a [u8]), + /// Wide strings typically from Windows. + Wide(&'a [u16]), +} + +#[cfg(feature = "std")] +impl<'a> BytesOrWideString<'a> { + /// Lossy converts to a `Cow`, will allocate if `Bytes` is not valid + /// UTF-8 or if `BytesOrWideString` is `Wide`. + pub fn to_str_lossy(&self) -> Cow<'a, str> { + use self::BytesOrWideString::*; + + match self { + &Bytes(slice) => String::from_utf8_lossy(slice), + &Wide(wide) => Cow::Owned(String::from_utf16_lossy(wide)), + } + } + + /// Provides a `Path` representation of `BytesOrWideString`. + pub fn into_path_buf(self) -> PathBuf { + #[cfg(unix)] + { + use self::BytesOrWideString::*; + use std::ffi::OsStr; + use std::os::unix::ffi::OsStrExt; + + match self { + Bytes(slice) => PathBuf::from(OsStr::from_bytes(slice)), + _ => unreachable!(), + } + } + + #[cfg(windows)] + { + use self::BytesOrWideString::*; + use std::ffi::OsString; + use std::os::windows::ffi::OsStringExt; + + match self { + Wide(slice) => PathBuf::from(OsString::from_wide(slice)), + _ => unreachable!(), + } + } + + #[cfg(all(not(windows), not(unix)))] + { + unreachable!() + } + } +} + +#[cfg(feature = "std")] +impl<'a> fmt::Display for BytesOrWideString<'a> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + self.to_str_lossy().fmt(f) + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/tests/long_fn_name.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/tests/long_fn_name.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/tests/long_fn_name.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/tests/long_fn_name.rs 2019-01-04 19:47:54.000000000 +0000 @@ -48,7 +48,7 @@ "::_234567890_234567890_234567890_234567890_234567890") { found_long_name_frame = true; - assert_eq!(function_name.len(), dbghelp::MAX_SYM_NAME - 1); + assert!(function_name.len() > 200); } } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/tests/skip_inner_frames.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/tests/skip_inner_frames.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/tests/skip_inner_frames.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/tests/skip_inner_frames.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,37 @@ +extern crate backtrace; + +use backtrace::Backtrace; + +const FRAME_RANGE: usize = 128; // should be close enough not to give false positives + +#[test] +#[cfg_attr(any(not(any(feature = "libunwind", feature = "unix-backtrace", feature = "dbghelp")), all(target_os = "windows", target_arch = "x86")), ignore)] +fn backtrace_new_unresolved_should_start_with_call_site_trace() { + let mut b = Backtrace::new_unresolved(); + b.resolve(); + println!("{:?}", b); + println!("{:#?}", b); + + assert!(!b.frames().is_empty()); + + let this_ip = backtrace_new_unresolved_should_start_with_call_site_trace as usize; + let frame_ip = b.frames().first().unwrap().ip() as usize; + + assert!(frame_ip >= this_ip); + assert!(frame_ip <= this_ip + FRAME_RANGE); +} + +#[test] +#[cfg_attr(any(not(any(feature = "libunwind", feature = "unix-backtrace", feature = "dbghelp")), all(target_os = "windows", target_arch = "x86")), ignore)] +fn backtrace_new_should_start_with_call_site_trace() { + let b = Backtrace::new(); + println!("{:?}", b); + + assert!(!b.frames().is_empty()); + + let this_ip = backtrace_new_should_start_with_call_site_trace as usize; + let frame_ip = b.frames().first().unwrap().ip() as usize; + + assert!(frame_ip >= this_ip); + assert!(frame_ip <= this_ip + FRAME_RANGE); +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/tests/smoke.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/tests/smoke.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/tests/smoke.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/tests/smoke.rs 2019-01-04 19:47:54.000000000 +0000 @@ -64,6 +64,7 @@ expected_file: &str, expected_line: u32) { if offset > idx { return } + println!("frame: {}", idx); let (ip, sym) = syms[idx - offset]; let ip = ip as usize; let sym = sym as usize; @@ -72,7 +73,9 @@ // windows dbghelp is *quite* liberal (and wrong) in many of its reports // right now... - if !DBGHELP { + // + // This assertion can also fail for release builds, so skip it there + if !DBGHELP && cfg!(debug_assertions) { assert!(sym - actual_fn_pointer < 1024); } @@ -89,6 +92,7 @@ addr = sym.addr(); line = sym.lineno(); file = sym.filename().map(|v| v.to_path_buf()); + println!(" sym: {:?}", name); }); // dbghelp doesn't always resolve symbols right now @@ -104,8 +108,13 @@ !(DBGHELP && !MSVC) { let name = name.expect("didn't find a name"); - assert!(name.contains(expected_name), - "didn't find `{}` in `{}`", expected_name, name); + + // in release mode names get weird as functions can get merged + // together with `mergefunc`, so only assert this in debug mode + if cfg!(debug_assertions) { + assert!(name.contains(expected_name), + "didn't find `{}` in `{}`", expected_name, name); + } } if can_resolve { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/.travis.yml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/.travis.yml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace/.travis.yml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace/.travis.yml 2019-01-04 19:47:54.000000000 +0000 @@ -27,11 +27,11 @@ - cargo test --no-default-features --features 'unix-backtrace' - cargo test --no-default-features --features 'unix-backtrace dladdr' - cargo test --no-default-features --features 'unix-backtrace libbacktrace' - - cargo test --no-default-features --features 'serialize-serde' - - cargo test --no-default-features --features 'serialize-rustc' - - cargo test --no-default-features --features 'serialize-rustc serialize-serde' - - cargo test --no-default-features --features 'cpp_demangle' - - cargo test --no-default-features --features 'gimli-symbolize' + - cargo test --no-default-features --features 'serialize-serde std' + - cargo test --no-default-features --features 'serialize-rustc std' + - cargo test --no-default-features --features 'serialize-rustc serialize-serde std' + - cargo test --no-default-features --features 'cpp_demangle std' + - cargo test --no-default-features --features 'gimli-symbolize std' - cd ./cpp_smoke_test && cargo test && cd .. - cargo clean && cargo build @@ -43,6 +43,10 @@ - rust: nightly script: *test_all + # Make sure the default crate builds with 1.25.0 + - rust: 1.25.0 + script: cargo test + # Upload docs on nightly - rust: nightly script: @@ -61,7 +65,7 @@ - env: TARGET=powerpc64-unknown-linux-gnu - env: TARGET=powerpc-unknown-linux-gnu - env: TARGET=x86_64-pc-windows-gnu - - env: TARGET=x86_64-unknown-linux-gnu NO_ADD=1 + - env: TARGET=x86_64-unknown-linux-gnu - env: TARGET=x86_64-unknown-linux-musl # Cross compile Android targets from linux @@ -91,10 +95,13 @@ - env: TARGET=x86_64-apple-ios SDK=iphonesimulator os: osx script: *ios-build + - env: TARGET=wasm32-unknown-unknown + script: cargo build --target $TARGET +install: + - if [ "$TARGET" != "" ]; then rustup target add $TARGET; fi # docker cross-compilation targets script: - - if [ "$NO_ADD" == "" ]; then rustup target add $TARGET; fi - cargo generate-lockfile - ci/run-docker.sh $TARGET @@ -102,6 +109,10 @@ email: on_success: never +branches: + only: + - master + env: global: # serde-codegen has historically needed a large stack to expand diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace-sys/build.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace-sys/build.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace-sys/build.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace-sys/build.rs 2019-01-04 19:47:54.000000000 +0000 @@ -7,13 +7,12 @@ fn main() { let target = env::var("TARGET").unwrap(); - // libbacktrace isn't used on windows - if target.contains("windows") { - return - } - - // no way this will ever compile for emscripten - if target.contains("emscripten") { + if target.contains("msvc") || // libbacktrace isn't used on MSVC windows + target.contains("emscripten") || // no way this will ever compile for emscripten + target.contains("cloudabi") || + target.contains("wasm32") + { + println!("cargo:rustc-cfg=empty"); return } @@ -32,12 +31,14 @@ .file("src/libbacktrace/sort.c") .file("src/libbacktrace/state.c"); + // No need to have any symbols reexported form shared objects + build.flag("-fvisibility=hidden"); + if target.contains("darwin") { build.file("src/libbacktrace/macho.c"); } else if target.contains("windows") { build.file("src/libbacktrace/pecoff.c"); } else { - build.flag("-fvisibility=hidden"); build.file("src/libbacktrace/elf.c"); let pointer_width = env::var("CARGO_CFG_TARGET_POINTER_WIDTH").unwrap(); @@ -65,6 +66,12 @@ build.define("_GNU_SOURCE", "1"); build.define("_LARGE_FILES", "1"); + // When we're built as part of the Rust compiler, this is used to enable + // debug information in libbacktrace itself. + let any_debug = env::var("RUSTC_DEBUGINFO").unwrap_or_default() == "true" || + env::var("RUSTC_DEBUGINFO_LINES").unwrap_or_default() == "true"; + build.debug(any_debug); + let syms = [ "backtrace_full", "backtrace_dwarf_add", @@ -86,8 +93,15 @@ "backtrace_create_state", "backtrace_uncompress_zdebug", ]; + let prefix = if cfg!(feature = "rustc-dep-of-std") { + println!("cargo:rustc-cfg=rdos"); + "__rdos_" + } else { + println!("cargo:rustc-cfg=rbt"); + "__rbt_" + }; for sym in syms.iter() { - build.define(sym, &format!("__rbt_{}", sym)[..]); + build.define(sym, &format!("{}{}", prefix, sym)[..]); } build.compile("backtrace"); diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace-sys/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace-sys/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace-sys/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace-sys/.cargo-checksum.json 2019-01-04 19:47:54.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"d7b29a5b7e31bc0ffb83473b2f78041527903740402c1a6394329857045174f7","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","build.rs":"0fe1e551ab35e7589f96979cf1d366561b62925e9c7da6249c25f25684ce9ede","src/lib.rs":"cb45ba047240bceac6ea74da50c2f48ae81a965b578c833a766a3ea0db1075f3","src/libbacktrace/LICENSE":"ef8a9b3247488f8901ca60de9b17b745d7bd67e5ec1e622f80d62364572200d8","src/libbacktrace/Makefile.am":"5353e0ce3a4732b42ccf031c474f7234336992cb23ba76cbfda3aa5262e69988","src/libbacktrace/Makefile.in":"1802d55fa8ef616a407c69311b3fa4e579093d124a215c834149ab1c50b4f3ad","src/libbacktrace/Mark.Twain-Tom.Sawyer.txt":"461eb7cb2d57d293fc680c836464c9125e4382be3596f7d415093ae9db8fcb0e","src/libbacktrace/README.md":"3b27ca2f7ddaf464ad81366a278ed4d34ad513de3766b330a51464828fa3131f","src/libbacktrace/acinclude.m4":"7f1d64805039b0e41d4c4106265618a6f8921d3cf091d64ab31fa7b900dc892f","src/libbacktrace/aclocal.m4":"4899cfe70722ba1de2b42b4e9965c1db1b173b5d6d4522cdc785becd5a5c212c","src/libbacktrace/alloc.c":"33891bbaf755c050058f8fd7dd3708e6062ef65245a0717216af45b78bab0fd0","src/libbacktrace/atomic.c":"82fd23c7ee7154d1ce4fc823637ede9cfa0e469f4073f38fff4dd9081070f1aa","src/libbacktrace/backtrace-supported.h.in":"42277f3c383386b6cfa3d3d889336e92303fac0ae1a9fb8a6a56737245dfb8f3","src/libbacktrace/backtrace.c":"837ea7b781a737d1ed37e4d03c463bcbe1432b2dc3b79b37344b21013cdfcca4","src/libbacktrace/backtrace.h":"9f035b3830c1c6000259c8ecf0bf53144f7c2e6064dfc95975b89f7f612ebf0e","src/libbacktrace/btest.c":"41c774496d58177e408b1dc33d6a792d0940634885978eed73fb192f732cafc5","src/libbacktrace/config.guess":"9be3de218833c076786b919dc34aab691611f4cd73316e7705f2673e2c41921b","src/libbacktrace/config.h.in":"b5002d9f96f6a26f54317f9d23a5ffff71fa3ee520fd8993810891d43b9a9bf7","src/libbacktrace/config.sub":"c8e70ab53f04d2f2b0280aa0e8a5432e90a902bfa2af7b0854168eb1fb3a84c0","src/libbacktrace/config/libtool.m4":"644ce34d5e9fcc544f3ef5c707f4cb29add798bbfc24e29932b55fb251e50353","src/libbacktrace/config/ltoptions.m4":"9d294950c4d97e2c891d472933113f397d410ef2a8ed875d714f81761626bbd8","src/libbacktrace/config/ltsugar.m4":"2c6618a04aa6389a2a528cde2e69ed5de55acc6c50892b486ea3e56e4e5b2c3b","src/libbacktrace/config/ltversion.m4":"8d129a46367fadad9f202dac50e708696d4d628313d01745127388e9c736e996","src/libbacktrace/config/lt~obsolete.m4":"c6c668594337aafef7d59f585bce7010436153815fe341461d81301a2235b959","src/libbacktrace/configure":"59763fc255248b54fba5d0761d61093a73d51fa4cb400b0df1b5f339b9c2f48a","src/libbacktrace/configure.ac":"b9292548330eb4d2cb014e9d9e6cd4df656aed982917365896a8f2534e9732e5","src/libbacktrace/dwarf.c":"c2103af5f94dd135e5df2a98dfc28ef2cbe0f3d56783d21e1487b9f314bfcbbc","src/libbacktrace/edtest.c":"947b9878ae45f6ba95d3b949bb080e9feed4ffdb27536cf5602b81ce79556ccf","src/libbacktrace/edtest2.c":"964bb0bb510a19013fb1cb56552929ed15cf55787eba4369d5820b74be07d249","src/libbacktrace/elf.c":"fe3e10d33c0c0965f016381302128ce82d664071095ad5077932377e3a789679","src/libbacktrace/fileline.c":"7b3b92044648f45becc498d4ed41ddc8ec08f0d11f6491cc05cfccd8a4d7627a","src/libbacktrace/filenames.h":"2c23cde7dd12dd9e0343cb37b5066036112deca703b61178f07c01f3e01398c9","src/libbacktrace/filetype.awk":"aa38776487a77dc13c93efa2a861204b384c3c4333501ed9bdb4ccbde2a784c0","src/libbacktrace/install-sh":"e7064b5e01a8d173409749c337966698fa04661cde1e3ef1a93be250eec0d2c3","src/libbacktrace/internal.h":"88c63ad6acc7e68330df3028675be4d4e3374bd787255fe22dd3febbbbc438b6","src/libbacktrace/ltmain.sh":"873bdcbc8690bd90c0f3632aac40027e880fd95ea45fb5a02ed901fea4afa4fe","src/libbacktrace/macho.c":"9a8864901eede4c34305b05bb6e815b25b76f04b59caf74381ca9dfbe8f1a8c4","src/libbacktrace/missing":"300bea3fb273b763eca2e4bb1576c663605d9b49de385fd375f82be8d912f506","src/libbacktrace/mmap.c":"5be917f3e9eba1fe49eb1bb391e28609e8377b4ce4593cace6012bf17434a33c","src/libbacktrace/mmapio.c":"be5719c4f92e70045fe6014a0493a5b4adc165ecde42c20130ea6e9da1ce978f","src/libbacktrace/move-if-change":"689762b92d23003926ba729acf98b9a109abf46de0698c09ddfa0d20490d8af5","src/libbacktrace/nounwind.c":"5eee9cc7298b7d0d2aea68eef62175541f34f88acf17736e0612056c5bb7318d","src/libbacktrace/pecoff.c":"bb536ae71a1a1c4dad5508d26032e7e81860df6d8ddfc8d696378ebefbc513b1","src/libbacktrace/posix.c":"f5e0ff701a1a1e29a25462ea49f174b049dafc6c25e040ee0eb77dd189353277","src/libbacktrace/print.c":"2d446406c8e2d9a1258d46d119be1c563bd86b6a4039cbf773b6de09c541390d","src/libbacktrace/read.c":"d0d4007f681f265a6c31e27ded45f4007502c90464eefdb4e80b69e4ae2ede28","src/libbacktrace/simple.c":"b0f767d3740195015aeadaa67e84bf6eb255a730f258485ca86bdbe02b066eca","src/libbacktrace/sort.c":"a82f911fc826a353ea5616379748dfa318ad4e57e20791af7ead853f7e73583d","src/libbacktrace/state.c":"a45abbe4077a47d17fb9687057c40828e633df12d21b8ed40b71a78d86918100","src/libbacktrace/stest.c":"7443fe435f1ee5ce49a3e634faf81a4137d66a057577fe88a211cfa819ddb2e2","src/libbacktrace/testlib.c":"a7e096e895b36db7f997a6673ce48f92a032046876511e813a8a52de6079b29a","src/libbacktrace/testlib.h":"02e02404dc89dd4f3dd82635f794a927541dd78d490d777bedf8a5424e5033fc","src/libbacktrace/ttest.c":"380f3b2be164bd6770768181fa05f1778cee8f0322434896d19724ae7cd105df","src/libbacktrace/unknown.c":"d2d148ea045dcad96ba1c5528b7036b000eeb8439ae397bca01deb0d8b287972","src/libbacktrace/xcoff.c":"e70ed97743306f71ea6132a058d68f1bb7be1380a2d38725b5dc877f5e07905d","src/libbacktrace/ztest.c":"7ad8277664e596aecb6af25818b7671e199ef6002ec2c38d9288179c5cad2082","symbol-map":"c81ced08aa32f0edb1d0ed6e4aaf5d3d516f8c158417d2ba3fa36b45b6ae08fd"},"package":"c66d56ac8dabd07f6aacdaf633f4b8262f5b3601a810a0dcddffd5c22c69daa0"} \ No newline at end of file +{"files":{".cargo_vcs_info.json":"e7cad92c73046b7114d428e5a0f61877150eed0aba9e1284c9df2cf464d62e4c","Cargo.toml":"43062fde2094e70935a96bfa6955089ba50c4830cef032a254f91a113436f64d","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","build.rs":"1d02b7002a492425d2604dfd56a831ca562b319ecc34cb6bf164650d1812f043","src/lib.rs":"d52c73337d25132cc5bff2e8fe2d0227c953c95effd65139cdbca562e8df6efa","src/libbacktrace/LICENSE":"ef8a9b3247488f8901ca60de9b17b745d7bd67e5ec1e622f80d62364572200d8","src/libbacktrace/Makefile.am":"5353e0ce3a4732b42ccf031c474f7234336992cb23ba76cbfda3aa5262e69988","src/libbacktrace/Makefile.in":"1802d55fa8ef616a407c69311b3fa4e579093d124a215c834149ab1c50b4f3ad","src/libbacktrace/Mark.Twain-Tom.Sawyer.txt":"461eb7cb2d57d293fc680c836464c9125e4382be3596f7d415093ae9db8fcb0e","src/libbacktrace/README.md":"3b27ca2f7ddaf464ad81366a278ed4d34ad513de3766b330a51464828fa3131f","src/libbacktrace/acinclude.m4":"7f1d64805039b0e41d4c4106265618a6f8921d3cf091d64ab31fa7b900dc892f","src/libbacktrace/aclocal.m4":"4899cfe70722ba1de2b42b4e9965c1db1b173b5d6d4522cdc785becd5a5c212c","src/libbacktrace/alloc.c":"33891bbaf755c050058f8fd7dd3708e6062ef65245a0717216af45b78bab0fd0","src/libbacktrace/atomic.c":"82fd23c7ee7154d1ce4fc823637ede9cfa0e469f4073f38fff4dd9081070f1aa","src/libbacktrace/backtrace-supported.h.in":"42277f3c383386b6cfa3d3d889336e92303fac0ae1a9fb8a6a56737245dfb8f3","src/libbacktrace/backtrace.c":"837ea7b781a737d1ed37e4d03c463bcbe1432b2dc3b79b37344b21013cdfcca4","src/libbacktrace/backtrace.h":"9f035b3830c1c6000259c8ecf0bf53144f7c2e6064dfc95975b89f7f612ebf0e","src/libbacktrace/btest.c":"41c774496d58177e408b1dc33d6a792d0940634885978eed73fb192f732cafc5","src/libbacktrace/config.guess":"9be3de218833c076786b919dc34aab691611f4cd73316e7705f2673e2c41921b","src/libbacktrace/config.h.in":"b5002d9f96f6a26f54317f9d23a5ffff71fa3ee520fd8993810891d43b9a9bf7","src/libbacktrace/config.sub":"c8e70ab53f04d2f2b0280aa0e8a5432e90a902bfa2af7b0854168eb1fb3a84c0","src/libbacktrace/config/libtool.m4":"644ce34d5e9fcc544f3ef5c707f4cb29add798bbfc24e29932b55fb251e50353","src/libbacktrace/config/ltoptions.m4":"9d294950c4d97e2c891d472933113f397d410ef2a8ed875d714f81761626bbd8","src/libbacktrace/config/ltsugar.m4":"2c6618a04aa6389a2a528cde2e69ed5de55acc6c50892b486ea3e56e4e5b2c3b","src/libbacktrace/config/ltversion.m4":"8d129a46367fadad9f202dac50e708696d4d628313d01745127388e9c736e996","src/libbacktrace/config/lt~obsolete.m4":"c6c668594337aafef7d59f585bce7010436153815fe341461d81301a2235b959","src/libbacktrace/configure":"59763fc255248b54fba5d0761d61093a73d51fa4cb400b0df1b5f339b9c2f48a","src/libbacktrace/configure.ac":"b9292548330eb4d2cb014e9d9e6cd4df656aed982917365896a8f2534e9732e5","src/libbacktrace/dwarf.c":"c2103af5f94dd135e5df2a98dfc28ef2cbe0f3d56783d21e1487b9f314bfcbbc","src/libbacktrace/edtest.c":"947b9878ae45f6ba95d3b949bb080e9feed4ffdb27536cf5602b81ce79556ccf","src/libbacktrace/edtest2.c":"964bb0bb510a19013fb1cb56552929ed15cf55787eba4369d5820b74be07d249","src/libbacktrace/elf.c":"fe3e10d33c0c0965f016381302128ce82d664071095ad5077932377e3a789679","src/libbacktrace/fileline.c":"7b3b92044648f45becc498d4ed41ddc8ec08f0d11f6491cc05cfccd8a4d7627a","src/libbacktrace/filenames.h":"2c23cde7dd12dd9e0343cb37b5066036112deca703b61178f07c01f3e01398c9","src/libbacktrace/filetype.awk":"aa38776487a77dc13c93efa2a861204b384c3c4333501ed9bdb4ccbde2a784c0","src/libbacktrace/install-sh":"e7064b5e01a8d173409749c337966698fa04661cde1e3ef1a93be250eec0d2c3","src/libbacktrace/internal.h":"88c63ad6acc7e68330df3028675be4d4e3374bd787255fe22dd3febbbbc438b6","src/libbacktrace/ltmain.sh":"873bdcbc8690bd90c0f3632aac40027e880fd95ea45fb5a02ed901fea4afa4fe","src/libbacktrace/macho.c":"9a8864901eede4c34305b05bb6e815b25b76f04b59caf74381ca9dfbe8f1a8c4","src/libbacktrace/missing":"300bea3fb273b763eca2e4bb1576c663605d9b49de385fd375f82be8d912f506","src/libbacktrace/mmap.c":"5be917f3e9eba1fe49eb1bb391e28609e8377b4ce4593cace6012bf17434a33c","src/libbacktrace/mmapio.c":"be5719c4f92e70045fe6014a0493a5b4adc165ecde42c20130ea6e9da1ce978f","src/libbacktrace/move-if-change":"689762b92d23003926ba729acf98b9a109abf46de0698c09ddfa0d20490d8af5","src/libbacktrace/nounwind.c":"5eee9cc7298b7d0d2aea68eef62175541f34f88acf17736e0612056c5bb7318d","src/libbacktrace/pecoff.c":"bb536ae71a1a1c4dad5508d26032e7e81860df6d8ddfc8d696378ebefbc513b1","src/libbacktrace/posix.c":"f5e0ff701a1a1e29a25462ea49f174b049dafc6c25e040ee0eb77dd189353277","src/libbacktrace/print.c":"2d446406c8e2d9a1258d46d119be1c563bd86b6a4039cbf773b6de09c541390d","src/libbacktrace/read.c":"d0d4007f681f265a6c31e27ded45f4007502c90464eefdb4e80b69e4ae2ede28","src/libbacktrace/simple.c":"b0f767d3740195015aeadaa67e84bf6eb255a730f258485ca86bdbe02b066eca","src/libbacktrace/sort.c":"a82f911fc826a353ea5616379748dfa318ad4e57e20791af7ead853f7e73583d","src/libbacktrace/state.c":"a45abbe4077a47d17fb9687057c40828e633df12d21b8ed40b71a78d86918100","src/libbacktrace/stest.c":"7443fe435f1ee5ce49a3e634faf81a4137d66a057577fe88a211cfa819ddb2e2","src/libbacktrace/testlib.c":"a7e096e895b36db7f997a6673ce48f92a032046876511e813a8a52de6079b29a","src/libbacktrace/testlib.h":"02e02404dc89dd4f3dd82635f794a927541dd78d490d777bedf8a5424e5033fc","src/libbacktrace/ttest.c":"380f3b2be164bd6770768181fa05f1778cee8f0322434896d19724ae7cd105df","src/libbacktrace/unknown.c":"d2d148ea045dcad96ba1c5528b7036b000eeb8439ae397bca01deb0d8b287972","src/libbacktrace/xcoff.c":"e70ed97743306f71ea6132a058d68f1bb7be1380a2d38725b5dc877f5e07905d","src/libbacktrace/ztest.c":"7ad8277664e596aecb6af25818b7671e199ef6002ec2c38d9288179c5cad2082"},"package":"797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace-sys/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace-sys/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace-sys/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace-sys/Cargo.toml 2019-01-04 19:47:54.000000000 +0000 @@ -12,7 +12,7 @@ [package] name = "backtrace-sys" -version = "0.1.24" +version = "0.1.28" authors = ["Alex Crichton "] build = "build.rs" description = "Bindings to the libbacktrace gcc library\n" @@ -22,5 +22,6 @@ repository = "https://github.com/alexcrichton/backtrace-rs" [dependencies.libc] version = "0.2" +default-features = false [build-dependencies.cc] version = "1.0" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace-sys/.cargo_vcs_info.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace-sys/.cargo_vcs_info.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace-sys/.cargo_vcs_info.json 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace-sys/.cargo_vcs_info.json 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,5 @@ +{ + "git": { + "sha1": "c4e5db89fc7e2372626d2e750ee0cb3921f58540" + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace-sys/src/lib.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace-sys/src/lib.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace-sys/src/lib.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace-sys/src/lib.rs 2019-01-04 19:47:54.000000000 +0000 @@ -1,44 +1,52 @@ #![allow(bad_style)] +#![no_std] extern crate libc; -use libc::uintptr_t; -use std::os::raw::{c_void, c_char, c_int}; +#[cfg(not(empty))] +pub use self::bindings::*; +#[cfg(not(empty))] +mod bindings { + use libc::{c_void, c_char, c_int, uintptr_t}; -pub type backtrace_syminfo_callback = - extern fn(data: *mut c_void, - pc: uintptr_t, - symname: *const c_char, - symval: uintptr_t, - symsize: uintptr_t); -pub type backtrace_full_callback = - extern fn(data: *mut c_void, - pc: uintptr_t, - filename: *const c_char, - lineno: c_int, - function: *const c_char) -> c_int; -pub type backtrace_error_callback = - extern fn(data: *mut c_void, - msg: *const c_char, - errnum: c_int); -pub enum backtrace_state {} + pub type backtrace_syminfo_callback = + extern fn(data: *mut c_void, + pc: uintptr_t, + symname: *const c_char, + symval: uintptr_t, + symsize: uintptr_t); + pub type backtrace_full_callback = + extern fn(data: *mut c_void, + pc: uintptr_t, + filename: *const c_char, + lineno: c_int, + function: *const c_char) -> c_int; + pub type backtrace_error_callback = + extern fn(data: *mut c_void, + msg: *const c_char, + errnum: c_int); + pub enum backtrace_state {} -extern { - #[link_name = "__rbt_backtrace_create_state"] - pub fn backtrace_create_state(filename: *const c_char, - threaded: c_int, - error: backtrace_error_callback, - data: *mut c_void) -> *mut backtrace_state; - #[link_name = "__rbt_backtrace_syminfo"] - pub fn backtrace_syminfo(state: *mut backtrace_state, - addr: uintptr_t, - cb: backtrace_syminfo_callback, - error: backtrace_error_callback, - data: *mut c_void) -> c_int; - #[link_name = "__rbt_backtrace_pcinfo"] - pub fn backtrace_pcinfo(state: *mut backtrace_state, - addr: uintptr_t, - cb: backtrace_full_callback, - error: backtrace_error_callback, - data: *mut c_void) -> c_int; + extern "C" { + #[cfg_attr(rdos, link_name = "__rdos_backtrace_create_state")] + #[cfg_attr(rbt, link_name = "__rbt_backtrace_create_state")] + pub fn backtrace_create_state(filename: *const c_char, + threaded: c_int, + error: backtrace_error_callback, + data: *mut c_void) -> *mut backtrace_state; + #[cfg_attr(rdos, link_name = "__rdos_backtrace_syminfo")] + #[cfg_attr(rbt, link_name = "__rbt_backtrace_syminfo")] + pub fn backtrace_syminfo(state: *mut backtrace_state, + addr: uintptr_t, + cb: backtrace_syminfo_callback, + error: backtrace_error_callback, + data: *mut c_void) -> c_int; + #[cfg_attr(rdos, link_name = "__rdos_backtrace_pcinfo")] + #[cfg_attr(rbt, link_name = "__rbt_backtrace_pcinfo")] + pub fn backtrace_pcinfo(state: *mut backtrace_state, + addr: uintptr_t, + cb: backtrace_full_callback, + error: backtrace_error_callback, + data: *mut c_void) -> c_int; + } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace-sys/symbol-map distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace-sys/symbol-map --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/backtrace-sys/symbol-map 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/backtrace-sys/symbol-map 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -backtrace_full __rbt_backtrace_full -backtrace_dwarf_add __rbt_backtrace_dwarf_add -backtrace_initialize __rbt_backtrace_initialize -backtrace_pcinfo __rbt_backtrace_pcinfo -backtrace_syminfo __rbt_backtrace_syminfo -backtrace_get_view __rbt_backtrace_get_view -backtrace_release_view __rbt_backtrace_release_view -backtrace_alloc __rbt_backtrace_alloc -backtrace_free __rbt_backtrace_free -backtrace_vector_finish __rbt_backtrace_vector_finish -backtrace_vector_grow __rbt_backtrace_vector_grow -backtrace_vector_release __rbt_backtrace_vector_release -backtrace_close __rbt_backtrace_close -backtrace_open __rbt_backtrace_open -backtrace_print __rbt_backtrace_print -backtrace_simple __rbt_backtrace_simple -backtrace_qsort __rbt_backtrace_qsort -backtrace_create_state __rbt_backtrace_create_state -backtrace_uncompress_zdebug __rbt_backtrace_uncompress_zdebug diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/cc/appveyor.yml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/cc/appveyor.yml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/cc/appveyor.yml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/cc/appveyor.yml 1970-01-01 00:00:00.000000000 +0000 @@ -1,55 +0,0 @@ -environment: - - # At the time this was added AppVeyor was having troubles with checking - # revocation of SSL certificates of sites like static.rust-lang.org and what - # we think is crates.io. The libcurl HTTP client by default checks for - # revocation on Windows and according to a mailing list [1] this can be - # disabled. - # - # The `CARGO_HTTP_CHECK_REVOKE` env var here tells cargo to disable SSL - # revocation checking on Windows in libcurl. Note, though, that rustup, which - # we're using to download Rust here, also uses libcurl as the default backend. - # Unlike Cargo, however, rustup doesn't have a mechanism to disable revocation - # checking. To get rustup working we set `RUSTUP_USE_HYPER` which forces it to - # use the Hyper instead of libcurl backend. Both Hyper and libcurl use - # schannel on Windows but it appears that Hyper configures it slightly - # differently such that revocation checking isn't turned on by default. - # - # [1]: https://curl.haxx.se/mail/lib-2016-03/0202.html - RUSTUP_USE_HYPER: 1 - CARGO_HTTP_CHECK_REVOKE: false - - matrix: - - TARGET: x86_64-pc-windows-msvc - ARCH: amd64 - VS: C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat - - TARGET: x86_64-pc-windows-msvc - ARCH: amd64 - VS: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat - - TARGET: i686-pc-windows-msvc - ARCH: x86 - VS: C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat - - TARGET: i686-pc-windows-msvc - ARCH: x86 - VS: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat - - TARGET: x86_64-pc-windows-gnu - MSYS_BITS: 64 - - TARGET: i686-pc-windows-gnu - MSYS_BITS: 32 -install: - - ps: Start-FileDownload "https://static.rust-lang.org/dist/rust-nightly-${env:TARGET}.exe" - - rust-nightly-%TARGET%.exe /VERYSILENT /NORESTART /DIR="C:\Program Files (x86)\Rust" - - if defined VS call "%VS%" %ARCH% - - set PATH=%PATH%;C:\Program Files (x86)\Rust\bin - - if defined MSYS_BITS set PATH=%PATH%;C:\msys64\mingw%MSYS_BITS%\bin - - rustc -V - - cargo -V - -build: false - -test_script: - - cargo test --target %TARGET% - - cargo test --features parallel --target %TARGET% - - cargo test --manifest-path cc-test/Cargo.toml --target %TARGET% - - cargo test --manifest-path cc-test/Cargo.toml --features parallel --target %TARGET% - - cargo test --manifest-path cc-test/Cargo.toml --release --target %TARGET% diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/cc/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/cc/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/cc/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/cc/.cargo-checksum.json 2019-01-04 19:47:54.000000000 +0000 @@ -1 +1 @@ -{"files":{".travis.yml":"7b18272b20d4b58996deb3e2d5d76f15a27d6a63a061abeefb6553a2b8650736","Cargo.toml":"8b0ccc57b8ea0c2bfc417cc2e5c3a6750eec5c0a82d3de0ce09fe2197d2867af","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"3eeb4b0488908876c439a87cfe2bec6d550b37388993b2d8863fb1c587a84f46","appveyor.yml":"ab45bfdcf2596f357225a54e730c34d518a8f3ad56c2ed33af682cfd45bddc02","src/bin/gcc-shim.rs":"d6be9137cb48b86891e7b263adbf492e1193ffe682db9ba4a88eb1079b874b58","src/com.rs":"8b9a54af5400c259f877126cc68ea63ada4fe66e84c9b840711c95e570b15774","src/lib.rs":"a9c3515602e52501ef43dd4383418baa1e2eb66d250575d16dfcd3e60801bb25","src/registry.rs":"3cc1b5a50879fa751572878ae1d0afbfc960c11665258492754b2c8bccb0ff5d","src/setup_config.rs":"f5c45afc99ad3b7c1311242bc4baf37e861d740ab81bf6ca90e2aa283672e65a","src/winapi.rs":"d7929b36130e33f1caa6bd444b378b83023b2b82d589c6e0ab38c4ff6c950da8","src/windows_registry.rs":"bdf8d441c57e3247a305a593e6280f41021ac81f45c2f3299c406b9a68817b20","tests/cc_env.rs":"bf7b14aa52af04294f648b2934f0f1830c5a0bdac1676310b8aa1f61458e7782","tests/support/mod.rs":"80dc87e54025197104cfb62d1af7a3400a3a0ddf0f2d98ea4ef4111cb1f0c890","tests/test.rs":"653b7d9ad6503aaf2ffc6c9b86014dbad456b53bcd124c9de4714067f49e5095"},"package":"f159dfd43363c4d08055a07703eb7a3406b0dac4d0584d96965a3262db3c9d16"} \ No newline at end of file +{"files":{".cargo_vcs_info.json":"afc73121d9da39579ad9471de2fb8be33b9c7c99d83d8a9bcc8943943bedfae7","Cargo.toml":"fbef1cb94911147d635fe6a12889dd3ba15060e59447cff57892c65482c27073","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"3eeb4b0488908876c439a87cfe2bec6d550b37388993b2d8863fb1c587a84f46","src/bin/gcc-shim.rs":"d6be9137cb48b86891e7b263adbf492e1193ffe682db9ba4a88eb1079b874b58","src/com.rs":"8b9a54af5400c259f877126cc68ea63ada4fe66e84c9b840711c95e570b15774","src/lib.rs":"74b3e65bbb7999fd65de8a906ca4daa441742780b2e8d1eb557a1113e014de87","src/registry.rs":"3cc1b5a50879fa751572878ae1d0afbfc960c11665258492754b2c8bccb0ff5d","src/setup_config.rs":"f5c45afc99ad3b7c1311242bc4baf37e861d740ab81bf6ca90e2aa283672e65a","src/winapi.rs":"d7929b36130e33f1caa6bd444b378b83023b2b82d589c6e0ab38c4ff6c950da8","src/windows_registry.rs":"b1293868645ceea5ee8dfb1afed8cc8290e6735c4d25dc43ea7d387778167180","tests/cc_env.rs":"bf7b14aa52af04294f648b2934f0f1830c5a0bdac1676310b8aa1f61458e7782","tests/support/mod.rs":"80dc87e54025197104cfb62d1af7a3400a3a0ddf0f2d98ea4ef4111cb1f0c890","tests/test.rs":"d839b2bcdb367180e537c0d26cb2d918d5ddfc587801c7051f4955d25688ea7d"},"package":"bb4a8b715cb4597106ea87c7c84b2f1d452c7492033765df7f32651e66fcf749"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/cc/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/cc/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/cc/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/cc/Cargo.toml 2019-01-04 19:47:54.000000000 +0000 @@ -12,8 +12,9 @@ [package] name = "cc" -version = "1.0.25" +version = "1.0.28" authors = ["Alex Crichton "] +exclude = ["/.travis.yml", "/appveyor.yml"] description = "A build-time dependency for Cargo build scripts to assist in invoking the native\nC compiler to compile native C code into a static archive to be linked into Rust\ncode.\n" homepage = "https://github.com/alexcrichton/cc-rs" documentation = "https://docs.rs/cc" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/cc/.cargo_vcs_info.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/cc/.cargo_vcs_info.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/cc/.cargo_vcs_info.json 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/cc/.cargo_vcs_info.json 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,5 @@ +{ + "git": { + "sha1": "9490b5ecb43b8b926f96a7e484fa83e39620d8e5" + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/cc/src/lib.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/cc/src/lib.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/cc/src/lib.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/cc/src/lib.rs 2019-01-04 19:47:54.000000000 +0000 @@ -55,6 +55,7 @@ #![doc(html_root_url = "https://docs.rs/cc/1.0")] #![cfg_attr(test, deny(warnings))] +#![allow(deprecated)] #![deny(missing_docs)] #[cfg(feature = "parallel")] @@ -112,6 +113,7 @@ archiver: Option, cargo_metadata: bool, pic: Option, + use_plt: Option, static_crt: Option, shared_flag: Option, static_flag: Option, @@ -319,6 +321,7 @@ archiver: None, cargo_metadata: true, pic: None, + use_plt: None, static_crt: None, warnings: None, extra_warnings: None, @@ -822,6 +825,21 @@ self } + /// Configures whether the Procedure Linkage Table is used for indirect + /// calls into shared libraries. + /// + /// The PLT is used to provide features like lazy binding, but introduces + /// a small performance loss due to extra pointer indirection. Setting + /// `use_plt` to `false` can provide a small performance increase. + /// + /// Note that skipping the PLT requires a recent version of GCC/Clang. + /// + /// This only applies to ELF targets. It has no effect on other platforms. + pub fn use_plt(&mut self, use_plt: bool) -> &mut Build { + self.use_plt = Some(use_plt); + self + } + /// Configures whether the /MT flag or the /MD flag will be passed to msvc build tools. /// /// This option defaults to `false`, and affect only msvc targets. @@ -1123,6 +1141,11 @@ } if self.pic.unwrap_or(!target.contains("windows-gnu")) { cmd.push_cc_arg("-fPIC".into()); + // PLT only applies if code is compiled with PIC support, + // and only for ELF targets. + if target.contains("linux") && !self.use_plt.unwrap_or(true) { + cmd.push_cc_arg("-fno-plt".into()); + } } } } @@ -1159,6 +1182,19 @@ cmd.args.push("/ARCH:IA32".into()); } } + + // There is a check in corecrt.h that will generate a + // compilation error if + // _ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE is + // not defined to 1. The check was added in Windows + // 8 days because only store apps were allowed on ARM. + // This changed with the release of Windows 10 IoT Core. + // The check will be going away in future versions of + // the SDK, but for all released versions of the + // Windows SDK it is required. + if target.contains("arm") || target.contains("thumb") { + cmd.args.push("/D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1".into()); + } } ToolFamily::Gnu => { if target.contains("i686") || target.contains("i586") { @@ -1214,6 +1250,11 @@ if target.starts_with("arm-unknown-linux-") { cmd.args.push("-march=armv6".into()); cmd.args.push("-marm".into()); + if target.ends_with("hf") { + cmd.args.push("-mfpu=vfp".into()); + } else { + cmd.args.push("-mfloat-abi=soft".into()); + } } // We can guarantee some settings for FRC @@ -1264,6 +1305,16 @@ if target.starts_with("thumbv7m") { cmd.args.push("-march=armv7-m".into()); } + if target.starts_with("thumbv8m.base") { + cmd.args.push("-march=armv8-m.base".into()); + } + if target.starts_with("thumbv8m.main") { + cmd.args.push("-march=armv8-m.main".into()); + + if target.ends_with("eabihf") { + cmd.args.push("-mfpu=fpv5-sp-d16".into()) + } + } if target.starts_with("armebv7r") | target.starts_with("armv7r") { if target.starts_with("armeb") { cmd.args.push("-mbig-endian".into()); @@ -1718,6 +1769,9 @@ "thumbv7em-none-eabi" => Some("arm-none-eabi"), "thumbv7em-none-eabihf" => Some("arm-none-eabi"), "thumbv7m-none-eabi" => Some("arm-none-eabi"), + "thumbv8m.base-none-eabi" => Some("arm-none-eabi"), + "thumbv8m.main-none-eabi" => Some("arm-none-eabi"), + "thumbv8m.main-none-eabihf" => Some("arm-none-eabi"), "x86_64-pc-windows-gnu" => Some("x86_64-w64-mingw32"), "x86_64-rumprun-netbsd" => Some("x86_64-rumprun-netbsd"), "x86_64-unknown-linux-musl" => Some("musl"), diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/cc/src/windows_registry.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/cc/src/windows_registry.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/cc/src/windows_registry.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/cc/src/windows_registry.rs 2019-01-04 19:47:54.000000000 +0000 @@ -174,7 +174,7 @@ use std::io::Read; use registry::{RegistryKey, LOCAL_MACHINE}; use com; - use setup_config::{SetupConfiguration, SetupInstance}; + use setup_config::{EnumSetupInstances, SetupConfiguration, SetupInstance}; use Tool; @@ -217,11 +217,15 @@ // Note that much of this logic can be found [online] wrt paths, COM, etc. // // [online]: https://blogs.msdn.microsoft.com/vcblog/2017/03/06/finding-the-visual-c-compiler-tools-in-visual-studio-2017/ - pub fn find_msvc_15(tool: &str, target: &str) -> Option { + fn vs15_instances() -> Option { otry!(com::initialize().ok()); let config = otry!(SetupConfiguration::new().ok()); - let iter = otry!(config.enum_all_instances().ok()); + config.enum_all_instances().ok() + } + + pub fn find_msvc_15(tool: &str, target: &str) -> Option { + let iter = otry!(vs15_instances()); for instance in iter { let instance = otry!(instance.ok()); let tool = tool_from_vs15_instance(tool, target, &instance); @@ -233,6 +237,44 @@ None } + // While the paths to Visual Studio 2017's devenv and MSBuild could + // potentially be retrieved from the registry, finding them via + // SetupConfiguration has shown to be [more reliable], and is preferred + // according to Microsoft. To help head off potential regressions though, + // we keep the registry method as a fallback option. + // + // [more reliable]: https://github.com/alexcrichton/cc-rs/pull/331 + fn find_tool_in_vs15_path(tool: &str, target: &str) -> Option { + let mut path = match vs15_instances() { + Some(instances) => instances + .filter_map(|instance| { + instance + .ok() + .and_then(|instance| instance.installation_path().ok()) + }).map(|path| PathBuf::from(path).join(tool)) + .find(|ref path| path.is_file()), + None => None, + }; + + if path.is_none() { + let key = r"SOFTWARE\WOW6432Node\Microsoft\VisualStudio\SxS\VS7"; + path = LOCAL_MACHINE + .open(key.as_ref()) + .ok() + .and_then(|key| key.query_str("15.0").ok()) + .map(|path| PathBuf::from(path).join(tool)) + .filter(|ref path| path.is_file()); + } + + path.map(|path| { + let mut tool = Tool::new(path); + if target.contains("x86_64") { + tool.env.push(("Platform".into(), "X64".into())); + } + tool + }) + } + fn tool_from_vs15_instance(tool: &str, target: &str, instance: &SetupInstance) -> Option { let (bin_path, host_dylib_path, lib_path, include_path) = otry!(vs15_vc_paths(target, instance)); @@ -595,7 +637,7 @@ for subkey in key.iter().filter_map(|k| k.ok()) { let val = subkey .to_str() - .and_then(|s| s.trim_left_matches("v").replace(".", "").parse().ok()); + .and_then(|s| s.trim_start_matches("v").replace(".", "").parse().ok()); let val = match val { Some(s) => s, None => continue, @@ -631,19 +673,7 @@ } fn find_devenv_vs15(target: &str) -> Option { - let key = r"SOFTWARE\WOW6432Node\Microsoft\VisualStudio\SxS\VS7"; - LOCAL_MACHINE - .open(key.as_ref()) - .ok() - .and_then(|key| key.query_str("15.0").ok()) - .map(|path| { - let path = PathBuf::from(path).join(r"Common7\IDE\devenv.exe"); - let mut tool = Tool::new(path); - if target.contains("x86_64") { - tool.env.push(("Platform".into(), "X64".into())); - } - tool - }) + find_tool_in_vs15_path(r"Common7\IDE\devenv.exe", target) } // see http://stackoverflow.com/questions/328017/path-to-msbuild @@ -657,22 +687,7 @@ } fn find_msbuild_vs15(target: &str) -> Option { - // Seems like this could also go through SetupConfiguration, - // or that find_msvc_15 could just use this registry key - // instead of the COM interface. - let key = r"SOFTWARE\WOW6432Node\Microsoft\VisualStudio\SxS\VS7"; - LOCAL_MACHINE - .open(key.as_ref()) - .ok() - .and_then(|key| key.query_str("15.0").ok()) - .map(|path| { - let path = PathBuf::from(path).join(r"MSBuild\15.0\Bin\MSBuild.exe"); - let mut tool = Tool::new(path); - if target.contains("x86_64") { - tool.env.push(("Platform".into(), "X64".into())); - } - tool - }) + find_tool_in_vs15_path(r"MSBuild\15.0\Bin\MSBuild.exe", target) } fn find_old_msbuild(target: &str) -> Option { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/cc/tests/test.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/cc/tests/test.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/cc/tests/test.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/cc/tests/test.rs 2019-01-04 19:47:54.000000000 +0000 @@ -198,6 +198,20 @@ } #[test] +fn gnu_x86_64_no_plt() { + let target = "x86_64-unknown-linux-gnu"; + let test = Test::gnu(); + test.gcc() + .pic(true) + .use_plt(false) + .target(&target) + .host(&target) + .file("foo.c") + .compile("foo"); + test.cmd(0).must_have("-fno-plt"); +} + +#[test] fn gnu_set_stdlib() { let test = Test::gnu(); test.gcc() diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/cc/.travis.yml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/cc/.travis.yml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/cc/.travis.yml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/cc/.travis.yml 1970-01-01 00:00:00.000000000 +0000 @@ -1,64 +0,0 @@ -language: rust -sudo: false - -matrix: - include: - - rust: 1.16.0 - install: - script: cargo build - - rust: stable - env: TARGET=x86_64-unknown-linux-gnu NO_ADD=1 - - rust: stable - env: TARGET=i686-unknown-linux-gnu - - os: osx - env: TARGET=x86_64-apple-darwin NO_ADD=1 - - os: osx - env: TARGET=aarch64-apple-ios NO_RUN=--no-run TARGET_SYSROOT=$(xcrun -sdk iphoneos --show-sdk-path) - - rust: beta - env: TARGET=x86_64-unknown-linux-gnu NO_ADD=1 - - rust: nightly - env: TARGET=x86_64-unknown-linux-gnu NO_ADD=1 - - - rust: nightly - before_script: - - pip install 'travis-cargo<0.2' --user && export PATH=$HOME/.local/bin:$PATH - install: - script: - - cargo doc --no-deps --all-features - after_success: - - travis-cargo --only nightly doc-upload - -install: - - if [ -z "$NO_ADD" ]; then rustup target add $TARGET; fi - -script: - - cargo build --verbose - # FIXME: no idea why `--test-threads=1` is required on the OSX builder, it - # just randomly broke one day when the travis image was upgraded, and - # debugging turned up no easily found source of bugs... - # - # good build - https://travis-ci.org/alexcrichton/cc-rs/builds/409602374 - # bad build - https://travis-ci.org/alexcrichton/cc-rs/builds/410489079 - # - # Those are using the same compiler, same commit, same... everything. Except - # the OSX image! No idea what changed... - - cargo test --verbose $NO_RUN -- --test-threads=1 - - cargo test --verbose --features parallel $NO_RUN -- --test-threads=1 - - cargo test --manifest-path cc-test/Cargo.toml --target $TARGET $NO_RUN - - cargo test --manifest-path cc-test/Cargo.toml --target $TARGET --features parallel $NO_RUN - - cargo test --manifest-path cc-test/Cargo.toml --target $TARGET --release $NO_RUN - - cargo doc - - cargo clean && cargo build - - rustdoc --test README.md -L target/debug -L target/debug/deps - -env: - global: - secure: "CBtqrudgE0PS8x3kTr44jKbC2D4nfnmdYVecooNm0qnER4B4TSvZpZSQoCgKK6k4BYQuOSyFTOwYx6M79w39ZMOgyCP9ytB+tyMWL0/+ZuUQL04yVg4M5vd3oJMkOaXbvG56ncgPyFrseY+FPDg+mXAzvJk/nily37YXjkQj2D0=" - -notifications: - email: - on_success: never -addons: - apt: - packages: - - g++-multilib diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/book/src/error-errorkind.md distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/book/src/error-errorkind.md --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/book/src/error-errorkind.md 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/book/src/error-errorkind.md 2019-01-04 19:47:54.000000000 +0000 @@ -39,6 +39,10 @@ ```rust impl Fail for MyError { + fn name(&self) -> Option<&str> { + self.inner.name() + } + fn cause(&self) -> Option<&Fail> { self.inner.cause() } @@ -140,4 +144,4 @@ [use-error]: ./use-error.html [custom-fail]: ./custom-fail.html -[context-api]: https://boats.gitlab.io/failure/doc/failure/struct.Context.html +[context-api]: https://docs.rs/failure/latest/failure/struct.Context.html diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/book/src/error-msg.md distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/book/src/error-msg.md --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/book/src/error-msg.md 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/book/src/error-msg.md 2019-01-04 19:47:54.000000000 +0000 @@ -55,5 +55,5 @@ [custom-fail]: ./custom-fail.html [use-error]: ./use-error.html -[err-msg-api]: https://boats.gitlab.io/failure/doc/failure/fn.err_msg.html -[format-err-api]: https://boats.gitlab.io/failure/doc/failure/macro.format_err.html +[err-msg-api]: https://docs.rs/failure/latest/failure/fn.err_msg.html +[format-err-api]: https://docs.rs/failure/latest/failure/macro.format_err.html diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/book/src/fail.md distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/book/src/fail.md --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/book/src/fail.md 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/book/src/fail.md 2019-01-04 19:47:54.000000000 +0000 @@ -147,6 +147,6 @@ implement `std::error::Error` and also override the backtrace and cause methods on `Fail`. We intend to enable this with specialization when it becomes stable. -[derive-docs]: https://boats.gitlab.io/failure/derive-fail.html +[derive-docs]: ./derive-fail.html [stderror]: https://doc.rust-lang.org/std/error/trait.Error.html [backtrace-crate]: http://alexcrichton.com/backtrace-rs diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/book/src/intro.md distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/book/src/intro.md --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/book/src/intro.md 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/book/src/intro.md 2019-01-04 19:47:54.000000000 +0000 @@ -6,7 +6,7 @@ * [API documentation][api] * [failure source code][repo] -[api]: https://boats.gitlab.io/failure/doc/failure +[api]: https://docs.rs/failure [repo]: https://github.com/rust-lang-nursery/failure ```rust diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/book/src/string-custom-error.md distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/book/src/string-custom-error.md --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/book/src/string-custom-error.md 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/book/src/string-custom-error.md 2019-01-04 19:47:54.000000000 +0000 @@ -20,6 +20,10 @@ } impl Fail for MyError { + fn name(&self) -> Option<&str> { + self.inner.name() + } + fn cause(&self) -> Option<&Fail> { self.inner.cause() } @@ -105,6 +109,10 @@ } impl Fail for MyError { + fn name(&self) -> Option<&str> { + self.inner.name() + } + fn cause(&self) -> Option<&Fail> { self.inner.cause() } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/.cargo-checksum.json 2019-01-04 19:47:54.000000000 +0000 @@ -1 +1 @@ -{"files":{".gitlab-ci.yml":"dfbe8fcda3a10c658667ea934358eae2189f7c711e3cff710fba47615b80c75f",".travis.yml":"a2f3133877d5c4b9a7bbbff6baa7773800243ff2e1e58a06203c4568afe3a305","CODE_OF_CONDUCT.md":"9a7bc3fdffac1288f51485e70a910a4e9de1260a64fbe894f60ad73b3386dda9","Cargo.toml":"2e6b46b3ac49b9890868cd4ea2118efbaf4ca80e136a1b5b417ce95ea91fb293","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","Makefile":"61a649ecb55115ba0f357215eb322fa6676ce163ca20bff59d7c5e275aa37035","README.md":"d4dba8ed8b388c1e24bcaaa0f0e75a0830885d6db9bedc9630591a180c744f73","RELEASES.md":"42304b5bc4cfd3a5f93d17bfe34d24f6b8bb918e89c57425adbb503f500b558c","book/src/SUMMARY.md":"32f211f5aeb51a05b3c6a41a128bdb9e410ae84008a93e6b13442e45cd1c91d4","book/src/bail-and-ensure.md":"08fb463570143ec6568189468f1f54a7210b0a1ad66a57f7f7c36619831b4d72","book/src/custom-fail.md":"d4b1501201f9c54637bc40a2413e333f6f7d4fcfc8e3de74bf40d48eca0d4e41","book/src/derive-fail.md":"69916338286f970ae6709fb309bd4d80c321fea10b927f14efe402e3c0a5fdc9","book/src/error-errorkind.md":"40663de622bfb89a3dedcf6e093ec61eb1ab704d512d725e33f66aec38911757","book/src/error-msg.md":"2ab003bde8e88e0e3b9d1559d95e84b0ca7068522e324235bc4b2fdb88996d51","book/src/error.md":"c978778e7986e5febfb37e635525053ef73c534e4b6e9fc25deb576fdbdc111d","book/src/fail.md":"076ed560e9ad293bf99611f9407d4dc17310c42cf1652dd1f3f4be85fb5f17b8","book/src/guidance.md":"614cb85ae32c2b59119cd1db7eea008e50b051563c15ba1305f312fa2eeb3ac0","book/src/howto.md":"e18744011f5cc5779f5bb981ebd10f0af440c98398b2eb5af0ee27b9662ee410","book/src/intro.md":"eeb23e1ac3ccf75c4779603662910e96df647a02c73665a206dcc34c56d77eaf","book/src/string-custom-error.md":"f1d94e211f1d2dfb2d9d9a0d7eb745b8ea7f08f26243283fddb440cb099893ff","book/src/use-error.md":"a7f91e06eb676318da04a56e4b31c73dd7db888d43c215e1534a5bc415e98258","build-docs.sh":"27b611219773192b9f972b2054522481fd5c2c9419c155535f58d05bfc31fffe","examples/bail_ensure.rs":"fffc71e41f9fbbc2a7db453ef20779716007ed6bbb01e45fbcefb1e073745ecc","examples/error_as_cause.rs":"e0a6472455db5e484febc196667bc46c939d9f890bfe550ab7435d52b1ac6b2b","examples/simple.rs":"7a5fc0673b6bb5bd3716416a6545f7ff471d182292a2c8424cf18bc4a72f6936","examples/string_custom_error_pattern.rs":"23b5bf79a7219aa8a80484c0df70cd43d882b7dccd91de9ceb1aac05b0b1b4f2","src/as_fail.rs":"8a381a9624b3d28b45f92f8b527d7496e7a722c8aa0d632f0b23bbe0af98a76e","src/backtrace/internal.rs":"3fc4943061d4396c855571f134cd922f428cbe930689c8191376867b729d7b08","src/backtrace/mod.rs":"df3a348300775182c2780c542f119c989a6004cff841d817bdf7b93eef9a0dd3","src/box_std.rs":"224f3e3f48ad217ba34a54a62f608f9cba3ce95b176558684706c2f7fe72ce72","src/compat.rs":"97ed4fa49ac80c915b384b29a1bf678430cf1ea8ea61aa794a6014a1c3217762","src/context.rs":"d91ed85add638af7c9d481cb82ee6633c3678978951a5530c166fc156efac2e4","src/error/error_impl.rs":"063b9d9127f455b7555184af2576bc59e650add13c820be4960a3a5e5da0a9e4","src/error/error_impl_small.rs":"e6cbbd4d12e8eec1bd0f15713d33a0e525599268c9316dd40240eb7cd9e19a9d","src/error/mod.rs":"103621b313bd729c94054c5d88edd59d8c07311b650873e81b5021362647ae7a","src/error_message.rs":"2a45a3bd142e6547fc5da27c182fb690e2990de11db2a9b8ce63e50d9c589997","src/lib.rs":"0969303376ab328e16d7c64d690fc71a1e4eee00b413e79009cd590a2c4abbc0","src/macros.rs":"47cc9c73291e6edb3365d72b772d781215d123240f89a5fff914d23927781efa","src/result_ext.rs":"8088c3cb1481e81891014c99cc0f1b75f25a2f212b52ae856583e4c1f1901d09","src/small_error.rs":"652bf6ff2016d8e31b6ee709ad3efaff9f4e96d5aec8120ea3986a0bb8f57c54","src/sync_failure.rs":"a92a2e8b416196322718a4e7e1262f5b1b0a6be47b849d9a7e1050c1d33490db","travis.sh":"836024f7a56fdbe24a99ab9ce9350713831f4375a60f02593aad6637b766a330"},"package":"6dd377bcc1b1b7ce911967e3ec24fa19c3224394ec05b54aa7b083d498341ac7"} \ No newline at end of file +{"files":{".cargo_vcs_info.json":"4b4e08595c2e22f86458aed32384274ce7515def2a1da6910dc7cb4eda4afd71",".gitlab-ci.yml":"dfbe8fcda3a10c658667ea934358eae2189f7c711e3cff710fba47615b80c75f",".travis.yml":"eebf05e2670420c92ec1eab44c2cb029f5248cc9f48ac7dd34b0ef71486aa7be","CODE_OF_CONDUCT.md":"9a7bc3fdffac1288f51485e70a910a4e9de1260a64fbe894f60ad73b3386dda9","Cargo.lock.ci":"12d0dd55b846b7958be2f90e4e1c549d661acb17bf4f35abb760a309e1eadf08","Cargo.toml":"ebbba815725a87e34b2afb4cc8eda2d4fa9a8e3358db9dfe92075f9371cbe180","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","Makefile":"61a649ecb55115ba0f357215eb322fa6676ce163ca20bff59d7c5e275aa37035","README.md":"d4dba8ed8b388c1e24bcaaa0f0e75a0830885d6db9bedc9630591a180c744f73","RELEASES.md":"d26903b427925345566b67a8c5a23b8985acd61ce3befcf7ddadc86ef15cb036","book/src/SUMMARY.md":"32f211f5aeb51a05b3c6a41a128bdb9e410ae84008a93e6b13442e45cd1c91d4","book/src/bail-and-ensure.md":"08fb463570143ec6568189468f1f54a7210b0a1ad66a57f7f7c36619831b4d72","book/src/custom-fail.md":"d4b1501201f9c54637bc40a2413e333f6f7d4fcfc8e3de74bf40d48eca0d4e41","book/src/derive-fail.md":"69916338286f970ae6709fb309bd4d80c321fea10b927f14efe402e3c0a5fdc9","book/src/error-errorkind.md":"5aae25fce531e9740aa70343bcda3de0f2718949922c2e4a91ceb09062c45892","book/src/error-msg.md":"32e17b280379d2bc83e7cb7a6c664a2e9225802f31638beda508056da53ba6af","book/src/error.md":"c978778e7986e5febfb37e635525053ef73c534e4b6e9fc25deb576fdbdc111d","book/src/fail.md":"2865d1fef1d94de5fc086306ba5a734b26dd1d60effa718906919557bf4d779c","book/src/guidance.md":"614cb85ae32c2b59119cd1db7eea008e50b051563c15ba1305f312fa2eeb3ac0","book/src/howto.md":"e18744011f5cc5779f5bb981ebd10f0af440c98398b2eb5af0ee27b9662ee410","book/src/intro.md":"2a6eed661e059016d067d2891e9e27b673425dbc87f077849a302619a182d112","book/src/string-custom-error.md":"55e3ef77748c1dcdfe984fe3c510e7001267ac2b3ece230b90844655dd2da957","book/src/use-error.md":"a7f91e06eb676318da04a56e4b31c73dd7db888d43c215e1534a5bc415e98258","build-docs.sh":"27b611219773192b9f972b2054522481fd5c2c9419c155535f58d05bfc31fffe","examples/bail_ensure.rs":"fffc71e41f9fbbc2a7db453ef20779716007ed6bbb01e45fbcefb1e073745ecc","examples/error_as_cause.rs":"e0a6472455db5e484febc196667bc46c939d9f890bfe550ab7435d52b1ac6b2b","examples/simple.rs":"39b2263d4b92f22c9e1ceefb78b67e1299fc46eba5621d1c47afd937fd7d5318","examples/string_custom_error_pattern.rs":"23b5bf79a7219aa8a80484c0df70cd43d882b7dccd91de9ceb1aac05b0b1b4f2","src/as_fail.rs":"8a381a9624b3d28b45f92f8b527d7496e7a722c8aa0d632f0b23bbe0af98a76e","src/backtrace/internal.rs":"3fc4943061d4396c855571f134cd922f428cbe930689c8191376867b729d7b08","src/backtrace/mod.rs":"7fc1997da44002a3367c2361a0fce6085555a2f3bf73f517bd6d631721e9d299","src/box_std.rs":"224f3e3f48ad217ba34a54a62f608f9cba3ce95b176558684706c2f7fe72ce72","src/compat.rs":"9ce1c0acabad9ae4aa5f89233ffc191341a99cadd121f76af516503f7af79100","src/context.rs":"00e8b831e345676ab5717bb83045ae5539e820849a51cfdead307d95423f7487","src/error/error_impl.rs":"063b9d9127f455b7555184af2576bc59e650add13c820be4960a3a5e5da0a9e4","src/error/error_impl_small.rs":"e6cbbd4d12e8eec1bd0f15713d33a0e525599268c9316dd40240eb7cd9e19a9d","src/error/mod.rs":"dd9489490a4706d4dcee13a354ba2353a0d0132e86c2fd007d551c5f5a47a304","src/error_message.rs":"9c45597e8237c601c4c49aa07adeab41126d38f0886789acf3f8874bb149c6be","src/lib.rs":"02ff22cb72afaab2086b033c996259018a27cfe5ad87ae300df505a229432c26","src/macros.rs":"d0984d837db27a5adb2a610a4994f8163f7b5c83fb214d6b2674413f62957dbf","src/result_ext.rs":"8088c3cb1481e81891014c99cc0f1b75f25a2f212b52ae856583e4c1f1901d09","src/small_error.rs":"652bf6ff2016d8e31b6ee709ad3efaff9f4e96d5aec8120ea3986a0bb8f57c54","src/sync_failure.rs":"a92a2e8b416196322718a4e7e1262f5b1b0a6be47b849d9a7e1050c1d33490db","tests/basic_fail.rs":"d24b8a90a5a122287eedc91c7322a162f2e0c124494a1084c8dc13c711db278b","tests/fail_compat.rs":"12d60fc9e68982d712a08f8a45b400b4083a8e571d8ee720029329e9979f401f","tests/macro_trailing_comma.rs":"8099f4ed2db3630a44bc626a176d5365054731d06322bb71dd2f843d815f4ec0","travis.sh":"836024f7a56fdbe24a99ab9ce9350713831f4375a60f02593aad6637b766a330"},"package":"795bd83d3abeb9220f257e597aa0080a508b27533824adf336529648f6abf7e2"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/Cargo.lock.ci distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/Cargo.lock.ci --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/Cargo.lock.ci 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/Cargo.lock.ci 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,136 @@ +[[package]] +name = "backtrace" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-demangle 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "backtrace-sys" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "cc" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "cfg-if" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "failure" +version = "0.1.4" +dependencies = [ + "backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "failure_derive 0.1.4", +] + +[[package]] +name = "failure_derive" +version = "0.1.4" +dependencies = [ + "failure 0.1.4", + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.23 (registry+https://github.com/rust-lang/crates.io-index)", + "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libc" +version = "0.2.43" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "proc-macro2" +version = "0.4.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "quote" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "syn" +version = "0.15.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "synstructure" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.23 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "unicode-xid" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[metadata] +"checksum backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "89a47830402e9981c5c41223151efcced65a0510c13097c769cede7efb34782a" +"checksum backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)" = "c66d56ac8dabd07f6aacdaf633f4b8262f5b3601a810a0dcddffd5c22c69daa0" +"checksum cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4a8b715cb4597106ea87c7c84b2f1d452c7492033765df7f32651e66fcf749" +"checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4" +"checksum libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)" = "76e3a3ef172f1a0b9a9ff0dd1491ae5e6c948b94479a3021819ba7d860c8645d" +"checksum proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)" = "77619697826f31a02ae974457af0b29b723e5619e113e9397b8b82c6bd253f09" +"checksum quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "53fa22a1994bd0f9372d7a816207d8a2677ad0325b073f5c5332760f0fb62b5c" +"checksum rustc-demangle 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "01b90379b8664dd83460d59bdc5dd1fd3172b8913788db483ed1325171eab2f7" +"checksum syn 0.15.23 (registry+https://github.com/rust-lang/crates.io-index)" = "9545a6a093a3f0bd59adb472700acc08cad3776f860f16a897dfce8c88721cbc" +"checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" +"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" +"checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" +"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/Cargo.toml 2019-01-04 19:47:54.000000000 +0000 @@ -12,10 +12,10 @@ [package] name = "failure" -version = "0.1.3" +version = "0.1.5" authors = ["Without Boats "] description = "Experimental error handling abstraction." -homepage = "https://boats.gitlab.io/failure" +homepage = "https://rust-lang-nursery.github.io/failure/" documentation = "https://docs.rs/failure" license = "MIT OR Apache-2.0" repository = "https://github.com/rust-lang-nursery/failure" @@ -24,7 +24,7 @@ optional = true [dependencies.failure_derive] -version = "0.1.3" +version = "0.1.5" optional = true [features] diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/.cargo_vcs_info.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/.cargo_vcs_info.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/.cargo_vcs_info.json 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/.cargo_vcs_info.json 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,5 @@ +{ + "git": { + "sha1": "65c825aeaa6b07a51e4fb1d824625485061604f4" + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/examples/simple.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/examples/simple.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/examples/simple.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/examples/simple.rs 2019-01-04 19:47:54.000000000 +0000 @@ -16,7 +16,7 @@ } fn main() { - for cause in Fail::iter_causes(&bad_function().unwrap_err()) { - println!("{}", cause); + for cause in Fail::iter_chain(&bad_function().unwrap_err()) { + println!("{}: {}", cause.name().unwrap_or("Error"), cause); } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/RELEASES.md distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/RELEASES.md --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/RELEASES.md 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/RELEASES.md 2019-01-04 19:47:54.000000000 +0000 @@ -1,3 +1,16 @@ +# Version 0.1.5 + +- Resolve a regression with error conversions (#290) +- Added `name()` to `Fail` and `Error` + +# Version 0.1.4 + +- Improved error reporting of the derive feature +- Resolved a potential internal ambiguity when using the backtrace feature + that prevented backtrace from improving an upstream API. +- Changed the bounds on std error compat conversions through the From trait + to take Sync and Send into account. + # Version 0.1.3 - Added `Context::map` diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/src/backtrace/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/src/backtrace/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/src/backtrace/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/src/backtrace/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -129,7 +129,7 @@ impl Debug for Backtrace { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { if let Some(bt) = self.internal.as_backtrace() { - bt.fmt(f) + Debug::fmt(bt, f) } else { Ok(()) } } } @@ -137,7 +137,7 @@ impl Display for Backtrace { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { if let Some(bt) = self.internal.as_backtrace() { - bt.fmt(f) + Debug::fmt(bt, f) } else { Ok(()) } } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/src/compat.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/src/compat.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/src/compat.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/src/compat.rs 2019-01-04 19:47:54.000000000 +0000 @@ -44,4 +44,10 @@ Box::new(Compat { error }) } } + + impl From for Box { + fn from(error: Error) -> Box { + Box::new(Compat { error }) + } + } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/src/context.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/src/context.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/src/context.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/src/context.rs 2019-01-04 19:47:54.000000000 +0000 @@ -108,6 +108,10 @@ } impl Fail for Context { + fn name(&self) -> Option<&str> { + self.failure.as_cause().and_then(|x| x.name()) + } + fn cause(&self) -> Option<&Fail> { self.failure.as_cause() } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/src/error/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/src/error/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/src/error/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/src/error/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -70,6 +70,11 @@ self.imp.failure() } + /// Returns the name of the underlying fail. + pub fn name(&self) -> Option<&str> { + self.as_fail().name() + } + /// Returns a reference to the underlying cause of this `Error`. Unlike the /// method on `Fail`, this does not return an `Option`. The `Error` type /// always has an underlying failure. diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/src/error_message.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/src/error_message.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/src/error_message.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/src/error_message.rs 2019-01-04 19:47:54.000000000 +0000 @@ -19,7 +19,11 @@ msg: D, } -impl Fail for ErrorMessage { } +impl Fail for ErrorMessage { + fn name(&self) -> Option<&str> { + Some("failure::ErrorMessage") + } +} impl Display for ErrorMessage { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/src/lib.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/src/lib.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/src/lib.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/src/lib.rs 2019-01-04 19:47:54.000000000 +0000 @@ -23,10 +23,7 @@ #![cfg_attr(not(feature = "std"), no_std)] #![deny(missing_docs)] #![deny(warnings)] -#![cfg_attr( - feature = "small-error", - feature(extern_types, allocator_api) -)] +#![cfg_attr(feature = "small-error", feature(extern_types, allocator_api))] macro_rules! with_std { ($($i:item)*) => ($(#[cfg(feature = "std")]$i)*) } macro_rules! without_std { ($($i:item)*) => ($(#[cfg(not(feature = "std"))]$i)*) } @@ -109,6 +106,16 @@ /// `std::error::Error`, and are also `Send`, `Sync`, and `'static`, implement /// `Fail` by a blanket impl. pub trait Fail: Display + Debug + Send + Sync + 'static { + /// Returns the "name" of the error. + /// + /// This is typically the type name. Not all errors will implement + /// this. This method is expected to be most useful in situations + /// where errors need to be reported to external instrumentation systems + /// such as crash reporters. + fn name(&self) -> Option<&str> { + None + } + /// Returns a reference to the underlying cause of this failure, if it /// is an error that wraps other errors. /// @@ -166,10 +173,7 @@ } #[doc(hidden)] - #[deprecated( - since = "0.1.2", - note = "please use the 'iter_chain()' method instead" - )] + #[deprecated(since = "0.1.2", note = "please use the 'iter_chain()' method instead")] fn causes(&self) -> Causes where Self: Sized, @@ -259,10 +263,7 @@ } /// Deprecated alias to `iter_chain`. - #[deprecated( - since = "0.1.2", - note = "please use the 'iter_chain()' method instead" - )] + #[deprecated(since = "0.1.2", note = "please use the 'iter_chain()' method instead")] pub fn causes(&self) -> Causes { Causes { fail: Some(self) } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/src/macros.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/src/macros.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/src/macros.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/src/macros.rs 2019-01-04 19:47:54.000000000 +0000 @@ -11,8 +11,8 @@ ($e:expr) => { return Err($crate::err_msg($e)); }; - ($fmt:expr, $($arg:tt)+) => { - return Err($crate::err_msg(format!($fmt, $($arg)+))); + ($fmt:expr, $($arg:tt)*) => { + return Err($crate::err_msg(format!($fmt, $($arg)*))); }; } @@ -28,9 +28,9 @@ bail!($e); } }; - ($cond:expr, $fmt:expr, $($arg:tt)+) => { + ($cond:expr, $fmt:expr, $($arg:tt)*) => { if !($cond) { - bail!($fmt, $($arg)+); + bail!($fmt, $($arg)*); } }; } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/tests/basic_fail.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/tests/basic_fail.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/tests/basic_fail.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/tests/basic_fail.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,21 @@ +#[macro_use] +extern crate failure; + +use failure::Fail; + +#[test] +fn test_name() { + #[derive(Fail, Debug)] + #[fail(display = "my error")] + struct MyError; + + let err = MyError; + + assert_eq!(err.to_string(), "my error"); + assert_eq!(err.name(), Some("basic_fail::MyError")); + + let ctx = err.context("whatever"); + + assert_eq!(ctx.to_string(), "whatever"); + assert_eq!(ctx.name(), Some("basic_fail::MyError")); +} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/tests/fail_compat.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/tests/fail_compat.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/tests/fail_compat.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/tests/fail_compat.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,35 @@ +#[macro_use] +extern crate failure; + +use failure::Fail; + +fn return_failure() -> Result<(), failure::Error> { + #[derive(Fail, Debug)] + #[fail(display = "my error")] + struct MyError; + + let err = MyError; + Err(err.into()) +} + +fn return_error() -> Result<(), Box> { + return_failure()?; + Ok(()) +} + +fn return_error_send_sync() -> Result<(), Box> { + return_failure()?; + Ok(()) +} + +#[test] +fn smoke_default_compat() { + let err = return_error(); + assert!(err.is_err()); +} + +#[test] +fn smoke_compat_send_sync() { + let err = return_error_send_sync(); + assert!(err.is_err()); +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/tests/macro_trailing_comma.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/tests/macro_trailing_comma.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/tests/macro_trailing_comma.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/tests/macro_trailing_comma.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,54 @@ +#[macro_use] +extern crate failure; + +// NOTE: +// +// This test is in a separate file due to the fact that ensure! cannot be used +// from within failure. +// +// (you get: 'macro-expanded `macro_export` macros from the current crate cannot +// be referred to by absolute paths') + +// Encloses an early-returning macro in an IIFE so that we +// can treat it as a Result-returning function. +macro_rules! wrap_early_return { + ($expr:expr) => {{ + fn func() -> Result<(), failure::Error> { + let _ = $expr; + + #[allow(unreachable_code)] + Ok(()) + } + func().map_err(|e| e.to_string()) + }}; +} + +#[test] +fn bail() { + assert_eq!( + wrap_early_return!(bail!("test")), + wrap_early_return!(bail!("test",))); + assert_eq!( + wrap_early_return!(bail!("test {}", 4)), + wrap_early_return!(bail!("test {}", 4,))); +} + +#[test] +fn ensure() { + assert_eq!( + wrap_early_return!(ensure!(false, "test")), + wrap_early_return!(ensure!(false, "test",))); + assert_eq!( + wrap_early_return!(ensure!(false, "test {}", 4)), + wrap_early_return!(ensure!(false, "test {}", 4,))); +} + +#[test] +fn format_err() { + assert_eq!( + format_err!("test").to_string(), + format_err!("test",).to_string()); + assert_eq!( + format_err!("test {}", 4).to_string(), + format_err!("test {}", 4,).to_string()); +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/.travis.yml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/.travis.yml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure/.travis.yml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure/.travis.yml 2019-01-04 19:47:54.000000000 +0000 @@ -6,6 +6,7 @@ - nightly cache: cargo script: + - if [ "$TRAVIS_RUST_VERSION" == "1.18.0" ]; then cp Cargo.lock.ci Cargo.lock; fi - cargo test - cargo test --features backtrace - cargo check --no-default-features diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure_derive/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure_derive/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure_derive/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure_derive/.cargo-checksum.json 2019-01-04 19:47:54.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"e00026aba3492ad169fcb6123e896280d679ffb9a198c6830052c99df3246142","build.rs":"c7481c027fc4c09e2d6dc8ac642ec5314b6a02269fb022b0f3c1850f000d31f5","src/lib.rs":"833b9916cd18b2e0b4fa79cc795afd00089697be7a25bf6895e85ed4cef97916","tests/backtrace.rs":"56b2b97f83e5341108aac403a50491560dc6d897d6002973248c9c9014c0e494","tests/custom_type_bounds.rs":"745d3e488738f5d90bcb1fa66a6784b64a88881b1d62c241cba2f863f4eb31c8","tests/no_derive_display.rs":"3ab159aadf809a95d578b4909470f6ecca24cea0caf514509d326601cc7b933b","tests/tests.rs":"eaf131c01cc101b94fd6478a9964f5e3d919f2260f6d327f0e435ac3520fe71e","tests/wraps.rs":"e00c2761ccd9fe84df47bd102945818f5d8868c95bcab719ebdde0db8334d4a6"},"package":"64c2d913fe8ed3b6c6518eedf4538255b989945c14c2a7d5cbff62a5e2120596"} \ No newline at end of file +{"files":{".cargo_vcs_info.json":"4c884e4c8f077c8a171709b0a72555560b1b2a0934dc1a33d751c2d0bfb4dac3","Cargo.toml":"01b8e559ec9aad5d2c6c1354c4624a8fd5f68219b3a7115491d6b49ffec010b0","build.rs":"c7481c027fc4c09e2d6dc8ac642ec5314b6a02269fb022b0f3c1850f000d31f5","src/lib.rs":"6e5054da85a571144b754e08b123f0665389ec3b85059eafd0337601afbc6a81","tests/backtrace.rs":"56b2b97f83e5341108aac403a50491560dc6d897d6002973248c9c9014c0e494","tests/custom_type_bounds.rs":"745d3e488738f5d90bcb1fa66a6784b64a88881b1d62c241cba2f863f4eb31c8","tests/no_derive_display.rs":"3ab159aadf809a95d578b4909470f6ecca24cea0caf514509d326601cc7b933b","tests/tests.rs":"eaf131c01cc101b94fd6478a9964f5e3d919f2260f6d327f0e435ac3520fe71e","tests/wraps.rs":"d3c7033f783e29d419b2d466f8e1b889d3509b66fc7efbb109b73292156102ec"},"package":"ea1063915fd7ef4309e222a5a07cf9c319fb9c7836b1f89b85458672dbb127e1"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure_derive/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure_derive/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure_derive/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure_derive/Cargo.toml 2019-01-04 19:47:54.000000000 +0000 @@ -12,12 +12,12 @@ [package] name = "failure_derive" -version = "0.1.3" +version = "0.1.5" authors = ["Without Boats "] build = "build.rs" description = "derives for the failure crate" -homepage = "https://boats.gitlab.io/failure" -documentation = "https://boats.gitlab.io/failure" +homepage = "https://rust-lang-nursery.github.io/failure/" +documentation = "https://docs.rs/failure" license = "MIT OR Apache-2.0" repository = "https://github.com/withoutboats/failure_derive" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure_derive/.cargo_vcs_info.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure_derive/.cargo_vcs_info.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure_derive/.cargo_vcs_info.json 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure_derive/.cargo_vcs_info.json 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,5 @@ +{ + "git": { + "sha1": "ba5d81440af33391d7f813239dd7963309145a4e" + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure_derive/src/lib.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure_derive/src/lib.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure_derive/src/lib.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure_derive/src/lib.rs 2019-01-04 19:47:54.000000000 +0000 @@ -6,17 +6,43 @@ #[macro_use] extern crate quote; -use proc_macro2::TokenStream; +use proc_macro2::{TokenStream, Span}; +use syn::LitStr; +use syn::spanned::Spanned; + +#[derive(Debug)] +struct Error(TokenStream); + +impl Error { + fn new(span: Span, message: &str) -> Error { + Error(quote_spanned! { span => + compile_error!(#message); + }) + } + + fn into_tokens(self) -> TokenStream { + self.0 + } +} decl_derive!([Fail, attributes(fail, cause)] => fail_derive); fn fail_derive(s: synstructure::Structure) -> TokenStream { + match fail_derive_impl(s) { + Err(err) => err.into_tokens(), + Ok(tokens) => tokens, + } +} + +fn fail_derive_impl(s: synstructure::Structure) -> Result { let make_dyn = if cfg!(has_dyn_trait) { quote! { &dyn } } else { quote! { & } }; + let ty_name = LitStr::new(&s.ast().ident.to_string(), Span::call_site()); + let cause_body = s.each_variant(|v| { if let Some(cause) = v.bindings().iter().find(is_cause) { quote!(return Some(::failure::AsFail::as_fail(#cause))) @@ -36,6 +62,10 @@ let fail = s.unbound_impl( quote!(::failure::Fail), quote! { + fn name(&self) -> Option<&str> { + Some(concat!(module_path!(), "::", #ty_name)) + } + #[allow(unreachable_code)] fn cause(&self) -> ::failure::_core::option::Option<#make_dyn(::failure::Fail)> { match *self { #cause_body } @@ -49,7 +79,7 @@ } }, ); - let display = display_body(&s).map(|display_body| { + let display = display_body(&s)?.map(|display_body| { s.unbound_impl( quote!(::failure::_core::fmt::Display), quote! { @@ -62,23 +92,31 @@ ) }); - (quote! { + Ok(quote! { #fail #display - }).into() + }) } -fn display_body(s: &synstructure::Structure) -> Option { +fn display_body(s: &synstructure::Structure) -> Result, Error> { let mut msgs = s.variants().iter().map(|v| find_error_msg(&v.ast().attrs)); - if msgs.all(|msg| msg.is_none()) { - return None; + if msgs.all(|msg| msg.map(|m| m.is_none()).unwrap_or(true)) { + return Ok(None); } - Some(s.each_variant(|v| { + let mut tokens = TokenStream::new(); + for v in s.variants() { let msg = - find_error_msg(&v.ast().attrs).expect("All variants must have display attribute."); + find_error_msg(&v.ast().attrs)? + .ok_or_else(|| Error::new( + v.ast().ident.span(), + "All variants must have display attribute." + ))?; if msg.nested.is_empty() { - panic!("Expected at least one argument to fail attribute"); + return Err(Error::new( + msg.span(), + "Expected at least one argument to fail attribute" + )); } let format_string = match msg.nested[0] { @@ -86,13 +124,16 @@ nv.lit.clone() } _ => { - panic!("Fail attribute must begin `display = \"\"` to control the Display message.") + return Err(Error::new( + msg.span(), + "Fail attribute must begin `display = \"\"` to control the Display message." + )); } }; let args = msg.nested.iter().skip(1).map(|arg| match *arg { syn::NestedMeta::Literal(syn::Lit::Int(ref i)) => { let bi = &v.bindings()[i.value() as usize]; - quote!(#bi) + Ok(quote!(#bi)) } syn::NestedMeta::Meta(syn::Meta::Word(ref id)) => { let id_s = id.to_string(); @@ -101,59 +142,77 @@ let bi = match v.bindings().get(idx) { Some(bi) => bi, None => { - panic!( - "display attempted to access field `{}` in `{}::{}` which \ + return Err(Error::new( + arg.span(), + &format!( + "display attempted to access field `{}` in `{}::{}` which \ does not exist (there are {} field{})", - idx, - s.ast().ident, - v.ast().ident, - v.bindings().len(), - if v.bindings().len() != 1 { "s" } else { "" } - ); + idx, + s.ast().ident, + v.ast().ident, + v.bindings().len(), + if v.bindings().len() != 1 { "s" } else { "" } + ) + )); } }; - return quote!(#bi); + return Ok(quote!(#bi)); } } for bi in v.bindings() { if bi.ast().ident.as_ref() == Some(id) { - return quote!(#bi); + return Ok(quote!(#bi)); } } - panic!( - "Couldn't find field `{}` in `{}::{}`", - id, - s.ast().ident, - v.ast().ident - ); - } - _ => panic!("Invalid argument to fail attribute!"), + return Err(Error::new( + arg.span(), + &format!( + "Couldn't find field `{}` in `{}::{}`", + id, + s.ast().ident, + v.ast().ident + ) + )); + } + ref arg => { + return Err(Error::new( + arg.span(), + "Invalid argument to fail attribute!" + )); + }, }); + let args = args.collect::, _>>()?; - quote! { - return write!(f, #format_string #(, #args)*) - } - })) + let pat = v.pat(); + tokens.extend(quote!(#pat => { return write!(f, #format_string #(, #args)*) })); + } + Ok(Some(tokens)) } -fn find_error_msg(attrs: &[syn::Attribute]) -> Option { +fn find_error_msg(attrs: &[syn::Attribute]) -> Result, Error> { let mut error_msg = None; for attr in attrs { if let Some(meta) = attr.interpret_meta() { if meta.name() == "fail" { if error_msg.is_some() { - panic!("Cannot have two display attributes") + return Err(Error::new( + meta.span(), + "Cannot have two display attributes" + )); } else { if let syn::Meta::List(list) = meta { error_msg = Some(list); } else { - panic!("fail attribute must take a list in parentheses") + return Err(Error::new( + meta.span(), + "fail attribute must take a list in parentheses" + )); } } } } } - error_msg + Ok(error_msg) } fn is_backtrace(bi: &&synstructure::BindingInfo) -> bool { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure_derive/tests/wraps.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure_derive/tests/wraps.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/failure_derive/tests/wraps.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/failure_derive/tests/wraps.rs 2019-01-04 19:47:54.000000000 +0000 @@ -18,11 +18,10 @@ fn wrap_error() { let inner = io::Error::from_raw_os_error(98); let err = WrapError { inner }; - assert!( - err.cause() - .and_then(|err| err.downcast_ref::()) - .is_some() - ); + assert!(err + .cause() + .and_then(|err| err.downcast_ref::()) + .is_some()); } #[derive(Fail, Debug)] @@ -33,11 +32,10 @@ fn wrap_tuple_error() { let io_error = io::Error::from_raw_os_error(98); let err: WrapTupleError = WrapTupleError(io_error); - assert!( - err.cause() - .and_then(|err| err.downcast_ref::()) - .is_some() - ); + assert!(err + .cause() + .and_then(|err| err.downcast_ref::()) + .is_some()); } #[derive(Fail, Debug)] @@ -55,11 +53,10 @@ inner, backtrace: Backtrace::new(), }; - assert!( - err.cause() - .and_then(|err| err.downcast_ref::()) - .is_some() - ); + assert!(err + .cause() + .and_then(|err| err.downcast_ref::()) + .is_some()); assert!(err.backtrace().is_some()); } @@ -79,21 +76,19 @@ fn wrap_enum_error() { let io_error = io::Error::from_raw_os_error(98); let err: WrapEnumError = WrapEnumError::Io(io_error); - assert!( - err.cause() - .and_then(|err| err.downcast_ref::()) - .is_some() - ); + assert!(err + .cause() + .and_then(|err| err.downcast_ref::()) + .is_some()); assert!(err.backtrace().is_none()); let fmt_error = fmt::Error::default(); let err: WrapEnumError = WrapEnumError::Fmt { inner: fmt_error, backtrace: Backtrace::new(), }; - assert!( - err.cause() - .and_then(|err| err.downcast_ref::()) - .is_some() - ); + assert!(err + .cause() + .and_then(|err| err.downcast_ref::()) + .is_some()); assert!(err.backtrace().is_some()); } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/fern/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/fern/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/fern/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/fern/.cargo-checksum.json 2019-01-04 19:47:54.000000000 +0000 @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"1407295b4ccec1cf4c9fa8d030dcbaa8f1a8f794157b43326f1f29aa31e9e914","CONTRIBUTING.md":"e3b39a1f569967646d780a477a03306216a19aef193b7deb75893de788d54b66","Cargo.toml":"184b6c031c654168994c084ae7c6e383bd89a07c8de82c435946e63233e5b823","LICENSE":"618bcda011fe31b4710082efc2785b51da642e236ed99fc1b5e34229836c915e","README.md":"a7ca78f31d16cad46fdd2f43aa268dc27d0245b21a3a0feec1a5d3528ceffa8b","examples/cmd-program.rs":"9af5e09ab6eaff4c920832197ac0258aa7fd4c817b1cb59bae066463bb177d98","examples/colored.rs":"1d994e9b71f60ab24c40fc0df724caf4fcde6105bfed2af85de8826f5334947f","examples/meta-logging.rs":"cdb88587474fc1b6986dc304e0a74137b93d7c488b63f09db4ba8ce5462d9316","examples/pretty-colored-screenshot.png":"1ba267d3454c307d65563007fe3c2cfb9b8b033ad2dc093c0b715a86e22015db","examples/pretty-colored.rs":"c0cd4129e2f606a75805c9bfe07ee55ed86aabf1870d4ee03e2d747ef1029d83","examples/syslog.rs":"82f1bca02d2bcea4c2515abcf6919d2b3cf300cca72135ca294fbcf4d8b2d3a6","examples/syslog3.rs":"f6880bc34a175c171f114de99c6bcc484f37ea527a5b5ee0e38f26133d619b9f","src/builders.rs":"5e21465755fcdf45db1f66cb93174214102f6f8cec44c356313c0efae09ee9e9","src/colors.rs":"d442d52c22f4d16c78ab522e5574206d81ad32c633239e3d270f8ccbd7e11c79","src/errors.rs":"57192ebf3c019a6d67e8d09d63af54b92592e45f38f3189be786ab43628e663c","src/lib.rs":"488e2a531beffaa53b95d8503c3a0220729f6eb6a618712b96d0f60fb75a74b0","src/log_impl.rs":"7a6cebb9af4ad8e52ad1f8a61ae9bec8d3d4a68bbe98621960b3b598127186f7","src/meta.rs":"3f27616cbf0024faa30f58b006f11acf5293bec3c2fb9f74aea89c9fb0bd1d8b","src/syslog.rs":"eecce7256539b0ec51787271fe337efe9f6c004c392404f5a7b11f94bb874cdf","tests/channel_logging.rs":"48190b577e67eae77828a87ef111022d62672e180500d9847cf2926959314389","tests/file_logging.rs":"239879756877401e9d44930532ae11675c369a6065de4d47b3421c63d99df789","tests/global_logging.rs":"9c0ca6e1b84c253e1ecaad49c5f0deb05c9be3cea2a8281ffdd55b107544699b","tests/meta_logging.rs":"160ee65758245e97f34ab87c6c2f88bead130e0696758a785a83d41b1cf83f0c","tests/panic_logging.rs":"70e55b9c87266bef2d72c38cf97d91fec03793225d7a3b787e82177cc8aa90b0","tests/support.rs":"2aab3b4fa26246895a44f1ba4bac685df46f7d7154a3ea3a6254b9ea4a3087c5","tests/write_logging.rs":"cb4ab6e2e8af29bc6e654d59602f3b37692ee3ba6d3f85594a6f5f9063170d31"},"package":"57915fe00a83af935983eb2d00b0ecc62419c4741b28c207ecbf98fd4a1b94c8"} \ No newline at end of file +{"files":{".cargo_vcs_info.json":"7de75f64d43bafa2e846eca3e15d9b4c7fc8f800daa29e557d1f4c298b340e54","CHANGELOG.md":"21e915b3f511d14e2dac5799b331a345b2afd1313c94e52b0cc2ab0faa2ee6d2","CONTRIBUTING.md":"e3b39a1f569967646d780a477a03306216a19aef193b7deb75893de788d54b66","Cargo.toml":"ca5d64e83895905b56b7225ab41829a0a9678df8ed50c7267721c978f22a3e32","LICENSE":"618bcda011fe31b4710082efc2785b51da642e236ed99fc1b5e34229836c915e","README.md":"a7ca78f31d16cad46fdd2f43aa268dc27d0245b21a3a0feec1a5d3528ceffa8b","examples/cmd-program.rs":"9af5e09ab6eaff4c920832197ac0258aa7fd4c817b1cb59bae066463bb177d98","examples/colored.rs":"1d994e9b71f60ab24c40fc0df724caf4fcde6105bfed2af85de8826f5334947f","examples/meta-logging.rs":"cdb88587474fc1b6986dc304e0a74137b93d7c488b63f09db4ba8ce5462d9316","examples/pretty-colored-screenshot.png":"1ba267d3454c307d65563007fe3c2cfb9b8b033ad2dc093c0b715a86e22015db","examples/pretty-colored.rs":"c0cd4129e2f606a75805c9bfe07ee55ed86aabf1870d4ee03e2d747ef1029d83","examples/syslog.rs":"82f1bca02d2bcea4c2515abcf6919d2b3cf300cca72135ca294fbcf4d8b2d3a6","examples/syslog3.rs":"f6880bc34a175c171f114de99c6bcc484f37ea527a5b5ee0e38f26133d619b9f","src/builders.rs":"5e21465755fcdf45db1f66cb93174214102f6f8cec44c356313c0efae09ee9e9","src/colors.rs":"ac533ae63ec506d157996ab839e960da430b71c90464f3ada805d27321b21d78","src/errors.rs":"57192ebf3c019a6d67e8d09d63af54b92592e45f38f3189be786ab43628e663c","src/lib.rs":"0673b9854914d686b1cae0b78a1eb986d744a941fb7d03838b0807fd9ac3d0ac","src/log_impl.rs":"7a6cebb9af4ad8e52ad1f8a61ae9bec8d3d4a68bbe98621960b3b598127186f7","src/meta.rs":"3f27616cbf0024faa30f58b006f11acf5293bec3c2fb9f74aea89c9fb0bd1d8b","src/syslog.rs":"eecce7256539b0ec51787271fe337efe9f6c004c392404f5a7b11f94bb874cdf","tests/channel_logging.rs":"48190b577e67eae77828a87ef111022d62672e180500d9847cf2926959314389","tests/file_logging.rs":"239879756877401e9d44930532ae11675c369a6065de4d47b3421c63d99df789","tests/global_logging.rs":"9c0ca6e1b84c253e1ecaad49c5f0deb05c9be3cea2a8281ffdd55b107544699b","tests/meta_logging.rs":"160ee65758245e97f34ab87c6c2f88bead130e0696758a785a83d41b1cf83f0c","tests/panic_logging.rs":"70e55b9c87266bef2d72c38cf97d91fec03793225d7a3b787e82177cc8aa90b0","tests/support.rs":"2aab3b4fa26246895a44f1ba4bac685df46f7d7154a3ea3a6254b9ea4a3087c5","tests/write_logging.rs":"cb4ab6e2e8af29bc6e654d59602f3b37692ee3ba6d3f85594a6f5f9063170d31"},"package":"b48af88aaf938b11baef948a5599e66e709cf92854aa2b87c71f1bcf20f80a01"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/fern/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/fern/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/fern/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/fern/Cargo.toml 2019-01-04 19:47:54.000000000 +0000 @@ -12,7 +12,7 @@ [package] name = "fern" -version = "0.5.6" +version = "0.5.7" authors = ["David Ross "] include = ["Cargo.toml", "src/**/*", "tests/**/*", "examples/**/*", "LICENSE", "README.md", "CONTRIBUTING.md", "CHANGELOG.md"] description = "Simple, efficient logging" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/fern/.cargo_vcs_info.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/fern/.cargo_vcs_info.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/fern/.cargo_vcs_info.json 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/fern/.cargo_vcs_info.json 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,5 @@ +{ + "git": { + "sha1": "99e9bd6609fe03ef2426e4d764140182c6ce7447" + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/fern/CHANGELOG.md distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/fern/CHANGELOG.md --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/fern/CHANGELOG.md 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/fern/CHANGELOG.md 2019-01-04 19:47:54.000000000 +0000 @@ -1,6 +1,13 @@ Unreleased ========== + +0.5.7 (2018-11-11) +================== + +- Fix colored log level display to honor formatting flags such as "{:>5}" + (thanks [@ExpHP]!) + 0.5.6 (2018-06-19) ================== @@ -362,3 +369,4 @@ [@jakunar]: https://github.com/jakunar [@vorner]: https://github.com/vorner [@digitalatigid]: https://github.com/digitalatigid +[@ExpHP]: https://github.com/ExpHP diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/fern/src/colors.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/fern/src/colors.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/fern/src/colors.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/fern/src/colors.rs 2019-01-04 19:47:54.000000000 +0000 @@ -91,7 +91,10 @@ T: fmt::Display, { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "\x1B[{}m{}\x1B[0m", self.color.to_fg_str(), self.text) + write!(f, "\x1B[{}m", self.color.to_fg_str())?; + fmt::Display::fmt(&self.text, f)?; + write!(f, "\x1B[0m")?; + Ok(()) } } @@ -312,4 +315,18 @@ ); } } + + #[test] + fn fg_color_respects_formatting_flags() { + let s = format!( + "{:^8}", + WithFgColor { + text: "test", + color: Yellow, + } + ); + assert!(s.contains(" test ")); + assert!(!s.contains(" test ")); + assert!(!s.contains(" test ")); + } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/fern/src/lib.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/fern/src/lib.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/fern/src/lib.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/fern/src/lib.rs 2019-01-04 19:47:54.000000000 +0000 @@ -1,5 +1,5 @@ #![deny(missing_docs)] -#![doc(html_root_url = "https://docs.rs/fern/0.5.6")] +#![doc(html_root_url = "https://docs.rs/fern/0.5.7")] //! Efficient, configurable logging in Rust. //! //! # Depending on fern diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/fstab-generate/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/fstab-generate/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/fstab-generate/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/fstab-generate/.cargo-checksum.json 2019-01-04 19:47:54.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"ccacfca5c24f78f97862255d60f43aa230b87811efd26301684cb146f85ce8dd","LICENSE":"97c6b886c115baca7675e470f040a3ce2ff6d5cd2fc55a3d44538ed142ca9767","README.md":"177565f0ea1d83148a44adccdbaccc9a9af5b65dfba2bbc321678c4adec92985","src/block.rs":"fc4a7647f34c4c1173b621d23023c06cbbcf0b4fe8ab7c1b12647d30ac8c48e7","src/lib.rs":"a290285d3563b349cbdaefde7314517c976596d093404e41429d4c55d058ad26"},"package":"de8a86b6b9ae9e7b47a060f2e0462e689edba6e2b41ad3ad9c6330467cf3d07e"} \ No newline at end of file +{"files":{"Cargo.toml":"71f4ea27cef2e1ec656a60514218a81536a510bac622f2631e3c6f42b347299b","LICENSE":"97c6b886c115baca7675e470f040a3ce2ff6d5cd2fc55a3d44538ed142ca9767","README.md":"177565f0ea1d83148a44adccdbaccc9a9af5b65dfba2bbc321678c4adec92985","src/block.rs":"fc4a7647f34c4c1173b621d23023c06cbbcf0b4fe8ab7c1b12647d30ac8c48e7","src/lib.rs":"a290285d3563b349cbdaefde7314517c976596d093404e41429d4c55d058ad26"},"package":"e6722c84e98f582963786d78be132df525119720bb7a5dc2a0c40e359e6f545b"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/fstab-generate/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/fstab-generate/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/fstab-generate/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/fstab-generate/Cargo.toml 2019-01-04 19:47:54.000000000 +0000 @@ -12,7 +12,7 @@ [package] name = "fstab-generate" -version = "0.1.1" +version = "0.1.2" authors = ["Jeremy Soller ", "Michael Aaron Murphy "] description = "Type for generating fstab entries" readme = "README.md" @@ -24,4 +24,4 @@ version = "0.1.0" [dependencies.partition-identity] -version = "0.1.6" +version = "0.2.0" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/itertools/benches/bench1.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/itertools/benches/bench1.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/itertools/benches/bench1.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/itertools/benches/bench1.rs 2019-01-04 19:47:54.000000000 +0000 @@ -103,7 +103,6 @@ }) } -/* #[bench] fn zip_slices_ziptuple(b: &mut test::Bencher) { @@ -113,13 +112,12 @@ b.iter(|| { let xs = black_box(&xs); let ys = black_box(&ys); - for (&x, &y) in Zip::new((xs, ys)) { + for (&x, &y) in itertools::multizip((xs, ys)) { test::black_box(x); test::black_box(y); } }) } -*/ #[bench] fn zipslices(b: &mut test::Bencher) diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/itertools/benches/tuple_combinations.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/itertools/benches/tuple_combinations.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/itertools/benches/tuple_combinations.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/itertools/benches/tuple_combinations.rs 2019-01-04 19:47:54.000000000 +0000 @@ -6,7 +6,7 @@ use test::{black_box, Bencher}; use itertools::Itertools; -// aproximate 100_000 iterations for each combination +// approximate 100_000 iterations for each combination const N1: usize = 100_000; const N2: usize = 448; const N3: usize = 86; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/itertools/bors.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/itertools/bors.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/itertools/bors.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/itertools/bors.toml 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -status = [ -"continuous-integration/travis-ci/push" -] diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/itertools/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/itertools/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/itertools/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/itertools/.cargo-checksum.json 2019-01-04 19:47:54.000000000 +0000 @@ -1 +1 @@ -{"files":{".travis.yml":"4e4e7bedfa8d4f8da4e5f9664c160fb0e82bd9b849e8c0f19cd698ec805b431f","Cargo.toml":"aeaa15ad23357fa2c222b01f8cbb4f6efc61dc1f0e8687beee211d0eeb3b1d1e","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7576269ea71f767b99297934c0b2367532690f8c4badc695edf8e04ab6a1e545","Makefile":"13f1c5b88a7b946b5813f7231df2933b6b19b223e9e2d3fa63ad681192f984b5","README.rst":"711bd98258ffea2d19fe96e4c766aca622fbf395bc5a7c8f6cad52ac65121464","benches/bench1.rs":"695e4b00addf2e8e44a09d85a588cb333c97109829e59739bdab01e7342d47b5","benches/extra/mod.rs":"4c5b03e74fc5b02383500c9da9fd6550262706ee569d70d085700f6d0b5749ba","benches/extra/zipslices.rs":"108dd488de366b2d83fb6bcc603ecbf9a017e165ac19d03440074fa244af3fb2","benches/tree_fold1.rs":"84cddbabb1a681f3196430a8e27b060103366143a3ee4c42c3b0628fc00a7543","benches/tuple_combinations.rs":"8c14e9341d92e5cfd5f9a067d11088b37b003e82635d1ab3a8e5290e3ef83eed","benches/tuples.rs":"412a952f08bb03695952d5cfd57949dcf28be8b99e3c6653994bdb8af9654653","bors.toml":"eed8564cdc475f30ff4147781c5e50176b3048b5d24b272d1354dad952fd00be","custom.css":"03d2316d325a09f03f0fae54d24b64f784518a8249432edbd60e01436be900d5","examples/iris.data":"596ffd580471ca4d4880f8e439c7281f3b50d8249a5960353cb200b1490f63a0","examples/iris.rs":"3996ca0a62762aec2b102f0f4244fe90d4b4354286d68d80cdc40e35f4352ba3","src/adaptors/mod.rs":"ba6f96d594461c82d67e6c60770ebcb82e80948d28827b5eb613a7072ad8a0eb","src/adaptors/multi_product.rs":"bb239555be38cde1f419bacfd09728f6ccaf51b6b4811c266b5677705175e685","src/combinations.rs":"a9a3fc78eb5c9f3933ff60275a635d0c81f4864a73515dc052aeb2add4ad4909","src/concat_impl.rs":"276339b00588f54c25f8ffbe0ae3c0031f7e52fb53c6578554a0bde1681b58a5","src/cons_tuples_impl.rs":"87c620d2ffdd3475218f5f493dbef601491be9f6cdfe57c44929449b32e6709f","src/diff.rs":"921e2b867d7b32ffedc72a5eb780811322d14d1e0883a608b9028a2afcad0df2","src/either_or_both.rs":"4739b8644fa932b7992e565be6a6bc64dff9f93e345c52f90b3e1f8a67e6d18e","src/format.rs":"412fbe02f12311c6fbcec1044f57ad6991783f5a3f323b9c391accfe4915106f","src/free.rs":"ced78d79c0c78398ac53bf628e77ae84f214972d0dad0507b6687c2f88873aaa","src/group_map.rs":"872d6e243e649ad30c94973c034596cc3377b10018e361bca07e11c612006de6","src/groupbylazy.rs":"a067a12671be9ae05a9152518103f39f7286fde09f758de8af75a1064a3b5567","src/impl_macros.rs":"eb0bb3f70ec1bcaffa6110ae4134c777951ed1e5f48d8c811dbf0a597dc48faa","src/intersperse.rs":"9c18f239654ebfcce1d68a0256d2df6d79a2b8c4fb5df87d67e2ebe04a07e1a9","src/kmerge_impl.rs":"51e71d3e76670a8efb16597a9224d2c9b40cee6bc6270d06b66aadafea6dc26b","src/lib.rs":"d641c89cbe827bf88902dda7af20f1de7b3325a5e857f95181737cbb9afc0692","src/merge_join.rs":"98e6fcc761a558ad21789efe041c3f90e62f6c75e05840670df45ad4f9b07e1f","src/minmax.rs":"4668a7f824fbc133599f43ffb6f7283e5bd603e07df2d8176abc6f25d6af9db0","src/multipeek_impl.rs":"ebe9544d94d0bf7200f7625241a3b5a291b7b564091a08cad40ff08b51f1b1bf","src/pad_tail.rs":"078615a2892f8c6db665074cf6f1be1bef4cf5ee418bc174edcfd4dc703e163f","src/peeking_take_while.rs":"6aea3bb40fb480e9f3695ce2a7a3a2e2346d437ca846d20e6bb3c09beb0934f4","src/process_results_impl.rs":"5f454cf62ceb82cab7c08c0c190de3ae083e219a8acc7a1a22f17eec9cfcd65c","src/put_back_n_impl.rs":"d35858184c525372b22d14d42cdf63726cf0fd50f5bd42ec7a82d55a8e180e9f","src/rciter_impl.rs":"8f51abc7e1ae3320cc5d56fadd66f880a7a06773be656bd8c4712357f01ae1d9","src/repeatn.rs":"4bd1782364b16105fbef3f3de7bf62780710e5c996db44a00e4b5f16c2625d86","src/size_hint.rs":"c1d35b422a696cf3d63e7c90d8f9fdf01a304cf8156e914287c4ef48fea62dd3","src/sources.rs":"9d7eb4dbd87f659d04b4980238c5fc72b71472e16861d17a32cab9b77a3df06a","src/tee.rs":"59cf9ef0b41882307ea1e3503a2ff351f401f4c43d95acf423a990b0bf0e29ae","src/tuple_impl.rs":"0c7f907e85d2ef0661583b36c7b8a7341b8feadafe28d10539a211dff5c028ea","src/unique_impl.rs":"63db2d720ff5e3d9c0d6c2b245ffff25d4040e4fcbcb2a6524b0f912826f86af","src/with_position.rs":"d922f045f6fa090a431be928f3221c6dc37ac6f9bb54461b3b84f99a7e91244a","src/zip_eq_impl.rs":"f857c69120255db16ad6ddec628c79cb573b1d5179fcebab1906bf5b762c02e3","src/zip_longest.rs":"375325ef069970e6fb83c6097c2824877bb0f06e4f1e664e4fe681804abe003c","src/ziptuple.rs":"d7ae7d3c33185ad74ab2bba750ac337b5c236750cc8341dd9883faf6465712a1","tests/merge_join.rs":"546eaffae40010f15a7bcf95bc53f5e9b67424c5b93df6ffb0aaa1e48e8b90c0","tests/peeking_take_while.rs":"a2ae6474e09620a47bb8a6e3c62929261e72c52881370adb2d22e89aa9e9aec8","tests/quick.rs":"24b1ecc7522353d9fb278cb4fa4810437c717ff8a5a2a95e08909511420fc514","tests/test_core.rs":"ec9b8b8227170060a7828e907d6750c7123b4a1618073ac10e2b3fca72bd50d7","tests/test_std.rs":"63a5e52953e7209f72bdfd157047ee7b93a696786d1b39931a3f8a1053a67128","tests/tuples.rs":"5323d15a7abf6545b2655167d3206b6cf6a947e9409a244ea6a8cf4ad8ceac64","tests/zip.rs":"fe213d70c4fa114cb4d1930a6b971f4af617a239041ddb87e6b5a9bbe62261b8"},"package":"f58856976b776fedd95533137617a02fb25719f40e7d9b01c7043cd65474f450"} \ No newline at end of file +{"files":{".cargo_vcs_info.json":"3f83870fe3e968d22bbfd62671b6abe37a350c70d982d20e13308309553d737d",".travis.yml":"4d29afc260d5ad297d72e9e4ec4c91488757b029ff12aa3082ca605d5396c14a","Cargo.toml":"0c34daa00ddd36495985f9fb20741193c62fe6ab4a1097aaa71fc64bb02c6cc0","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7576269ea71f767b99297934c0b2367532690f8c4badc695edf8e04ab6a1e545","README.rst":"08cef4a5844a644d2f5b6f2b4e13726bc4ca2ec4d06a384cc6fa3a5bf39afaf8","benches/bench1.rs":"9794e5377019e4cf8caee3e7bb30034cf8ac291a485e64407df321f3f33affa0","benches/extra/mod.rs":"4c5b03e74fc5b02383500c9da9fd6550262706ee569d70d085700f6d0b5749ba","benches/extra/zipslices.rs":"108dd488de366b2d83fb6bcc603ecbf9a017e165ac19d03440074fa244af3fb2","benches/tree_fold1.rs":"84cddbabb1a681f3196430a8e27b060103366143a3ee4c42c3b0628fc00a7543","benches/tuple_combinations.rs":"6a4b89eb2e45fa0c99e5e5942b3196b76998213c66c44b3765b869be42016a82","benches/tuples.rs":"412a952f08bb03695952d5cfd57949dcf28be8b99e3c6653994bdb8af9654653","examples/iris.data":"596ffd580471ca4d4880f8e439c7281f3b50d8249a5960353cb200b1490f63a0","examples/iris.rs":"3996ca0a62762aec2b102f0f4244fe90d4b4354286d68d80cdc40e35f4352ba3","src/adaptors/mod.rs":"65a6f105f976bcc1fa670ca931fd144a6a42b1657a17de11097c30b15e6f653c","src/adaptors/multi_product.rs":"bb239555be38cde1f419bacfd09728f6ccaf51b6b4811c266b5677705175e685","src/combinations.rs":"a9a3fc78eb5c9f3933ff60275a635d0c81f4864a73515dc052aeb2add4ad4909","src/concat_impl.rs":"276339b00588f54c25f8ffbe0ae3c0031f7e52fb53c6578554a0bde1681b58a5","src/cons_tuples_impl.rs":"87c620d2ffdd3475218f5f493dbef601491be9f6cdfe57c44929449b32e6709f","src/diff.rs":"921e2b867d7b32ffedc72a5eb780811322d14d1e0883a608b9028a2afcad0df2","src/either_or_both.rs":"8ea6db74fa21535de45cb48ee7134495e8822a0fa181fdb646e081251ac9459f","src/format.rs":"412fbe02f12311c6fbcec1044f57ad6991783f5a3f323b9c391accfe4915106f","src/free.rs":"ced78d79c0c78398ac53bf628e77ae84f214972d0dad0507b6687c2f88873aaa","src/group_map.rs":"872d6e243e649ad30c94973c034596cc3377b10018e361bca07e11c612006de6","src/groupbylazy.rs":"a067a12671be9ae05a9152518103f39f7286fde09f758de8af75a1064a3b5567","src/impl_macros.rs":"eb0bb3f70ec1bcaffa6110ae4134c777951ed1e5f48d8c811dbf0a597dc48faa","src/intersperse.rs":"9c18f239654ebfcce1d68a0256d2df6d79a2b8c4fb5df87d67e2ebe04a07e1a9","src/kmerge_impl.rs":"51e71d3e76670a8efb16597a9224d2c9b40cee6bc6270d06b66aadafea6dc26b","src/lib.rs":"9ae7c64d8f30575fbafe579062d9c400b04d9b76876136cea5b2898e2cf88ed6","src/merge_join.rs":"98e6fcc761a558ad21789efe041c3f90e62f6c75e05840670df45ad4f9b07e1f","src/minmax.rs":"4668a7f824fbc133599f43ffb6f7283e5bd603e07df2d8176abc6f25d6af9db0","src/multipeek_impl.rs":"ebe9544d94d0bf7200f7625241a3b5a291b7b564091a08cad40ff08b51f1b1bf","src/pad_tail.rs":"078615a2892f8c6db665074cf6f1be1bef4cf5ee418bc174edcfd4dc703e163f","src/peeking_take_while.rs":"6aea3bb40fb480e9f3695ce2a7a3a2e2346d437ca846d20e6bb3c09beb0934f4","src/process_results_impl.rs":"5f454cf62ceb82cab7c08c0c190de3ae083e219a8acc7a1a22f17eec9cfcd65c","src/put_back_n_impl.rs":"d35858184c525372b22d14d42cdf63726cf0fd50f5bd42ec7a82d55a8e180e9f","src/rciter_impl.rs":"8f51abc7e1ae3320cc5d56fadd66f880a7a06773be656bd8c4712357f01ae1d9","src/repeatn.rs":"4bd1782364b16105fbef3f3de7bf62780710e5c996db44a00e4b5f16c2625d86","src/size_hint.rs":"c1d35b422a696cf3d63e7c90d8f9fdf01a304cf8156e914287c4ef48fea62dd3","src/sources.rs":"9d7eb4dbd87f659d04b4980238c5fc72b71472e16861d17a32cab9b77a3df06a","src/tee.rs":"59cf9ef0b41882307ea1e3503a2ff351f401f4c43d95acf423a990b0bf0e29ae","src/tuple_impl.rs":"0c7f907e85d2ef0661583b36c7b8a7341b8feadafe28d10539a211dff5c028ea","src/unique_impl.rs":"63db2d720ff5e3d9c0d6c2b245ffff25d4040e4fcbcb2a6524b0f912826f86af","src/with_position.rs":"d922f045f6fa090a431be928f3221c6dc37ac6f9bb54461b3b84f99a7e91244a","src/zip_eq_impl.rs":"f857c69120255db16ad6ddec628c79cb573b1d5179fcebab1906bf5b762c02e3","src/zip_longest.rs":"375325ef069970e6fb83c6097c2824877bb0f06e4f1e664e4fe681804abe003c","src/ziptuple.rs":"d7ae7d3c33185ad74ab2bba750ac337b5c236750cc8341dd9883faf6465712a1","tests/merge_join.rs":"546eaffae40010f15a7bcf95bc53f5e9b67424c5b93df6ffb0aaa1e48e8b90c0","tests/peeking_take_while.rs":"a2ae6474e09620a47bb8a6e3c62929261e72c52881370adb2d22e89aa9e9aec8","tests/quick.rs":"24b1ecc7522353d9fb278cb4fa4810437c717ff8a5a2a95e08909511420fc514","tests/test_core.rs":"ec9b8b8227170060a7828e907d6750c7123b4a1618073ac10e2b3fca72bd50d7","tests/test_std.rs":"63a5e52953e7209f72bdfd157047ee7b93a696786d1b39931a3f8a1053a67128","tests/tuples.rs":"5323d15a7abf6545b2655167d3206b6cf6a947e9409a244ea6a8cf4ad8ceac64","tests/zip.rs":"fe213d70c4fa114cb4d1930a6b971f4af617a239041ddb87e6b5a9bbe62261b8"},"package":"0d47946d458e94a1b7bcabbf6521ea7c037062c81f534615abcad76e84d4970d"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/itertools/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/itertools/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/itertools/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/itertools/Cargo.toml 2019-01-04 19:47:54.000000000 +0000 @@ -12,8 +12,9 @@ [package] name = "itertools" -version = "0.7.8" +version = "0.7.11" authors = ["bluss"] +exclude = ["/bors.toml"] description = "Extra iterator adaptors, iterator methods, free functions, and macros." documentation = "https://docs.rs/itertools/" keywords = ["iterator", "data-structure", "zip", "product", "group-by"] diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/itertools/.cargo_vcs_info.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/itertools/.cargo_vcs_info.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/itertools/.cargo_vcs_info.json 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/itertools/.cargo_vcs_info.json 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,5 @@ +{ + "git": { + "sha1": "73bb81aba95d9ed6ad3fde0404fc1341fce8ed06" + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/itertools/custom.css distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/itertools/custom.css --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/itertools/custom.css 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/itertools/custom.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,29 +0,0 @@ - -.docblock pre.rust { background: #eeeeff; } -pre.trait, pre.fn, pre.struct, pre.enum, pre.typedef { background: #fcfefc; } - -/* Small “example” label for doc examples */ -.docblock pre.rust::before { - content: "example"; - float: right; - font-style: italic; - font-size: 0.8em; - margin-top: -10px; - margin-right: -5px; -} - - -/* Fixup where display in trait listing */ -pre.trait .where::before { -content: '\a '; -} - -.docblock code { - background-color: inherit; - font-weight: bold; - padding: 0 0.1em; -} - -a.test-arrow { - display: none; -} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/itertools/Makefile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/itertools/Makefile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/itertools/Makefile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/itertools/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,34 +0,0 @@ -DOCCRATES = itertools - -# deps to delete the generated docs -RMDOCS = - -FEATURES = - -VERSIONS = $(patsubst %,target/VERS/%,$(DOCCRATES)) - -docs: mkdocs subst $(RMDOCS) - -# https://www.gnu.org/software/make/manual/html_node/Automatic-Variables.html -$(VERSIONS): Cargo.toml - mkdir -p $(@D) - cargo pkgid $(@F) | sed -e "s/.*#\(\|.*:\)//" > "$@" - -$(DOCCRATES): %: target/VERS/% - # Put in the crate version into the docs - find ./doc/$@ -name "*.html" -exec sed -i -e "s/\(.*\) - Rust/<title>$@ $(shell cat $<) - \1 - Rust/g" {} \; - -subst: $(DOCCRATES) - -mkdocs: Cargo.toml - cargo doc --features=$(FEATURES) --no-deps - rm -rf ./doc - cp -r ./target/doc ./doc - - cat ./custom.css >> doc/main.css - -$(RMDOCS): mkdocs - rm -r ./doc/$@ - sed -i "/searchIndex\['$@'\]/d" doc/search-index.js - - -.PHONY: docs mkdocs subst $(DOCCRATES) $(RMDOCS) diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/itertools/README.rst distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/itertools/README.rst --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/itertools/README.rst 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/itertools/README.rst 2019-01-04 19:47:54.000000000 +0000 @@ -21,7 +21,7 @@ .. code:: toml [dependencies] - itertools = "0.7.3" + itertools = "0.7" How to use in your crate: @@ -31,16 +31,38 @@ use itertools::Itertools; -How to contribute: +How to contribute +----------------- - Fix a bug or implement a new thing - Include tests for your new feature, preferably a quickcheck test - Make a Pull Request +For new features, please first consider filing a PR to `rust-lang/rust <https://github.com/rust-lang/rust/>`_, +adding your new feature to the `Iterator` trait of the standard library, if you believe it is reasonable. +If it isn't accepted there, proposing it for inclusion in ``itertools`` is a good idea. +The reason for doing is this is so that we avoid future breakage as with ``.flatten()``. +However, if your feature involves heap allocation, such as storing elements in a ``Vec<T>``, +then it can't be accepted into ``libcore``, and you should propose it for ``itertools`` directly instead. Recent Changes -------------- +- 0.7.11 + + - Add convenience methods to ``EitherOrBoth``, making it more similar to ``Option`` + and ``Either`` by @jethrogb + +- 0.7.10 + + - No changes. + +- 0.7.9 + + - New inclusion policy: See the readme about suggesting features for std before + accepting them in itertools. + - The ``FoldWhile`` type now implements ``Eq`` and ``PartialEq`` by @jturner314 + - 0.7.8 - Add new iterator method ``.tree_fold1()`` which is like ``.fold1()`` diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/itertools/src/adaptors/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/itertools/src/adaptors/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/itertools/src/adaptors/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/itertools/src/adaptors/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -362,7 +362,7 @@ } } -/// A “meta iterator adaptor”. Its closure recives a reference to the iterator +/// A “meta iterator adaptor”. Its closure receives a reference to the iterator /// and may pick off as many elements as it likes, to produce the next iterator element. /// /// Iterator element type is *X*, if the return type of `F` is *Option\<X\>*. diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/itertools/src/either_or_both.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/itertools/src/either_or_both.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/itertools/src/either_or_both.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/itertools/src/either_or_both.rs 2019-01-04 19:47:54.000000000 +0000 @@ -1,3 +1,5 @@ +use EitherOrBoth::*; + /// Value that either holds a single A or B, or both. #[derive(Clone, PartialEq, Eq, Debug)] pub enum EitherOrBoth<A, B> { @@ -8,3 +10,49 @@ /// Only the right value of type `B` is present. Right(B), } + +impl<A, B> EitherOrBoth<A, B> { + /// If `Left`, or `Both`, return true, otherwise, return false. + pub fn has_left(&self) -> bool { + self.as_ref().left().is_some() + } + + /// If `Right`, or `Both`, return true, otherwise, return false. + pub fn has_right(&self) -> bool { + self.as_ref().right().is_some() + } + + /// If `Left`, or `Both`, return `Some` with the left value, otherwise, return `None`. + pub fn left(self) -> Option<A> { + match self { + Left(left) | Both(left, _) => Some(left), + _ => None + } + } + + /// If `Right`, or `Both`, return `Some` with the right value, otherwise, return `None`. + pub fn right(self) -> Option<B> { + match self { + Right(right) | Both(_, right) => Some(right), + _ => None + } + } + + /// Converts from `&EitherOrBoth<A, B>` to `EitherOrBoth<&A, &B>`. + pub fn as_ref(&self) -> EitherOrBoth<&A, &B> { + match *self { + Left(ref left) => Left(left), + Right(ref right) => Right(right), + Both(ref left, ref right) => Both(left, right), + } + } + + /// Converts from `&mut EitherOrBoth<A, B>` to `EitherOrBoth<&mut A, &mut B>`. + pub fn as_mut(&mut self) -> EitherOrBoth<&mut A, &mut B> { + match *self { + Left(ref mut left) => Left(left), + Right(ref mut right) => Right(right), + Both(ref mut left, ref mut right) => Both(left, right), + } + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/itertools/src/lib.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/itertools/src/lib.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/itertools/src/lib.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/itertools/src/lib.rs 2019-01-04 19:47:54.000000000 +0000 @@ -386,7 +386,7 @@ zip_eq(self, other) } - /// A “meta iterator adaptor”. Its closure recives a reference to the + /// A “meta iterator adaptor”. Its closure receives a reference to the /// iterator and may pick off as many elements as it likes, to produce the /// next iterator element. /// @@ -2095,7 +2095,7 @@ /// An enum used for controlling the execution of `.fold_while()`. /// /// See [`.fold_while()`](trait.Itertools.html#method.fold_while) for more information. -#[derive(Copy, Clone, Debug)] +#[derive(Copy, Clone, Debug, Eq, PartialEq)] pub enum FoldWhile<T> { /// Continue folding with this value Continue(T), diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/itertools/.travis.yml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/itertools/.travis.yml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/itertools/.travis.yml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/itertools/.travis.yml 2019-01-04 19:47:54.000000000 +0000 @@ -2,7 +2,7 @@ sudo: false matrix: include: - - rust: 1.12.0 + - rust: 1.13.0 before_script: # rand 0.4.2 requires rust 1.15, and rand-0.3.22 requires rand-0.4 :/ # manually hacking the lockfile due to the limitations of cargo#2773 diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/appveyor.yml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/appveyor.yml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/appveyor.yml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/appveyor.yml 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ -environment: - # When this was added there were revocation check failures when using the - # libcurl backend as libcurl checks by default, but rustup doesn't provide the - # switch to turn this off. Switch to Hyper which looks to not check for - # revocation by default like libcurl does. - RUSTUP_USE_HYPER: 1 - CARGO_HTTP_CHECK_REVOKE: false - matrix: - - TARGET: x86_64-pc-windows-gnu - MSYS2_BITS: 64 - - TARGET: i686-pc-windows-gnu - MSYS2_BITS: 32 - - TARGET: x86_64-pc-windows-msvc - - TARGET: i686-pc-windows-msvc -install: - - appveyor-retry appveyor DownloadFile https://win.rustup.rs/ -FileName rustup-init.exe - - rustup-init.exe -y --default-host %TARGET% - - set PATH=%PATH%;C:\Users\appveyor\.cargo\bin - - if defined MSYS2_BITS set PATH=%PATH%;C:\msys64\mingw%MSYS2_BITS%\bin - - rustc -V - - cargo -V - -build: false - -test_script: - - cargo test --target %TARGET% - - cargo test --no-default-features --target %TARGET% - - cargo test --manifest-path libc-test/Cargo.toml --target %TARGET% diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/build.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/build.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/build.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/build.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,35 @@ +use std::env; +use std::process::Command; +use std::str; + +fn main() { + /* + * If `core::ffi::c_void` exists, libc can just re-export it. Otherwise, it + * must define an incompatible type to retain backwards-compatibility. + */ + if rustc_minor_version().expect("Failed to get rustc version") >= 30 { + println!("cargo:rustc-cfg=core_cvoid"); + } +} + +fn rustc_minor_version() -> Option<u32> { + macro_rules! otry { + ($e:expr) => { + match $e { + Some(e) => e, + None => return None, + } + }; + } + + let rustc = otry!(env::var_os("RUSTC")); + let output = otry!(Command::new(rustc).arg("--version").output().ok()); + let version = otry!(str::from_utf8(&output.stdout).ok()); + let mut pieces = version.split('.'); + + if pieces.next() != Some("rustc 1") { + return None; + } + + otry!(pieces.next()).parse().ok() +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/.cargo-checksum.json 2019-01-04 19:47:54.000000000 +0000 @@ -1 +1 @@ -{"files":{".travis.yml":"8088167016d06169f8b1eb86ba5f413cdfcb776bd95af46f968d146665ff5afe","Cargo.toml":"74e837a30336b387d94fc92db3d1ece407b47318ca1362a2b8f37dfb28064e54","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"a550fd6c92b62c70925cc6a75dd1d40ae93f9a77e3c4e9baacdf014fa0cae550","appveyor.yml":"216f7ac4561aa5810dc84ce5a9950897a8c0496e0615d0211d62348b1c8dc720","ci/README.md":"2e3d7ad13f8c3202e57d2af73aeeebde306221dce7c0907e462e25767a692d6b","ci/android-install-ndk.sh":"725db9025c5905849916bf7c910f98ff0e753484397c2a1f836d48a576d10890","ci/android-install-sdk.sh":"5c3fbe402ac611239ac7715a61f247d1c55fa012f33a5be0b0127dfc196965cf","ci/android-sysimage.sh":"901415631752827454c827e8c51906ba4260612e4021eda98eb7fff771c7d0e8","ci/docker/aarch64-linux-android/Dockerfile":"e17945fba1786dfe766006f50e79baf3f4151ca0c0c14ae96f91483bf345afd7","ci/docker/aarch64-unknown-linux-gnu/Dockerfile":"5f430271941e1eecdf9d1a5fb701dd5622e2c4b9da03140fd829bf216e55529d","ci/docker/aarch64-unknown-linux-musl/Dockerfile":"1e8c66067bcbd718119db5eb6e69390c4f0ea72c1543e09b6846a36ef66cd21b","ci/docker/arm-linux-androideabi/Dockerfile":"4e0bdc13254f99bd0db195f91331c634050426e3e4a0fcc63ef25ab795fe2d46","ci/docker/arm-unknown-linux-gnueabihf/Dockerfile":"dbb025b53b27e406893184290836a50133ecae8295711d5e05b4e41fac9bd262","ci/docker/arm-unknown-linux-musleabihf/Dockerfile":"12b50abdc5605e3a39eff6bb0d0fccb0885896933c5bfbb3d0cbde9068492a0f","ci/docker/asmjs-unknown-emscripten/Dockerfile":"0d9aea5119c2cd136cc2c0a578105d91210e45901ac49b17c5e45f458b1c7551","ci/docker/i686-linux-android/Dockerfile":"4e8377ec0bd9ad2df23bf2c5373200a12750dc9f28c4f10bc83a0150fe1623ee","ci/docker/i686-unknown-linux-gnu/Dockerfile":"f22ac412525ef15b33ab8ccd8193d97346faf421c17f6ddeffc25b651aba83b7","ci/docker/i686-unknown-linux-musl/Dockerfile":"f95cd8b514f48686d774b85e4dffccce1a5acd68749d8ff59b204419d448d575","ci/docker/mips-unknown-linux-gnu/Dockerfile":"6d2a9daa299003497c1d441d07b69f730ad75ee49f34520f959b5158e60072e0","ci/docker/mips-unknown-linux-musl/Dockerfile":"4773b2656a7dd6a3b106fcb737428436652edf3d1f48181de3f62c16bf5bd49d","ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile":"7c4d26232f1c1553a6612d9b0b3faac9887e139eaffa025f70d34113dcee812f","ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile":"edb4144c07ade1a8bd65272ec1d3672ad794e9e6b7d01197896e159a70175b58","ci/docker/mipsel-unknown-linux-musl/Dockerfile":"0ca9c12b5618c6d2df04ff820d56fb28e05b43e45eaa506480126b03c5072d48","ci/docker/powerpc-unknown-linux-gnu/Dockerfile":"4b247dcc399395815ec9153c1247cc03d764896c484eddcb196d0bf8650d6311","ci/docker/powerpc64-unknown-linux-gnu/Dockerfile":"e949717a8ba5e123940729ff47ce1c45989c8b8247c576f1488f698b534e0283","ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile":"018591017f499414a9f79477e1c39baa6a47f71fce6812fb1868fb0fcdfb8cea","ci/docker/s390x-unknown-linux-gnu/Dockerfile":"9860f478c5b2dc3bcf76d2cda7f71922a2a2ef54898cc2ed6ea9b9eff094a5c0","ci/docker/sparc64-unknown-linux-gnu/Dockerfile":"1471a694817758331ecdbb23857537563ad7ae56aa3a88e49bf9cd421addcafe","ci/docker/wasm32-unknown-emscripten/Dockerfile":"bd072d6ae91a9160693e402dd77462d3c9dd0716711e719a62af330ae479eb4e","ci/docker/wasm32-unknown-emscripten/node-wrapper.sh":"0eef37c3c4fb16dbc083148b7e7af45f2ae60bd9a1b3a77e1d43da79efbd30c6","ci/docker/x86_64-linux-android/Dockerfile":"aeeaa540189ca712369c564c9a14cbace63217dadcfaf879a2cb40fbdeb08199","ci/docker/x86_64-rumprun-netbsd/Dockerfile":"e8f9287b267c6058eec42d1bca0007cb9a78a1d244dd8e11088368cb61fb17d6","ci/docker/x86_64-rumprun-netbsd/runtest.rs":"53302e9ed39293c1ec68ab56287593907d4aaf5bac9c1c2857b29f754a71d62b","ci/docker/x86_64-unknown-freebsd/Dockerfile":"ab1f14c65c29f3721c7c091bdec2e865fb1abf45fdcdc867201d087966e396c4","ci/docker/x86_64-unknown-linux-gnu/Dockerfile":"ab3fa45765802b8155996796fcad9fb82096360ac587e38e6faa3ec345268796","ci/docker/x86_64-unknown-linux-gnux32/Dockerfile":"f22ac412525ef15b33ab8ccd8193d97346faf421c17f6ddeffc25b651aba83b7","ci/docker/x86_64-unknown-linux-musl/Dockerfile":"0c31058e39d9f25c6f4f9b7fe78c7c8d135f32bfe52199e9b2e7fa10d5dc3940","ci/dox.sh":"d77171a9da467bb01fc702a28fc3b5099f82a485a627f3d5593a9830c3e1a77c","ci/emscripten-entry.sh":"c97bbec520b57af9b1ae264ca991560e99c3852c99b00a2f673c614d1ba17498","ci/emscripten.sh":"6f66c7b5c3d34a41afc59ceb0a8c3b0880cd6fd9a6344b874ae80bac0639ccb2","ci/ios/deploy_and_run_on_ios_simulator.rs":"be6d2ccfe78df5d77a2c4ee40ffbd22b1bb2ac0a0cf6b2a108f21406f22ce1a8","ci/landing-page-footer.html":"b70b3112c2147f5c967e7481061ef38bc2d79a28dd55a16fb916d9c9426da2c4","ci/landing-page-head.html":"ad69663fac7924f27d0209bc519d55838e86edfc4133713a6fd08caadac1b142","ci/linux-s390x.sh":"d6b732d7795b4ba131326aff893bca6228a7d2eb0e9402f135705413dbbe0dce","ci/linux-sparc64.sh":"c92966838b1ab7ad3b7a344833ee726aba6b647cf5952e56f0ad1ba420b13325","ci/run-docker.sh":"be83bc5a8b5ef913a7c9941ffca24734716028650c9a876123c4c160672c18de","ci/run-qemu.sh":"bb859421170871ef23a8940c5e150efec0c01b95e32d2ce2d37b79a45d9d346c","ci/run.sh":"86b7d1ce555ed5eeeac6b44fd0e9563166ff38ba38e56a82d70800ace3b65946","ci/runtest-android.rs":"a07ddbdd276aedda7876c7e676774178a60d9aeab95df01275a4ee95f59e3044","ci/style.rs":"940c06a676cff1dfc1555b887e46867c6aacc473956cd6aaafaed71824facdb2","ci/test-runner-linux":"cb3713d9e4fa1d9a7c039dfd077af0939921c1f2bf969c9e680ee66e87dc30a4","src/cloudabi/aarch64.rs":"b8550bf1fd7344972aa4db29441486f39f31482d0327534981dbb75959c29114","src/cloudabi/arm.rs":"c197e2781c2839808bd6fcef219a29705b27b992d3ef920e9cf6ac96e2022bbf","src/cloudabi/mod.rs":"1c2dc787a1b3438970ccd04153c93538719b1a27445707913b90b6f0cdcdde77","src/cloudabi/x86.rs":"33eb97f272d2201f3838ae74d444583c7de8f67856852ca375293b20bbd05636","src/cloudabi/x86_64.rs":"400d85d4fe39e26cf2e6ece9ee31c75fe9e88c4bcf4d836ca9f765c05c9c5be3","src/dox.rs":"8f6037887281b828d8541ce8a549dacaed5d29c05fd9cf78b169838476b82741","src/fuchsia/aarch64.rs":"8366ac6f51e494aad9266ccab2b3a95c5ed7aa3a9f77ea672413283440919743","src/fuchsia/mod.rs":"e5b7e6ff40e670200c52919b53474627931b4def18d452323999de201953cf21","src/fuchsia/powerpc64.rs":"390e8db54271a1d5f512d54a21b328091a792378bf9b42b49b6c1a72388da4ec","src/fuchsia/x86_64.rs":"b4a3eff94dcf1ffe41e6500468ca2cff0e97ddbcc75fe079b6ac7adb1e493f56","src/lib.rs":"bbad6abf79078649e76c2379c3c3fcbc4198430736e726a01d96a8f1439e8cb1","src/macros.rs":"8ad55edea39fad158e80c5df0d7b520b6863f5088db4db286ba31c12cbc4d67d","src/redox/mod.rs":"685d4d39911e855bf0fd7879b9a02bc15cefebfb0f520382c1a1353364f0d523","src/redox/net.rs":"f2e1922883f208cb46c00744da4a68feccfbec576c6981978ad404e46f818c8b","src/unix/bsd/apple/b32.rs":"41699d2802327b0a4d4aa50cd20b1e366b442176cbedab27ca888ac0446c9156","src/unix/bsd/apple/b64.rs":"0cda592881a1db30f2d96ff0f67cf4214aa99881dfe4f2fb474ef7ec78bd204a","src/unix/bsd/apple/mod.rs":"ac02092ad74cb81fa789e89d541d79525d2298ac77842847b48e5fd1a83fff0d","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"7a8df4e8079ed60ad4ac35362901eb2fea4d53384709e4ac45930899b84f8eaf","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"97132e2097411034271b8c927ecc94a208a361564680972a6c82998bd30a9826","src/unix/bsd/freebsdlike/freebsd/mod.rs":"1b158199be42b37708f10d0e73164cf0b63a2b5ae0e6fcc1feab5944f5377f24","src/unix/bsd/freebsdlike/freebsd/x86.rs":"54311d3ebf2bb091ab22361e377e6ef9224aec2ecfe459fbfcedde4932db9c58","src/unix/bsd/freebsdlike/freebsd/x86_64.rs":"97132e2097411034271b8c927ecc94a208a361564680972a6c82998bd30a9826","src/unix/bsd/freebsdlike/mod.rs":"9ddcc86d3bb76f426e26c4df8d853b3715a7d6d9006acaa4fa26b2b0f5bb3314","src/unix/bsd/mod.rs":"a1030452eed4ec52a39e9f39040e8fae4309143c7af145efadd9b425caa39672","src/unix/bsd/netbsdlike/mod.rs":"6fb522d55eced39ef1bc28873f9ae8d5ab141acde09c5cb6a22aeca577d916ad","src/unix/bsd/netbsdlike/netbsd/mod.rs":"1cd66ed5967c788562d4ad626cfbeb1544f4b9267111de5f6790379b8327f28e","src/unix/bsd/netbsdlike/netbsd/other/b32/mod.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/bsd/netbsdlike/netbsd/other/b64/mod.rs":"927eeccaf3269d299db4c2a55f8010807bf43dfa894aea6a783215f5d3560baa","src/unix/bsd/netbsdlike/netbsd/other/mod.rs":"4d9f7091af8e166943ac6f42ce85558909e5b6e61325039bff7adfbcf4b90212","src/unix/bsd/netbsdlike/openbsdlike/bitrig/mod.rs":"92459d80b8e5b570c0efe35a1d244d38f23072cd28b6581dfcb313dc9bfc3d51","src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86_64.rs":"927eeccaf3269d299db4c2a55f8010807bf43dfa894aea6a783215f5d3560baa","src/unix/bsd/netbsdlike/openbsdlike/mod.rs":"37fea61239bd53cd951fd7bc800229f663be2e9ad2e1539ebdf73767ca28b469","src/unix/bsd/netbsdlike/openbsdlike/openbsd/aarch64.rs":"820092e397c7ec259cd2de8f2444083a8e57071c02d73d678701dfa7807726e9","src/unix/bsd/netbsdlike/openbsdlike/openbsd/mod.rs":"973331fd80876db55467913556d81f45ea1ede03322fef9c5d552aba833d2207","src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86.rs":"44b7ea81cf363777b29935da175e702cbf45ed78f7498ae57faf44aa32335085","src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86_64.rs":"7c959cdb3415f68a0f948117b9aa87a17463e57ab97cc3235f2567454b706653","src/unix/haiku/b32.rs":"69ae47fc52c6880e85416b4744500d5655c9ec6131cb737f3b649fceaadce15a","src/unix/haiku/b64.rs":"73e64db09275a8da8d50a13cce2cfa2b136036ddf3a930d2939f337fc995900b","src/unix/haiku/mod.rs":"8b8a7a51e1bc20407e42b0ab6c1a0cd1c8fc4f3ef61a04ccb7c8e312495ce30b","src/unix/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/unix/hermit/mod.rs":"a8bb096695eea74fb1c5c6766c1e680d28378c452dbc622fa5f91c6ce204306f","src/unix/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/unix/mod.rs":"af909129f76f9bbe571dee2e78f43afd63ff6e46c27a429da43c239537330283","src/unix/newlib/aarch64/mod.rs":"c408a990f22fb4292a824f38367e9b517e6e6f8623328397ee631cc88b3d1f7d","src/unix/newlib/arm/mod.rs":"2b6dba2e697ab9b4f4bc4dd5f28057249e9b596d1cb395a9322ec87605c4a5c4","src/unix/newlib/mod.rs":"d9f59ee9a994490122986b7ae5e3064bf9ce0b888349a388a50341a4c7069842","src/unix/notbsd/android/b32/arm.rs":"3625a32c7e58cfe683a53486fbe3d42d4e28f00bea31e19cb46ed2bb0b6a140b","src/unix/notbsd/android/b32/mod.rs":"2fbe398c1fb5251dda6213741a193e50aae4622807cb255d1dd2e82b536f0c65","src/unix/notbsd/android/b32/x86.rs":"ae2b7f1d6278caddc007749bb1d09ca33f7593478a0fd7fe98b457dae86c7814","src/unix/notbsd/android/b64/aarch64.rs":"63d65629d79371814910f691672ef593d20244ee09be26f1ebe07ee6212d0163","src/unix/notbsd/android/b64/mod.rs":"90d4f6b063fd4de42fd302cbc9d9902fd99ac1d71dc48cb8bc6ad7b4c902e481","src/unix/notbsd/android/b64/x86_64.rs":"5547aef8dcbaa5a932559f34606fd8d89f6c9c15173d2b1412c12d39b3c1045f","src/unix/notbsd/android/mod.rs":"eadc87bfea5f5e8ea50a3776b526cea2b0bfaf6d55240ba88134e19670f8a3a6","src/unix/notbsd/emscripten.rs":"d2d817af2b1496c1ee173f216c478a3a1c26223ef938797103bc50a265284662","src/unix/notbsd/linux/mips/mips32.rs":"a483ddfd10765b7d5090dc21686eee8842649cd21236828a42d634114885f5f9","src/unix/notbsd/linux/mips/mips64.rs":"9fff696e3943cf206b549d1ae13fa361828e9a8454e2d5730eeaa1c172ff370d","src/unix/notbsd/linux/mips/mod.rs":"af1b7bffff09aa5d8662e6452f72bc1e55b6639899b8c2a4be9cd1cfb245de01","src/unix/notbsd/linux/mod.rs":"081cb74be8b465c9cf86289f675cb7c6f7d7eee39713a6764e1871eabcbaee44","src/unix/notbsd/linux/musl/b32/arm.rs":"9d9bff31ab0925a1f62a20945d36a83b94ce3ab78dd202cd468bb31556b21725","src/unix/notbsd/linux/musl/b32/mips.rs":"cb38c463aebfc235f31880db158dd47c6e21f182a092d3f3087d92994b7711da","src/unix/notbsd/linux/musl/b32/mod.rs":"540928f168f145c136f9dd729ffa12b9d1838d9fe664fc642365d17d7fae648f","src/unix/notbsd/linux/musl/b32/powerpc.rs":"3930a2825657ac9208935341e29cfa62f6e37fc5c6b2c0d0dc9ac8c3b5569d59","src/unix/notbsd/linux/musl/b32/x86.rs":"c02dd333012cf65cb8873fa211eff5e63d466be55451a347510e3d4f50ed515e","src/unix/notbsd/linux/musl/b64/aarch64.rs":"4d79d86d11fbb8cb7a74084e410a1140e3c89dfc1842cdfb213f3a0ca93046df","src/unix/notbsd/linux/musl/b64/mod.rs":"caac00326693b372d6805e4dda239475e7fef36368881f372c006264844fda0d","src/unix/notbsd/linux/musl/b64/powerpc64.rs":"24514e41be4b5f5e0ffbe8a25a99dae8989489b607db59e8bfa345f8e65c9963","src/unix/notbsd/linux/musl/b64/x86_64.rs":"25340999290a63d564ec149532c905f59c312ec369f8806d6b15df66fa1b8857","src/unix/notbsd/linux/musl/mod.rs":"17c70acf9c6eabeb73916c2abb7d7e8b0310214090faae4a8dc2fd183a9b45ba","src/unix/notbsd/linux/other/b32/arm.rs":"d9892f7350b2978335f734f1cd2d7fed60f0f2e66aa05bee3f69549c031f8b14","src/unix/notbsd/linux/other/b32/mod.rs":"dac0fd1054a0fa163bce85df58c4ad4d222d8b7353bdb4364482b46c19991d03","src/unix/notbsd/linux/other/b32/powerpc.rs":"253fcd2f9978525285be1903cc08f3fec2dc3b12d1660a33e2995b4f6b810d1c","src/unix/notbsd/linux/other/b32/x86.rs":"49376e3ed0f3ff95c230ac20751911fe3c608dfe15c7c118b069fd7a954d8db9","src/unix/notbsd/linux/other/b64/aarch64.rs":"d57f3e06a0ac8affc5bf9d17e1f217ef1d1d714c947f47e647e0e038deaf48b2","src/unix/notbsd/linux/other/b64/mod.rs":"63e1a3fdf5f4d1b9820934ab344c91aed5e458e7e05908535d2e942d51a08bf8","src/unix/notbsd/linux/other/b64/not_x32.rs":"fa8636fb93eab230ed53bdec0a06f5b81d6d982cc0800103563c8c1eefcdb2d9","src/unix/notbsd/linux/other/b64/powerpc64.rs":"024057a910d0b885c63443165d34ce33f972973a9a8f5979906198180b19ad8b","src/unix/notbsd/linux/other/b64/sparc64.rs":"bb28f201e29c7f490a42dd2673eb8180fd82c1824a5d21aeb5aed674ffcc6e07","src/unix/notbsd/linux/other/b64/x32.rs":"06a26c5120ced30fc015c220799b67c4401be2f13fc6c7361bebd3d37ff4982d","src/unix/notbsd/linux/other/b64/x86_64.rs":"afba464e903d350325a1ca3d9d5af1659efc0ede83a43dbac4dbd60c522e2ad1","src/unix/notbsd/linux/other/mod.rs":"add154a8cfe9392d5a73b6055eb1419902e2b8b5458c22586a6ef8f90f89501b","src/unix/notbsd/linux/s390x.rs":"033cb7c4ee00af352698615de0248a5c6c9bcff57ba671ee22d31b70ef86fb4a","src/unix/notbsd/mod.rs":"134502158bab09d5189249ef400c9ddf7fdf5d1a1bd3134484ca82b80a0833e7","src/unix/solaris/mod.rs":"9c52a7479b56d3bc1f2c9ba5bb44f71ab1470989a54d3d0d85571e19489e4b7e","src/unix/uclibc/mips/mips32.rs":"9739c5fb47f389a0394ef08ee30da97a3de0a1300020731a8cc0a033616011b2","src/unix/uclibc/mips/mips64.rs":"230583280bbc7b3c7fcdb61244f51fa1af5944ca127c7cf83c598fe2313713d0","src/unix/uclibc/mips/mod.rs":"3f86061d05a8da7d923310550b7d40c6223f0c907d77edc86b7a78da1d647f76","src/unix/uclibc/mod.rs":"8cf2db30468476b917a60fdffe475917302875a3a4150f29a042ebee182545d1","src/unix/uclibc/x86_64/l4re.rs":"68fd3a833fd1f7caf784a084224f384bdbdfb8b5a14ef94c4f5155409afb3439","src/unix/uclibc/x86_64/mod.rs":"419182836aedd426a5c9e6b8667058adf86ac8f43af73ce8d00c503f8ff8f414","src/unix/uclibc/x86_64/other.rs":"f03b47842896f2f3ae6f8ebdcbcf0276454f880349d9cf00e3d304f8136893c5","src/windows.rs":"e41357d610608bad81abf285306ad8b127b6f02d5132f63c4942861980b47d59"},"package":"76e3a3ef172f1a0b9a9ff0dd1491ae5e6c948b94479a3021819ba7d860c8645d"} \ No newline at end of file +{"files":{".cargo_vcs_info.json":"258a15fa14e21720b3518a11d0ac7931f6243c1947805ef8056eb2f5bea37866",".cirrus.yml":"febfac265e379dfb7ae265517031cdb83464abf4c00ae7ce8183e628088f2e5d","Cargo.toml":"e1bbf88a55a1ba674f5192fe1585b57a51751ee6c5aa7edeb87df8027c3bb912","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"40ddea9181e5374cf535aae33ad4ace80bd9b1beea8f881ff8d2b777da9489b2","build.rs":"2d1cbe87e0478de12a15a230d7ef0997020ba845b5b7d221d74cd2ce3fe0e720","src/cloudabi/aarch64.rs":"b8550bf1fd7344972aa4db29441486f39f31482d0327534981dbb75959c29114","src/cloudabi/arm.rs":"c197e2781c2839808bd6fcef219a29705b27b992d3ef920e9cf6ac96e2022bbf","src/cloudabi/mod.rs":"640375751825b8d4adf4fb089a53c4d883f265f96b07daf06f2dcf3acf6639c9","src/cloudabi/x86.rs":"33eb97f272d2201f3838ae74d444583c7de8f67856852ca375293b20bbd05636","src/cloudabi/x86_64.rs":"400d85d4fe39e26cf2e6ece9ee31c75fe9e88c4bcf4d836ca9f765c05c9c5be3","src/dox.rs":"b4b96dcba47797a6160c07f29982dd15d48fd2813d7d1000484bd9adc4a89de1","src/fuchsia/aarch64.rs":"40dce617877e606e92353491e1913711b1ecfa510bb983156f4a8460f490419e","src/fuchsia/mod.rs":"784dee21605f00a41d7cae1fc3d782646a84515a687a4952700eae51cc3840f0","src/fuchsia/x86_64.rs":"b4a3eff94dcf1ffe41e6500468ca2cff0e97ddbcc75fe079b6ac7adb1e493f56","src/lib.rs":"d456d34fc58c8d194f8f24201b4021860f61c5f125904bb8dcc954d1f813f6b7","src/macros.rs":"29d61c13523328c4742a7290dbb7d718ce198740824592e029199e9df5429b20","src/redox/mod.rs":"87cb35a988be84d45e79206f7cb5d098e8e7c5a1825cfcd0bd663453dedc3103","src/redox/net.rs":"f2e1922883f208cb46c00744da4a68feccfbec576c6981978ad404e46f818c8b","src/sgx.rs":"18d33a470d06c15b00be5a3bf45b6e51da6104ae7437f50c0eccbd3b79994389","src/switch.rs":"00365ed196519b260fc99a32f02d60b3fb1aaf0484654b19fec8c25bc1687420","src/unix/bsd/apple/b32.rs":"da60c99ee3d773f9c0767b93ccf18b67ad67576e2c58e2e86d05b23c23fd989a","src/unix/bsd/apple/b64.rs":"0cc15406c3a91abde65b28c7783ccab7801474ecc51c78dbd1d7332d4b834390","src/unix/bsd/apple/mod.rs":"b0e2d1f7fdb71d7a02bc5994c66a5ae660955227a0c0f808172a30b38fd40299","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"6c69319675328d4d16939c9c2aba3fb8ca9381a8b390d18d766949307090304b","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"97132e2097411034271b8c927ecc94a208a361564680972a6c82998bd30a9826","src/unix/bsd/freebsdlike/freebsd/mod.rs":"6bbb3c3cf0753f32a2e61ac0f011a6c5e870a0814a6ed4eb9bb9dcdc58a9dca3","src/unix/bsd/freebsdlike/freebsd/x86.rs":"54311d3ebf2bb091ab22361e377e6ef9224aec2ecfe459fbfcedde4932db9c58","src/unix/bsd/freebsdlike/freebsd/x86_64.rs":"97132e2097411034271b8c927ecc94a208a361564680972a6c82998bd30a9826","src/unix/bsd/freebsdlike/mod.rs":"596def64669e2f27cffebca8e5c682ee7d576f84f8f99771c27e86ce8e818221","src/unix/bsd/mod.rs":"0c846b3a2c9390dfe090603f1ad643b107cc7e7605866c5399aa81dfea4e74bd","src/unix/bsd/netbsdlike/mod.rs":"9f55f35f8e4e26c7c63eaf67ddda0e40cc2abbabc2a68750809162e6f80144f1","src/unix/bsd/netbsdlike/netbsd/aarch64.rs":"f455848cd03cb80897776f2355dbd14bbb3aa88b1aa6aec22122ec47cdbd0f20","src/unix/bsd/netbsdlike/netbsd/arm.rs":"4c9eac982c385165f475ef3a80770fd634c6dde8fb400b3cb7e08c9bb7498af6","src/unix/bsd/netbsdlike/netbsd/mod.rs":"88617ada3bc740c5262926b9c45d7f51120d358522f051f0afdf7465edd13c29","src/unix/bsd/netbsdlike/netbsd/powerpc.rs":"183818c62dff72db6ee1d329d90ad8727628775ed5cd823c8485c6769003c91e","src/unix/bsd/netbsdlike/netbsd/sparc64.rs":"4db043327fb2615af2fb0f999d162310bea2294e7d050806e19a46b083561f16","src/unix/bsd/netbsdlike/netbsd/x86.rs":"979c4cbacbde37b9053f2c9df4b8f87d37b255436ef4a383e1e5f40ee21180d6","src/unix/bsd/netbsdlike/netbsd/x86_64.rs":"741353a1c6451efb0c7c7c486fd2cb54e3d36fd1c3dd280f6432d8858b0a5356","src/unix/bsd/netbsdlike/openbsdlike/bitrig/mod.rs":"4d2ad2e885d83ad3134add61580f49a8e58cb03284ae328273a9e2e104a4d084","src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86_64.rs":"6e6f15e81597d85d83ca0eeb154e4f8b8e7f9cbb6a9cfa176601f78642ef94f9","src/unix/bsd/netbsdlike/openbsdlike/mod.rs":"6320b7bc7283dbc2a07cfb8b5a793c0153535601d050f33c1ff5e4a5cc57c2be","src/unix/bsd/netbsdlike/openbsdlike/openbsd/aarch64.rs":"820092e397c7ec259cd2de8f2444083a8e57071c02d73d678701dfa7807726e9","src/unix/bsd/netbsdlike/openbsdlike/openbsd/mod.rs":"6adc0dcb1b358ef91bbeb5512e19ba6f40adc77b7d259cb11641a69426fc5ea2","src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86.rs":"44b7ea81cf363777b29935da175e702cbf45ed78f7498ae57faf44aa32335085","src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86_64.rs":"97956c3a53aa07a2edf8865252f980dade0d34e930adca0e870e7344d7e2b0bb","src/unix/haiku/b32.rs":"69ae47fc52c6880e85416b4744500d5655c9ec6131cb737f3b649fceaadce15a","src/unix/haiku/b64.rs":"73e64db09275a8da8d50a13cce2cfa2b136036ddf3a930d2939f337fc995900b","src/unix/haiku/mod.rs":"b00fa310b6d835cb613a02101c7b1a72c636faec316586587cb63aebdcb9de8f","src/unix/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/unix/hermit/mod.rs":"248c0b0abaa7d56a7dc3293e67a0ce70a4ef8c83638bda8aa222ad8bb0ef6801","src/unix/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/unix/mod.rs":"c5f3c6d74ac8e8ef83374b6115bab7c6e57297336a7635aa4c47462649b00dfb","src/unix/newlib/aarch64/mod.rs":"c408a990f22fb4292a824f38367e9b517e6e6f8623328397ee631cc88b3d1f7d","src/unix/newlib/arm/mod.rs":"2b6dba2e697ab9b4f4bc4dd5f28057249e9b596d1cb395a9322ec87605c4a5c4","src/unix/newlib/mod.rs":"eea5f1eb720184d9a00be966e4161fddb3733362fc349182e85b1599ba4e825f","src/unix/notbsd/android/b32/arm.rs":"3625a32c7e58cfe683a53486fbe3d42d4e28f00bea31e19cb46ed2bb0b6a140b","src/unix/notbsd/android/b32/mod.rs":"2fbe398c1fb5251dda6213741a193e50aae4622807cb255d1dd2e82b536f0c65","src/unix/notbsd/android/b32/x86.rs":"ae2b7f1d6278caddc007749bb1d09ca33f7593478a0fd7fe98b457dae86c7814","src/unix/notbsd/android/b64/aarch64.rs":"63d65629d79371814910f691672ef593d20244ee09be26f1ebe07ee6212d0163","src/unix/notbsd/android/b64/mod.rs":"90d4f6b063fd4de42fd302cbc9d9902fd99ac1d71dc48cb8bc6ad7b4c902e481","src/unix/notbsd/android/b64/x86_64.rs":"5547aef8dcbaa5a932559f34606fd8d89f6c9c15173d2b1412c12d39b3c1045f","src/unix/notbsd/android/mod.rs":"19013f41ac8ccac034eb48777a4041d69342edb9ca25d4e0bb9c5938f62eef3e","src/unix/notbsd/emscripten.rs":"9ed47a0a5020c8f72d9496f87ef0da669c1ed2b85980013100c466f18cd8a4c5","src/unix/notbsd/linux/mips/mips32.rs":"a483ddfd10765b7d5090dc21686eee8842649cd21236828a42d634114885f5f9","src/unix/notbsd/linux/mips/mips64.rs":"9fff696e3943cf206b549d1ae13fa361828e9a8454e2d5730eeaa1c172ff370d","src/unix/notbsd/linux/mips/mod.rs":"d18a40011e9090a4a2a1f27e5bd96eb2503ac352f4809648e15841083d7f3a68","src/unix/notbsd/linux/mod.rs":"d84e95d36f9477fa1aa694bf18a919ba20e65aa71539c3f3dc06e8f92acee521","src/unix/notbsd/linux/musl/b32/arm.rs":"fdf170e03812072785ec531f1ae810d0c4feb9b29d0c316681b9f7affe1262c0","src/unix/notbsd/linux/musl/b32/mips.rs":"afa4981d93f29b3fb0083a73ce1323f7dce1392f90d5cf1966b1fae10d510033","src/unix/notbsd/linux/musl/b32/mod.rs":"540928f168f145c136f9dd729ffa12b9d1838d9fe664fc642365d17d7fae648f","src/unix/notbsd/linux/musl/b32/powerpc.rs":"16c615770a96f155540511f58b5a8070c9c7a43e12bdfed83996690e7558bcb5","src/unix/notbsd/linux/musl/b32/x86.rs":"3abf1610c68c37f407cdd0f93563c3542c024219e0e8c9888266a6ee014e0c87","src/unix/notbsd/linux/musl/b64/aarch64.rs":"d98643408c2837387988f78adc95c90ad21196a6f8f879e3d33d7e8ccf612640","src/unix/notbsd/linux/musl/b64/mod.rs":"d9285cd705e2e92552a08c9aa69b810e7e1bd0e9da6edf069c678af285579661","src/unix/notbsd/linux/musl/b64/powerpc64.rs":"544d8a7f6d6d84143df8a4c3537c9a3a36bf3d338d7a1c15689b94492498d8d7","src/unix/notbsd/linux/musl/b64/x86_64.rs":"25340999290a63d564ec149532c905f59c312ec369f8806d6b15df66fa1b8857","src/unix/notbsd/linux/musl/mod.rs":"4e582af62a11e8a5235ccbeabe5b1003fc17705e606c1ed9b21b931a470681fc","src/unix/notbsd/linux/other/b32/arm.rs":"d9892f7350b2978335f734f1cd2d7fed60f0f2e66aa05bee3f69549c031f8b14","src/unix/notbsd/linux/other/b32/mod.rs":"26211878c6481861e11393625620edaa0700cac41f55f0118c0f0bd42c1b7520","src/unix/notbsd/linux/other/b32/powerpc.rs":"253fcd2f9978525285be1903cc08f3fec2dc3b12d1660a33e2995b4f6b810d1c","src/unix/notbsd/linux/other/b32/x86.rs":"49376e3ed0f3ff95c230ac20751911fe3c608dfe15c7c118b069fd7a954d8db9","src/unix/notbsd/linux/other/b64/aarch64.rs":"1124ab5e974718b94fa40ae0f1772fb1c537910ef3e018b7c6c94a38b83dd742","src/unix/notbsd/linux/other/b64/mod.rs":"63e1a3fdf5f4d1b9820934ab344c91aed5e458e7e05908535d2e942d51a08bf8","src/unix/notbsd/linux/other/b64/not_x32.rs":"fa8636fb93eab230ed53bdec0a06f5b81d6d982cc0800103563c8c1eefcdb2d9","src/unix/notbsd/linux/other/b64/powerpc64.rs":"a771d982ed8a9458e1f2f039f959b5075b22443159875ba5612eebba96661c24","src/unix/notbsd/linux/other/b64/sparc64.rs":"0caffe5924886f3aed187531dfe78189b3df40adb96782ec4b471647ff83e9b1","src/unix/notbsd/linux/other/b64/x32.rs":"06a26c5120ced30fc015c220799b67c4401be2f13fc6c7361bebd3d37ff4982d","src/unix/notbsd/linux/other/b64/x86_64.rs":"70d0cec088630502128c1c28ffef9dcc0fd9c0644f6a71b1325961d075625226","src/unix/notbsd/linux/other/mod.rs":"fe76beac87fc549b076078a0fa3e2ecd4c13b0e6e4fcb34a89e16c6584f5259b","src/unix/notbsd/linux/s390x.rs":"9e990574dfc22b6eb91bcc7c6f8297f9ad42f9183efb366a818be88180a3fac3","src/unix/notbsd/mod.rs":"a0fdecac118b70fb670f0fcccaa7f826440873448a96dd557fb1fe52cf391e89","src/unix/solaris/mod.rs":"7950a26f3eb0b7bc8e71f524cc2e05832b759fe2ce12a58e0c1957e0ec1286dc","src/unix/uclibc/mips/mips32.rs":"9739c5fb47f389a0394ef08ee30da97a3de0a1300020731a8cc0a033616011b2","src/unix/uclibc/mips/mips64.rs":"230583280bbc7b3c7fcdb61244f51fa1af5944ca127c7cf83c598fe2313713d0","src/unix/uclibc/mips/mod.rs":"2d76e6cfeb2b7f7c59231a6e099f1aed811a45659e62153aaf00c220b9488a9d","src/unix/uclibc/mod.rs":"521818507cef958376edfd8401c35db7ee1c51ee3cf106ad962002104a184cf5","src/unix/uclibc/x86_64/l4re.rs":"68fd3a833fd1f7caf784a084224f384bdbdfb8b5a14ef94c4f5155409afb3439","src/unix/uclibc/x86_64/mod.rs":"419182836aedd426a5c9e6b8667058adf86ac8f43af73ce8d00c503f8ff8f414","src/unix/uclibc/x86_64/other.rs":"f03b47842896f2f3ae6f8ebdcbcf0276454f880349d9cf00e3d304f8136893c5","src/windows/gnu.rs":"4d9033162cc6f7d245256c7b165c1ec18a741771fd9b99a55b421e8d14978599","src/windows/mod.rs":"7d74b12f71de86ee517a9cd93b1b38d0551646db0eaf526048abcbdd4bbeb250","src/windows/msvc.rs":"8f46cf66883c794175609a3b2bafaa094d0ba63eb6720ef1b84b175603f1074f"},"package":"023a4cd09b2ff695f9734c1934145a315594b7986398496841c7031a5a1bbdbd"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/Cargo.toml 2019-01-04 19:47:54.000000000 +0000 @@ -12,18 +12,26 @@ [package] name = "libc" -version = "0.2.43" +version = "0.2.46" authors = ["The Rust Project Developers"] -description = "A library for types and bindings to native C functions often found in libc or\nother common platform libraries.\n" +build = "build.rs" +exclude = ["/ci/*", "/.travis.yml", "/appveyor.yml"] +description = "Raw FFI bindings to platform libraries like libc.\n" homepage = "https://github.com/rust-lang/libc" documentation = "http://doc.rust-lang.org/libc" readme = "README.md" -license = "MIT/Apache-2.0" +keywords = ["libc", "ffi", "bindings", "operating", "system"] +categories = ["external-ffi-bindings", "no-std", "os"] +license = "MIT OR Apache-2.0" repository = "https://github.com/rust-lang/libc" +[dependencies.rustc-std-workspace-core] +version = "1.0.0" +optional = true [features] align = [] default = ["use_std"] +rustc-dep-of-std = ["align", "rustc-std-workspace-core"] use_std = [] [badges.appveyor] project_name = "rust-lang-libs/libc" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/.cargo_vcs_info.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/.cargo_vcs_info.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/.cargo_vcs_info.json 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/.cargo_vcs_info.json 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,5 @@ +{ + "git": { + "sha1": "a9e3cc6c1b529eaffef5b82934d0c47203edebe5" + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/android-install-ndk.sh distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/android-install-ndk.sh --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/android-install-ndk.sh 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/android-install-ndk.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ -#!/bin/sh -# Copyright 2016 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -set -ex - -curl -O https://dl.google.com/android/repository/android-ndk-r15b-linux-x86_64.zip -unzip -q android-ndk-r15b-linux-x86_64.zip - -case "$1" in - aarch64) - arch=arm64 - ;; - - i686) - arch=x86 - ;; - - *) - arch=$1 - ;; -esac; - -android-ndk-r15b/build/tools/make_standalone_toolchain.py \ - --unified-headers \ - --install-dir /android/ndk-$1 \ - --arch $arch \ - --api 24 - -rm -rf ./android-ndk-r15b-linux-x86_64.zip ./android-ndk-r15b diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/android-install-sdk.sh distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/android-install-sdk.sh --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/android-install-sdk.sh 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/android-install-sdk.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,60 +0,0 @@ -#!/bin/sh -# Copyright 2016 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -set -ex - -# Prep the SDK and emulator -# -# Note that the update process requires that we accept a bunch of licenses, and -# we can't just pipe `yes` into it for some reason, so we take the same strategy -# located in https://github.com/appunite/docker by just wrapping it in a script -# which apparently magically accepts the licenses. - -mkdir sdk -curl https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip -O -unzip -d sdk sdk-tools-linux-3859397.zip - -case "$1" in - arm | armv7) - abi=armeabi-v7a - ;; - - aarch64) - abi=arm64-v8a - ;; - - i686) - abi=x86 - ;; - - x86_64) - abi=x86_64 - ;; - - *) - echo "invalid arch: $1" - exit 1 - ;; -esac; - -# --no_https avoids -# javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found -echo "yes" | \ - ./sdk/tools/bin/sdkmanager --no_https \ - "emulator" \ - "platform-tools" \ - "platforms;android-24" \ - "system-images;android-24;default;$abi" - -echo "no" | - ./sdk/tools/bin/avdmanager create avd \ - --name $1 \ - --package "system-images;android-24;default;$abi" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/android-sysimage.sh distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/android-sysimage.sh --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/android-sysimage.sh 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/android-sysimage.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ -# Copyright 2017 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -set -ex - -URL=https://dl.google.com/android/repository/sys-img/android - -main() { - local arch=$1 - local name=$2 - local dest=/system - local td=$(mktemp -d) - - apt-get install --no-install-recommends e2tools - - pushd $td - curl -O $URL/$name - unzip -q $name - - local system=$(find . -name system.img) - mkdir -p $dest/{bin,lib,lib64} - - # Extract android linker and libraries to /system - # This allows android executables to be run directly (or with qemu) - if [ $arch = "x86_64" -o $arch = "arm64" ]; then - e2cp -p $system:/bin/linker64 $dest/bin/ - e2cp -p $system:/lib64/libdl.so $dest/lib64/ - e2cp -p $system:/lib64/libc.so $dest/lib64/ - e2cp -p $system:/lib64/libm.so $dest/lib64/ - else - e2cp -p $system:/bin/linker $dest/bin/ - e2cp -p $system:/lib/libdl.so $dest/lib/ - e2cp -p $system:/lib/libc.so $dest/lib/ - e2cp -p $system:/lib/libm.so $dest/lib/ - fi - - # clean up - apt-get purge --auto-remove -y e2tools - - popd - - rm -rf $td -} - -main "${@}" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/aarch64-linux-android/Dockerfile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/aarch64-linux-android/Dockerfile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/aarch64-linux-android/Dockerfile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/aarch64-linux-android/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ -FROM ubuntu:16.04 - -RUN dpkg --add-architecture i386 && \ - apt-get update && \ - apt-get install -y --no-install-recommends \ - file \ - curl \ - ca-certificates \ - python \ - unzip \ - expect \ - openjdk-9-jre \ - libstdc++6:i386 \ - libpulse0 \ - gcc \ - libc6-dev - -WORKDIR /android/ -COPY android* /android/ - -ENV ANDROID_ARCH=aarch64 -ENV PATH=$PATH:/android/ndk-$ANDROID_ARCH/bin:/android/sdk/tools:/android/sdk/platform-tools - -RUN sh /android/android-install-ndk.sh $ANDROID_ARCH -RUN sh /android/android-install-sdk.sh $ANDROID_ARCH -RUN mv /root/.android /tmp -RUN chmod 777 -R /tmp/.android -RUN chmod 755 /android/sdk/tools/* /android/sdk/emulator/qemu/linux-x86_64/* - -ENV PATH=$PATH:/rust/bin \ - CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=aarch64-linux-android-gcc \ - CARGO_TARGET_AARCH64_LINUX_ANDROID_RUNNER=/tmp/runtest \ - HOME=/tmp - -ADD runtest-android.rs /tmp/runtest.rs -ENTRYPOINT [ \ - "bash", \ - "-c", \ - # set SHELL so android can detect a 64bits system, see - # http://stackoverflow.com/a/41789144 - "SHELL=/bin/dash /android/sdk/emulator/emulator @aarch64 -no-window & \ - rustc /tmp/runtest.rs -o /tmp/runtest && \ - exec \"$@\"", \ - "--" \ -] diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/aarch64-unknown-linux-gnu/Dockerfile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/aarch64-unknown-linux-gnu/Dockerfile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/aarch64-unknown-linux-gnu/Dockerfile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/aarch64-unknown-linux-gnu/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -FROM ubuntu:17.10 -RUN apt-get update && apt-get install -y --no-install-recommends \ - gcc libc6-dev ca-certificates \ - gcc-aarch64-linux-gnu libc6-dev-arm64-cross qemu-user -ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc \ - CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUNNER="qemu-aarch64 -L /usr/aarch64-linux-gnu" \ - PATH=$PATH:/rust/bin diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/aarch64-unknown-linux-musl/Dockerfile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/aarch64-unknown-linux-musl/Dockerfile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/aarch64-unknown-linux-musl/Dockerfile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/aarch64-unknown-linux-musl/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -FROM ubuntu:17.10 - -RUN apt-get update && apt-get install -y --no-install-recommends \ - gcc make libc6-dev git curl ca-certificates \ - gcc-aarch64-linux-gnu qemu-user -RUN curl https://www.musl-libc.org/releases/musl-1.1.19.tar.gz | \ - tar xzf - && \ - cd musl-1.1.19 && \ - CC=aarch64-linux-gnu-gcc \ - ./configure --prefix=/musl-aarch64 --enable-wrapper=yes && \ - make install -j4 && \ - cd .. && \ - rm -rf musl-1.1.19 -# Install linux kernel headers sanitized for use with musl -RUN curl -L https://github.com/sabotage-linux/kernel-headers/archive/v3.12.6-6.tar.gz | \ - tar xzf - && \ - cd kernel-headers-3.12.6-6 && \ - make ARCH=arm64 prefix=/musl-aarch64 install -j4 && \ - cd .. && \ - rm -rf kernel-headers-3.12.6-6 - -# FIXME: shouldn't need the `-lgcc` here, shouldn't that be in libstd? -ENV PATH=$PATH:/musl-aarch64/bin:/rust/bin \ - CC_aarch64_unknown_linux_musl=musl-gcc \ - RUSTFLAGS='-Clink-args=-lgcc' \ - CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER=musl-gcc \ - CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUNNER="qemu-aarch64 -L /musl-aarch64" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/arm-linux-androideabi/Dockerfile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/arm-linux-androideabi/Dockerfile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/arm-linux-androideabi/Dockerfile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/arm-linux-androideabi/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ -FROM ubuntu:16.04 - -RUN dpkg --add-architecture i386 && \ - apt-get update && \ - apt-get install -y --no-install-recommends \ - file \ - curl \ - ca-certificates \ - python \ - unzip \ - expect \ - openjdk-9-jre \ - libstdc++6:i386 \ - libpulse0 \ - gcc \ - libc6-dev - -WORKDIR /android/ -COPY android* /android/ - -ENV ANDROID_ARCH=arm -ENV PATH=$PATH:/android/ndk-$ANDROID_ARCH/bin:/android/sdk/tools:/android/sdk/platform-tools - -RUN sh /android/android-install-ndk.sh $ANDROID_ARCH -RUN sh /android/android-install-sdk.sh $ANDROID_ARCH -RUN mv /root/.android /tmp -RUN chmod 777 -R /tmp/.android -RUN chmod 755 /android/sdk/tools/* /android/sdk/emulator/qemu/linux-x86_64/* - -ENV PATH=$PATH:/rust/bin \ - CARGO_TARGET_ARM_LINUX_ANDROIDEABI_LINKER=arm-linux-androideabi-gcc \ - CARGO_TARGET_ARM_LINUX_ANDROIDEABI_RUNNER=/tmp/runtest \ - HOME=/tmp - -ADD runtest-android.rs /tmp/runtest.rs -ENTRYPOINT [ \ - "bash", \ - "-c", \ - # set SHELL so android can detect a 64bits system, see - # http://stackoverflow.com/a/41789144 - "SHELL=/bin/dash /android/sdk/emulator/emulator @arm -no-window & \ - rustc /tmp/runtest.rs -o /tmp/runtest && \ - exec \"$@\"", \ - "--" \ -] diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -FROM ubuntu:17.10 -RUN apt-get update && apt-get install -y --no-install-recommends \ - gcc libc6-dev ca-certificates \ - gcc-arm-linux-gnueabihf libc6-dev-armhf-cross qemu-user -ENV CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc \ - CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_RUNNER="qemu-arm -L /usr/arm-linux-gnueabihf" \ - PATH=$PATH:/rust/bin diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/arm-unknown-linux-musleabihf/Dockerfile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/arm-unknown-linux-musleabihf/Dockerfile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/arm-unknown-linux-musleabihf/Dockerfile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/arm-unknown-linux-musleabihf/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -FROM ubuntu:17.10 - -RUN apt-get update && apt-get install -y --no-install-recommends \ - gcc make libc6-dev git curl ca-certificates \ - gcc-arm-linux-gnueabihf qemu-user - -RUN curl https://www.musl-libc.org/releases/musl-1.1.19.tar.gz | tar xzf - -WORKDIR /musl-1.1.19 -RUN CC=arm-linux-gnueabihf-gcc \ - CFLAGS="-march=armv6 -marm" \ - ./configure --prefix=/musl-arm --enable-wrapper=yes -RUN make install -j4 - -# Install linux kernel headers sanitized for use with musl -RUN curl -L https://github.com/sabotage-linux/kernel-headers/archive/v3.12.6-6.tar.gz | \ - tar xzf - && \ - cd kernel-headers-3.12.6-6 && \ - make ARCH=arm prefix=/musl-arm install -j4 && \ - cd .. && \ - rm -rf kernel-headers-3.12.6-6 - -ENV PATH=$PATH:/musl-arm/bin:/rust/bin \ - CC_arm_unknown_linux_musleabihf=musl-gcc \ - CARGO_TARGET_ARM_UNKNOWN_LINUX_MUSLEABIHF_LINKER=musl-gcc \ - CARGO_TARGET_ARM_UNKNOWN_LINUX_MUSLEABIHF_RUNNER="qemu-arm -L /musl-arm" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/asmjs-unknown-emscripten/Dockerfile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/asmjs-unknown-emscripten/Dockerfile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/asmjs-unknown-emscripten/Dockerfile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/asmjs-unknown-emscripten/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -FROM ubuntu:16.04 - -RUN apt-get update && \ - apt-get install -y --no-install-recommends \ - ca-certificates \ - curl \ - gcc \ - git \ - libc6-dev \ - python \ - xz-utils - -COPY emscripten.sh / -RUN bash /emscripten.sh - -ENV PATH=$PATH:/rust/bin \ - CARGO_TARGET_ASMJS_UNKNOWN_EMSCRIPTEN_RUNNER=node - -COPY emscripten-entry.sh / -ENTRYPOINT ["/emscripten-entry.sh"] diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/i686-linux-android/Dockerfile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/i686-linux-android/Dockerfile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/i686-linux-android/Dockerfile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/i686-linux-android/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ -FROM ubuntu:16.04 - -RUN dpkg --add-architecture i386 && \ - apt-get update && \ - apt-get install -y --no-install-recommends \ - file \ - curl \ - ca-certificates \ - python \ - unzip \ - expect \ - openjdk-9-jre \ - libstdc++6:i386 \ - libpulse0 \ - gcc \ - libc6-dev - -WORKDIR /android/ -COPY android* /android/ - -ENV ANDROID_ARCH=i686 -ENV PATH=$PATH:/android/ndk-$ANDROID_ARCH/bin:/android/sdk/tools:/android/sdk/platform-tools - -RUN sh /android/android-install-ndk.sh $ANDROID_ARCH -RUN sh /android/android-install-sdk.sh $ANDROID_ARCH -RUN mv /root/.android /tmp -RUN chmod 777 -R /tmp/.android -RUN chmod 755 /android/sdk/tools/* /android/sdk/emulator/qemu/linux-x86_64/* - -ENV PATH=$PATH:/rust/bin \ - CARGO_TARGET_I686_LINUX_ANDROID_LINKER=i686-linux-android-gcc \ - CARGO_TARGET_I686_LINUX_ANDROID_RUNNER=/tmp/runtest \ - HOME=/tmp - -ADD runtest-android.rs /tmp/runtest.rs -ENTRYPOINT [ \ - "bash", \ - "-c", \ - # set SHELL so android can detect a 64bits system, see - # http://stackoverflow.com/a/41789144 - "SHELL=/bin/dash /android/sdk/emulator/emulator @i686 -no-window -no-accel & \ - rustc /tmp/runtest.rs -o /tmp/runtest && \ - exec \"$@\"", \ - "--" \ -] diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/i686-unknown-linux-gnu/Dockerfile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/i686-unknown-linux-gnu/Dockerfile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/i686-unknown-linux-gnu/Dockerfile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/i686-unknown-linux-gnu/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -FROM ubuntu:18.04 -RUN apt-get update -RUN apt-get install -y --no-install-recommends \ - gcc-multilib libc6-dev ca-certificates -ENV PATH=$PATH:/rust/bin diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/i686-unknown-linux-musl/Dockerfile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/i686-unknown-linux-musl/Dockerfile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/i686-unknown-linux-musl/Dockerfile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/i686-unknown-linux-musl/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,31 +0,0 @@ -FROM ubuntu:17.10 - -RUN dpkg --add-architecture i386 -RUN apt-get update -RUN apt-get install -y --no-install-recommends \ - gcc-multilib make libc6-dev git curl ca-certificates libc6:i386 -# Below we're cross-compiling musl for i686 using the system compiler on an -# x86_64 system. This is an awkward thing to be doing and so we have to jump -# through a couple hoops to get musl to be happy. In particular: -# -# * We specifically pass -m32 in CFLAGS and override CC when running ./configure, -# since otherwise the script will fail to find a compiler. -# * We manually unset CROSS_COMPILE when running make; otherwise the makefile -# will call the non-existent binary 'i686-ar'. -RUN curl https://www.musl-libc.org/releases/musl-1.1.19.tar.gz | \ - tar xzf - && \ - cd musl-1.1.19 && \ - CC=gcc CFLAGS=-m32 ./configure --prefix=/musl-i686 --disable-shared --target=i686 && \ - make CROSS_COMPILE= install -j4 && \ - cd .. && \ - rm -rf musl-1.1.19 -# Install linux kernel headers sanitized for use with musl -RUN curl -L https://github.com/sabotage-linux/kernel-headers/archive/v3.12.6-6.tar.gz | \ - tar xzf - && \ - cd kernel-headers-3.12.6-6 && \ - make ARCH=i386 prefix=/musl-i686 install -j4 && \ - cd .. && \ - rm -rf kernel-headers-3.12.6-6 - -ENV PATH=$PATH:/musl-i686/bin:/rust/bin \ - CC_i686_unknown_linux_musl=musl-gcc diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -FROM ubuntu:17.10 - -RUN apt-get update && apt-get install -y --no-install-recommends \ - gcc libc6-dev qemu-user ca-certificates \ - gcc-mips64el-linux-gnuabi64 libc6-dev-mips64el-cross \ - qemu-system-mips64el - -ENV CARGO_TARGET_MIPS64EL_UNKNOWN_LINUX_GNUABI64_LINKER=mips64el-linux-gnuabi64-gcc \ - CARGO_TARGET_MIPS64EL_UNKNOWN_LINUX_GNUABI64_RUNNER="qemu-mips64el -L /usr/mips64el-linux-gnuabi64" \ - CC_mips64el_unknown_linux_gnuabi64=mips64el-linux-gnuabi64-gcc \ - PATH=$PATH:/rust/bin diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -FROM ubuntu:17.10 - -RUN apt-get update && apt-get install -y --no-install-recommends \ - gcc libc6-dev qemu-user ca-certificates \ - gcc-mips64-linux-gnuabi64 libc6-dev-mips64-cross \ - qemu-system-mips64 - -ENV CARGO_TARGET_MIPS64_UNKNOWN_LINUX_GNUABI64_LINKER=mips64-linux-gnuabi64-gcc \ - CARGO_TARGET_MIPS64_UNKNOWN_LINUX_GNUABI64_RUNNER="qemu-mips64 -L /usr/mips64-linux-gnuabi64" \ - CC_mips64_unknown_linux_gnuabi64=mips64-linux-gnuabi64-gcc \ - PATH=$PATH:/rust/bin diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/mipsel-unknown-linux-musl/Dockerfile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/mipsel-unknown-linux-musl/Dockerfile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/mipsel-unknown-linux-musl/Dockerfile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/mipsel-unknown-linux-musl/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,17 +0,0 @@ -FROM ubuntu:17.10 - -RUN apt-get update && apt-get install -y --no-install-recommends \ - gcc libc6-dev qemu-user ca-certificates qemu-system-mips curl \ - bzip2 - -RUN mkdir /toolchain - -# Note that this originally came from: -# https://downloads.openwrt.org/snapshots/trunk/malta/generic/OpenWrt-Toolchain-malta-le_gcc-5.3.0_musl-1.1.15.Linux-x86_64.tar.bz2 -RUN curl -L https://s3-us-west-1.amazonaws.com/rust-lang-ci2/libc/OpenWrt-Toolchain-malta-le_gcc-5.3.0_musl-1.1.15.Linux-x86_64.tar.bz2 | \ - tar xjf - -C /toolchain --strip-components=2 - -ENV PATH=$PATH:/rust/bin:/toolchain/bin \ - CC_mipsel_unknown_linux_musl=mipsel-openwrt-linux-gcc \ - CARGO_TARGET_MIPSEL_UNKNOWN_LINUX_MUSL_LINKER=mipsel-openwrt-linux-gcc \ - CARGO_TARGET_MIPSEL_UNKNOWN_LINUX_MUSL_RUNNER="qemu-mipsel -L /toolchain" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/mips-unknown-linux-gnu/Dockerfile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/mips-unknown-linux-gnu/Dockerfile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/mips-unknown-linux-gnu/Dockerfile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/mips-unknown-linux-gnu/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -FROM ubuntu:17.10 - -RUN apt-get update && apt-get install -y --no-install-recommends \ - gcc libc6-dev qemu-user ca-certificates \ - gcc-mips-linux-gnu libc6-dev-mips-cross \ - qemu-system-mips - -ENV CARGO_TARGET_MIPS_UNKNOWN_LINUX_GNU_LINKER=mips-linux-gnu-gcc \ - CARGO_TARGET_MIPS_UNKNOWN_LINUX_GNU_RUNNER="qemu-mips -L /usr/mips-linux-gnu" \ - PATH=$PATH:/rust/bin diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/mips-unknown-linux-musl/Dockerfile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/mips-unknown-linux-musl/Dockerfile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/mips-unknown-linux-musl/Dockerfile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/mips-unknown-linux-musl/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,17 +0,0 @@ -FROM ubuntu:17.10 - -RUN apt-get update && apt-get install -y --no-install-recommends \ - gcc libc6-dev qemu-user ca-certificates qemu-system-mips curl \ - bzip2 - -RUN mkdir /toolchain - -# Note that this originally came from: -# https://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/OpenWrt-SDK-ar71xx-generic_gcc-5.3.0_musl-1.1.15.Linux-x86_64.tar.bz2 -RUN curl -L https://s3-us-west-1.amazonaws.com/rust-lang-ci2/libc/OpenWrt-SDK-ar71xx-generic_gcc-5.3.0_musl-1.1.15.Linux-x86_64.tar.bz2 | \ - tar xjf - -C /toolchain --strip-components=1 - -ENV PATH=$PATH:/rust/bin:/toolchain/staging_dir/toolchain-mips_34kc_gcc-5.3.0_musl-1.1.15/bin \ - CC_mips_unknown_linux_musl=mips-openwrt-linux-gcc \ - CARGO_TARGET_MIPS_UNKNOWN_LINUX_MUSL_LINKER=mips-openwrt-linux-gcc \ - CARGO_TARGET_MIPS_UNKNOWN_LINUX_MUSL_RUNNER="qemu-mips -L /toolchain/staging_dir/toolchain-mips_34kc_gcc-5.3.0_musl-1.1.15" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -FROM ubuntu:17.10 - -RUN apt-get update && apt-get install -y --no-install-recommends \ - gcc libc6-dev qemu-user ca-certificates \ - gcc-powerpc64le-linux-gnu libc6-dev-ppc64el-cross \ - qemu-system-ppc - -ENV CARGO_TARGET_POWERPC64LE_UNKNOWN_LINUX_GNU_LINKER=powerpc64le-linux-gnu-gcc \ - CARGO_TARGET_POWERPC64LE_UNKNOWN_LINUX_GNU_RUNNER="qemu-ppc64le -L /usr/powerpc64le-linux-gnu" \ - CC=powerpc64le-linux-gnu-gcc \ - PATH=$PATH:/rust/bin diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -FROM ubuntu:17.10 - -RUN apt-get update && apt-get install -y --no-install-recommends \ - gcc libc6-dev qemu-user ca-certificates \ - gcc-powerpc64-linux-gnu libc6-dev-ppc64-cross \ - qemu-system-ppc - -ENV CARGO_TARGET_POWERPC64_UNKNOWN_LINUX_GNU_LINKER=powerpc64-linux-gnu-gcc \ - CARGO_TARGET_POWERPC64_UNKNOWN_LINUX_GNU_RUNNER="qemu-ppc64 -L /usr/powerpc64-linux-gnu" \ - CC=powerpc64-linux-gnu-gcc \ - PATH=$PATH:/rust/bin diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/powerpc-unknown-linux-gnu/Dockerfile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/powerpc-unknown-linux-gnu/Dockerfile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/powerpc-unknown-linux-gnu/Dockerfile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/powerpc-unknown-linux-gnu/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -FROM ubuntu:17.10 - -RUN apt-get update && apt-get install -y --no-install-recommends \ - gcc libc6-dev qemu-user ca-certificates \ - gcc-powerpc-linux-gnu libc6-dev-powerpc-cross \ - qemu-system-ppc - -ENV CARGO_TARGET_POWERPC_UNKNOWN_LINUX_GNU_LINKER=powerpc-linux-gnu-gcc \ - CARGO_TARGET_POWERPC_UNKNOWN_LINUX_GNU_RUNNER="qemu-ppc -L /usr/powerpc-linux-gnu" \ - PATH=$PATH:/rust/bin diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/s390x-unknown-linux-gnu/Dockerfile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/s390x-unknown-linux-gnu/Dockerfile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/s390x-unknown-linux-gnu/Dockerfile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/s390x-unknown-linux-gnu/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -FROM ubuntu:17.10 - -RUN apt-get update && apt-get install -y --no-install-recommends \ - curl ca-certificates \ - gcc libc6-dev \ - gcc-s390x-linux-gnu libc6-dev-s390x-cross \ - qemu-system-s390x \ - cpio - -COPY linux-s390x.sh / -RUN bash /linux-s390x.sh - -COPY test-runner-linux / - -ENV CARGO_TARGET_S390X_UNKNOWN_LINUX_GNU_LINKER=s390x-linux-gnu-gcc \ - CARGO_TARGET_S390X_UNKNOWN_LINUX_GNU_RUNNER="/test-runner-linux s390x" \ - CC_s390x_unknown_linux_gnu=s390x-linux-gnu-gcc \ - PATH=$PATH:/rust/bin diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/sparc64-unknown-linux-gnu/Dockerfile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/sparc64-unknown-linux-gnu/Dockerfile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/sparc64-unknown-linux-gnu/Dockerfile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/sparc64-unknown-linux-gnu/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -FROM debian:stretch - -RUN apt-get update && apt-get install -y --no-install-recommends \ - curl ca-certificates \ - gcc libc6-dev \ - gcc-sparc64-linux-gnu libc6-dev-sparc64-cross \ - qemu-system-sparc64 openbios-sparc seabios ipxe-qemu \ - p7zip-full cpio linux-libc-dev-sparc64-cross linux-headers-4.9.0-3-common - -# Put linux/module.h into the right spot as it is not shipped by debian -RUN cp /usr/src/linux-headers-4.9.0-3-common/include/uapi/linux/module.h /usr/sparc64-linux-gnu/include/linux/ - -COPY linux-sparc64.sh / -RUN bash /linux-sparc64.sh - -COPY test-runner-linux / - -ENV CARGO_TARGET_SPARC64_UNKNOWN_LINUX_GNU_LINKER=sparc64-linux-gnu-gcc \ - CARGO_TARGET_SPARC64_UNKNOWN_LINUX_GNU_RUNNER="/test-runner-linux sparc64" \ - CC_sparc64_unknown_linux_gnu=sparc64-linux-gnu-gcc \ - PATH=$PATH:/rust/bin diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/wasm32-unknown-emscripten/Dockerfile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/wasm32-unknown-emscripten/Dockerfile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/wasm32-unknown-emscripten/Dockerfile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/wasm32-unknown-emscripten/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -FROM ubuntu:16.04 - -RUN apt-get update && \ - apt-get install -y --no-install-recommends \ - ca-certificates \ - curl \ - gcc \ - git \ - libc6-dev \ - python \ - xz-utils - -COPY emscripten.sh / -RUN bash /emscripten.sh - -ENV PATH=$PATH:/rust/bin \ - CARGO_TARGET_WASM32_UNKNOWN_EMSCRIPTEN_RUNNER=node-wrapper.sh - -COPY emscripten-entry.sh / -COPY docker/wasm32-unknown-emscripten/node-wrapper.sh /usr/local/bin/node-wrapper.sh -ENTRYPOINT ["/emscripten-entry.sh"] diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/wasm32-unknown-emscripten/node-wrapper.sh distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/wasm32-unknown-emscripten/node-wrapper.sh --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/wasm32-unknown-emscripten/node-wrapper.sh 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/wasm32-unknown-emscripten/node-wrapper.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -#!/bin/sh - -set -e - -me=$1 -shift -dir=$(dirname $me) -file=$(basename $me) - -if echo $file | grep -q wasm; then - exit 0 # FIXME(rust-lang/cargo#4750) -fi - -cd $dir -exec node $file "$@" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/x86_64-linux-android/Dockerfile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/x86_64-linux-android/Dockerfile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/x86_64-linux-android/Dockerfile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/x86_64-linux-android/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -FROM ubuntu:16.04 - -RUN apt-get update && \ - apt-get install -y --no-install-recommends \ - ca-certificates \ - curl \ - gcc \ - libc-dev \ - python \ - unzip - -WORKDIR /android/ -ENV ANDROID_ARCH=x86_64 -COPY android-install-ndk.sh /android/ -RUN sh /android/android-install-ndk.sh $ANDROID_ARCH - -# We do not run x86_64-linux-android tests on an android emulator. -# See ci/android-sysimage.sh for informations about how tests are run. -COPY android-sysimage.sh /android/ -RUN bash /android/android-sysimage.sh x86_64 x86_64-24_r07.zip - -ENV PATH=$PATH:/rust/bin:/android/ndk-$ANDROID_ARCH/bin \ - CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER=x86_64-linux-android-gcc \ - CC_x86_64_linux_android=x86_64-linux-android-gcc \ - CXX_x86_64_linux_android=x86_64-linux-android-g++ \ - HOME=/tmp diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/x86_64-rumprun-netbsd/Dockerfile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/x86_64-rumprun-netbsd/Dockerfile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/x86_64-rumprun-netbsd/Dockerfile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/x86_64-rumprun-netbsd/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -FROM mato/rumprun-toolchain-hw-x86_64 -USER root -RUN apt-get update -RUN apt-get install -y --no-install-recommends \ - qemu -ENV PATH=$PATH:/rust/bin \ - CARGO_TARGET_X86_64_RUMPRUN_NETBSD_RUNNER=/tmp/runtest - -ADD docker/x86_64-rumprun-netbsd/runtest.rs /tmp/ -ENTRYPOINT ["sh", "-c", "rustc /tmp/runtest.rs -o /tmp/runtest && exec \"$@\"", "--"] diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/x86_64-rumprun-netbsd/runtest.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/x86_64-rumprun-netbsd/runtest.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/x86_64-rumprun-netbsd/runtest.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/x86_64-rumprun-netbsd/runtest.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,54 +0,0 @@ -use std::env; -use std::process::{Command, Stdio}; -use std::sync::mpsc; -use std::thread; -use std::time::Duration; -use std::io::{BufRead, BufReader, Read}; - -fn main() { - assert_eq!(env::args().len(), 2); - - let status = Command::new("rumprun-bake") - .arg("hw_virtio") - .arg("/tmp/libc-test.img") - .arg(env::args().nth(1).unwrap()) - .status() - .expect("failed to run rumprun-bake"); - assert!(status.success()); - - let mut child = Command::new("qemu-system-x86_64") - .arg("-nographic") - .arg("-vga").arg("none") - .arg("-m").arg("64") - .arg("-kernel").arg("/tmp/libc-test.img") - .stdout(Stdio::piped()) - .stderr(Stdio::piped()) - .spawn() - .expect("failed to spawn qemu"); - - let mut stdout = child.stdout.take().unwrap(); - let mut stderr = child.stderr.take().unwrap(); - let (tx, rx) = mpsc::channel(); - let tx2 = tx.clone(); - let t1 = thread::spawn(move || find_ok(&mut stdout, tx)); - let t2 = thread::spawn(move || find_ok(&mut stderr, tx2)); - - let res = rx.recv_timeout(Duration::new(5, 0)); - child.kill().unwrap(); - t1.join().unwrap(); - t2.join().unwrap(); - - if res.is_err() { - panic!("didn't find success"); - } -} - -fn find_ok(input: &mut Read, tx: mpsc::Sender<()>) { - for line in BufReader::new(input).lines() { - let line = line.unwrap(); - println!("{}", line); - if line.starts_with("PASSED ") && line.contains(" tests") { - tx.send(()).unwrap(); - } - } -} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/x86_64-unknown-freebsd/Dockerfile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/x86_64-unknown-freebsd/Dockerfile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/x86_64-unknown-freebsd/Dockerfile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/x86_64-unknown-freebsd/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -FROM wezm/port-prebuilt-freebsd11@sha256:43553e2265ec702ec72a63a765df333f50b1858b896e69385749e96d8624e9b0 - -RUN apt-get update -RUN apt-get install -y --no-install-recommends \ - qemu genext2fs xz-utils -RUN apt-get install -y curl ca-certificates gcc - -ENTRYPOINT ["sh"] - -ENV PATH=$PATH:/rust/bin \ - QEMU=2018-03-15/FreeBSD-11.1-RELEASE-amd64.qcow2.xz \ - CAN_CROSS=1 \ - CARGO_TARGET_X86_64_UNKNOWN_FREEBSD_LINKER=x86_64-unknown-freebsd11-gcc diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/x86_64-unknown-linux-gnu/Dockerfile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/x86_64-unknown-linux-gnu/Dockerfile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/x86_64-unknown-linux-gnu/Dockerfile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/x86_64-unknown-linux-gnu/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -FROM ubuntu:18.04 -RUN apt-get update -RUN apt-get install -y --no-install-recommends \ - gcc libc6-dev ca-certificates -ENV PATH=$PATH:/rust/bin diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/x86_64-unknown-linux-gnux32/Dockerfile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/x86_64-unknown-linux-gnux32/Dockerfile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/x86_64-unknown-linux-gnux32/Dockerfile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/x86_64-unknown-linux-gnux32/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -FROM ubuntu:18.04 -RUN apt-get update -RUN apt-get install -y --no-install-recommends \ - gcc-multilib libc6-dev ca-certificates -ENV PATH=$PATH:/rust/bin diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/x86_64-unknown-linux-musl/Dockerfile distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/x86_64-unknown-linux-musl/Dockerfile --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/docker/x86_64-unknown-linux-musl/Dockerfile 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/docker/x86_64-unknown-linux-musl/Dockerfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -FROM ubuntu:17.10 - -RUN apt-get update -RUN apt-get install -y --no-install-recommends \ - gcc make libc6-dev git curl ca-certificates -RUN curl https://www.musl-libc.org/releases/musl-1.1.19.tar.gz | \ - tar xzf - && \ - cd musl-1.1.19 && \ - ./configure --prefix=/musl-x86_64 && \ - make install -j4 && \ - cd .. && \ - rm -rf musl-1.1.19 -# Install linux kernel headers sanitized for use with musl -RUN curl -L https://github.com/sabotage-linux/kernel-headers/archive/v3.12.6-6.tar.gz | \ - tar xzf - && \ - cd kernel-headers-3.12.6-6 && \ - make ARCH=x86_64 prefix=/musl-x86_64 install -j4 && \ - cd .. && \ - rm -rf kernel-headers-3.12.6-6 -ENV PATH=$PATH:/musl-x86_64/bin:/rust/bin diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/dox.sh distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/dox.sh --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/dox.sh 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/dox.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -#!/bin/sh - -# Builds documentation for all target triples that we have a registered URL for -# in liblibc. This scrapes the list of triples to document from `src/lib.rs` -# which has a bunch of `html_root_url` directives we pick up. - -set -e - -TARGETS=`grep html_root_url src/lib.rs | sed 's/.*".*\/\(.*\)"/\1/'` - -rm -rf target/doc -mkdir -p target/doc - -cp ci/landing-page-head.html target/doc/index.html - -for target in $TARGETS; do - echo documenting $target - - rustdoc -o target/doc/$target --target $target src/lib.rs --cfg cross_platform_docs \ - --crate-name libc - - echo "<li><a href="/libc/$target/libc/index.html">$target</a></li>" \ - >> target/doc/index.html -done - -cat ci/landing-page-footer.html >> target/doc/index.html - -# If we're on travis, not a PR, and on the right branch, publish! -if [ "$TRAVIS_PULL_REQUEST" = "false" ] && [ "$TRAVIS_BRANCH" = "master" ]; then - pip install ghp_import --install-option="--prefix=$HOME/.local" - $HOME/.local/bin/ghp-import -n target/doc - git push -qf https://${GH_TOKEN}@github.com/${TRAVIS_REPO_SLUG}.git gh-pages -fi diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/emscripten-entry.sh distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/emscripten-entry.sh --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/emscripten-entry.sh 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/emscripten-entry.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -#!/usr/bin/env bash -# Copyright 2017 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -set -ex - -source /emsdk-portable/emsdk_env.sh &> /dev/null - -# emsdk-portable provides a node binary, but we need version 8 to run wasm -export PATH="/node-v8.0.0-linux-x64/bin:$PATH" - -exec "$@" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/emscripten.sh distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/emscripten.sh --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/emscripten.sh 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/emscripten.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,54 +0,0 @@ -# Copyright 2017 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -set -ex - -hide_output() { - set +x - on_err=" -echo ERROR: An error was encountered with the build. -cat /tmp/build.log -exit 1 -" - trap "$on_err" ERR - bash -c "while true; do sleep 30; echo \$(date) - building ...; done" & - PING_LOOP_PID=$! - $@ &> /tmp/build.log - trap - ERR - kill $PING_LOOP_PID - rm -f /tmp/build.log - set -x -} - -cd / -curl -L https://s3.amazonaws.com/mozilla-games/emscripten/releases/emsdk-portable.tar.gz | \ - tar -xz - -cd /emsdk-portable -./emsdk update -hide_output ./emsdk install sdk-1.37.20-64bit -./emsdk activate sdk-1.37.20-64bit - -# Compile and cache libc -source ./emsdk_env.sh -echo "main(){}" > a.c -HOME=/emsdk-portable/ emcc a.c -HOME=/emsdk-portable/ emcc -s BINARYEN=1 a.c -rm -f a.* - -# Make emsdk usable by any user -cp /root/.emscripten /emsdk-portable -chmod a+rxw -R /emsdk-portable - -# node 8 is required to run wasm -cd / -curl -L https://nodejs.org/dist/v8.0.0/node-v8.0.0-linux-x64.tar.xz | \ - tar -xJ - diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/ios/deploy_and_run_on_ios_simulator.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/ios/deploy_and_run_on_ios_simulator.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/ios/deploy_and_run_on_ios_simulator.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/ios/deploy_and_run_on_ios_simulator.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,172 +0,0 @@ -// Copyright 2017 The Rust Project Developers. See the COPYRIGHT -// file at the top-level directory of this distribution and at -// http://rust-lang.org/COPYRIGHT. -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -// This is a script to deploy and execute a binary on an iOS simulator. -// The primary use of this is to be able to run unit tests on the simulator and -// retrieve the results. -// -// To do this through Cargo instead, use Dinghy -// (https://github.com/snipsco/dinghy): cargo dinghy install, then cargo dinghy -// test. - -use std::env; -use std::fs::{self, File}; -use std::io::Write; -use std::path::Path; -use std::process; -use std::process::Command; - -macro_rules! t { - ($e:expr) => (match $e { - Ok(e) => e, - Err(e) => panic!("{} failed with: {}", stringify!($e), e), - }) -} - -// Step one: Wrap as an app -fn package_as_simulator_app(crate_name: &str, test_binary_path: &Path) { - println!("Packaging simulator app"); - drop(fs::remove_dir_all("ios_simulator_app")); - t!(fs::create_dir("ios_simulator_app")); - t!(fs::copy(test_binary_path, - Path::new("ios_simulator_app").join(crate_name))); - - let mut f = t!(File::create("ios_simulator_app/Info.plist")); - t!(f.write_all(format!(r#" - <?xml version="1.0" encoding="UTF-8"?> - <!DOCTYPE plist PUBLIC - "-//Apple//DTD PLIST 1.0//EN" - "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> - <plist version="1.0"> - <dict> - <key>CFBundleExecutable</key> - <string>{}</string> - <key>CFBundleIdentifier</key> - <string>com.rust.unittests</string> - </dict> - </plist> - "#, crate_name).as_bytes())); -} - -// Step two: Start the iOS simulator -fn start_simulator() { - println!("Looking for iOS simulator"); - let output = t!(Command::new("xcrun").arg("simctl").arg("list").output()); - assert!(output.status.success()); - let mut simulator_exists = false; - let mut simulator_booted = false; - let mut found_rust_sim = false; - let stdout = t!(String::from_utf8(output.stdout)); - for line in stdout.lines() { - if line.contains("rust_ios") { - if found_rust_sim { - panic!("Duplicate rust_ios simulators found. Please \ - double-check xcrun simctl list."); - } - simulator_exists = true; - simulator_booted = line.contains("(Booted)"); - found_rust_sim = true; - } - } - - if simulator_exists == false { - println!("Creating iOS simulator"); - Command::new("xcrun") - .arg("simctl") - .arg("create") - .arg("rust_ios") - .arg("com.apple.CoreSimulator.SimDeviceType.iPhone-SE") - .arg("com.apple.CoreSimulator.SimRuntime.iOS-10-2") - .check_status(); - } else if simulator_booted == true { - println!("Shutting down already-booted simulator"); - Command::new("xcrun") - .arg("simctl") - .arg("shutdown") - .arg("rust_ios") - .check_status(); - } - - println!("Starting iOS simulator"); - // We can't uninstall the app (if present) as that will hang if the - // simulator isn't completely booted; just erase the simulator instead. - Command::new("xcrun").arg("simctl").arg("erase").arg("rust_ios").check_status(); - Command::new("xcrun").arg("simctl").arg("boot").arg("rust_ios").check_status(); -} - -// Step three: Install the app -fn install_app_to_simulator() { - println!("Installing app to simulator"); - Command::new("xcrun") - .arg("simctl") - .arg("install") - .arg("booted") - .arg("ios_simulator_app/") - .check_status(); -} - -// Step four: Run the app -fn run_app_on_simulator() { - println!("Running app"); - let output = t!(Command::new("xcrun") - .arg("simctl") - .arg("launch") - .arg("--console") - .arg("booted") - .arg("com.rust.unittests") - .output()); - - println!("status: {}", output.status); - println!("stdout --\n{}\n", String::from_utf8_lossy(&output.stdout)); - println!("stderr --\n{}\n", String::from_utf8_lossy(&output.stderr)); - - let stdout = String::from_utf8_lossy(&output.stdout); - let passed = stdout.lines() - .find(|l| l.contains("PASSED")) - .map(|l| l.contains("tests")) - .unwrap_or(false); - - println!("Shutting down simulator"); - Command::new("xcrun") - .arg("simctl") - .arg("shutdown") - .arg("rust_ios") - .check_status(); - if !passed { - panic!("tests didn't pass"); - } -} - -trait CheckStatus { - fn check_status(&mut self); -} - -impl CheckStatus for Command { - fn check_status(&mut self) { - println!("\trunning: {:?}", self); - assert!(t!(self.status()).success()); - } -} - -fn main() { - let args: Vec<String> = env::args().collect(); - if args.len() != 2 { - println!("Usage: {} <executable>", args[0]); - process::exit(-1); - } - - let test_binary_path = Path::new(&args[1]); - let crate_name = test_binary_path.file_name().unwrap(); - - package_as_simulator_app(crate_name.to_str().unwrap(), test_binary_path); - start_simulator(); - install_app_to_simulator(); - run_app_on_simulator(); -} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/landing-page-footer.html distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/landing-page-footer.html --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/landing-page-footer.html 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/landing-page-footer.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - </ul> - </body> -</html> diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/landing-page-head.html distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/landing-page-head.html --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/landing-page-head.html 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/landing-page-head.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="utf-8"> - </head> - <body> - <ul> diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/linux-s390x.sh distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/linux-s390x.sh --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/linux-s390x.sh 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/linux-s390x.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -set -ex - -mkdir -m 777 /qemu -cd /qemu - -curl -LO https://github.com/qemu/qemu/raw/master/pc-bios/s390-ccw.img -curl -LO http://ftp.debian.org/debian/dists/testing/main/installer-s390x/20170828/images/generic/kernel.debian -curl -LO http://ftp.debian.org/debian/dists/testing/main/installer-s390x/20170828/images/generic/initrd.debian - -mv kernel.debian kernel -mv initrd.debian initrd.gz - -mkdir init -cd init -gunzip -c ../initrd.gz | cpio -id -rm ../initrd.gz -cp /usr/s390x-linux-gnu/lib/libgcc_s.so.1 usr/lib/ -chmod a+w . diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/linux-sparc64.sh distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/linux-sparc64.sh --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/linux-sparc64.sh 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/linux-sparc64.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,17 +0,0 @@ -set -ex - -mkdir -m 777 /qemu -cd /qemu - -curl -LO https://cdimage.debian.org/cdimage/ports/9.0/sparc64/iso-cd/debian-9.0-sparc64-NETINST-1.iso -7z e debian-9.0-sparc64-NETINST-1.iso boot/initrd.gz -7z e debian-9.0-sparc64-NETINST-1.iso boot/sparc64 -mv sparc64 kernel -rm debian-9.0-sparc64-NETINST-1.iso - -mkdir init -cd init -gunzip -c ../initrd.gz | cpio -id -rm ../initrd.gz -cp /usr/sparc64-linux-gnu/lib/libgcc_s.so.1 usr/lib/ -chmod a+w . diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/README.md distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/README.md --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/README.md 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/README.md 1970-01-01 00:00:00.000000000 +0000 @@ -1,243 +0,0 @@ -The goal of the libc crate is to have CI running everywhere to have the -strongest guarantees about the definitions that this library contains, and as a -result the CI is pretty complicated and also pretty large! Hopefully this can -serve as a guide through the sea of scripts in this directory and elsewhere in -this project. - -# Files - -First up, let's talk about the files in this directory: - -* `run-travis.sh` - a shell script run by all Travis builders, this is - responsible for setting up the rest of the environment such as installing new - packages, downloading Rust target libraries, etc. - -* `run.sh` - the actual script which runs tests for a particular architecture. - Called from the `run-travis.sh` script this will run all tests for the target - specified. - -* `cargo-config` - Cargo configuration of linkers to use copied into place by - the `run-travis.sh` script before builds are run. - -* `dox.sh` - script called from `run-travis.sh` on only the linux 64-bit nightly - Travis bots to build documentation for this crate. - -* `landing-page-*.html` - used by `dox.sh` to generate a landing page for all - architectures' documentation. - -* `run-qemu.sh` - see discussion about QEMU below - -* `mips`, `rumprun` - instructions to build the docker image for each respective - CI target - -# CI Systems - -Currently this repository leverages a combination of Travis CI and AppVeyor for -running tests. The triples tested are: - -* AppVeyor - * `{i686,x86_64}-pc-windows-{msvc,gnu}` -* Travis - * `{i686,x86_64,mips,aarch64}-unknown-linux-gnu` - * `{x86_64,aarch64}-unknown-linux-musl` - * `arm-unknown-linux-gnueabihf` - * `arm-linux-androideabi` - * `{i686,x86_64}-apple-{darwin,ios}` - * `x86_64-rumprun-netbsd` - * `x86_64-unknown-freebsd` - * `x86_64-unknown-openbsd` - -The Windows triples are all pretty standard, they just set up their environment -then run tests, no need for downloading any extra target libs (we just download -the right installer). The Intel Linux/OSX builds are similar in that we just -download the right target libs and run tests. Note that the Intel Linux/OSX -builds are run on stable/beta/nightly, but are the only ones that do so. - -The remaining architectures look like: - -* Android runs in a [docker image][android-docker] with an emulator, the NDK, - and the SDK already set up. The entire build happens within the docker image. -* The MIPS, ARM, and AArch64 builds all use the QEMU userspace emulator to run - the generated binary to actually verify the tests pass. -* The MUSL build just has to download a MUSL compiler and target libraries and - then otherwise runs tests normally. -* iOS builds need an extra linker flag currently, but beyond that they're built - as standard as everything else. -* The rumprun target builds an entire kernel from the test suite and then runs - it inside QEMU using the serial console to test whether it succeeded or - failed. -* The BSD builds, currently OpenBSD and FreeBSD, use QEMU to boot up a system - and compile/run tests. More information on that below. - -[android-docker]: https://github.com/rust-lang/rust-buildbot/blob/master/slaves/android/Dockerfile - -## QEMU - -Lots of the architectures tested here use QEMU in the tests, so it's worth going -over all the crazy capabilities QEMU has and the various flavors in which we use -it! - -First up, QEMU has userspace emulation where it doesn't boot a full kernel, it -just runs a binary from another architecture (using the `qemu-<arch>` wrappers). -We provide it the runtime path for the dynamically loaded system libraries, -however. This strategy is used for all Linux architectures that aren't intel. -Note that one downside of this QEMU system is that threads are barely -implemented, so we're careful to not spawn many threads. - -For the rumprun target the only output is a kernel image, so we just use that -plus the `rumpbake` command to create a full kernel image which is then run from -within QEMU. - -Finally, the fun part, the BSDs. Quite a few hoops are jumped through to get CI -working for these platforms, but the gist of it looks like: - -* Cross compiling from Linux to any of the BSDs seems to be quite non-standard. - We may be able to get it working but it might be difficult at that point to - ensure that the libc definitions align with what you'd get on the BSD itself. - As a result, we try to do compiles within the BSD distro. -* On Travis we can't run a VM-in-a-VM, so we resort to userspace emulation - (QEMU). -* Unfortunately on Travis we also can't use KVM, so the emulation is super slow. - -With all that in mind, the way BSD is tested looks like: - -1. Download a pre-prepared image for the OS being tested. -2. Generate the tests for the OS being tested. This involves running the `ctest` - library over libc to generate a Rust file and a C file which will then be - compiled into the final test. -3. Generate a disk image which will later be mounted by the OS being tested. - This image is mostly just the libc directory, but some modifications are made - to compile the generated files from step 2. -4. The kernel is booted in QEMU, and it is configured to detect the libc-test - image being available, run the test script, and then shut down afterwards. -5. Look for whether the tests passed in the serial console output of the kernel. - -There's some pretty specific instructions for setting up each image (detailed -below), but the main gist of this is that we must avoid a vanilla `cargo run` -inside of the `libc-test` directory (which is what it's intended for) because -that would compile `syntex_syntax`, a large library, with userspace emulation. -This invariably times out on Travis, so we can't do that. - -Once all those hoops are jumped through, however, we can be happy that we're -testing almost everything! - -Below are some details of how to set up the initial OS images which are -downloaded. Each image must be enabled have input/output over the serial -console, log in automatically at the serial console, detect if a second drive in -QEMU is available, and if so mount it, run a script (it'll specifically be -`run-qemu.sh` in this folder which is copied into the generated image talked -about above), and then shut down. - -### QEMU Setup - FreeBSD - -1. [Download the latest stable amd64-bootonly release ISO](https://www.freebsd.org/where.html). - E.g. FreeBSD-11.1-RELEASE-amd64-bootonly.iso -2. Create the disk image: `qemu-img create -f qcow2 FreeBSD-11.1-RELEASE-amd64.qcow2 2G` -3. Boot the machine: `qemu-system-x86_64 -cdrom FreeBSD-11.1-RELEASE-amd64-bootonly.iso -drive if=virtio,file=FreeBSD-11.1-RELEASE-amd64.qcow2 -net nic,model=virtio -net user` -4. Run the installer, and install FreeBSD: - 1. Install - 1. Continue with default keymap - 1. Set Hostname: freebsd-ci - 1. Distribution Select: - 1. Uncheck lib32 - 1. Uncheck ports - 1. Network Configuration: vtnet0 - 1. Configure IPv4? Yes - 1. DHCP? Yes - 1. Configure IPv6? No - 1. Resolver Configuration: Ok - 1. Mirror Selection: Main Site - 1. Partitioning: Auto (UFS) - 1. Partition: Entire Disk - 1. Partition Scheme: MBR - 1. App Partition: Ok - 1. Partition Editor: Finish - 1. Confirmation: Commit - 1. Wait for sets to install - 1. Set the root password to nothing (press enter twice) - 1. Set time zone to UTC - 1. Set Date: Skip - 1. Set Time: Skip - 1. System Configuration: - 1. Disable sshd - 1. Disable dumpdev - 1. System Hardening - 1. Disable Sendmail service - 1. Add User Accounts: No - 1. Final Configuration: Exit - 1. Manual Configuration: Yes - 1. `echo 'console="comconsole"' >> /boot/loader.conf` - 1. `echo 'autoboot_delay="0"' >> /boot/loader.conf` - 1. `echo 'ext2fs_load="YES"' >> /boot/loader.conf` - 1. Look at `/etc/ttys`, see what getty argument is for `ttyu0` (E.g. `3wire`) - 1. Edit `/etc/gettytab` (with `vi` for example), look for `ttyu0` argument, - prepend `:al=root` to the line beneath to have the machine auto-login as - root. E.g. - - 3wire:\ - :np:nc:sp#0: - becomes: - - 3wire:\ - :al=root:np:nc:sp#0: - - 1. Edit `/root/.login` and put this in it: - - [ -e /dev/vtbd1 ] || exit 0 - mount -t ext2fs /dev/vtbd1 /mnt - sh /mnt/run.sh /mnt - poweroff - - 1. Exit the post install shell: `exit` - 1. Back in in the installer choose Reboot - 1. If all went well the machine should reboot and show a login prompt. - If you switch to the serial console by choosing View > serial0 in - the qemu menu, you should be logged in as root. - 1. Shutdown the machine: `shutdown -p now` - -Helpful links - -* https://en.wikibooks.org/wiki/QEMU/Images -* https://blog.nekoconeko.nl/blog/2015/06/04/creating-an-openstack-freebsd-image.html -* https://www.freebsd.org/doc/handbook/serialconsole-setup.html - - -### QEMU setup - OpenBSD - -1. Download CD installer -2. `qemu-img create -f qcow2 foo.qcow2 2G` -3. `qemu -cdrom foo.iso -drive if=virtio,file=foo.qcow2 -net nic,model=virtio -net user` -4. run installer -5. `echo 'set tty com0' >> /etc/boot.conf` -6. `echo 'boot' >> /etc/boot.conf` -7. Modify /etc/ttys, change the `tty00` at the end from 'unknown off' to - 'vt220 on secure' -8. Modify same line in /etc/ttys to have `"/root/foo.sh"` as the shell -9. Add this script to `/root/foo.sh` - -``` -#!/bin/sh -exec 1>/dev/tty00 -exec 2>&1 - -if mount -t ext2fs /dev/sd1c /mnt; then - sh /mnt/run.sh /mnt - shutdown -ph now -fi - -# limited shell... -exec /bin/sh < /dev/tty00 -``` - -10. `chmod +x /root/foo.sh` - -Helpful links: - -* https://en.wikibooks.org/wiki/QEMU/Images -* http://www.openbsd.org/faq/faq7.html#SerCon - -# Questions? - -Hopefully that's at least somewhat of an introduction to everything going on -here, and feel free to ping @alexcrichton with questions! - diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/run-docker.sh distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/run-docker.sh --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/run-docker.sh 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/run-docker.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,36 +0,0 @@ -# Small script to run tests for a target (or all targets) inside all the -# respective docker images. - -set -ex - -run() { - echo $1 - # use -f so we can use ci/ as build context - docker build -t libc -f ci/docker/$1/Dockerfile ci/ - mkdir -p target - if [ -w /dev/kvm ]; then - kvm="--volume /dev/kvm:/dev/kvm" - fi - docker run \ - --user `id -u`:`id -g` \ - --rm \ - --init \ - --volume $HOME/.cargo:/cargo \ - $kvm \ - --env CARGO_HOME=/cargo \ - --volume `rustc --print sysroot`:/rust:ro \ - --volume `pwd`:/checkout:ro \ - --volume `pwd`/target:/checkout/target \ - --env CARGO_TARGET_DIR=/checkout/target \ - --workdir /checkout \ - libc \ - ci/run.sh $1 -} - -if [ -z "$1" ]; then - for d in `ls ci/docker/`; do - run $d - done -else - run $1 -fi diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/run-qemu.sh distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/run-qemu.sh --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/run-qemu.sh 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/run-qemu.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,32 +0,0 @@ -# Initial script which is run inside of all qemu images. The first argument to -# this script (as arranged by the qemu image itself) is the path to where the -# libc crate is mounted. -# -# For qemu images we currently need to install Rust manually as this wasn't done -# by the initial run-travis.sh script -# -# FIXME: feels like run-travis.sh should be responsible for downloading the -# compiler. - -set -ex - -ROOT=$1 -cp -r $ROOT/libc /tmp/libc -cd /tmp/libc - -TARGET=$(cat $ROOT/TARGET) -export CARGO_TARGET_DIR=/tmp - -case $TARGET in - *-openbsd) - pkg_add cargo gcc%4.9 rust - export CC=egcc - ;; - - *) - echo "Unknown target: $TARGET" - exit 1 - ;; -esac - -exec sh ci/run.sh $TARGET diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/run.sh distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/run.sh --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/run.sh 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/run.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,98 +0,0 @@ -#!/bin/sh - -# Builds and runs tests for a particular target passed as an argument to this -# script. - -set -ex - -TARGET=$1 - -# If we're going to run tests inside of a qemu image, then we don't need any of -# the scripts below. Instead, download the image, prepare a filesystem which has -# the current state of this repository, and then run the image. -# -# It's assume that all images, when run with two disks, will run the `run.sh` -# script from the second which we place inside. -if [ "$QEMU" != "" ]; then - tmpdir=/tmp/qemu-img-creation - mkdir -p $tmpdir - - if [ -z "${QEMU#*.gz}" ]; then - # image is .gz : download and uncompress it - qemufile=$(echo ${QEMU%.gz} | sed 's/\//__/g') - if [ ! -f $tmpdir/$qemufile ]; then - curl https://s3-us-west-1.amazonaws.com/rust-lang-ci2/libc/$QEMU | \ - gunzip -d > $tmpdir/$qemufile - fi - elif [ -z "${QEMU#*.xz}" ]; then - # image is .xz : download and uncompress it - qemufile=$(echo ${QEMU%.xz} | sed 's/\//__/g') - if [ ! -f $tmpdir/$qemufile ]; then - curl https://s3-us-west-1.amazonaws.com/rust-lang-ci2/libc/$QEMU | \ - unxz > $tmpdir/$qemufile - fi - else - # plain qcow2 image: just download it - qemufile=$(echo ${QEMU} | sed 's/\//__/g') - if [ ! -f $tmpdir/$qemufile ]; then - curl https://s3-us-west-1.amazonaws.com/rust-lang-ci2/libc/$QEMU \ - > $tmpdir/$qemufile - fi - fi - - # Create a mount a fresh new filesystem image that we'll later pass to QEMU. - # This will have a `run.sh` script will which use the artifacts inside to run - # on the host. - rm -f $tmpdir/libc-test.img - mkdir $tmpdir/mount - - # Do the standard rigamarole of cross-compiling an executable and then the - # script to run just executes the binary. - cargo build \ - --manifest-path libc-test/Cargo.toml \ - --target $TARGET \ - --test main - rm $CARGO_TARGET_DIR/$TARGET/debug/main-*.d - cp $CARGO_TARGET_DIR/$TARGET/debug/main-* $tmpdir/mount/libc-test - echo 'exec $1/libc-test' > $tmpdir/mount/run.sh - - du -sh $tmpdir/mount - genext2fs \ - --root $tmpdir/mount \ - --size-in-blocks 100000 \ - $tmpdir/libc-test.img - - # Pass -snapshot to prevent tampering with the disk images, this helps when - # running this script in development. The two drives are then passed next, - # first is the OS and second is the one we just made. Next the network is - # configured to work (I'm not entirely sure how), and then finally we turn off - # graphics and redirect the serial console output to out.log. - qemu-system-x86_64 \ - -m 1024 \ - -snapshot \ - -drive if=virtio,file=$tmpdir/$qemufile \ - -drive if=virtio,file=$tmpdir/libc-test.img \ - -net nic,model=virtio \ - -net user \ - -nographic \ - -vga none 2>&1 | tee $CARGO_TARGET_DIR/out.log - exec grep "^PASSED .* tests" $CARGO_TARGET_DIR/out.log -fi - -# FIXME: x86_64-unknown-linux-gnux32 fail to compile without --release -# See https://github.com/rust-lang/rust/issues/45417 -opt= -if [ "$TARGET" = "x86_64-unknown-linux-gnux32" ]; then - opt="--release" -fi - -# Building with --no-default-features is currently broken on rumprun because we -# need cfg(target_vendor), which is currently unstable. -if [ "$TARGET" != "x86_64-rumprun-netbsd" ]; then - cargo test $opt --no-default-features --manifest-path libc-test/Cargo.toml --target $TARGET -fi -# Test the #[repr(align(x))] feature if this is building on Rust >= 1.25 -if [ $(rustc --version | sed -E 's/^rustc 1\.([0-9]*)\..*/\1/') -ge 25 ]; then - cargo test $opt --features align --manifest-path libc-test/Cargo.toml --target $TARGET -fi -exec cargo test $opt --manifest-path libc-test/Cargo.toml --target $TARGET diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/runtest-android.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/runtest-android.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/runtest-android.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/runtest-android.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,41 +0,0 @@ -use std::env; -use std::process::Command; -use std::path::{Path, PathBuf}; - -fn main() { - assert_eq!(env::args_os().len(), 2); - let test = PathBuf::from(env::args_os().nth(1).unwrap()); - let dst = Path::new("/data/local/tmp").join(test.file_name().unwrap()); - - let status = Command::new("adb") - .arg("wait-for-device") - .status() - .expect("failed to run rumprun-bake"); - assert!(status.success()); - - let status = Command::new("adb") - .arg("push") - .arg(&test) - .arg(&dst) - .status() - .expect("failed to run rumprun-bake"); - assert!(status.success()); - - let output = Command::new("adb") - .arg("shell") - .arg(&dst) - .output() - .expect("failed to run rumprun-bake"); - assert!(status.success()); - - println!("status: {}\nstdout ---\n{}\nstderr ---\n{}", - output.status, - String::from_utf8_lossy(&output.stdout), - String::from_utf8_lossy(&output.stderr)); - - let stdout = String::from_utf8_lossy(&output.stdout); - let mut lines = stdout.lines().filter(|l| l.starts_with("PASSED ")); - if !lines.any(|l| l.contains(" tests")) { - panic!("failed to find successful test run"); - } -} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/style.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/style.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/style.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/style.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,206 +0,0 @@ -//! Simple script to verify the coding style of this library -//! -//! ## How to run -//! -//! The first argument to this script is the directory to run on, so running -//! this script should be as simple as: -//! -//! ```notrust -//! rustc ci/style.rs -//! ./style src -//! ``` -//! -//! ## Guidelines -//! -//! The current style is: -//! -//! * No trailing whitespace -//! * No tabs -//! * 80-character lines -//! * `extern` instead of `extern "C"` -//! * Specific module layout: -//! 1. use directives -//! 2. typedefs -//! 3. structs -//! 4. constants -//! 5. f! { ... } functions -//! 6. extern functions -//! 7. modules + pub use -//! -//! Things not verified: -//! -//! * alignment -//! * 4-space tabs -//! * leading colons on paths - -use std::env; -use std::fs; -use std::io::prelude::*; -use std::path::Path; - -macro_rules! t { - ($e:expr) => (match $e { - Ok(e) => e, - Err(e) => panic!("{} failed with {}", stringify!($e), e), - }) -} - -fn main() { - let arg = env::args().skip(1).next().unwrap_or(".".to_string()); - - let mut errors = Errors { errs: false }; - walk(Path::new(&arg), &mut errors); - - if errors.errs { - panic!("found some lint errors"); - } else { - println!("good style!"); - } -} - -fn walk(path: &Path, err: &mut Errors) { - for entry in t!(path.read_dir()).map(|e| t!(e)) { - let path = entry.path(); - if t!(entry.file_type()).is_dir() { - walk(&path, err); - continue - } - - let name = entry.file_name().into_string().unwrap(); - match &name[..] { - n if !n.ends_with(".rs") => continue, - - "dox.rs" | - "lib.rs" | - "macros.rs" => continue, - - _ => {} - } - - let mut contents = String::new(); - t!(t!(fs::File::open(&path)).read_to_string(&mut contents)); - - check_style(&contents, &path, err); - } -} - -struct Errors { - errs: bool, -} - -#[derive(Clone, Copy, PartialEq)] -enum State { - Start, - Imports, - Typedefs, - Structs, - Constants, - FunctionDefinitions, - Functions, - Modules, -} - -fn check_style(file: &str, path: &Path, err: &mut Errors) { - let mut state = State::Start; - let mut s_macros = 0; - let mut f_macros = 0; - let mut prev_blank = false; - - for (i, line) in file.lines().enumerate() { - if line == "" { - if prev_blank { - err.error(path, i, "double blank line"); - } - prev_blank = true; - } else { - prev_blank = false; - } - if line != line.trim_right() { - err.error(path, i, "trailing whitespace"); - } - if line.contains("\t") { - err.error(path, i, "tab character"); - } - if line.len() > 80 { - err.error(path, i, "line longer than 80 chars"); - } - if line.contains("extern \"C\"") { - err.error(path, i, "use `extern` instead of `extern \"C\""); - } - if line.contains("#[cfg(") && !line.contains(" if ") - && !line.contains("target_endian") - { - if state != State::Structs { - err.error(path, i, "use cfg_if! and submodules \ - instead of #[cfg]"); - } - } - - let line = line.trim_left(); - let is_pub = line.starts_with("pub "); - let line = if is_pub {&line[4..]} else {line}; - - let line_state = if line.starts_with("use ") { - if is_pub { - State::Modules - } else { - State::Imports - } - } else if line.starts_with("const ") { - State::Constants - } else if line.starts_with("type ") { - State::Typedefs - } else if line.starts_with("s! {") { - s_macros += 1; - State::Structs - } else if line.starts_with("f! {") { - f_macros += 1; - State::FunctionDefinitions - } else if line.starts_with("extern ") { - State::Functions - } else if line.starts_with("mod ") { - State::Modules - } else { - continue - }; - - if state as usize > line_state as usize { - err.error(path, i, &format!("{} found after {} when \ - it belongs before", - line_state.desc(), state.desc())); - } - - if f_macros == 2 { - f_macros += 1; - err.error(path, i, "multiple f! macros in one module"); - } - if s_macros == 2 { - s_macros += 1; - err.error(path, i, "multiple s! macros in one module"); - } - - state = line_state; - } -} - -impl State { - fn desc(&self) -> &str { - match *self { - State::Start => "start", - State::Imports => "import", - State::Typedefs => "typedef", - State::Structs => "struct", - State::Constants => "constant", - State::FunctionDefinitions => "function definition", - State::Functions => "extern function", - State::Modules => "module", - } - } -} - -impl Errors { - fn error(&mut self, path: &Path, line: usize, msg: &str) { - self.errs = true; - println!("{}:{} - {}", path.display(), line + 1, msg); - } -} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/test-runner-linux distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/test-runner-linux --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/ci/test-runner-linux 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/ci/test-runner-linux 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ -#!/bin/sh - -set -e - -arch=$1 -prog=$2 - -cd /qemu/init -cp -f $2 prog -find . | cpio --create --format='newc' --quiet | gzip > ../initrd.gz -cd .. - -timeout 30s qemu-system-$arch \ - -m 1024 \ - -nographic \ - -kernel kernel \ - -initrd initrd.gz \ - -append init=/prog > output || true - -# remove kernel messages -tr -d '\r' < output | egrep -v '^\[' - -grep PASSED output > /dev/null diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/.cirrus.yml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/.cirrus.yml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/.cirrus.yml 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/.cirrus.yml 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,14 @@ +freebsd_instance: + image: freebsd-11-1-release-amd64 + +task: + # This name gets reported as a build status in GitHub + name: stable x86_64-unknown-freebsd + setup_script: + - pkg install -y curl + - curl https://sh.rustup.rs -sSf --output rustup.sh + - sh rustup.sh -y + test_script: + - . $HOME/.cargo/env + - cd libc-test + - cargo test diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/README.md distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/README.md --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/README.md 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/README.md 2019-01-04 19:47:54.000000000 +0000 @@ -1,16 +1,15 @@ libc ==== -A Rust library with native bindings to the types and functions commonly found on -various systems, including libc. +Raw FFI bindings to platform libraries like `libc`. [![Build Status](https://travis-ci.org/rust-lang/libc.svg?branch=master)](https://travis-ci.org/rust-lang/libc) [![Build status](https://ci.appveyor.com/api/projects/status/github/rust-lang/libc?svg=true)](https://ci.appveyor.com/project/rust-lang-libs/libc) +[![Build Status](https://api.cirrus-ci.com/github/rust-lang/libc.svg)](https://cirrus-ci.com/github/rust-lang/libc) [![Latest version](https://img.shields.io/crates/v/libc.svg)](https://crates.io/crates/libc) [![Documentation](https://docs.rs/libc/badge.svg)](https://docs.rs/libc) ![License](https://img.shields.io/crates/l/libc.svg) - ## Usage First, add the following to your `Cargo.toml`: diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/cloudabi/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/cloudabi/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/cloudabi/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/cloudabi/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -1,3 +1,33 @@ +use dox::Option; + +pub type int8_t = i8; +pub type int16_t = i16; +pub type int32_t = i32; +pub type int64_t = i64; +pub type uint8_t = u8; +pub type uint16_t = u16; +pub type uint32_t = u32; +pub type uint64_t = u64; + +pub type c_schar = i8; +pub type c_uchar = u8; +pub type c_short = i16; +pub type c_ushort = u16; +pub type c_int = i32; +pub type c_uint = u32; +pub type c_float = f32; +pub type c_double = f64; +pub type c_longlong = i64; +pub type c_ulonglong = u64; +pub type intmax_t = i64; +pub type uintmax_t = u64; + +pub type size_t = usize; +pub type ptrdiff_t = isize; +pub type intptr_t = isize; +pub type uintptr_t = usize; +pub type ssize_t = isize; + pub type in_addr_t = u32; pub type in_port_t = u16; pub type pthread_key_t = usize; @@ -56,6 +86,9 @@ } } +pub const INT_MIN: c_int = -2147483648; +pub const INT_MAX: c_int = 2147483647; + pub const _SC_NPROCESSORS_ONLN: ::c_int = 52; pub const _SC_PAGESIZE: ::c_int = 54; @@ -89,7 +122,114 @@ pub const SOCK_DGRAM: ::c_int = 128; pub const SOCK_STREAM: ::c_int = 130; +pub enum FILE {} +pub enum fpos_t {} // TODO: fill this out with a struct + extern { + pub fn isalnum(c: c_int) -> c_int; + pub fn isalpha(c: c_int) -> c_int; + pub fn iscntrl(c: c_int) -> c_int; + pub fn isdigit(c: c_int) -> c_int; + pub fn isgraph(c: c_int) -> c_int; + pub fn islower(c: c_int) -> c_int; + pub fn isprint(c: c_int) -> c_int; + pub fn ispunct(c: c_int) -> c_int; + pub fn isspace(c: c_int) -> c_int; + pub fn isupper(c: c_int) -> c_int; + pub fn isxdigit(c: c_int) -> c_int; + pub fn tolower(c: c_int) -> c_int; + pub fn toupper(c: c_int) -> c_int; + pub fn fopen(filename: *const c_char, mode: *const c_char) -> *mut FILE; + pub fn freopen(filename: *const c_char, mode: *const c_char, + file: *mut FILE) -> *mut FILE; + pub fn fflush(file: *mut FILE) -> c_int; + pub fn fclose(file: *mut FILE) -> c_int; + pub fn remove(filename: *const c_char) -> c_int; + pub fn rename(oldname: *const c_char, newname: *const c_char) -> c_int; + pub fn tmpfile() -> *mut FILE; + pub fn setvbuf(stream: *mut FILE, buffer: *mut c_char, mode: c_int, + size: size_t) -> c_int; + pub fn setbuf(stream: *mut FILE, buf: *mut c_char); + pub fn getchar() -> c_int; + pub fn putchar(c: c_int) -> c_int; + pub fn fgetc(stream: *mut FILE) -> c_int; + pub fn fgets(buf: *mut c_char, n: c_int, stream: *mut FILE) -> *mut c_char; + pub fn fputc(c: c_int, stream: *mut FILE) -> c_int; + pub fn fputs(s: *const c_char, stream: *mut FILE) -> c_int; + pub fn puts(s: *const c_char) -> c_int; + pub fn ungetc(c: c_int, stream: *mut FILE) -> c_int; + pub fn fread(ptr: *mut c_void, size: size_t, nobj: size_t, + stream: *mut FILE) -> size_t; + pub fn fwrite(ptr: *const c_void, size: size_t, nobj: size_t, + stream: *mut FILE) -> size_t; + pub fn fseek(stream: *mut FILE, offset: c_long, whence: c_int) -> c_int; + pub fn ftell(stream: *mut FILE) -> c_long; + pub fn rewind(stream: *mut FILE); + pub fn fgetpos(stream: *mut FILE, ptr: *mut fpos_t) -> c_int; + pub fn fsetpos(stream: *mut FILE, ptr: *const fpos_t) -> c_int; + pub fn feof(stream: *mut FILE) -> c_int; + pub fn ferror(stream: *mut FILE) -> c_int; + pub fn perror(s: *const c_char); + pub fn atoi(s: *const c_char) -> c_int; + pub fn strtod(s: *const c_char, endp: *mut *mut c_char) -> c_double; + pub fn strtol(s: *const c_char, endp: *mut *mut c_char, + base: c_int) -> c_long; + pub fn strtoul(s: *const c_char, endp: *mut *mut c_char, + base: c_int) -> c_ulong; + pub fn calloc(nobj: size_t, size: size_t) -> *mut c_void; + pub fn malloc(size: size_t) -> *mut c_void; + pub fn realloc(p: *mut c_void, size: size_t) -> *mut c_void; + pub fn free(p: *mut c_void); + pub fn abort() -> !; + pub fn exit(status: c_int) -> !; + pub fn _exit(status: c_int) -> !; + pub fn atexit(cb: extern fn()) -> c_int; + pub fn system(s: *const c_char) -> c_int; + pub fn getenv(s: *const c_char) -> *mut c_char; + pub fn getline (lineptr: *mut *mut c_char, n: *mut size_t, + stream: *mut FILE) -> ssize_t; + + pub fn strcpy(dst: *mut c_char, src: *const c_char) -> *mut c_char; + pub fn strncpy(dst: *mut c_char, src: *const c_char, + n: size_t) -> *mut c_char; + pub fn strcat(s: *mut c_char, ct: *const c_char) -> *mut c_char; + pub fn strncat(s: *mut c_char, ct: *const c_char, n: size_t) -> *mut c_char; + pub fn strcmp(cs: *const c_char, ct: *const c_char) -> c_int; + pub fn strncmp(cs: *const c_char, ct: *const c_char, n: size_t) -> c_int; + pub fn strcoll(cs: *const c_char, ct: *const c_char) -> c_int; + pub fn strchr(cs: *const c_char, c: c_int) -> *mut c_char; + pub fn strrchr(cs: *const c_char, c: c_int) -> *mut c_char; + pub fn strspn(cs: *const c_char, ct: *const c_char) -> size_t; + pub fn strcspn(cs: *const c_char, ct: *const c_char) -> size_t; + pub fn strdup(cs: *const c_char) -> *mut c_char; + pub fn strpbrk(cs: *const c_char, ct: *const c_char) -> *mut c_char; + pub fn strstr(cs: *const c_char, ct: *const c_char) -> *mut c_char; + pub fn strcasecmp(s1: *const c_char, s2: *const c_char) -> c_int; + pub fn strncasecmp(s1: *const c_char, s2: *const c_char, + n: size_t) -> c_int; + pub fn strlen(cs: *const c_char) -> size_t; + pub fn strnlen(cs: *const c_char, maxlen: size_t) -> size_t; + pub fn strerror(n: c_int) -> *mut c_char; + pub fn strtok(s: *mut c_char, t: *const c_char) -> *mut c_char; + pub fn strxfrm(s: *mut c_char, ct: *const c_char, n: size_t) -> size_t; + pub fn wcslen(buf: *const wchar_t) -> size_t; + pub fn wcstombs(dest: *mut c_char, src: *const wchar_t, + n: size_t) -> ::size_t; + + pub fn memchr(cx: *const c_void, c: c_int, n: size_t) -> *mut c_void; + pub fn memcmp(cx: *const c_void, ct: *const c_void, n: size_t) -> c_int; + pub fn memcpy(dest: *mut c_void, src: *const c_void, + n: size_t) -> *mut c_void; + pub fn memmove(dest: *mut c_void, src: *const c_void, + n: size_t) -> *mut c_void; + pub fn memset(dest: *mut c_void, c: c_int, n: size_t) -> *mut c_void; + + pub fn abs(i: c_int) -> c_int; + pub fn atof(s: *const c_char) -> c_double; + pub fn labs(i: c_long) -> c_long; + pub fn rand() -> c_int; + pub fn srand(seed: c_uint); + pub fn arc4random_buf(buf: *const ::c_void, len: ::size_t); pub fn freeaddrinfo(res: *mut addrinfo); pub fn gai_strerror(errcode: ::c_int) -> *const ::c_char; @@ -164,3 +304,21 @@ // Unknown target_arch } } + +cfg_if! { + if #[cfg(core_cvoid)] { + pub use core::ffi::c_void; + } else { + // Use repr(u8) as LLVM expects `void*` to be the same as `i8*` to help + // enable more optimization opportunities around it recognizing things + // like malloc/free. + #[repr(u8)] + pub enum c_void { + // Two dummy variants so the #[repr] attribute can be used. + #[doc(hidden)] + __variant1, + #[doc(hidden)] + __variant2, + } + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/dox.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/dox.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/dox.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/dox.rs 2019-01-04 19:47:54.000000000 +0000 @@ -2,10 +2,10 @@ #[cfg(not(cross_platform_docs))] mod imp { - pub use core::option::Option; pub use core::clone::Clone; pub use core::marker::Copy; pub use core::mem; + pub use core::option::Option; } #[cfg(cross_platform_docs)] @@ -16,17 +16,23 @@ } impl<T: Copy> Copy for Option<T> {} impl<T: Clone> Clone for Option<T> { - fn clone(&self) -> Option<T> { loop {} } + fn clone(&self) -> Option<T> { + loop {} + } } impl<T> Copy for *mut T {} impl<T> Clone for *mut T { - fn clone(&self) -> *mut T { loop {} } + fn clone(&self) -> *mut T { + loop {} + } } impl<T> Copy for *const T {} impl<T> Clone for *const T { - fn clone(&self) -> *const T { loop {} } + fn clone(&self) -> *const T { + loop {} + } } pub trait Clone { @@ -46,53 +52,58 @@ #[lang = "sized"] pub trait Sized {} + #[lang = "receiver"] + pub trait Receiver {} + impl<T: ?Sized> Receiver for &T {} + impl<T: ?Sized> Receiver for &mut T {} + macro_rules! each_int { - ($mac:ident) => ( + ($mac:ident) => { $mac!(u8); $mac!(u16); $mac!(u32); $mac!(u64); $mac!(usize); each_signed_int!($mac); - ) + }; } macro_rules! each_signed_int { - ($mac:ident) => ( + ($mac:ident) => { $mac!(i8); $mac!(i16); $mac!(i32); $mac!(i64); $mac!(isize); - ) + }; } #[lang = "div"] - pub trait Div<RHS=Self> { + pub trait Div<RHS = Self> { type Output; fn div(self, rhs: RHS) -> Self::Output; } #[lang = "shl"] - pub trait Shl<RHS=Self> { + pub trait Shl<RHS = Self> { type Output; fn shl(self, rhs: RHS) -> Self::Output; } #[lang = "mul"] - pub trait Mul<RHS=Self> { + pub trait Mul<RHS = Self> { type Output; fn mul(self, rhs: RHS) -> Self::Output; } #[lang = "sub"] - pub trait Sub<RHS=Self> { + pub trait Sub<RHS = Self> { type Output; fn sub(self, rhs: RHS) -> Self::Output; } #[lang = "bitand"] - pub trait BitAnd<RHS=Self> { + pub trait BitAnd<RHS = Self> { type Output; fn bitand(self, rhs: RHS) -> Self::Output; } @@ -103,7 +114,7 @@ } #[lang = "bitor"] - pub trait BitOr<RHS=Self> { + pub trait BitOr<RHS = Self> { type Output; fn bitor(self, rhs: RHS) -> Self::Output; } @@ -114,7 +125,7 @@ } #[lang = "bitxor"] - pub trait BitXor<RHS=Self> { + pub trait BitXor<RHS = Self> { type Output; fn bitxor(self, rhs: RHS) -> Self::Output; } @@ -203,7 +214,11 @@ each_int!(impl_traits); pub mod mem { - pub fn size_of_val<T>(_: &T) -> usize { 4 } - pub const fn size_of<T>() -> usize { 4 } + pub fn size_of_val<T>(_: &T) -> usize { + 4 + } + pub const fn size_of<T>() -> usize { + 4 + } } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/fuchsia/aarch64.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/fuchsia/aarch64.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/fuchsia/aarch64.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/fuchsia/aarch64.rs 2019-01-04 19:47:54.000000000 +0000 @@ -1,8 +1,8 @@ pub type c_char = u8; pub type __u64 = ::c_ulonglong; pub type wchar_t = u32; -pub type nlink_t = u32; -pub type blksize_t = ::c_int; +pub type nlink_t = ::c_ulong; +pub type blksize_t = ::c_long; s! { pub struct stat { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/fuchsia/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/fuchsia/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/fuchsia/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/fuchsia/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -7,6 +7,34 @@ // PUB_TYPE +pub type int8_t = i8; +pub type int16_t = i16; +pub type int32_t = i32; +pub type int64_t = i64; +pub type uint8_t = u8; +pub type uint16_t = u16; +pub type uint32_t = u32; +pub type uint64_t = u64; + +pub type c_schar = i8; +pub type c_uchar = u8; +pub type c_short = i16; +pub type c_ushort = u16; +pub type c_int = i32; +pub type c_uint = u32; +pub type c_float = f32; +pub type c_double = f64; +pub type c_longlong = i64; +pub type c_ulonglong = u64; +pub type intmax_t = i64; +pub type uintmax_t = u64; + +pub type size_t = usize; +pub type ptrdiff_t = isize; +pub type intptr_t = isize; +pub type uintptr_t = usize; +pub type ssize_t = isize; + pub type pid_t = i32; pub type uid_t = u32; pub type gid_t = u32; @@ -97,16 +125,13 @@ pub tv_usec: suseconds_t, } - // linux x32 compatibility - // See https://sourceware.org/bugzilla/show_bug.cgi?id=16437 pub struct timespec { pub tv_sec: time_t, - #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - pub tv_nsec: i64, - #[cfg(not(all(target_arch = "x86_64", target_pointer_width = "32")))] pub tv_nsec: ::c_long, } + // FIXME: the rlimit and rusage related functions and types don't exist + // within zircon. Are there reasons for keeping them around? pub struct rlimit { pub rlim_cur: rlim_t, pub rlim_max: rlim_t, @@ -166,11 +191,8 @@ pub s_addr: in_addr_t, } - #[cfg_attr(feature = "align", repr(align(4)))] pub struct in6_addr { pub s6_addr: [u8; 16], - #[cfg(not(feature = "align"))] - __align: [u32; 0], } pub struct ip_mreq { @@ -180,9 +202,6 @@ pub struct ipv6_mreq { pub ipv6mr_multiaddr: in6_addr, - #[cfg(target_os = "android")] - pub ipv6mr_interface: ::c_int, - #[cfg(not(target_os = "android"))] pub ipv6mr_interface: ::c_uint, } @@ -400,13 +419,9 @@ pub struct sched_param { pub sched_priority: ::c_int, - #[cfg(target_env = "musl")] pub sched_ss_low_priority: ::c_int, - #[cfg(target_env = "musl")] pub sched_ss_repl_period: ::timespec, - #[cfg(target_env = "musl")] pub sched_ss_init_budget: ::timespec, - #[cfg(target_env = "musl")] pub sched_ss_max_repl: ::c_int, } @@ -417,11 +432,6 @@ pub dli_saddr: *mut ::c_void, } - #[cfg_attr(any(all(target_arch = "x86", - not(target_env = "musl"), - not(target_os = "android")), - target_arch = "x86_64"), - repr(packed))] pub struct epoll_event { pub events: ::uint32_t, pub u64: ::uint64_t, @@ -467,13 +477,9 @@ pub sigev_value: ::sigval, pub sigev_signo: ::c_int, pub sigev_notify: ::c_int, - // Actually a union. We only expose sigev_notify_thread_id because it's - // the most useful member - pub sigev_notify_thread_id: ::c_int, - #[cfg(target_pointer_width = "64")] - __unused1: [::c_int; 11], - #[cfg(target_pointer_width = "32")] - __unused1: [::c_int; 12] + pub sigev_notify_function: fn(::sigval), + pub sigev_notify_attributes: *mut pthread_attr_t, + pub __pad: [::c_char; 56 - 3 * 8 /* 8 == sizeof(long) */], } pub struct dirent { @@ -522,30 +528,22 @@ #[cfg_attr(all(feature = "align", target_pointer_width = "32", - any(target_arch = "mips", - target_arch = "arm", - target_arch = "powerpc", + any(target_arch = "arm", target_arch = "x86_64")), repr(align(4)))] #[cfg_attr(all(feature = "align", any(target_pointer_width = "64", - not(any(target_arch = "mips", - target_arch = "arm", - target_arch = "powerpc", + not(any(target_arch = "arm", target_arch = "x86_64")))), repr(align(8)))] pub struct pthread_mutex_t { #[cfg(all(not(feature = "align"), - any(target_arch = "mips", - target_arch = "arm", - target_arch = "powerpc", + any(target_arch = "arm", all(target_arch = "x86_64", target_pointer_width = "32"))))] __align: [::c_long; 0], #[cfg(not(any(feature = "align", - target_arch = "mips", target_arch = "arm", - target_arch = "powerpc", all(target_arch = "x86_64", target_pointer_width = "32"))))] __align: [::c_longlong; 0], @@ -554,30 +552,22 @@ #[cfg_attr(all(feature = "align", target_pointer_width = "32", - any(target_arch = "mips", - target_arch = "arm", - target_arch = "powerpc", + any(target_arch = "arm", target_arch = "x86_64")), repr(align(4)))] #[cfg_attr(all(feature = "align", any(target_pointer_width = "64", - not(any(target_arch = "mips", - target_arch = "arm", - target_arch = "powerpc", + not(any(target_arch = "arm", target_arch = "x86_64")))), repr(align(8)))] pub struct pthread_rwlock_t { #[cfg(all(not(feature = "align"), - any(target_arch = "mips", - target_arch = "arm", - target_arch = "powerpc", + any(target_arch = "arm", all(target_arch = "x86_64", target_pointer_width = "32"))))] __align: [::c_long; 0], #[cfg(not(any(feature = "align", - target_arch = "mips", target_arch = "arm", - target_arch = "powerpc", all(target_arch = "x86_64", target_pointer_width = "32"))))] __align: [::c_longlong; 0], @@ -586,29 +576,21 @@ #[cfg_attr(all(feature = "align", any(target_pointer_width = "32", - target_arch = "x86_64", target_arch = "powerpc64", - target_arch = "mips64", target_arch = "s390x", - target_arch = "sparc64", + target_arch = "x86_64", all(target_arch = "aarch64", target_env = "musl"))), repr(align(4)))] #[cfg_attr(all(feature = "align", not(any(target_pointer_width = "32", - target_arch = "x86_64", target_arch = "powerpc64", - target_arch = "mips64", target_arch = "s390x", - target_arch = "sparc64", + target_arch = "x86_64", all(target_arch = "aarch64", target_env = "musl")))), repr(align(8)))] pub struct pthread_mutexattr_t { #[cfg(all(not(features = "align"), - any(target_arch = "x86_64", target_arch = "powerpc64", - target_arch = "mips64", target_arch = "s390x", - target_arch = "sparc64", + any(target_arch = "x86_64", all(target_arch = "aarch64", target_env = "musl"))))] __align: [::c_int; 0], #[cfg(all(not(features = "align"), - not(any(target_arch = "x86_64", target_arch = "powerpc64", - target_arch = "mips64", target_arch = "s390x", - target_arch = "sparc64", + not(any(target_arch = "x86_64", all(target_arch = "aarch64", target_env = "musl")))))] __align: [::c_long; 0], size: [u8; __SIZEOF_PTHREAD_MUTEXATTR_T], @@ -731,7 +713,12 @@ pub ssi_utime: ::uint64_t, pub ssi_stime: ::uint64_t, pub ssi_addr: ::uint64_t, - _pad: [::uint8_t; 48], + pub ssi_addr_lsb: ::uint16_t, + _pad2: ::uint16_t, + pub ssi_syscall: ::int32_t, + pub ssi_call_addr: ::uint64_t, + pub ssi_arch: ::uint32_t, + _pad: [::uint8_t; 28], } pub struct itimerspec { @@ -1090,6 +1077,9 @@ // PUB_CONST +pub const INT_MIN: c_int = -2147483648; +pub const INT_MAX: c_int = 2147483647; + pub const SIG_DFL: sighandler_t = 0 as sighandler_t; pub const SIG_IGN: sighandler_t = 1 as sighandler_t; pub const SIG_ERR: sighandler_t = !0 as sighandler_t; @@ -3052,7 +3042,110 @@ #[link(name = "fdio")] extern {} +pub enum FILE {} +pub enum fpos_t {} // TODO: fill this out with a struct + extern { + pub fn isalnum(c: c_int) -> c_int; + pub fn isalpha(c: c_int) -> c_int; + pub fn iscntrl(c: c_int) -> c_int; + pub fn isdigit(c: c_int) -> c_int; + pub fn isgraph(c: c_int) -> c_int; + pub fn islower(c: c_int) -> c_int; + pub fn isprint(c: c_int) -> c_int; + pub fn ispunct(c: c_int) -> c_int; + pub fn isspace(c: c_int) -> c_int; + pub fn isupper(c: c_int) -> c_int; + pub fn isxdigit(c: c_int) -> c_int; + pub fn tolower(c: c_int) -> c_int; + pub fn toupper(c: c_int) -> c_int; + pub fn fopen(filename: *const c_char, mode: *const c_char) -> *mut FILE; + pub fn freopen(filename: *const c_char, mode: *const c_char, + file: *mut FILE) -> *mut FILE; + pub fn fflush(file: *mut FILE) -> c_int; + pub fn fclose(file: *mut FILE) -> c_int; + pub fn remove(filename: *const c_char) -> c_int; + pub fn rename(oldname: *const c_char, newname: *const c_char) -> c_int; + pub fn tmpfile() -> *mut FILE; + pub fn setvbuf(stream: *mut FILE, buffer: *mut c_char, mode: c_int, + size: size_t) -> c_int; + pub fn setbuf(stream: *mut FILE, buf: *mut c_char); + pub fn getchar() -> c_int; + pub fn putchar(c: c_int) -> c_int; + pub fn fgetc(stream: *mut FILE) -> c_int; + pub fn fgets(buf: *mut c_char, n: c_int, stream: *mut FILE) -> *mut c_char; + pub fn fputc(c: c_int, stream: *mut FILE) -> c_int; + pub fn fputs(s: *const c_char, stream: *mut FILE) -> c_int; + pub fn puts(s: *const c_char) -> c_int; + pub fn ungetc(c: c_int, stream: *mut FILE) -> c_int; + pub fn fread(ptr: *mut c_void, size: size_t, nobj: size_t, + stream: *mut FILE) -> size_t; + pub fn fwrite(ptr: *const c_void, size: size_t, nobj: size_t, + stream: *mut FILE) -> size_t; + pub fn fseek(stream: *mut FILE, offset: c_long, whence: c_int) -> c_int; + pub fn ftell(stream: *mut FILE) -> c_long; + pub fn rewind(stream: *mut FILE); + pub fn fgetpos(stream: *mut FILE, ptr: *mut fpos_t) -> c_int; + pub fn fsetpos(stream: *mut FILE, ptr: *const fpos_t) -> c_int; + pub fn feof(stream: *mut FILE) -> c_int; + pub fn ferror(stream: *mut FILE) -> c_int; + pub fn perror(s: *const c_char); + pub fn atoi(s: *const c_char) -> c_int; + pub fn strtod(s: *const c_char, endp: *mut *mut c_char) -> c_double; + pub fn strtol(s: *const c_char, endp: *mut *mut c_char, + base: c_int) -> c_long; + pub fn strtoul(s: *const c_char, endp: *mut *mut c_char, + base: c_int) -> c_ulong; + pub fn calloc(nobj: size_t, size: size_t) -> *mut c_void; + pub fn malloc(size: size_t) -> *mut c_void; + pub fn realloc(p: *mut c_void, size: size_t) -> *mut c_void; + pub fn free(p: *mut c_void); + pub fn abort() -> !; + pub fn exit(status: c_int) -> !; + pub fn _exit(status: c_int) -> !; + pub fn atexit(cb: extern fn()) -> c_int; + pub fn system(s: *const c_char) -> c_int; + pub fn getenv(s: *const c_char) -> *mut c_char; + + pub fn strcpy(dst: *mut c_char, src: *const c_char) -> *mut c_char; + pub fn strncpy(dst: *mut c_char, src: *const c_char, + n: size_t) -> *mut c_char; + pub fn strcat(s: *mut c_char, ct: *const c_char) -> *mut c_char; + pub fn strncat(s: *mut c_char, ct: *const c_char, + n: size_t) -> *mut c_char; + pub fn strcmp(cs: *const c_char, ct: *const c_char) -> c_int; + pub fn strncmp(cs: *const c_char, ct: *const c_char, n: size_t) -> c_int; + pub fn strcoll(cs: *const c_char, ct: *const c_char) -> c_int; + pub fn strchr(cs: *const c_char, c: c_int) -> *mut c_char; + pub fn strrchr(cs: *const c_char, c: c_int) -> *mut c_char; + pub fn strspn(cs: *const c_char, ct: *const c_char) -> size_t; + pub fn strcspn(cs: *const c_char, ct: *const c_char) -> size_t; + pub fn strdup(cs: *const c_char) -> *mut c_char; + pub fn strpbrk(cs: *const c_char, ct: *const c_char) -> *mut c_char; + pub fn strstr(cs: *const c_char, ct: *const c_char) -> *mut c_char; + pub fn strlen(cs: *const c_char) -> size_t; + pub fn strnlen(cs: *const c_char, maxlen: size_t) -> size_t; + pub fn strerror(n: c_int) -> *mut c_char; + pub fn strtok(s: *mut c_char, t: *const c_char) -> *mut c_char; + pub fn strxfrm(s: *mut c_char, ct: *const c_char, n: size_t) -> size_t; + pub fn wcslen(buf: *const wchar_t) -> size_t; + pub fn wcstombs(dest: *mut c_char, src: *const wchar_t, + n: size_t) -> ::size_t; + + pub fn memchr(cx: *const c_void, c: c_int, n: size_t) -> *mut c_void; + pub fn memcmp(cx: *const c_void, ct: *const c_void, n: size_t) -> c_int; + pub fn memcpy(dest: *mut c_void, src: *const c_void, + n: size_t) -> *mut c_void; + pub fn memmove(dest: *mut c_void, src: *const c_void, + n: size_t) -> *mut c_void; + pub fn memset(dest: *mut c_void, c: c_int, n: size_t) -> *mut c_void; + + pub fn abs(i: c_int) -> c_int; + pub fn atof(s: *const c_char) -> c_double; + pub fn labs(i: c_long) -> c_long; + pub fn rand() -> c_int; + pub fn srand(seed: c_uint); + pub fn getpwnam(name: *const ::c_char) -> *mut passwd; pub fn getpwuid(uid: ::uid_t) -> *mut passwd; @@ -3192,6 +3285,7 @@ -> ::ssize_t; pub fn rmdir(path: *const c_char) -> ::c_int; pub fn seteuid(uid: uid_t) -> ::c_int; + pub fn setegid(gid: gid_t) -> ::c_int; pub fn setgid(gid: gid_t) -> ::c_int; pub fn setpgid(pid: pid_t, pgid: pid_t) -> ::c_int; pub fn setsid() -> pid_t; @@ -3987,9 +4081,6 @@ if #[cfg(target_arch = "aarch64")] { mod aarch64; pub use self::aarch64::*; - } else if #[cfg(any(target_arch = "powerpc64"))] { - mod powerpc64; - pub use self::powerpc64::*; } else if #[cfg(any(target_arch = "x86_64"))] { mod x86_64; pub use self::x86_64::*; @@ -3997,3 +4088,21 @@ // Unknown target_arch } } + +cfg_if! { + if #[cfg(core_cvoid)] { + pub use core::ffi::c_void; + } else { + // Use repr(u8) as LLVM expects `void*` to be the same as `i8*` to help + // enable more optimization opportunities around it recognizing things + // like malloc/free. + #[repr(u8)] + pub enum c_void { + // Two dummy variants so the #[repr] attribute can be used. + #[doc(hidden)] + __variant1, + #[doc(hidden)] + __variant2, + } + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/fuchsia/powerpc64.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/fuchsia/powerpc64.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/fuchsia/powerpc64.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/fuchsia/powerpc64.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,79 +0,0 @@ -pub type c_char = u8; -pub type wchar_t = i32; -pub type __u64 = ::c_ulong; -pub type nlink_t = u64; -pub type blksize_t = ::c_long; - -s! { - pub struct stat { - pub st_dev: ::dev_t, - pub st_ino: ::ino_t, - pub st_nlink: ::nlink_t, - pub st_mode: ::mode_t, - pub st_uid: ::uid_t, - pub st_gid: ::gid_t, - __pad0: ::c_int, - pub st_rdev: ::dev_t, - pub st_size: ::off_t, - pub st_blksize: ::blksize_t, - pub st_blocks: ::blkcnt_t, - pub st_atime: ::time_t, - pub st_atime_nsec: ::c_long, - pub st_mtime: ::time_t, - pub st_mtime_nsec: ::c_long, - pub st_ctime: ::time_t, - pub st_ctime_nsec: ::c_long, - __unused: [::c_long; 3], - } - - pub struct stat64 { - pub st_dev: ::dev_t, - pub st_ino: ::ino64_t, - pub st_nlink: ::nlink_t, - pub st_mode: ::mode_t, - pub st_uid: ::uid_t, - pub st_gid: ::gid_t, - __pad0: ::c_int, - pub st_rdev: ::dev_t, - pub st_size: ::off_t, - pub st_blksize: ::blksize_t, - pub st_blocks: ::blkcnt64_t, - pub st_atime: ::time_t, - pub st_atime_nsec: ::c_long, - pub st_mtime: ::time_t, - pub st_mtime_nsec: ::c_long, - pub st_ctime: ::time_t, - pub st_ctime_nsec: ::c_long, - __reserved: [::c_long; 3], - } - - pub struct ipc_perm { - pub __ipc_perm_key: ::key_t, - pub uid: ::uid_t, - pub gid: ::gid_t, - pub cuid: ::uid_t, - pub cgid: ::gid_t, - pub mode: ::mode_t, - pub __seq: ::c_int, - __unused1: ::c_long, - __unused2: ::c_long - } -} - -pub const SYS_pivot_root: ::c_long = 203; -pub const SYS_gettid: ::c_long = 207; -pub const SYS_perf_event_open: ::c_long = 319; -pub const SYS_memfd_create: ::c_long = 360; - -pub const MAP_32BIT: ::c_int = 0x0040; - -pub const SIGSTKSZ: ::size_t = 8192; -pub const MINSIGSTKSZ: ::size_t = 2048; - -#[doc(hidden)] -pub const AF_MAX: ::c_int = 42; -#[doc(hidden)] -pub const PF_MAX: ::c_int = AF_MAX; - -// Syscall table -pub const SYS_renameat2: ::c_long = 357; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/lib.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/lib.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/lib.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/lib.rs 2019-01-04 19:47:54.000000000 +0000 @@ -15,273 +15,164 @@ #![crate_name = "libc"] #![cfg_attr(cross_platform_docs, feature(no_core, lang_items, const_fn))] #![cfg_attr(cross_platform_docs, no_core)] -#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png", - html_favicon_url = "https://doc.rust-lang.org/favicon.ico")] - -#![cfg_attr(all(target_os = "linux", target_arch = "x86_64"), doc( - html_root_url = "https://rust-lang.github.io/libc/x86_64-unknown-linux-gnu" -))] -#![cfg_attr(all(target_os = "linux", target_arch = "x86"), doc( - html_root_url = "https://rust-lang.github.io/libc/i686-unknown-linux-gnu" -))] -#![cfg_attr(all(target_os = "linux", target_arch = "arm"), doc( - html_root_url = "https://rust-lang.github.io/libc/arm-unknown-linux-gnueabihf" -))] -#![cfg_attr(all(target_os = "linux", target_arch = "mips"), doc( - html_root_url = "https://rust-lang.github.io/libc/mips-unknown-linux-gnu" -))] -#![cfg_attr(all(target_os = "linux", target_arch = "aarch64"), doc( - html_root_url = "https://rust-lang.github.io/libc/aarch64-unknown-linux-gnu" -))] -#![cfg_attr(all(target_os = "linux", target_env = "musl"), doc( - html_root_url = "https://rust-lang.github.io/libc/x86_64-unknown-linux-musl" -))] -#![cfg_attr(all(target_os = "macos", target_arch = "x86_64"), doc( - html_root_url = "https://rust-lang.github.io/libc/x86_64-apple-darwin" -))] -#![cfg_attr(all(target_os = "macos", target_arch = "x86"), doc( - html_root_url = "https://rust-lang.github.io/libc/i686-apple-darwin" -))] -#![cfg_attr(all(windows, target_arch = "x86_64", target_env = "gnu"), doc( - html_root_url = "https://rust-lang.github.io/libc/x86_64-pc-windows-gnu" -))] -#![cfg_attr(all(windows, target_arch = "x86", target_env = "gnu"), doc( - html_root_url = "https://rust-lang.github.io/libc/i686-pc-windows-gnu" -))] -#![cfg_attr(all(windows, target_arch = "x86_64", target_env = "msvc"), doc( - html_root_url = "https://rust-lang.github.io/libc/x86_64-pc-windows-msvc" -))] -#![cfg_attr(all(windows, target_arch = "x86", target_env = "msvc"), doc( - html_root_url = "https://rust-lang.github.io/libc/i686-pc-windows-msvc" -))] -#![cfg_attr(target_os = "android", doc( - html_root_url = "https://rust-lang.github.io/libc/arm-linux-androideabi" -))] -#![cfg_attr(target_os = "freebsd", doc( - html_root_url = "https://rust-lang.github.io/libc/x86_64-unknown-freebsd" -))] -#![cfg_attr(target_os = "openbsd", doc( - html_root_url = "https://rust-lang.github.io/libc/x86_64-unknown-openbsd" -))] -#![cfg_attr(target_os = "bitrig", doc( - html_root_url = "https://rust-lang.github.io/libc/x86_64-unknown-bitrig" -))] -#![cfg_attr(target_os = "netbsd", doc( - html_root_url = "https://rust-lang.github.io/libc/x86_64-unknown-netbsd" -))] -#![cfg_attr(target_os = "dragonfly", doc( - html_root_url = "https://rust-lang.github.io/libc/x86_64-unknown-dragonfly" -))] -#![cfg_attr(target_os = "solaris", doc( - html_root_url = "https://rust-lang.github.io/libc/x86_64-sun-solaris" -))] -#![cfg_attr(all(target_os = "emscripten", target_arch = "asmjs"), doc( - html_root_url = "https://rust-lang.github.io/libc/asmjs-unknown-emscripten" -))] -#![cfg_attr(all(target_os = "emscripten", target_arch = "wasm32"), doc( - html_root_url = "https://rust-lang.github.io/libc/wasm32-unknown-emscripten" -))] -#![cfg_attr(all(target_os = "linux", target_arch = "sparc64"), doc( - html_root_url = "https://rust-lang.github.io/libc/sparc64-unknown-linux-gnu" -))] - +#![doc( + html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png", + html_favicon_url = "https://doc.rust-lang.org/favicon.ico" +)] +#![cfg_attr( + all(target_os = "linux", target_arch = "x86_64"), + doc( + html_root_url = "https://rust-lang.github.io/libc/x86_64-unknown-linux-gnu" + ) +)] +#![cfg_attr( + all(target_os = "linux", target_arch = "x86"), + doc( + html_root_url = "https://rust-lang.github.io/libc/i686-unknown-linux-gnu" + ) +)] +#![cfg_attr( + all(target_os = "linux", target_arch = "arm"), + doc( + html_root_url = "https://rust-lang.github.io/libc/arm-unknown-linux-gnueabihf" + ) +)] +#![cfg_attr( + all(target_os = "linux", target_arch = "mips"), + doc( + html_root_url = "https://rust-lang.github.io/libc/mips-unknown-linux-gnu" + ) +)] +#![cfg_attr( + all(target_os = "linux", target_arch = "aarch64"), + doc( + html_root_url = "https://rust-lang.github.io/libc/aarch64-unknown-linux-gnu" + ) +)] +#![cfg_attr( + all(target_os = "linux", target_env = "musl"), + doc( + html_root_url = "https://rust-lang.github.io/libc/x86_64-unknown-linux-musl" + ) +)] +#![cfg_attr( + all(target_os = "macos", target_arch = "x86_64"), + doc( + html_root_url = "https://rust-lang.github.io/libc/x86_64-apple-darwin" + ) +)] +#![cfg_attr( + all(target_os = "macos", target_arch = "x86"), + doc(html_root_url = "https://rust-lang.github.io/libc/i686-apple-darwin") +)] +#![cfg_attr( + all(windows, target_arch = "x86_64", target_env = "gnu"), + doc( + html_root_url = "https://rust-lang.github.io/libc/x86_64-pc-windows-gnu" + ) +)] +#![cfg_attr( + all(windows, target_arch = "x86", target_env = "gnu"), + doc( + html_root_url = "https://rust-lang.github.io/libc/i686-pc-windows-gnu" + ) +)] +#![cfg_attr( + all(windows, target_arch = "x86_64", target_env = "msvc"), + doc( + html_root_url = "https://rust-lang.github.io/libc/x86_64-pc-windows-msvc" + ) +)] +#![cfg_attr( + all(windows, target_arch = "x86", target_env = "msvc"), + doc( + html_root_url = "https://rust-lang.github.io/libc/i686-pc-windows-msvc" + ) +)] +#![cfg_attr( + target_os = "android", + doc( + html_root_url = "https://rust-lang.github.io/libc/arm-linux-androideabi" + ) +)] +#![cfg_attr( + target_os = "freebsd", + doc( + html_root_url = "https://rust-lang.github.io/libc/x86_64-unknown-freebsd" + ) +)] +#![cfg_attr( + target_os = "openbsd", + doc( + html_root_url = "https://rust-lang.github.io/libc/x86_64-unknown-openbsd" + ) +)] +#![cfg_attr( + target_os = "bitrig", + doc( + html_root_url = "https://rust-lang.github.io/libc/x86_64-unknown-bitrig" + ) +)] +#![cfg_attr( + target_os = "netbsd", + doc( + html_root_url = "https://rust-lang.github.io/libc/x86_64-unknown-netbsd" + ) +)] +#![cfg_attr( + target_os = "dragonfly", + doc( + html_root_url = "https://rust-lang.github.io/libc/x86_64-unknown-dragonfly" + ) +)] +#![cfg_attr( + target_os = "solaris", + doc( + html_root_url = "https://rust-lang.github.io/libc/x86_64-sun-solaris" + ) +)] +#![cfg_attr( + all(target_os = "emscripten", target_arch = "asmjs"), + doc( + html_root_url = "https://rust-lang.github.io/libc/asmjs-unknown-emscripten" + ) +)] +#![cfg_attr( + all(target_os = "emscripten", target_arch = "wasm32"), + doc( + html_root_url = "https://rust-lang.github.io/libc/wasm32-unknown-emscripten" + ) +)] +#![cfg_attr( + all(target_os = "linux", target_arch = "sparc64"), + doc( + html_root_url = "https://rust-lang.github.io/libc/sparc64-unknown-linux-gnu" + ) +)] // Attributes needed when building as part of the standard library -#![cfg_attr(feature = "stdbuild", feature(staged_api, cfg_target_vendor))] -#![cfg_attr(feature = "stdbuild", feature(link_cfg, repr_packed))] -#![cfg_attr(feature = "stdbuild", allow(warnings))] -#![cfg_attr(feature = "stdbuild", unstable(feature = "libc", - reason = "use `libc` from crates.io", - issue = "27783"))] - -#![cfg_attr(not(feature = "use_std"), no_std)] +#![cfg_attr(feature = "rustc-dep-of-std", feature(cfg_target_vendor))] +#![cfg_attr(feature = "rustc-dep-of-std", feature(link_cfg, repr_packed))] +#![cfg_attr(feature = "rustc-dep-of-std", feature(no_core))] +#![cfg_attr(feature = "rustc-dep-of-std", no_core)] +#![cfg_attr(feature = "rustc-dep-of-std", allow(warnings))] +#![cfg_attr(not(any(feature = "use_std", feature = "rustc-dep-of-std")), no_std)] #[cfg(all(not(cross_platform_docs), feature = "use_std"))] extern crate std as core; -#[macro_use] mod macros; -mod dox; - -cfg_if! { - if #[cfg(all(target_arch = "wasm32", not(target_os = "emscripten")))] { - // empty ... - } else { - - // Use repr(u8) as LLVM expects `void*` to be the same as `i8*` to help enable - // more optimization opportunities around it recognizing things like - // malloc/free. - #[repr(u8)] - pub enum c_void { - // Two dummy variants so the #[repr] attribute can be used. - #[doc(hidden)] - __variant1, - #[doc(hidden)] - __variant2, - } - - pub type int8_t = i8; - pub type int16_t = i16; - pub type int32_t = i32; - pub type int64_t = i64; - pub type uint8_t = u8; - pub type uint16_t = u16; - pub type uint32_t = u32; - pub type uint64_t = u64; - - pub type c_schar = i8; - pub type c_uchar = u8; - pub type c_short = i16; - pub type c_ushort = u16; - pub type c_int = i32; - pub type c_uint = u32; - pub type c_float = f32; - pub type c_double = f64; - pub type c_longlong = i64; - pub type c_ulonglong = u64; - pub type intmax_t = i64; - pub type uintmax_t = u64; +#[cfg(feature = "rustc-dep-of-std")] +extern crate rustc_std_workspace_core as core; +#[cfg(feature = "rustc-dep-of-std")] +#[allow(unused_imports)] +use core::iter; +#[cfg(feature = "rustc-dep-of-std")] +#[allow(unused_imports)] +use core::option; - pub type size_t = usize; - pub type ptrdiff_t = isize; - pub type intptr_t = isize; - pub type uintptr_t = usize; - pub type ssize_t = isize; +#[macro_use] +mod macros; - pub enum FILE {} - pub enum fpos_t {} // TODO: fill this out with a struct - - pub const INT_MIN: c_int = -2147483648; - pub const INT_MAX: c_int = 2147483647; - - extern { - pub fn isalnum(c: c_int) -> c_int; - pub fn isalpha(c: c_int) -> c_int; - pub fn iscntrl(c: c_int) -> c_int; - pub fn isdigit(c: c_int) -> c_int; - pub fn isgraph(c: c_int) -> c_int; - pub fn islower(c: c_int) -> c_int; - pub fn isprint(c: c_int) -> c_int; - pub fn ispunct(c: c_int) -> c_int; - pub fn isspace(c: c_int) -> c_int; - pub fn isupper(c: c_int) -> c_int; - pub fn isxdigit(c: c_int) -> c_int; - pub fn tolower(c: c_int) -> c_int; - pub fn toupper(c: c_int) -> c_int; - - #[cfg_attr(all(target_os = "macos", target_arch = "x86"), - link_name = "fopen$UNIX2003")] - pub fn fopen(filename: *const c_char, - mode: *const c_char) -> *mut FILE; - #[cfg_attr(all(target_os = "macos", target_arch = "x86"), - link_name = "freopen$UNIX2003")] - pub fn freopen(filename: *const c_char, mode: *const c_char, - file: *mut FILE) -> *mut FILE; - pub fn fflush(file: *mut FILE) -> c_int; - pub fn fclose(file: *mut FILE) -> c_int; - pub fn remove(filename: *const c_char) -> c_int; - pub fn rename(oldname: *const c_char, newname: *const c_char) -> c_int; - pub fn tmpfile() -> *mut FILE; - pub fn setvbuf(stream: *mut FILE, - buffer: *mut c_char, - mode: c_int, - size: size_t) -> c_int; - pub fn setbuf(stream: *mut FILE, buf: *mut c_char); - pub fn getchar() -> c_int; - pub fn putchar(c: c_int) -> c_int; - pub fn fgetc(stream: *mut FILE) -> c_int; - pub fn fgets(buf: *mut c_char, n: c_int, stream: *mut FILE) -> *mut c_char; - pub fn fputc(c: c_int, stream: *mut FILE) -> c_int; - #[cfg_attr(all(target_os = "macos", target_arch = "x86"), - link_name = "fputs$UNIX2003")] - pub fn fputs(s: *const c_char, stream: *mut FILE)-> c_int; - pub fn puts(s: *const c_char) -> c_int; - pub fn ungetc(c: c_int, stream: *mut FILE) -> c_int; - pub fn fread(ptr: *mut c_void, - size: size_t, - nobj: size_t, - stream: *mut FILE) - -> size_t; - #[cfg_attr(all(target_os = "macos", target_arch = "x86"), - link_name = "fwrite$UNIX2003")] - pub fn fwrite(ptr: *const c_void, - size: size_t, - nobj: size_t, - stream: *mut FILE) - -> size_t; - pub fn fseek(stream: *mut FILE, offset: c_long, whence: c_int) -> c_int; - pub fn ftell(stream: *mut FILE) -> c_long; - pub fn rewind(stream: *mut FILE); - #[cfg_attr(target_os = "netbsd", link_name = "__fgetpos50")] - pub fn fgetpos(stream: *mut FILE, ptr: *mut fpos_t) -> c_int; - #[cfg_attr(target_os = "netbsd", link_name = "__fsetpos50")] - pub fn fsetpos(stream: *mut FILE, ptr: *const fpos_t) -> c_int; - pub fn feof(stream: *mut FILE) -> c_int; - pub fn ferror(stream: *mut FILE) -> c_int; - pub fn perror(s: *const c_char); - pub fn atoi(s: *const c_char) -> c_int; - #[cfg_attr(all(target_os = "macos", target_arch = "x86"), - link_name = "strtod$UNIX2003")] - pub fn strtod(s: *const c_char, endp: *mut *mut c_char) -> c_double; - pub fn strtol(s: *const c_char, - endp: *mut *mut c_char, base: c_int) -> c_long; - pub fn strtoul(s: *const c_char, endp: *mut *mut c_char, - base: c_int) -> c_ulong; - pub fn calloc(nobj: size_t, size: size_t) -> *mut c_void; - pub fn malloc(size: size_t) -> *mut c_void; - pub fn realloc(p: *mut c_void, size: size_t) -> *mut c_void; - pub fn free(p: *mut c_void); - pub fn abort() -> !; - pub fn exit(status: c_int) -> !; - pub fn _exit(status: c_int) -> !; - pub fn atexit(cb: extern fn()) -> c_int; - #[cfg_attr(all(target_os = "macos", target_arch = "x86"), - link_name = "system$UNIX2003")] - pub fn system(s: *const c_char) -> c_int; - pub fn getenv(s: *const c_char) -> *mut c_char; - - pub fn strcpy(dst: *mut c_char, src: *const c_char) -> *mut c_char; - pub fn strncpy(dst: *mut c_char, src: *const c_char, n: size_t) - -> *mut c_char; - pub fn strcat(s: *mut c_char, ct: *const c_char) -> *mut c_char; - pub fn strncat(s: *mut c_char, ct: *const c_char, n: size_t) -> *mut c_char; - pub fn strcmp(cs: *const c_char, ct: *const c_char) -> c_int; - pub fn strncmp(cs: *const c_char, ct: *const c_char, n: size_t) -> c_int; - pub fn strcoll(cs: *const c_char, ct: *const c_char) -> c_int; - pub fn strchr(cs: *const c_char, c: c_int) -> *mut c_char; - pub fn strrchr(cs: *const c_char, c: c_int) -> *mut c_char; - pub fn strspn(cs: *const c_char, ct: *const c_char) -> size_t; - pub fn strcspn(cs: *const c_char, ct: *const c_char) -> size_t; - pub fn strdup(cs: *const c_char) -> *mut c_char; - pub fn strpbrk(cs: *const c_char, ct: *const c_char) -> *mut c_char; - pub fn strstr(cs: *const c_char, ct: *const c_char) -> *mut c_char; - pub fn strlen(cs: *const c_char) -> size_t; - pub fn strnlen(cs: *const c_char, maxlen: size_t) -> size_t; - #[cfg_attr(all(target_os = "macos", target_arch = "x86"), - link_name = "strerror$UNIX2003")] - pub fn strerror(n: c_int) -> *mut c_char; - pub fn strtok(s: *mut c_char, t: *const c_char) -> *mut c_char; - pub fn strxfrm(s: *mut c_char, ct: *const c_char, n: size_t) -> size_t; - pub fn wcslen(buf: *const wchar_t) -> size_t; - pub fn wcstombs(dest: *mut c_char, src: *const wchar_t, n: size_t) -> ::size_t; - - pub fn memchr(cx: *const c_void, c: c_int, n: size_t) -> *mut c_void; - pub fn memcmp(cx: *const c_void, ct: *const c_void, n: size_t) -> c_int; - pub fn memcpy(dest: *mut c_void, src: *const c_void, n: size_t) -> *mut c_void; - pub fn memmove(dest: *mut c_void, src: *const c_void, n: size_t) -> *mut c_void; - pub fn memset(dest: *mut c_void, c: c_int, n: size_t) -> *mut c_void; - } - - // These are all inline functions on android, so they end up just being entirely - // missing on that platform. - #[cfg(not(target_os = "android"))] - extern { - pub fn abs(i: c_int) -> c_int; - pub fn atof(s: *const c_char) -> c_double; - pub fn labs(i: c_long) -> c_long; - pub fn rand() -> c_int; - pub fn srand(seed: c_uint); - } - } -} +mod dox; cfg_if! { if #[cfg(windows)] { @@ -296,10 +187,16 @@ } else if #[cfg(target_os = "fuchsia")] { mod fuchsia; pub use fuchsia::*; + } else if #[cfg(target_os = "switch")] { + mod switch; + pub use switch::*; } else if #[cfg(unix)] { mod unix; pub use unix::*; - } else { - // Unknown target_family + } else if #[cfg(target_env = "sgx")] { + mod sgx; + pub use sgx::*; + } else { + // non-supported targets: empty... } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/macros.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/macros.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/macros.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/macros.rs 2019-01-04 19:47:54.000000000 +0000 @@ -48,6 +48,7 @@ )*) } +#[allow(unused_macros)] macro_rules! f { ($(pub fn $i:ident($($arg:ident: $argty:ty),*) -> $ret:ty { $($body:stmt);* @@ -67,7 +68,9 @@ } macro_rules! __item { - ($i:item) => ($i) + ($i:item) => { + $i + }; } #[allow(unused_macros)] diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/redox/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/redox/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/redox/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/redox/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -1,3 +1,32 @@ + +pub type int8_t = i8; +pub type int16_t = i16; +pub type int32_t = i32; +pub type int64_t = i64; +pub type uint8_t = u8; +pub type uint16_t = u16; +pub type uint32_t = u32; +pub type uint64_t = u64; + +pub type c_schar = i8; +pub type c_uchar = u8; +pub type c_short = i16; +pub type c_ushort = u16; +pub type c_int = i32; +pub type c_uint = u32; +pub type c_float = f32; +pub type c_double = f64; +pub type c_longlong = i64; +pub type c_ulonglong = u64; +pub type intmax_t = i64; +pub type uintmax_t = u64; + +pub type size_t = usize; +pub type ptrdiff_t = isize; +pub type intptr_t = isize; +pub type uintptr_t = usize; +pub type ssize_t = isize; + pub type c_char = i8; pub type c_long = i64; pub type c_ulong = u64; @@ -25,6 +54,9 @@ } } +pub const INT_MIN: c_int = -2147483648; +pub const INT_MAX: c_int = 2147483647; + pub const STDIN_FILENO: ::c_int = 0; pub const STDOUT_FILENO: ::c_int = 1; pub const STDERR_FILENO: ::c_int = 2; @@ -117,16 +149,128 @@ pub const SIGPWR: ::c_int = 30; pub const SIGSYS: ::c_int = 31; +pub enum FILE {} +pub enum fpos_t {} // TODO: fill this out with a struct + extern { + pub fn isalnum(c: c_int) -> c_int; + pub fn isalpha(c: c_int) -> c_int; + pub fn iscntrl(c: c_int) -> c_int; + pub fn isdigit(c: c_int) -> c_int; + pub fn isgraph(c: c_int) -> c_int; + pub fn islower(c: c_int) -> c_int; + pub fn isprint(c: c_int) -> c_int; + pub fn ispunct(c: c_int) -> c_int; + pub fn isspace(c: c_int) -> c_int; + pub fn isupper(c: c_int) -> c_int; + pub fn isxdigit(c: c_int) -> c_int; + pub fn tolower(c: c_int) -> c_int; + pub fn toupper(c: c_int) -> c_int; + pub fn fopen(filename: *const c_char, mode: *const c_char) -> *mut FILE; + pub fn freopen(filename: *const c_char, mode: *const c_char, + file: *mut FILE) -> *mut FILE; + pub fn fflush(file: *mut FILE) -> c_int; + pub fn fclose(file: *mut FILE) -> c_int; + pub fn remove(filename: *const c_char) -> c_int; + pub fn rename(oldname: *const c_char, newname: *const c_char) -> c_int; + pub fn tmpfile() -> *mut FILE; + pub fn setvbuf(stream: *mut FILE, buffer: *mut c_char, mode: c_int, + size: size_t) -> c_int; + pub fn setbuf(stream: *mut FILE, buf: *mut c_char); + pub fn getchar() -> c_int; + pub fn putchar(c: c_int) -> c_int; + pub fn fgetc(stream: *mut FILE) -> c_int; + pub fn fgets(buf: *mut c_char, n: c_int, stream: *mut FILE) -> *mut c_char; + pub fn fputc(c: c_int, stream: *mut FILE) -> c_int; + pub fn fputs(s: *const c_char, stream: *mut FILE) -> c_int; + pub fn puts(s: *const c_char) -> c_int; + pub fn ungetc(c: c_int, stream: *mut FILE) -> c_int; + pub fn fread(ptr: *mut c_void, size: size_t, nobj: size_t, + stream: *mut FILE) -> size_t; + pub fn fwrite(ptr: *const c_void, size: size_t, nobj: size_t, + stream: *mut FILE) -> size_t; + pub fn fseek(stream: *mut FILE, offset: c_long, whence: c_int) -> c_int; + pub fn ftell(stream: *mut FILE) -> c_long; + pub fn rewind(stream: *mut FILE); + pub fn fgetpos(stream: *mut FILE, ptr: *mut fpos_t) -> c_int; + pub fn fsetpos(stream: *mut FILE, ptr: *const fpos_t) -> c_int; + pub fn feof(stream: *mut FILE) -> c_int; + pub fn ferror(stream: *mut FILE) -> c_int; + pub fn perror(s: *const c_char); + pub fn atoi(s: *const c_char) -> c_int; + pub fn strtod(s: *const c_char, endp: *mut *mut c_char) -> c_double; + pub fn strtol(s: *const c_char, endp: *mut *mut c_char, + base: c_int) -> c_long; + pub fn strtoul(s: *const c_char, endp: *mut *mut c_char, + base: c_int) -> c_ulong; + pub fn calloc(nobj: size_t, size: size_t) -> *mut c_void; + pub fn malloc(size: size_t) -> *mut c_void; + pub fn realloc(p: *mut c_void, size: size_t) -> *mut c_void; + pub fn free(p: *mut c_void); + pub fn abort() -> !; + pub fn exit(status: c_int) -> !; + pub fn _exit(status: c_int) -> !; + pub fn atexit(cb: extern fn()) -> c_int; + pub fn system(s: *const c_char) -> c_int; + pub fn getenv(s: *const c_char) -> *mut c_char; + + pub fn strcpy(dst: *mut c_char, src: *const c_char) -> *mut c_char; + pub fn strncpy(dst: *mut c_char, src: *const c_char, + n: size_t) -> *mut c_char; + pub fn strcat(s: *mut c_char, ct: *const c_char) -> *mut c_char; + pub fn strncat(s: *mut c_char, ct: *const c_char, + n: size_t) -> *mut c_char; + pub fn strcmp(cs: *const c_char, ct: *const c_char) -> c_int; + pub fn strncmp(cs: *const c_char, ct: *const c_char, + n: size_t) -> c_int; + pub fn strcoll(cs: *const c_char, ct: *const c_char) -> c_int; + pub fn strchr(cs: *const c_char, c: c_int) -> *mut c_char; + pub fn strrchr(cs: *const c_char, c: c_int) -> *mut c_char; + pub fn strspn(cs: *const c_char, ct: *const c_char) -> size_t; + pub fn strcspn(cs: *const c_char, ct: *const c_char) -> size_t; + pub fn strdup(cs: *const c_char) -> *mut c_char; + pub fn strpbrk(cs: *const c_char, ct: *const c_char) -> *mut c_char; + pub fn strstr(cs: *const c_char, ct: *const c_char) -> *mut c_char; + pub fn strcasestr(cs: *const c_char, ct: *const c_char) -> *mut c_char; + pub fn strcasecmp(s1: *const c_char, s2: *const c_char) -> c_int; + pub fn strncasecmp(s1: *const c_char, s2: *const c_char, + n: size_t) -> c_int; + pub fn strlen(cs: *const c_char) -> size_t; + pub fn strnlen(cs: *const c_char, maxlen: size_t) -> size_t; + pub fn strerror(n: c_int) -> *mut c_char; + pub fn strtok(s: *mut c_char, t: *const c_char) -> *mut c_char; + pub fn strxfrm(s: *mut c_char, ct: *const c_char, n: size_t) -> size_t; + pub fn wcslen(buf: *const wchar_t) -> size_t; + pub fn wcstombs(dest: *mut c_char, src: *const wchar_t, + n: size_t) -> ::size_t; + + pub fn memchr(cx: *const c_void, c: c_int, n: size_t) -> *mut c_void; + pub fn memcmp(cx: *const c_void, ct: *const c_void, n: size_t) -> c_int; + pub fn memcpy(dest: *mut c_void, src: *const c_void, + n: size_t) -> *mut c_void; + pub fn memmove(dest: *mut c_void, src: *const c_void, + n: size_t) -> *mut c_void; + pub fn memset(dest: *mut c_void, c: c_int, n: size_t) -> *mut c_void; + + pub fn abs(i: c_int) -> c_int; + pub fn atof(s: *const c_char) -> c_double; + pub fn labs(i: c_long) -> c_long; + pub fn rand() -> c_int; + pub fn srand(seed: c_uint); + + pub fn chown(path: *const c_char, uid: uid_t, gid: gid_t) -> ::c_int; + pub fn close(fd: ::c_int) -> ::c_int; + pub fn fchown(fd: ::c_int, uid: ::uid_t, gid: ::gid_t) -> ::c_int; + pub fn fcntl(fd: ::c_int, cmd: ::c_int, ...) -> ::c_int; pub fn gethostname(name: *mut ::c_char, len: ::size_t) -> ::c_int; pub fn getpid() -> pid_t; pub fn memalign(align: ::size_t, size: ::size_t) -> *mut ::c_void; - pub fn read(fd: ::c_int, buf: *mut ::c_void, count: ::size_t) - -> ::ssize_t; + pub fn read(fd: ::c_int, buf: *mut ::c_void, count: ::size_t) -> ::ssize_t; + pub fn setenv(name: *const c_char, val: *const c_char, overwrite: ::c_int) + -> ::c_int; + pub fn unsetenv(name: *const c_char) -> ::c_int; pub fn write(fd: ::c_int, buf: *const ::c_void, count: ::size_t) -> ::ssize_t; - pub fn fcntl(fd: ::c_int, cmd: ::c_int, ...) -> ::c_int; - pub fn close(fd: ::c_int) -> ::c_int; } #[link(name = "c")] @@ -136,3 +280,21 @@ pub use self::net::*; mod net; + +cfg_if! { + if #[cfg(core_cvoid)] { + pub use core::ffi::c_void; + } else { + // Use repr(u8) as LLVM expects `void*` to be the same as `i8*` to help + // enable more optimization opportunities around it recognizing things + // like malloc/free. + #[repr(u8)] + pub enum c_void { + // Two dummy variants so the #[repr] attribute can be used. + #[doc(hidden)] + __variant1, + #[doc(hidden)] + __variant2, + } + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/sgx.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/sgx.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/sgx.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/sgx.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,54 @@ +//! SGX C types definition + +pub type int8_t = i8; +pub type int16_t = i16; +pub type int32_t = i32; +pub type int64_t = i64; +pub type uint8_t = u8; +pub type uint16_t = u16; +pub type uint32_t = u32; +pub type uint64_t = u64; + +pub type c_schar = i8; +pub type c_uchar = u8; +pub type c_short = i16; +pub type c_ushort = u16; +pub type c_int = i32; +pub type c_uint = u32; +pub type c_float = f32; +pub type c_double = f64; +pub type c_longlong = i64; +pub type c_ulonglong = u64; +pub type intmax_t = i64; +pub type uintmax_t = u64; + +pub type size_t = usize; +pub type ptrdiff_t = isize; +pub type intptr_t = isize; +pub type uintptr_t = usize; +pub type ssize_t = isize; + +pub type c_char = i8; +pub type c_long = i64; +pub type c_ulong = u64; + +pub const INT_MIN: c_int = -2147483648; +pub const INT_MAX: c_int = 2147483647; + +cfg_if! { + if #[cfg(core_cvoid)] { + pub use core::ffi::c_void; + } else { + // Use repr(u8) as LLVM expects `void*` to be the same as `i8*` to help + // enable more optimization opportunities around it recognizing things + // like malloc/free. + #[repr(u8)] + pub enum c_void { + // Two dummy variants so the #[repr] attribute can be used. + #[doc(hidden)] + __variant1, + #[doc(hidden)] + __variant2, + } + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/switch.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/switch.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/switch.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/switch.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,57 @@ +//! Switch C type definitions + +pub type int8_t = i8; +pub type int16_t = i16; +pub type int32_t = i32; +pub type int64_t = i64; +pub type uint8_t = u8; +pub type uint16_t = u16; +pub type uint32_t = u32; +pub type uint64_t = u64; + +pub type c_schar = i8; +pub type c_uchar = u8; +pub type c_short = i16; +pub type c_ushort = u16; +pub type c_int = i32; +pub type c_uint = u32; +pub type c_float = f32; +pub type c_double = f64; +pub type c_longlong = i64; +pub type c_ulonglong = u64; +pub type intmax_t = i64; +pub type uintmax_t = u64; + +pub type size_t = usize; +pub type ptrdiff_t = isize; +pub type intptr_t = isize; +pub type uintptr_t = usize; +pub type ssize_t = isize; + +pub type off_t = i64; +pub type c_char = u8; +pub type c_long = i64; +pub type c_ulong = u64; +pub type wchar_t = u32; + +pub const INT_MIN: c_int = -2147483648; +pub const INT_MAX: c_int = 2147483647; + +cfg_if! { + if #[cfg(core_cvoid)] { + pub use core::ffi::c_void; + } else { + // Use repr(u8) as LLVM expects `void*` to be the same as `i8*` to help + // enable more optimization opportunities around it recognizing things + // like malloc/free. + #[repr(u8)] + pub enum c_void { + // Two dummy variants so the #[repr] attribute can be used. + #[doc(hidden)] + __variant1, + #[doc(hidden)] + __variant2, + } + } +} + diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/apple/b32.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/apple/b32.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/apple/b32.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/apple/b32.rs 2019-01-04 19:47:54.000000000 +0000 @@ -58,3 +58,9 @@ pub const TIOCTIMESTAMP: ::c_ulong = 0x40087459; pub const TIOCDCDTIMESTAMP: ::c_ulong = 0x40087458; + +extern { + pub fn exchangedata(path1: *const ::c_char, + path2: *const ::c_char, + options: ::c_ulong) -> ::c_int; +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/apple/b64.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/apple/b64.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/apple/b64.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/apple/b64.rs 2019-01-04 19:47:54.000000000 +0000 @@ -63,3 +63,9 @@ pub const TIOCTIMESTAMP: ::c_ulong = 0x40107459; pub const TIOCDCDTIMESTAMP: ::c_ulong = 0x40107458; + +extern { + pub fn exchangedata(path1: *const ::c_char, + path2: *const ::c_char, + options: ::c_uint) -> ::c_int; +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/apple/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/apple/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/apple/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/apple/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -245,7 +245,7 @@ pub f_reserved: [::uint32_t; 8], } - #[cfg_attr(feature = "stdbuild", repr(packed(4)))] + #[cfg_attr(feature = "rustc-dep-of-std", repr(packed(4)))] pub struct kevent { pub ident: ::uintptr_t, pub filter: ::int16_t, @@ -535,7 +535,36 @@ pub _key: ::key_t, } - #[cfg_attr(feature = "stdbuild", repr(packed(4)))] + // sys/sem.h + + pub struct sembuf { + pub sem_num: ::c_ushort, + pub sem_op: ::c_short, + pub sem_flg: ::c_short, + } + + #[cfg_attr(feature = "rustc-dep-of-std", repr(packed(4)))] + pub struct semid_ds { + // Note the manpage shows different types than the system header. + pub sem_perm: ipc_perm, + pub sem_base: ::int32_t, + pub sem_nsems: ::c_ushort, + pub sem_otime: ::time_t, + pub sem_pad1: ::int32_t, + pub sem_ctime: ::time_t, + pub sem_pad2: ::int32_t, + pub sem_pad3: [::int32_t; 4], + } + + pub union semun { + pub val: ::c_int, + pub buf: *mut semid_ds, + pub array: *mut ::c_ushort, + } + + // sys/shm.h + + #[cfg_attr(feature = "rustc-dep-of-std", repr(packed(4)))] pub struct shmid_ds { pub shm_perm: ipc_perm, pub shm_segsz: ::size_t, @@ -747,11 +776,32 @@ pub const PROT_WRITE: ::c_int = 2; pub const PROT_EXEC: ::c_int = 4; +pub const PT_TRACE_ME: ::c_int = 0; +pub const PT_READ_I: ::c_int = 1; +pub const PT_READ_D: ::c_int = 2; +pub const PT_READ_U: ::c_int = 3; +pub const PT_WRITE_I: ::c_int = 4; +pub const PT_WRITE_D: ::c_int = 5; +pub const PT_WRITE_U: ::c_int = 6; +pub const PT_CONTINUE: ::c_int = 7; +pub const PT_KILL: ::c_int = 8; +pub const PT_STEP: ::c_int = 9; +pub const PT_ATTACH: ::c_int = 10; +pub const PT_DETACH: ::c_int = 11; +pub const PT_SIGEXC: ::c_int = 12; +pub const PT_THUPDATE: ::c_int = 13; +pub const PT_ATTACHEXC: ::c_int = 14; + +pub const PT_FORCEQUOTA: ::c_int = 30; +pub const PT_DENY_ATTACH: ::c_int = 31; +pub const PT_FIRSTMACH: ::c_int = 32; + pub const MAP_FILE: ::c_int = 0x0000; pub const MAP_SHARED: ::c_int = 0x0001; pub const MAP_PRIVATE: ::c_int = 0x0002; pub const MAP_FIXED: ::c_int = 0x0010; pub const MAP_ANON: ::c_int = 0x1000; +pub const MAP_ANONYMOUS: ::c_int = MAP_ANON; pub const VM_FLAGS_FIXED: ::c_int = 0x0000; pub const VM_FLAGS_ANYWHERE: ::c_int = 0x0001; @@ -765,8 +815,8 @@ pub const VM_FLAGS_RETURN_DATA_ADDR: ::c_int = 0x100000; pub const VM_FLAGS_RETURN_4K_DATA_ADDR: ::c_int = 0x800000; pub const VM_FLAGS_ALIAS_MASK: ::c_int = 0xFF000000; -pub const VM_FLAGS_USER_ALLOCATE: ::c_int = 0xff07401b; -pub const VM_FLAGS_USER_MAP: ::c_int = 0xff97401b; +pub const VM_FLAGS_USER_ALLOCATE: ::c_int = 0xff07401f; +pub const VM_FLAGS_USER_MAP: ::c_int = 0xff97401f; pub const VM_FLAGS_USER_REMAP: ::c_int = VM_FLAGS_FIXED | VM_FLAGS_ANYWHERE | VM_FLAGS_RANDOM_ADDR | VM_FLAGS_OVERWRITE | @@ -1520,15 +1570,21 @@ pub const SOCK_SEQPACKET: ::c_int = 5; pub const IP_TTL: ::c_int = 4; pub const IP_HDRINCL: ::c_int = 2; +pub const IP_RECVDSTADDR: ::c_int = 7; pub const IP_ADD_MEMBERSHIP: ::c_int = 12; pub const IP_DROP_MEMBERSHIP: ::c_int = 13; +pub const IP_RECVIF: ::c_int = 20; pub const IP_PKTINFO: ::c_int = 26; +pub const IP_RECVTOS: ::c_int = 27; pub const IPV6_JOIN_GROUP: ::c_int = 12; pub const IPV6_LEAVE_GROUP: ::c_int = 13; +pub const IPV6_RECVTCLASS: ::c_int = 35; +pub const IPV6_TCLASS: ::c_int = 36; pub const IPV6_PKTINFO: ::c_int = 46; pub const IPV6_RECVPKTINFO: ::c_int = 61; -pub const TCP_NODELAY: ::c_int = 0x01; +pub const TCP_NOPUSH: ::c_int = 4; +pub const TCP_NOOPT: ::c_int = 8; pub const TCP_KEEPALIVE: ::c_int = 0x10; pub const SOL_LOCAL: ::c_int = 0; @@ -1863,6 +1919,13 @@ pub const CRTSCTS: ::tcflag_t = 0x00030000; pub const NI_MAXHOST: ::socklen_t = 1025; +pub const NI_MAXSERV: ::socklen_t = 32; +pub const NI_NOFQDN: ::c_int = 0x00000001; +pub const NI_NUMERICHOST: ::c_int = 0x00000002; +pub const NI_NAMEREQD: ::c_int = 0x00000004; +pub const NI_NUMERICSERV: ::c_int = 0x00000008; +pub const NI_NUMERICSCOPE: ::c_int = 0x00000100; +pub const NI_DGRAM: ::c_int = 0x00000010; pub const Q_GETQUOTA: ::c_int = 0x300; pub const Q_SETQUOTA: ::c_int = 0x400; @@ -2096,6 +2159,19 @@ pub const SEM_FAILED: *mut sem_t = -1isize as *mut ::sem_t; +pub const AI_PASSIVE: ::c_int = 0x00000001; +pub const AI_CANONNAME: ::c_int = 0x00000002; +pub const AI_NUMERICHOST: ::c_int = 0x00000004; +pub const AI_NUMERICSERV: ::c_int = 0x00001000; +pub const AI_MASK: ::c_int = AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST | + AI_NUMERICSERV | AI_ADDRCONFIG; +pub const AI_ALL: ::c_int = 0x00000100; +pub const AI_V4MAPPED_CFG: ::c_int = 0x00000200; +pub const AI_ADDRCONFIG: ::c_int = 0x00000400; +pub const AI_V4MAPPED: ::c_int = 0x00000800; +pub const AI_DEFAULT: ::c_int = AI_V4MAPPED_CFG | AI_ADDRCONFIG; +pub const AI_UNUSABLE: ::c_int = 0x10000000; + pub const SIGEV_NONE: ::c_int = 0; pub const SIGEV_SIGNAL: ::c_int = 1; pub const SIGEV_THREAD: ::c_int = 3; @@ -2275,6 +2351,17 @@ pub const IPC_W: ::c_int = 0x80; pub const IPC_M: ::c_int = 0x1000; +// sys/sem.h +pub const SEM_UNDO: ::c_int = 0o10000; + +pub const GETNCNT: ::c_int = 3; +pub const GETPID: ::c_int = 4; +pub const GETVAL: ::c_int = 5; +pub const GETALL: ::c_int = 6; +pub const GETZCNT: ::c_int = 7; +pub const SETVAL: ::c_int = 8; +pub const SETALL: ::c_int = 9; + // sys/shm.h pub const SHM_RDONLY: ::c_int = 0x1000; pub const SHM_RND: ::c_int = 0x2000; @@ -2282,6 +2369,20 @@ pub const SHM_R: ::c_int = IPC_R; pub const SHM_W: ::c_int = IPC_W; +// Flags for chflags(2) +pub const UF_SETTABLE: ::c_uint = 0x0000ffff; +pub const UF_NODUMP: ::c_uint = 0x00000001; +pub const UF_IMMUTABLE: ::c_uint = 0x00000002; +pub const UF_APPEND: ::c_uint = 0x00000004; +pub const UF_OPAQUE: ::c_uint = 0x00000008; +pub const UF_COMPRESSED: ::c_uint = 0x00000020; +pub const UF_TRACKED: ::c_uint = 0x00000040; +pub const SF_SETTABLE: ::c_uint = 0xffff0000; +pub const SF_ARCHIVED: ::c_uint = 0x00010000; +pub const SF_IMMUTABLE: ::c_uint = 0x00020000; +pub const SF_APPEND: ::c_uint = 0x00040000; +pub const UF_HIDDEN: ::c_uint = 0x00008000; + f! { pub fn WSTOPSIG(status: ::c_int) -> ::c_int { status >> 8 @@ -2315,6 +2416,8 @@ pub fn aio_suspend(aiocb_list: *const *const aiocb, nitems: ::c_int, timeout: *const ::timespec) -> ::c_int; pub fn aio_cancel(fd: ::c_int, aiocbp: *mut aiocb) -> ::c_int; + pub fn chflags(path: *const ::c_char, flags: ::c_uint) -> ::c_int; + pub fn fchflags(fd: ::c_int, flags: ::c_uint) -> ::c_int; pub fn clock_getres(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int; pub fn clock_gettime(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int; pub fn lio_listio(mode: ::c_int, aiocb_list: *const *mut aiocb, @@ -2349,7 +2452,15 @@ link_name = "mprotect$UNIX2003")] pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int; + pub fn semget(key: key_t, nsems: ::c_int, semflg: ::c_int) -> ::c_int; + #[cfg_attr(all(target_os = "macos", target_arch = "x86"), + link_name = "semctl$UNIX2003")] + pub fn semctl(semid: ::c_int, + semnum: ::c_int, + cmd: ::c_int, ...) -> ::c_int; + pub fn semop(semid: ::c_int, sops: *mut sembuf, nsops: ::size_t) -> ::c_int; pub fn shm_open(name: *const ::c_char, oflag: ::c_int, ...) -> ::c_int; + pub fn ftok(pathname : *const c_char, proj_id : ::c_int) -> key_t; pub fn shmat(shmid: ::c_int, shmaddr: *const ::c_void, shmflg: ::c_int) -> *mut ::c_void; pub fn shmdt(shmaddr: *const ::c_void) -> ::c_int; @@ -2427,6 +2538,9 @@ len: *mut ::off_t, hdtr: *mut ::sf_hdtr, flags: ::c_int) -> ::c_int; + pub fn futimens(fd: ::c_int, times: *const ::timespec) -> ::c_int; + pub fn utimensat(dirfd: ::c_int, path: *const ::c_char, + times: *const ::timespec, flag: ::c_int) -> ::c_int; pub fn openpty(amaster: *mut ::c_int, aslave: *mut ::c_int, name: *mut ::c_char, diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -222,6 +222,8 @@ pub const F_GETLK: ::c_int = 7; pub const F_SETLK: ::c_int = 8; pub const F_SETLKW: ::c_int = 9; +pub const ENOMEDIUM: ::c_int = 93; +pub const EASYNC: ::c_int = 99; pub const ELAST: ::c_int = 99; pub const RLIMIT_POSIXLOCKS: ::c_int = 11; pub const RLIM_NLIMITS: ::rlim_t = 12; @@ -429,6 +431,8 @@ pub const SO_SNDSPACE: ::c_int = 0x100a; pub const SO_CPUHINT: ::c_int = 0x1030; +pub const PT_FIRSTMACH: ::c_int = 32; + // https://github.com/DragonFlyBSD/DragonFlyBSD/blob/master/sys/net/if.h#L101 pub const IFF_UP: ::c_int = 0x1; // interface is up pub const IFF_BROADCAST: ::c_int = 0x2; // broadcast address valid @@ -680,6 +684,11 @@ /// Used by RSS: the layer3 protocol is unknown pub const IPPROTO_UNKNOWN: ::c_int = 258; +// sys/netinet/tcp.h +pub const TCP_SIGNATURE_ENABLE: ::c_int = 16; +pub const TCP_KEEPINIT: ::c_int = 32; +pub const TCP_FASTKEEP: ::c_int = 128; + pub const AF_BLUETOOTH: ::c_int = 33; pub const AF_MPLS: ::c_int = 34; pub const AF_IEEE80211: ::c_int = 35; @@ -765,6 +774,14 @@ pub const RTP_PRIO_IDLE: ::c_ushort = 2; pub const RTP_PRIO_THREAD: ::c_ushort = 3; +// Flags for chflags(2) +pub const UF_NOHISTORY: ::c_ulong = 0x00000040; +pub const UF_CACHE: ::c_ulong = 0x00000080; +pub const UF_XLINK: ::c_ulong = 0x00000100; +pub const SF_NOHISTORY: ::c_ulong = 0x00400000; +pub const SF_CACHE: ::c_ulong = 0x00800000; +pub const SF_XLINK: ::c_ulong = 0x01000000; + extern { pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -186,6 +186,10 @@ pub const SIGEV_THREAD_ID: ::c_int = 4; +pub const EXTATTR_NAMESPACE_EMPTY: ::c_int = 0; +pub const EXTATTR_NAMESPACE_USER: ::c_int = 1; +pub const EXTATTR_NAMESPACE_SYSTEM: ::c_int = 2; + pub const RAND_MAX: ::c_int = 0x7fff_fffd; pub const PTHREAD_STACK_MIN: ::size_t = 2048; pub const PTHREAD_MUTEX_ADAPTIVE_NP: ::c_int = 4; @@ -457,6 +461,7 @@ pub const SO_BINTIME: ::c_int = 0x2000; pub const SO_NO_OFFLOAD: ::c_int = 0x4000; pub const SO_NO_DDP: ::c_int = 0x8000; +pub const SO_REUSEPORT_LB: ::c_int = 0x10000; pub const SO_LABEL: ::c_int = 0x1009; pub const SO_PEERLABEL: ::c_int = 0x1010; pub const SO_LISTENQLIMIT: ::c_int = 0x1011; @@ -473,6 +478,39 @@ pub const LOCAL_CONNWAIT: ::c_int = 4; pub const LOCAL_VENDOR: ::c_int = SO_VENDOR; +pub const PT_LWPINFO: ::c_int = 13; +pub const PT_GETNUMLWPS: ::c_int = 14; +pub const PT_GETLWPLIST: ::c_int = 15; +pub const PT_CLEARSTEP: ::c_int = 16; +pub const PT_SETSTEP: ::c_int = 17; +pub const PT_SUSPEND: ::c_int = 18; +pub const PT_RESUME: ::c_int = 19; +pub const PT_TO_SCE: ::c_int = 20; +pub const PT_TO_SCX: ::c_int = 21; +pub const PT_SYSCALL: ::c_int = 22; +pub const PT_FOLLOW_FORK: ::c_int = 23; +pub const PT_LWP_EVENTS: ::c_int = 24; +pub const PT_GET_EVENT_MASK: ::c_int = 25; +pub const PT_SET_EVENT_MASK: ::c_int = 26; +pub const PT_GETREGS: ::c_int = 33; +pub const PT_SETREGS: ::c_int = 34; +pub const PT_GETFPREGS: ::c_int = 35; +pub const PT_SETFPREGS: ::c_int = 36; +pub const PT_GETDBREGS: ::c_int = 37; +pub const PT_SETDBREGS: ::c_int = 38; +pub const PT_VM_TIMESTAMP: ::c_int = 40; +pub const PT_VM_ENTRY: ::c_int = 41; +pub const PT_FIRSTMACH: ::c_int = 64; + +pub const PTRACE_EXEC: ::c_int = 0x0001; +pub const PTRACE_SCE: ::c_int = 0x0002; +pub const PTRACE_SCX: ::c_int = 0x0004; +pub const PTRACE_SYSCALL: ::c_int = PTRACE_SCE | PTRACE_SCX; +pub const PTRACE_FORK: ::c_int = 0x0008; +pub const PTRACE_LWP: ::c_int = 0x0010; +pub const PTRACE_VFORK: ::c_int = 0x0020; +pub const PTRACE_DEFAULT: ::c_int = PTRACE_EXEC; + pub const AF_SLOW: ::c_int = 33; pub const AF_SCLUSTER: ::c_int = 34; pub const AF_ARP: ::c_int = 35; @@ -754,7 +792,18 @@ /// SeND pseudo-protocol pub const IPPROTO_SEND: ::c_int = 259; +// sys/netinet/TCP.h +pub const TCP_MD5SIG: ::c_int = 16; +pub const TCP_INFO: ::c_int = 32; +pub const TCP_CONGESTION: ::c_int = 64; +pub const TCP_CCALGOOPT: ::c_int = 65; +pub const TCP_KEEPINIT: ::c_int = 128; +pub const TCP_FASTOPEN: ::c_int = 1025; +pub const TCP_PCAP_OUT: ::c_int = 2048; +pub const TCP_PCAP_IN: ::c_int = 4096; + pub const IP_BINDANY: ::c_int = 24; +pub const IP_RECVTOS: ::c_int = 68; pub const PF_SLOW: ::c_int = AF_SLOW; pub const PF_SCLUSTER: ::c_int = AF_SCLUSTER; @@ -890,6 +939,16 @@ pub const POSIX_SPAWN_SETSIGDEF: ::c_int = 0x10; pub const POSIX_SPAWN_SETSIGMASK: ::c_int = 0x20; +// Flags for chflags(2) +pub const UF_SYSTEM: ::c_ulong = 0x00000080; +pub const UF_SPARSE: ::c_ulong = 0x00000100; +pub const UF_OFFLINE: ::c_ulong = 0x00000200; +pub const UF_REPARSE: ::c_ulong = 0x00000400; +pub const UF_ARCHIVE: ::c_ulong = 0x00000800; +pub const UF_READONLY: ::c_ulong = 0x00001000; +pub const UF_HIDDEN: ::c_ulong = 0x00008000; +pub const SF_SNAPSHOT: ::c_ulong = 0x00200000; + extern { pub fn __error() -> *mut ::c_int; @@ -900,6 +959,58 @@ pub fn clock_gettime(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int; pub fn clock_settime(clk_id: ::clockid_t, tp: *const ::timespec) -> ::c_int; + pub fn extattr_delete_fd(fd: ::c_int, + attrnamespace: ::c_int, + attrname: *const ::c_char) -> ::c_int; + pub fn extattr_delete_file(path: *const ::c_char, + attrnamespace: ::c_int, + attrname: *const ::c_char) -> ::c_int; + pub fn extattr_delete_link(path: *const ::c_char, + attrnamespace: ::c_int, + attrname: *const ::c_char) -> ::c_int; + pub fn extattr_get_fd(fd: ::c_int, + attrnamespace: ::c_int, + attrname: *const ::c_char, + data: *mut ::c_void, + nbytes: ::size_t) -> ::ssize_t; + pub fn extattr_get_file(path: *const ::c_char, + attrnamespace: ::c_int, + attrname: *const ::c_char, + data: *mut ::c_void, + nbytes: ::size_t) -> ::ssize_t; + pub fn extattr_get_link(path: *const ::c_char, + attrnamespace: ::c_int, + attrname: *const ::c_char, + data: *mut ::c_void, + nbytes: ::size_t) -> ::ssize_t; + pub fn extattr_list_fd(fd: ::c_int, + attrnamespace: ::c_int, + data: *mut ::c_void, + nbytes: ::size_t) -> ::ssize_t; + pub fn extattr_list_file(path: *const ::c_char, + attrnamespace: ::c_int, + data: *mut ::c_void, + nbytes: ::size_t) -> ::ssize_t; + pub fn extattr_list_link(path: *const ::c_char, + attrnamespace: ::c_int, + data: *mut ::c_void, + nbytes: ::size_t) -> ::ssize_t; + pub fn extattr_set_fd(fd: ::c_int, + attrnamespace: ::c_int, + attrname: *const ::c_char, + data: *const ::c_void, + nbytes: ::size_t) -> ::ssize_t; + pub fn extattr_set_file(path: *const ::c_char, + attrnamespace: ::c_int, + attrname: *const ::c_char, + data: *const ::c_void, + nbytes: ::size_t) -> ::ssize_t; + pub fn extattr_set_link(path: *const ::c_char, + attrnamespace: ::c_int, + attrname: *const ::c_char, + data: *const ::c_void, + nbytes: ::size_t) -> ::ssize_t; + pub fn jail(jail: *mut ::jail) -> ::c_int; pub fn jail_attach(jid: ::c_int) -> ::c_int; pub fn jail_remove(jid: ::c_int) -> ::c_int; @@ -1022,6 +1133,16 @@ pub fn statfs(path: *const ::c_char, buf: *mut statfs) -> ::c_int; pub fn fstatfs(fd: ::c_int, buf: *mut statfs) -> ::c_int; + + pub fn dup3(src: ::c_int, dst: ::c_int, flags: ::c_int) -> ::c_int; +} + +#[link(name = "util")] +extern { + pub fn extattr_namespace_to_string(attrnamespace: ::c_int, + string: *mut *mut ::c_char) -> ::c_int; + pub fn extattr_string_to_namespace(string: *const ::c_char, + attrnamespace: *mut ::c_int) -> ::c_int; } cfg_if! { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/freebsdlike/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/freebsdlike/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/freebsdlike/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/freebsdlike/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -624,6 +624,18 @@ pub const PF_ATM: ::c_int = AF_ATM; pub const PF_NETGRAPH: ::c_int = AF_NETGRAPH; +pub const PT_TRACE_ME: ::c_int = 0; +pub const PT_READ_I: ::c_int = 1; +pub const PT_READ_D: ::c_int = 2; +pub const PT_WRITE_I: ::c_int = 4; +pub const PT_WRITE_D: ::c_int = 5; +pub const PT_CONTINUE: ::c_int = 7; +pub const PT_KILL: ::c_int = 8; +pub const PT_STEP: ::c_int = 9; +pub const PT_ATTACH: ::c_int = 10; +pub const PT_DETACH: ::c_int = 11; +pub const PT_IO: ::c_int = 12; + pub const SOMAXCONN: ::c_int = 128; pub const MSG_OOB: ::c_int = 0x00000001; @@ -652,12 +664,16 @@ pub const IP_SENDSRCADDR: ::c_int = IP_RECVDSTADDR; pub const IP_ADD_MEMBERSHIP: ::c_int = 12; pub const IP_DROP_MEMBERSHIP: ::c_int = 13; +pub const IP_RECVIF: ::c_int = 20; pub const IPV6_JOIN_GROUP: ::c_int = 12; pub const IPV6_LEAVE_GROUP: ::c_int = 13; pub const IPV6_RECVPKTINFO: ::c_int = 36; pub const IPV6_PKTINFO: ::c_int = 46; +pub const IPV6_RECVTCLASS: ::c_int = 57; +pub const IPV6_TCLASS: ::c_int = 61; -pub const TCP_NODELAY: ::c_int = 1; +pub const TCP_NOPUSH: ::c_int = 4; +pub const TCP_NOOPT: ::c_int = 8; pub const TCP_KEEPIDLE: ::c_int = 256; pub const TCP_KEEPINTVL: ::c_int = 512; pub const TCP_KEEPCNT: ::c_int = 1024; @@ -991,6 +1007,21 @@ pub const RTP_LOOKUP: ::c_int = 0; pub const RTP_SET: ::c_int = 1; +// Flags for chflags(2) +pub const UF_SETTABLE: ::c_ulong = 0x0000ffff; +pub const UF_NODUMP: ::c_ulong = 0x00000001; +pub const UF_IMMUTABLE: ::c_ulong = 0x00000002; +pub const UF_APPEND: ::c_ulong = 0x00000004; +pub const UF_OPAQUE: ::c_ulong = 0x00000008; +pub const UF_NOUNLINK: ::c_ulong = 0x00000010; +pub const SF_SETTABLE: ::c_ulong = 0xffff0000; +pub const SF_ARCHIVED: ::c_ulong = 0x00010000; +pub const SF_IMMUTABLE: ::c_ulong = 0x00020000; +pub const SF_APPEND: ::c_ulong = 0x00040000; +pub const SF_NOUNLINK: ::c_ulong = 0x00100000; + +pub const TIMER_ABSTIME: ::c_int = 1; + f! { pub fn WIFCONTINUED(status: ::c_int) -> bool { status == 0x13 @@ -1010,33 +1041,73 @@ } extern { - pub fn lutimes(file: *const ::c_char, times: *const ::timeval) -> ::c_int; + pub fn accept4(s: ::c_int, addr: *mut ::sockaddr, + addrlen: *mut ::socklen_t, flags: ::c_int) -> ::c_int; + pub fn aio_read(aiocbp: *mut aiocb) -> ::c_int; + pub fn aio_write(aiocbp: *mut aiocb) -> ::c_int; + pub fn aio_fsync(op: ::c_int, aiocbp: *mut aiocb) -> ::c_int; + pub fn aio_error(aiocbp: *const aiocb) -> ::c_int; + pub fn aio_return(aiocbp: *mut aiocb) -> ::ssize_t; + pub fn aio_suspend(aiocb_list: *const *const aiocb, nitems: ::c_int, + timeout: *const ::timespec) -> ::c_int; + pub fn aio_cancel(fd: ::c_int, aiocbp: *mut aiocb) -> ::c_int; + pub fn chflags(path: *const ::c_char, flags: ::c_ulong) -> ::c_int; + pub fn chflagsat(fd: ::c_int, path: *const ::c_char, flags: ::c_ulong, + atflag: ::c_int) -> ::c_int; + pub fn dirfd(dirp: *mut ::DIR) -> ::c_int; + pub fn duplocale(base: ::locale_t) -> ::locale_t; pub fn endutxent(); - pub fn getutxent() -> *mut utmpx; - pub fn getutxid(ut: *const utmpx) -> *mut utmpx; - pub fn getutxline(ut: *const utmpx) -> *mut utmpx; - pub fn pututxline(ut: *const utmpx) -> *mut utmpx; - pub fn setutxent(); - pub fn setresgid(rgid: ::gid_t, egid: ::gid_t, sgid: ::gid_t) -> ::c_int; - pub fn setresuid(ruid: ::uid_t, euid: ::uid_t, suid: ::uid_t) -> ::c_int; - pub fn getgrouplist(name: *const ::c_char, - basegid: ::gid_t, - groups: *mut ::gid_t, - ngroups: *mut ::c_int) -> ::c_int; - pub fn initgroups(name: *const ::c_char, basegid: ::gid_t) -> ::c_int; + pub fn fchflags(fd: ::c_int, flags: ::c_ulong) -> ::c_int; + pub fn futimens(fd: ::c_int, times: *const ::timespec) -> ::c_int; + pub fn getdomainname(name: *mut ::c_char, len: ::c_int) -> ::c_int; + pub fn getgrent_r(grp: *mut ::group, + buf: *mut ::c_char, + buflen: ::size_t, + result: *mut *mut ::group) -> ::c_int; #[cfg_attr(target_os = "netbsd", link_name = "__getpwent_r50")] pub fn getpwent_r(pwd: *mut ::passwd, buf: *mut ::c_char, buflen: ::size_t, result: *mut *mut ::passwd) -> ::c_int; - pub fn getgrent_r(grp: *mut ::group, - buf: *mut ::c_char, - buflen: ::size_t, - result: *mut *mut ::group) -> ::c_int; - pub fn mq_open(name: *const ::c_char, oflag: ::c_int, ...) -> ::mqd_t; + pub fn getgrouplist(name: *const ::c_char, + basegid: ::gid_t, + groups: *mut ::gid_t, + ngroups: *mut ::c_int) -> ::c_int; + pub fn getnameinfo(sa: *const ::sockaddr, + salen: ::socklen_t, + host: *mut ::c_char, + hostlen: ::size_t, + serv: *mut ::c_char, + servlen: ::size_t, + flags: ::c_int) -> ::c_int; + pub fn getpriority(which: ::c_int, who: ::c_int) -> ::c_int; + pub fn getutxent() -> *mut utmpx; + pub fn getutxid(ut: *const utmpx) -> *mut utmpx; + pub fn getutxline(ut: *const utmpx) -> *mut utmpx; + pub fn initgroups(name: *const ::c_char, basegid: ::gid_t) -> ::c_int; + #[cfg_attr(target_os = "freebsd", link_name = "kevent@FBSD_1.0")] + pub fn kevent(kq: ::c_int, + changelist: *const ::kevent, + nchanges: ::c_int, + eventlist: *mut ::kevent, + nevents: ::c_int, + timeout: *const ::timespec) -> ::c_int; + pub fn lchflags(path: *const ::c_char, flags: ::c_ulong) -> ::c_int; + pub fn lio_listio(mode: ::c_int, aiocb_list: *const *mut aiocb, + nitems: ::c_int, sevp: *mut sigevent) -> ::c_int; + pub fn lutimes(file: *const ::c_char, times: *const ::timeval) -> ::c_int; + pub fn memrchr(cx: *const ::c_void, + c: ::c_int, + n: ::size_t) -> *mut ::c_void; + pub fn mkfifoat(dirfd: ::c_int, pathname: *const ::c_char, + mode: ::mode_t) -> ::c_int; + #[cfg_attr(target_os = "freebsd", link_name = "mknodat@FBSD_1.1")] + pub fn mknodat(dirfd: ::c_int, pathname: *const ::c_char, + mode: ::mode_t, dev: dev_t) -> ::c_int; pub fn mq_close(mqd: ::mqd_t) -> ::c_int; pub fn mq_getattr(mqd: ::mqd_t, attr: *mut ::mq_attr) -> ::c_int; pub fn mq_notify(mqd: ::mqd_t, notification: *const ::sigevent) -> ::c_int; + pub fn mq_open(name: *const ::c_char, oflag: ::c_int, ...) -> ::mqd_t; pub fn mq_receive(mqd: ::mqd_t, msg_ptr: *mut ::c_char, msg_len: ::size_t, @@ -1059,71 +1130,66 @@ msq_prio: ::c_uint, abs_timeout: *const ::timespec) -> ::c_int; pub fn mq_unlink(name: *const ::c_char) -> ::c_int; -} - -#[link(name = "util")] -extern { - pub fn aio_read(aiocbp: *mut aiocb) -> ::c_int; - pub fn aio_write(aiocbp: *mut aiocb) -> ::c_int; - pub fn aio_fsync(op: ::c_int, aiocbp: *mut aiocb) -> ::c_int; - pub fn aio_error(aiocbp: *const aiocb) -> ::c_int; - pub fn aio_return(aiocbp: *mut aiocb) -> ::ssize_t; - pub fn aio_suspend(aiocb_list: *const *const aiocb, nitems: ::c_int, - timeout: *const ::timespec) -> ::c_int; - pub fn aio_cancel(fd: ::c_int, aiocbp: *mut aiocb) -> ::c_int; - pub fn lio_listio(mode: ::c_int, aiocb_list: *const *mut aiocb, - nitems: ::c_int, sevp: *mut sigevent) -> ::c_int; - pub fn dirfd(dirp: *mut ::DIR) -> ::c_int; - pub fn getnameinfo(sa: *const ::sockaddr, - salen: ::socklen_t, - host: *mut ::c_char, - hostlen: ::size_t, - serv: *mut ::c_char, - servlen: ::size_t, - flags: ::c_int) -> ::c_int; - #[cfg_attr(target_os = "freebsd", link_name = "kevent@FBSD_1.0")] - pub fn kevent(kq: ::c_int, - changelist: *const ::kevent, - nchanges: ::c_int, - eventlist: *mut ::kevent, - nevents: ::c_int, - timeout: *const ::timespec) -> ::c_int; pub fn mincore(addr: *const ::c_void, len: ::size_t, vec: *mut ::c_char) -> ::c_int; - pub fn pwritev(fd: ::c_int, - iov: *const ::iovec, - iovcnt: ::c_int, - offset: ::off_t) -> ::ssize_t; + pub fn newlocale(mask: ::c_int, + locale: *const ::c_char, + base: ::locale_t) -> ::locale_t; + pub fn nl_langinfo_l(item: ::nl_item, locale: ::locale_t) -> *mut ::c_char; + pub fn pipe2(fds: *mut ::c_int, flags: ::c_int) -> ::c_int; + pub fn ppoll(fds: *mut ::pollfd, + nfds: ::nfds_t, + timeout: *const ::timespec, + sigmask: *const sigset_t) -> ::c_int; pub fn preadv(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int, offset: ::off_t) -> ::ssize_t; - pub fn sysctlnametomib(name: *const ::c_char, - mibp: *mut ::c_int, - sizep: *mut ::size_t) - -> ::c_int; - pub fn shm_open(name: *const ::c_char, oflag: ::c_int, mode: ::mode_t) - -> ::c_int; - pub fn sysctl(name: *const ::c_int, - namelen: ::c_uint, - oldp: *mut ::c_void, - oldlenp: *mut ::size_t, - newp: *const ::c_void, - newlen: ::size_t) - -> ::c_int; - pub fn sysctlbyname(name: *const ::c_char, - oldp: *mut ::c_void, - oldlenp: *mut ::size_t, - newp: *const ::c_void, - newlen: ::size_t) - -> ::c_int; + pub fn pthread_attr_get_np(tid: ::pthread_t, + attr: *mut ::pthread_attr_t) -> ::c_int; + pub fn pthread_attr_getguardsize(attr: *const ::pthread_attr_t, + guardsize: *mut ::size_t) -> ::c_int; + pub fn pthread_attr_getstack(attr: *const ::pthread_attr_t, + stackaddr: *mut *mut ::c_void, + stacksize: *mut ::size_t) -> ::c_int; + pub fn pthread_condattr_getclock(attr: *const pthread_condattr_t, + clock_id: *mut clockid_t) -> ::c_int; + pub fn pthread_condattr_getpshared(attr: *const pthread_condattr_t, + pshared: *mut ::c_int) -> ::c_int; + pub fn pthread_condattr_setclock(attr: *mut pthread_condattr_t, + clock_id: ::clockid_t) -> ::c_int; + pub fn pthread_condattr_setpshared(attr: *mut pthread_condattr_t, + pshared: ::c_int) -> ::c_int; + pub fn pthread_mutex_timedlock(lock: *mut pthread_mutex_t, + abstime: *const ::timespec) -> ::c_int; + pub fn pthread_mutexattr_getpshared(attr: *const pthread_mutexattr_t, + pshared: *mut ::c_int) -> ::c_int; + pub fn pthread_mutexattr_setpshared(attr: *mut pthread_mutexattr_t, + pshared: ::c_int) -> ::c_int; + pub fn pthread_rwlockattr_getpshared(attr: *const pthread_rwlockattr_t, + val: *mut ::c_int) -> ::c_int; + pub fn pthread_rwlockattr_setpshared(attr: *mut pthread_rwlockattr_t, + val: ::c_int) -> ::c_int; + pub fn pthread_set_name_np(tid: ::pthread_t, name: *const ::c_char); + pub fn ptrace(request: ::c_int, + pid: ::pid_t, + addr: *mut ::c_char, + data: ::c_int) -> ::c_int; + pub fn pututxline(ut: *const utmpx) -> *mut utmpx; + pub fn pwritev(fd: ::c_int, + iov: *const ::iovec, + iovcnt: ::c_int, + offset: ::off_t) -> ::ssize_t; + pub fn querylocale(mask: ::c_int, loc: ::locale_t) -> *const ::c_char; + pub fn rtprio(function: ::c_int, pid: ::pid_t, rtp: *mut rtprio) -> ::c_int; + pub fn sched_getscheduler(pid: ::pid_t) -> ::c_int; pub fn sched_setscheduler(pid: ::pid_t, policy: ::c_int, param: *const ::sched_param) -> ::c_int; - pub fn sched_getscheduler(pid: ::pid_t) -> ::c_int; - pub fn memrchr(cx: *const ::c_void, - c: ::c_int, - n: ::size_t) -> *mut ::c_void; + pub fn sem_getvalue(sem: *mut sem_t, + sval: *mut ::c_int) -> ::c_int; + pub fn sem_timedwait(sem: *mut sem_t, + abstime: *const ::timespec) -> ::c_int; pub fn sendfile(fd: ::c_int, s: ::c_int, offset: ::off_t, @@ -1131,11 +1197,44 @@ hdtr: *mut ::sf_hdtr, sbytes: *mut ::off_t, flags: ::c_int) -> ::c_int; + pub fn setdomainname(name: *const ::c_char, len: ::c_int) -> ::c_int; + pub fn sethostname(name: *const ::c_char, len: ::c_int) -> ::c_int; + pub fn setpriority(which: ::c_int, who: ::c_int, prio: ::c_int) -> ::c_int; + pub fn setresgid(rgid: ::gid_t, egid: ::gid_t, sgid: ::gid_t) -> ::c_int; + pub fn setresuid(ruid: ::uid_t, euid: ::uid_t, suid: ::uid_t) -> ::c_int; + pub fn settimeofday(tv: *const ::timeval, tz: *const ::timezone) -> ::c_int; + pub fn setutxent(); + pub fn shm_open(name: *const ::c_char, oflag: ::c_int, mode: ::mode_t) + -> ::c_int; pub fn sigtimedwait(set: *const sigset_t, info: *mut siginfo_t, timeout: *const ::timespec) -> ::c_int; pub fn sigwaitinfo(set: *const sigset_t, info: *mut siginfo_t) -> ::c_int; + pub fn sysctl(name: *const ::c_int, + namelen: ::c_uint, + oldp: *mut ::c_void, + oldlenp: *mut ::size_t, + newp: *const ::c_void, + newlen: ::size_t) + -> ::c_int; + pub fn sysctlbyname(name: *const ::c_char, + oldp: *mut ::c_void, + oldlenp: *mut ::size_t, + newp: *const ::c_void, + newlen: ::size_t) + -> ::c_int; + pub fn sysctlnametomib(name: *const ::c_char, + mibp: *mut ::c_int, + sizep: *mut ::size_t) + -> ::c_int; + pub fn uselocale(loc: ::locale_t) -> ::locale_t; + pub fn utimensat(dirfd: ::c_int, path: *const ::c_char, + times: *const ::timespec, flag: ::c_int) -> ::c_int; +} + +#[link(name = "util")] +extern { pub fn openpty(amaster: *mut ::c_int, aslave: *mut ::c_int, name: *mut ::c_char, @@ -1145,63 +1244,6 @@ name: *mut ::c_char, termp: *mut termios, winp: *mut ::winsize) -> ::pid_t; - pub fn nl_langinfo_l(item: ::nl_item, locale: ::locale_t) -> *mut ::c_char; - pub fn duplocale(base: ::locale_t) -> ::locale_t; - pub fn newlocale(mask: ::c_int, - locale: *const ::c_char, - base: ::locale_t) -> ::locale_t; - pub fn uselocale(loc: ::locale_t) -> ::locale_t; - pub fn querylocale(mask: ::c_int, loc: ::locale_t) -> *const ::c_char; - pub fn accept4(s: ::c_int, addr: *mut ::sockaddr, - addrlen: *mut ::socklen_t, flags: ::c_int) -> ::c_int; - pub fn pthread_set_name_np(tid: ::pthread_t, name: *const ::c_char); - pub fn pthread_attr_get_np(tid: ::pthread_t, - attr: *mut ::pthread_attr_t) -> ::c_int; - pub fn pthread_attr_getguardsize(attr: *const ::pthread_attr_t, - guardsize: *mut ::size_t) -> ::c_int; - pub fn pthread_attr_getstack(attr: *const ::pthread_attr_t, - stackaddr: *mut *mut ::c_void, - stacksize: *mut ::size_t) -> ::c_int; - pub fn pthread_condattr_setpshared(attr: *mut pthread_condattr_t, - pshared: ::c_int) -> ::c_int; - pub fn pthread_condattr_getpshared(attr: *const pthread_condattr_t, - pshared: *mut ::c_int) -> ::c_int; - pub fn pthread_mutexattr_setpshared(attr: *mut pthread_mutexattr_t, - pshared: ::c_int) -> ::c_int; - pub fn pthread_mutexattr_getpshared(attr: *const pthread_mutexattr_t, - pshared: *mut ::c_int) -> ::c_int; - pub fn pthread_rwlockattr_getpshared(attr: *const pthread_rwlockattr_t, - val: *mut ::c_int) -> ::c_int; - pub fn pthread_rwlockattr_setpshared(attr: *mut pthread_rwlockattr_t, - val: ::c_int) -> ::c_int; - pub fn getpriority(which: ::c_int, who: ::c_int) -> ::c_int; - pub fn setpriority(which: ::c_int, who: ::c_int, prio: ::c_int) -> ::c_int; - pub fn rtprio(function: ::c_int, pid: ::pid_t, rtp: *mut rtprio) -> ::c_int; - - #[cfg_attr(target_os = "freebsd", link_name = "mknodat@FBSD_1.1")] - pub fn mknodat(dirfd: ::c_int, pathname: *const ::c_char, - mode: ::mode_t, dev: dev_t) -> ::c_int; - pub fn mkfifoat(dirfd: ::c_int, pathname: *const ::c_char, - mode: ::mode_t) -> ::c_int; - pub fn pthread_condattr_getclock(attr: *const pthread_condattr_t, - clock_id: *mut clockid_t) -> ::c_int; - pub fn pthread_condattr_setclock(attr: *mut pthread_condattr_t, - clock_id: ::clockid_t) -> ::c_int; - pub fn sethostname(name: *const ::c_char, len: ::c_int) -> ::c_int; - pub fn sem_timedwait(sem: *mut sem_t, - abstime: *const ::timespec) -> ::c_int; - pub fn sem_getvalue(sem: *mut sem_t, - sval: *mut ::c_int) -> ::c_int; - pub fn pthread_mutex_timedlock(lock: *mut pthread_mutex_t, - abstime: *const ::timespec) -> ::c_int; - pub fn pipe2(fds: *mut ::c_int, flags: ::c_int) -> ::c_int; - pub fn ppoll(fds: *mut ::pollfd, - nfds: ::nfds_t, - timeout: *const ::timespec, - sigmask: *const sigset_t) -> ::c_int; - pub fn settimeofday(tv: *const ::timeval, tz: *const ::timezone) -> ::c_int; - pub fn getdomainname(name: *mut ::c_char, len: ::c_int) -> ::c_int; - pub fn setdomainname(name: *const ::c_char, len: ::c_int) -> ::c_int; } cfg_if! { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -179,6 +179,7 @@ pub const SIG_BLOCK: ::c_int = 0x1; pub const SIG_UNBLOCK: ::c_int = 0x2; +pub const IP_TOS: ::c_int = 3; pub const IP_MULTICAST_IF: ::c_int = 9; pub const IP_MULTICAST_TTL: ::c_int = 10; pub const IP_MULTICAST_LOOP: ::c_int = 11; @@ -189,6 +190,12 @@ pub const IPV6_MULTICAST_LOOP: ::c_int = 11; pub const IPV6_V6ONLY: ::c_int = 27; +pub const IPTOS_ECN_NOTECT: u8 = 0x00; +pub const IPTOS_ECN_MASK: u8 = 0x03; +pub const IPTOS_ECN_ECT1: u8 = 0x01; +pub const IPTOS_ECN_ECT0: u8 = 0x02; +pub const IPTOS_ECN_CE: u8 = 0x03; + pub const ST_RDONLY: ::c_ulong = 1; pub const SCM_RIGHTS: ::c_int = 0x01; @@ -215,6 +222,10 @@ pub const F_GETOWN: ::c_int = 5; pub const F_SETOWN: ::c_int = 6; +pub const F_RDLCK: ::c_short = 1; +pub const F_UNLCK: ::c_short = 2; +pub const F_WRLCK: ::c_short = 3; + pub const MNT_FORCE: ::c_int = 0x80000; pub const Q_SYNC: ::c_int = 0x600; @@ -312,6 +323,7 @@ pub const LOG_FTP: ::c_int = 11 << 3; pub const LOG_PERROR: ::c_int = 0x20; +pub const TCP_NODELAY: ::c_int = 1; pub const TCP_MAXSEG: ::c_int = 2; pub const PIPE_BUF: usize = 512; @@ -328,6 +340,43 @@ pub const POLLWRBAND: ::c_short = 0x100; f! { + pub fn CMSG_FIRSTHDR(mhdr: *const msghdr) -> *mut cmsghdr { + if (*mhdr).msg_controllen as usize >= mem::size_of::<cmsghdr>() { + (*mhdr).msg_control as *mut cmsghdr + } else { + 0 as *mut cmsghdr + } + } + + pub fn CMSG_NXTHDR(mhdr: *const msghdr, + cmsg: *const cmsghdr) -> *mut cmsghdr { + if cmsg.is_null() { + return CMSG_FIRSTHDR(mhdr); + }; + let pad = mem::align_of::<cmsghdr>() - 1; + let next = cmsg as usize + (*cmsg).cmsg_len as usize + pad & !pad; + let max = (*mhdr).msg_control as usize + + (*mhdr).msg_controllen as usize; + if next < max { + next as *mut cmsghdr + } else { + 0 as *mut cmsghdr + } + } + + pub fn CMSG_DATA(cmsg: *const cmsghdr) -> *mut ::c_uchar { + cmsg.offset(1) as *mut ::c_uchar + } + + pub fn CMSG_SPACE(length: ::c_uint) -> ::c_uint { + let pad = mem::align_of::<cmsghdr>() as ::c_uint - 1; + mem::size_of::<cmsghdr>() as ::c_uint + ((length + pad) & !pad) + } + + pub fn CMSG_LEN(length: ::c_uint) -> ::c_uint { + mem::size_of::<cmsghdr>() as ::c_uint + length + } + pub fn FD_CLR(fd: ::c_int, set: *mut fd_set) -> () { let bits = mem::size_of_val(&(*set).fds_bits[0]) * 8; let fd = fd as usize; @@ -376,6 +425,12 @@ } extern { + pub fn abs(i: ::c_int) -> ::c_int; + pub fn atof(s: *const ::c_char) -> ::c_double; + pub fn labs(i: ::c_long) -> ::c_long; + pub fn rand() -> ::c_int; + pub fn srand(seed: ::c_uint); + pub fn getifaddrs(ifap: *mut *mut ::ifaddrs) -> ::c_int; pub fn freeifaddrs(ifa: *mut ::ifaddrs); pub fn setgroups(ngroups: ::c_int, @@ -444,6 +499,7 @@ flags: ::c_int, addr: *mut ::sockaddr, addrlen: *mut ::socklen_t) -> ::ssize_t; pub fn mkstemps(template: *mut ::c_char, suffixlen: ::c_int) -> ::c_int; + #[cfg_attr(target_os = "netbsd", link_name = "__futimes50")] pub fn futimes(fd: ::c_int, times: *const ::timeval) -> ::c_int; pub fn nl_langinfo(item: ::nl_item) -> *mut ::c_char; @@ -538,6 +594,7 @@ attr: *const ::pthread_attr_t, f: extern fn(*mut ::c_void) -> *mut ::c_void, value: *mut ::c_void) -> ::c_int; + pub fn acct(filename: *const ::c_char) -> ::c_int; } cfg_if! { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -314,6 +314,17 @@ pub const PTHREAD_CREATE_JOINABLE : ::c_int = 0; pub const PTHREAD_CREATE_DETACHED : ::c_int = 1; +pub const PT_TRACE_ME: ::c_int = 0; +pub const PT_READ_I: ::c_int = 1; +pub const PT_READ_D: ::c_int = 2; +pub const PT_WRITE_I: ::c_int = 4; +pub const PT_WRITE_D: ::c_int = 5; +pub const PT_CONTINUE: ::c_int = 7; +pub const PT_KILL: ::c_int = 8; +pub const PT_ATTACH: ::c_int = 9; +pub const PT_DETACH: ::c_int = 10; +pub const PT_IO: ::c_int = 11; + // http://man.openbsd.org/OpenBSD-current/man2/clock_getres.2 // The man page says clock_gettime(3) can accept various values as clockid_t but // http://fxr.watson.org/fxr/source/kern/kern_time.c?v=OPENBSD;im=excerpts#L161 @@ -419,8 +430,8 @@ pub const IP_DROP_MEMBERSHIP: ::c_int = 13; pub const IPV6_RECVPKTINFO: ::c_int = 36; pub const IPV6_PKTINFO: ::c_int = 46; - -pub const TCP_NODELAY: ::c_int = 0x01; +pub const IPV6_RECVTCLASS: ::c_int = 57; +pub const IPV6_TCLASS: ::c_int = 61; pub const SOL_SOCKET: ::c_int = 0xffff; pub const SO_DEBUG: ::c_int = 0x01; @@ -569,6 +580,19 @@ pub const TIOCM_CD: ::c_int = TIOCM_CAR; pub const TIOCM_RI: ::c_int = TIOCM_RNG; +// Flags for chflags(2) +pub const UF_SETTABLE: ::c_ulong = 0x0000ffff; +pub const UF_NODUMP: ::c_ulong = 0x00000001; +pub const UF_IMMUTABLE: ::c_ulong = 0x00000002; +pub const UF_APPEND: ::c_ulong = 0x00000004; +pub const UF_OPAQUE: ::c_ulong = 0x00000008; +pub const SF_SETTABLE: ::c_ulong = 0xffff0000; +pub const SF_ARCHIVED: ::c_ulong = 0x00010000; +pub const SF_IMMUTABLE: ::c_ulong = 0x00020000; +pub const SF_APPEND: ::c_ulong = 0x00040000; + +pub const TIMER_ABSTIME: ::c_int = 1; + f! { pub fn WSTOPSIG(status: ::c_int) -> ::c_int { status >> 8 diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/aarch64.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/aarch64.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/aarch64.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/aarch64.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,11 @@ +use PT_FIRSTMACH; + +pub type c_long = i64; +pub type c_ulong = u64; +pub type c_char = u8; +pub type __cpu_simple_lock_nv_t = ::c_uchar; + +pub const PT_GETREGS: ::c_int = PT_FIRSTMACH + 0; +pub const PT_SETREGS: ::c_int = PT_FIRSTMACH + 1; +pub const PT_GETFPREGS: ::c_int = PT_FIRSTMACH + 2; +pub const PT_SETFPREGS: ::c_int = PT_FIRSTMACH + 3; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/arm.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/arm.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/arm.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/arm.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,11 @@ +use PT_FIRSTMACH; + +pub type c_long = i32; +pub type c_ulong = u32; +pub type c_char = u8; +pub type __cpu_simple_lock_nv_t = ::c_int; + +pub const PT_GETREGS: ::c_int = PT_FIRSTMACH + 1; +pub const PT_SETREGS: ::c_int = PT_FIRSTMACH + 2; +pub const PT_GETFPREGS: ::c_int = PT_FIRSTMACH + 3; +pub const PT_SETFPREGS: ::c_int = PT_FIRSTMACH + 4; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -1,6 +1,5 @@ use dox::mem; -pub type c_char = i8; pub type clock_t = ::c_uint; pub type suseconds_t = ::c_int; pub type dev_t = u64; @@ -9,6 +8,7 @@ pub type fsfilcnt_t = ::uint64_t; pub type idtype_t = ::c_int; pub type mqd_t = ::c_int; +type __pthread_spin_t = __cpu_simple_lock_nv_t; s! { pub struct aiocb { @@ -161,9 +161,14 @@ pub struct pthread_mutex_t { ptm_magic: ::c_uint, - ptm_errorcheck: ::c_uchar, + ptm_errorcheck: __pthread_spin_t, + #[cfg(any(target_arch = "sparc", target_arch = "sparc64", + target_arch = "x86", target_arch = "x86_64"))] ptm_pad1: [u8; 3], - ptm_interlock: ::c_uchar, + // actually a union with a non-unused, 0-initialized field + ptm_unused: __pthread_spin_t, + #[cfg(any(target_arch = "sparc", target_arch = "sparc64", + target_arch = "x86", target_arch = "x86_64"))] ptm_pad2: [u8; 3], ptm_owner: ::pthread_t, ptm_waiters: *mut u8, @@ -183,7 +188,7 @@ pub struct pthread_cond_t { ptc_magic: ::c_uint, - ptc_lock: ::c_uchar, + ptc_lock: __pthread_spin_t, ptc_waiters_first: *mut u8, ptc_waiters_last: *mut u8, ptc_mutex: *mut ::pthread_mutex_t, @@ -197,7 +202,7 @@ pub struct pthread_rwlock_t { ptr_magic: ::c_uint, - ptr_interlock: ::c_uchar, + ptr_interlock: __pthread_spin_t, ptr_rblocked_first: *mut u8, ptr_rblocked_last: *mut u8, ptr_wblocked_first: *mut u8, @@ -335,6 +340,9 @@ pub const AT_SYMLINK_FOLLOW: ::c_int = 0x400; pub const AT_REMOVEDIR: ::c_int = 0x800; +pub const EXTATTR_NAMESPACE_USER: ::c_int = 1; +pub const EXTATTR_NAMESPACE_SYSTEM: ::c_int = 2; + pub const LC_COLLATE_MASK: ::c_int = (1 << ::LC_COLLATE); pub const LC_CTYPE_MASK: ::c_int = (1 << ::LC_CTYPE); pub const LC_MONETARY_MASK: ::c_int = (1 << ::LC_MONETARY); @@ -385,6 +393,9 @@ pub const F_SETNOSIGPIPE: ::c_int = 14; pub const F_MAXFD: ::c_int = 11; +pub const IP_RECVDSTADDR: ::c_int = 7; +pub const IP_SENDSRCADDR: ::c_int = IP_RECVDSTADDR; +pub const IP_RECVIF: ::c_int = 20; pub const IP_PKTINFO: ::c_int = 25; pub const IP_RECVPKTINFO: ::c_int = 26; pub const IPV6_JOIN_GROUP: ::c_int = 12; @@ -394,6 +405,9 @@ pub const TCP_KEEPINTVL: ::c_int = 5; pub const TCP_KEEPCNT: ::c_int = 6; pub const TCP_KEEPINIT: ::c_int = 7; +pub const TCP_INFO: ::c_int = 9; +pub const TCP_MD5SIG: ::c_int = 0x10; +pub const TCP_CONGCTL: ::c_int = 0x20; pub const SOCK_CONN_DGRAM: ::c_int = 6; pub const SOCK_DCCP: ::c_int = SOCK_CONN_DGRAM; @@ -696,14 +710,19 @@ pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = pthread_mutex_t { ptm_magic: 0x33330003, ptm_errorcheck: 0, - ptm_interlock: 0, - ptm_waiters: 0 as *mut _, - ptm_owner: 0, + #[cfg(any(target_arch = "sparc", target_arch = "sparc64", + target_arch = "x86", target_arch = "x86_64"))] ptm_pad1: [0; 3], + ptm_unused: 0, + #[cfg(any(target_arch = "sparc", target_arch = "sparc64", + target_arch = "x86", target_arch = "x86_64"))] ptm_pad2: [0; 3], + ptm_waiters: 0 as *mut _, + ptm_owner: 0, ptm_recursed: 0, ptm_spare2: 0 as *mut _, }; + pub const PTHREAD_COND_INITIALIZER: pthread_cond_t = pthread_cond_t { ptc_magic: 0x55550005, ptc_lock: 0, @@ -970,6 +989,20 @@ pub const SIGSTKSZ : ::size_t = 40960; +pub const PT_DUMPCORE: ::c_int = 12; +pub const PT_LWPINFO: ::c_int = 13; +pub const PT_SYSCALL: ::c_int = 14; +pub const PT_SYSCALLEMU: ::c_int = 15; +pub const PT_SET_EVENT_MASK: ::c_int = 16; +pub const PT_GET_EVENT_MASK: ::c_int = 17; +pub const PT_GET_PROCESS_STATE: ::c_int = 18; +pub const PT_FIRSTMACH: ::c_int = 32; + +// Flags for chflags(2) +pub const SF_SNAPSHOT: ::c_ulong = 0x00200000; +pub const SF_LOG: ::c_ulong = 0x00400000; +pub const SF_SNAPINVAL: ::c_ulong = 0x00800000; + // dirfd() is a macro on netbsd to access // the first field of the struct where dirp points to: // http://cvsweb.netbsd.org/bsdweb.cgi/src/include/dirent.h?rev=1.36 @@ -1005,6 +1038,55 @@ pub fn lio_listio(mode: ::c_int, aiocb_list: *const *mut aiocb, nitems: ::c_int, sevp: *mut sigevent) -> ::c_int; + pub fn chflags(path: *const ::c_char, flags: ::c_ulong) -> ::c_int; + pub fn fchflags(fd: ::c_int, flags: ::c_ulong) -> ::c_int; + pub fn lchflags(path: *const ::c_char, flags: ::c_ulong) -> ::c_int; + + pub fn extattr_delete_fd(fd: ::c_int, + attrnamespace: ::c_int, + attrname: *const ::c_char) -> ::c_int; + pub fn extattr_delete_file(path: *const ::c_char, + attrnamespace: ::c_int, + attrname: *const ::c_char) -> ::c_int; + pub fn extattr_delete_link(path: *const ::c_char, + attrnamespace: ::c_int, + attrname: *const ::c_char) -> ::c_int; + pub fn extattr_get_fd(fd: ::c_int, + attrnamespace: ::c_int, + attrname: *const ::c_char, + data: *mut ::c_void, + nbytes: ::size_t) -> ::ssize_t; + pub fn extattr_get_file(path: *const ::c_char, + attrnamespace: ::c_int, + attrname: *const ::c_char, + data: *mut ::c_void, + nbytes: ::size_t) -> ::ssize_t; + pub fn extattr_get_link(path: *const ::c_char, + attrnamespace: ::c_int, + attrname: *const ::c_char, + data: *mut ::c_void, + nbytes: ::size_t) -> ::ssize_t; + pub fn extattr_namespace_to_string(attrnamespace: ::c_int, + string: *mut *mut ::c_char) -> ::c_int; + pub fn extattr_set_fd(fd: ::c_int, + attrnamespace: ::c_int, + attrname: *const ::c_char, + data: *const ::c_void, + nbytes: ::size_t) -> ::c_int; + pub fn extattr_set_file(path: *const ::c_char, + attrnamespace: ::c_int, + attrname: *const ::c_char, + data: *const ::c_void, + nbytes: ::size_t) -> ::c_int; + pub fn extattr_set_link(path: *const ::c_char, + attrnamespace: ::c_int, + attrname: *const ::c_char, + data: *const ::c_void, + nbytes: ::size_t) -> ::c_int; + pub fn extattr_string_to_namespace(string: *const ::c_char, + attrnamespace: *mut ::c_int) -> ::c_int; + + #[link_name = "__lutimes50"] pub fn lutimes(file: *const ::c_char, times: *const ::timeval) -> ::c_int; pub fn getnameinfo(sa: *const ::sockaddr, salen: ::socklen_t, @@ -1056,11 +1138,13 @@ pub fn mq_setattr(mqd: ::mqd_t, newattr: *const ::mq_attr, oldattr: *mut ::mq_attr) -> ::c_int; + #[link_name = "__mq_timedreceive50"] pub fn mq_timedreceive(mqd: ::mqd_t, msg_ptr: *mut ::c_char, msg_len: ::size_t, msq_prio: *mut ::c_uint, abs_timeout: *const ::timespec) -> ::ssize_t; + #[link_name = "__mq_timedsend50"] pub fn mq_timedsend(mqd: ::mqd_t, msg_ptr: *const ::c_char, msg_len: ::size_t, @@ -1095,6 +1179,8 @@ base: ::locale_t) -> ::locale_t; #[link_name = "__settimeofday50"] pub fn settimeofday(tv: *const ::timeval, tz: *const ::c_void) -> ::c_int; + + pub fn dup3(src: ::c_int, dst: ::c_int, flags: ::c_int) -> ::c_int; } #[link(name = "util")] @@ -1110,5 +1196,26 @@ result: *mut *mut ::group) -> ::c_int; } -mod other; -pub use self::other::*; +cfg_if! { + if #[cfg(target_arch = "aarch64")] { + mod aarch64; + pub use self::aarch64::*; + } else if #[cfg(target_arch = "arm")] { + mod arm; + pub use self::arm::*; + } else if #[cfg(target_arch = "powerpc")] { + mod powerpc; + pub use self::powerpc::*; + } else if #[cfg(target_arch = "sparc64")] { + mod sparc64; + pub use self::sparc64::*; + } else if #[cfg(target_arch = "x86_64")] { + mod x86_64; + pub use self::x86_64::*; + } else if #[cfg(target_arch = "x86")] { + mod x86; + pub use self::x86::*; + } else { + // Unknown target_arch + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/other/b32/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/other/b32/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/other/b32/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/other/b32/mod.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -pub type c_long = i32; -pub type c_ulong = u32; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/other/b64/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/other/b64/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/other/b64/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/other/b64/mod.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -pub type c_long = i64; -pub type c_ulong = u64; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/other/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/other/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/other/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/other/mod.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -cfg_if! { - if #[cfg(any(target_arch = "sparc64", - target_arch = "x86_64"))] { - mod b64; - pub use self::b64::*; - } else if #[cfg(any(target_arch = "arm", - target_arch = "powerpc", - target_arch = "x86"))] { - mod b32; - pub use self::b32::*; - } else { - // Unknown target_arch - } -} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/powerpc.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/powerpc.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/powerpc.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/powerpc.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,10 @@ +use PT_FIRSTMACH; + +pub type c_long = i32; +pub type c_ulong = u32; +pub type c_char = u8; +pub type __cpu_simple_lock_nv_t = ::c_int; + +pub const PT_STEP: ::c_int = PT_FIRSTMACH + 0; +pub const PT_GETREGS: ::c_int = PT_FIRSTMACH + 1; +pub const PT_SETREGS: ::c_int = PT_FIRSTMACH + 2; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/sparc64.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/sparc64.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/sparc64.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/sparc64.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,4 @@ +pub type c_long = i64; +pub type c_ulong = u64; +pub type c_char = i8; +pub type __cpu_simple_lock_nv_t = ::c_uchar; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/x86_64.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/x86_64.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/x86_64.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/x86_64.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,12 @@ +use PT_FIRSTMACH; + +pub type c_long = i64; +pub type c_ulong = u64; +pub type c_char = i8; +pub type __cpu_simple_lock_nv_t = ::c_uchar; + +pub const PT_STEP: ::c_int = PT_FIRSTMACH + 0; +pub const PT_GETREGS: ::c_int = PT_FIRSTMACH + 1; +pub const PT_SETREGS: ::c_int = PT_FIRSTMACH + 2; +pub const PT_GETFPREGS: ::c_int = PT_FIRSTMACH + 3; +pub const PT_SETFPREGS: ::c_int = PT_FIRSTMACH + 4; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/x86.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/x86.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/x86.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/netbsd/x86.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,4 @@ +pub type c_long = i32; +pub type c_ulong = u32; +pub type c_char = i8; +pub type __cpu_simple_lock_nv_t = ::c_uchar; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/openbsdlike/bitrig/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/openbsdlike/bitrig/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/openbsdlike/bitrig/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/openbsdlike/bitrig/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -85,6 +85,8 @@ pub const SIGSTKSZ : ::size_t = 40960; +pub const PT_FIRSTMACH: ::c_int = 32; + extern { pub fn nl_langinfo_l(item: ::nl_item, locale: ::locale_t) -> *mut ::c_char; pub fn duplocale(base: ::locale_t) -> ::locale_t; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86_64.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86_64.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86_64.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86_64.rs 2019-01-04 19:47:54.000000000 +0000 @@ -1,2 +1,10 @@ +use PT_FIRSTMACH; + pub type c_long = i64; pub type c_ulong = u64; + +pub const PT_STEP: ::c_int = PT_FIRSTMACH + 0; +pub const PT_GETREGS: ::c_int = PT_FIRSTMACH + 1; +pub const PT_SETREGS: ::c_int = PT_FIRSTMACH + 2; +pub const PT_GETFPREGS: ::c_int = PT_FIRSTMACH + 3; +pub const PT_SETFPREGS: ::c_int = PT_FIRSTMACH + 4; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/openbsdlike/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/openbsdlike/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/openbsdlike/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/openbsdlike/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -14,6 +14,7 @@ pub type pthread_condattr_t = *mut ::c_void; pub type pthread_rwlock_t = *mut ::c_void; pub type pthread_rwlockattr_t = *mut ::c_void; +pub type caddr_t = *mut ::c_char; s! { pub struct dirent { @@ -318,6 +319,11 @@ pub const IP_RECVDSTADDR: ::c_int = 7; pub const IP_SENDSRCADDR: ::c_int = IP_RECVDSTADDR; +pub const IP_RECVIF: ::c_int = 30; + +// sys/netinet/in.h +pub const TCP_MD5SIG: ::c_int = 0x04; +pub const TCP_NOPUSH: ::c_int = 0x10; pub const AF_ECMA: ::c_int = 8; pub const AF_ROUTE: ::c_int = 17; @@ -663,7 +669,8 @@ pub const KERN_CONSBUFSIZE: ::c_int = 82; pub const KERN_CONSBUF: ::c_int = 83; pub const KERN_AUDIO: ::c_int = 84; -pub const KERN_MAXID: ::c_int = 85; +pub const KERN_CPUSTATS: ::c_int = 85; +pub const KERN_MAXID: ::c_int = 86; pub const KERN_PROC_ALL: ::c_int = 0; pub const KERN_PROC_PID: ::c_int = 1; pub const KERN_PROC_PGRP: ::c_int = 2; @@ -695,6 +702,8 @@ pub const SOCK_NONBLOCK: ::c_int = 0x4000; pub const SOCK_DNS: ::c_int = 0x1000; +pub const PTRACE_FORK: ::c_int = 0x0002; + pub const WCONTINUED: ::c_int = 8; f! { @@ -704,6 +713,10 @@ } extern { + pub fn chflags(path: *const ::c_char, flags: ::c_uint) -> ::c_int; + pub fn fchflags(fd: ::c_int, flags: ::c_uint) -> ::c_int; + pub fn chflagsat(fd: ::c_int, path: *const ::c_char, flags: ::c_uint, + atflag: ::c_int) -> ::c_int; pub fn dirfd(dirp: *mut ::DIR) -> ::c_int; pub fn getnameinfo(sa: *const ::sockaddr, salen: ::socklen_t, @@ -734,6 +747,10 @@ pub fn getentropy(buf: *mut ::c_void, buflen: ::size_t) -> ::c_int; pub fn setresgid(rgid: ::gid_t, egid: ::gid_t, sgid: ::gid_t) -> ::c_int; pub fn setresuid(ruid: ::uid_t, euid: ::uid_t, suid: ::uid_t) -> ::c_int; + pub fn ptrace(request: ::c_int, + pid: ::pid_t, + addr: caddr_t, + data: ::c_int) -> ::c_int; } cfg_if! { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/openbsdlike/openbsd/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/openbsdlike/openbsd/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/openbsdlike/openbsd/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/openbsdlike/openbsd/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -248,6 +248,8 @@ pub const SIGSTKSZ : ::size_t = 28672; +pub const PT_FIRSTMACH: ::c_int = 32; + extern { pub fn accept4(s: ::c_int, addr: *mut ::sockaddr, addrlen: *mut ::socklen_t, flags: ::c_int) -> ::c_int; @@ -261,6 +263,8 @@ pub fn statfs(path: *const ::c_char, buf: *mut statfs) -> ::c_int; pub fn fstatfs(fd: ::c_int, buf: *mut statfs) -> ::c_int; + + pub fn dup3(src: ::c_int, dst: ::c_int, flags: ::c_int) -> ::c_int; } cfg_if! { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86_64.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86_64.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86_64.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86_64.rs 2019-01-04 19:47:54.000000000 +0000 @@ -1,3 +1,11 @@ +use PT_FIRSTMACH; + pub type c_long = i64; pub type c_ulong = u64; pub type c_char = i8; + +pub const PT_STEP: ::c_int = PT_FIRSTMACH + 0; +pub const PT_GETREGS: ::c_int = PT_FIRSTMACH + 1; +pub const PT_SETREGS: ::c_int = PT_FIRSTMACH + 2; +pub const PT_GETFPREGS: ::c_int = PT_FIRSTMACH + 3; +pub const PT_SETFPREGS: ::c_int = PT_FIRSTMACH + 4; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/haiku/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/haiku/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/haiku/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/haiku/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -351,6 +351,10 @@ pub const F_SETLKW: ::c_int = 0x0100; pub const F_DUPFD_CLOEXEC: ::c_int = 0x0200; +pub const F_RDLCK: ::c_int = 0x0040; +pub const F_UNLCK: ::c_int = 0x0200; +pub const F_WRLCK: ::c_int = 0x0400; + pub const AT_FDCWD: ::c_int = -1; pub const AT_SYMLINK_NOFOLLOW: ::c_int = 0x01; pub const AT_SYMLINK_FOLLOW: ::c_int = 0x02; @@ -1082,6 +1086,14 @@ } } +extern { + pub fn abs(i: ::c_int) -> ::c_int; + pub fn atof(s: *const ::c_char) -> ::c_double; + pub fn labs(i: ::c_long) -> ::c_long; + pub fn rand() -> ::c_int; + pub fn srand(seed: ::c_uint); +} + #[link(name = "bsd")] extern { pub fn clock_gettime(clk_id: ::c_int, tp: *mut ::timespec) -> ::c_int; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/hermit/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/hermit/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/hermit/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/hermit/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -696,6 +696,12 @@ } extern { + pub fn abs(i: ::c_int) -> ::c_int; + pub fn atof(s: *const ::c_char) -> ::c_double; + pub fn labs(i: ::c_long) -> ::c_long; + pub fn rand() -> ::c_int; + pub fn srand(seed: ::c_uint); + pub fn bind(s: ::c_int, name: *const ::sockaddr, namelen: ::socklen_t) -> ::c_int; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -5,6 +5,34 @@ use dox::Option; +pub type int8_t = i8; +pub type int16_t = i16; +pub type int32_t = i32; +pub type int64_t = i64; +pub type uint8_t = u8; +pub type uint16_t = u16; +pub type uint32_t = u32; +pub type uint64_t = u64; + +pub type c_schar = i8; +pub type c_uchar = u8; +pub type c_short = i16; +pub type c_ushort = u16; +pub type c_int = i32; +pub type c_uint = u32; +pub type c_float = f32; +pub type c_double = f64; +pub type c_longlong = i64; +pub type c_ulonglong = u64; +pub type intmax_t = i64; +pub type uintmax_t = u64; + +pub type size_t = usize; +pub type ptrdiff_t = isize; +pub type intptr_t = isize; +pub type uintptr_t = usize; +pub type ssize_t = isize; + pub type pid_t = i32; pub type uid_t = u32; pub type gid_t = u32; @@ -188,6 +216,9 @@ } } +pub const INT_MIN: c_int = -2147483648; +pub const INT_MAX: c_int = 2147483647; + pub const SIG_DFL: sighandler_t = 0 as sighandler_t; pub const SIG_IGN: sighandler_t = 1 as sighandler_t; pub const SIG_ERR: sighandler_t = !0 as sighandler_t; @@ -287,17 +318,18 @@ // cargo build, don't pull in anything extra as the libstd dep // already pulls in all libs. } else if #[cfg(target_env = "musl")] { - #[cfg_attr(feature = "stdbuild", + #[cfg_attr(feature = "rustc-dep-of-std", link(name = "c", kind = "static", cfg(target_feature = "crt-static")))] - #[cfg_attr(feature = "stdbuild", + #[cfg_attr(feature = "rustc-dep-of-std", link(name = "c", cfg(not(target_feature = "crt-static"))))] extern {} } else if #[cfg(target_os = "emscripten")] { #[link(name = "c")] extern {} } else if #[cfg(all(target_os = "netbsd", - feature = "stdbuild", target_vendor = "rumprun"))] { + feature = "rustc-dep-of-std", + target_vendor = "rumprun"))] { // Since we don't use -nodefaultlibs on Rumprun, libc is always pulled // in automatically by the linker. We avoid passing it explicitly, as it // causes some versions of binutils to crash with an assertion failure. @@ -315,10 +347,6 @@ #[link(name = "root")] #[link(name = "network")] extern {} - } else if #[cfg(target_os = "fuchsia")] { - #[link(name = "c")] - #[link(name = "fdio")] - extern {} } else if #[cfg(target_env = "newlib")] { #[link(name = "c")] #[link(name = "m")] @@ -337,6 +365,138 @@ } } +pub enum FILE {} +pub enum fpos_t {} // TODO: fill this out with a struct + +extern { + pub fn isalnum(c: c_int) -> c_int; + pub fn isalpha(c: c_int) -> c_int; + pub fn iscntrl(c: c_int) -> c_int; + pub fn isdigit(c: c_int) -> c_int; + pub fn isgraph(c: c_int) -> c_int; + pub fn islower(c: c_int) -> c_int; + pub fn isprint(c: c_int) -> c_int; + pub fn ispunct(c: c_int) -> c_int; + pub fn isspace(c: c_int) -> c_int; + pub fn isupper(c: c_int) -> c_int; + pub fn isxdigit(c: c_int) -> c_int; + pub fn tolower(c: c_int) -> c_int; + pub fn toupper(c: c_int) -> c_int; + #[cfg_attr( + all(target_os = "macos", target_arch = "x86"), + link_name = "fopen$UNIX2003" + )] + pub fn fopen(filename: *const c_char, mode: *const c_char) -> *mut FILE; + #[cfg_attr( + all(target_os = "macos", target_arch = "x86"), + link_name = "freopen$UNIX2003" + )] + pub fn freopen(filename: *const c_char, mode: *const c_char, + file: *mut FILE) -> *mut FILE; + pub fn fflush(file: *mut FILE) -> c_int; + pub fn fclose(file: *mut FILE) -> c_int; + pub fn remove(filename: *const c_char) -> c_int; + pub fn rename(oldname: *const c_char, newname: *const c_char) -> c_int; + pub fn tmpfile() -> *mut FILE; + pub fn setvbuf(stream: *mut FILE, buffer: *mut c_char, mode: c_int, + size: size_t) -> c_int; + pub fn setbuf(stream: *mut FILE, buf: *mut c_char); + pub fn getchar() -> c_int; + pub fn putchar(c: c_int) -> c_int; + pub fn fgetc(stream: *mut FILE) -> c_int; + pub fn fgets(buf: *mut c_char, n: c_int, stream: *mut FILE) -> *mut c_char; + pub fn fputc(c: c_int, stream: *mut FILE) -> c_int; + #[cfg_attr( + all(target_os = "macos", target_arch = "x86"), + link_name = "fputs$UNIX2003" + )] + pub fn fputs(s: *const c_char, stream: *mut FILE) -> c_int; + pub fn puts(s: *const c_char) -> c_int; + pub fn ungetc(c: c_int, stream: *mut FILE) -> c_int; + pub fn fread(ptr: *mut c_void, size: size_t, nobj: size_t, + stream: *mut FILE) -> size_t; + #[cfg_attr( + all(target_os = "macos", target_arch = "x86"), + link_name = "fwrite$UNIX2003" + )] + pub fn fwrite(ptr: *const c_void, size: size_t, nobj: size_t, + stream: *mut FILE) -> size_t; + pub fn fseek(stream: *mut FILE, offset: c_long, whence: c_int) -> c_int; + pub fn ftell(stream: *mut FILE) -> c_long; + pub fn rewind(stream: *mut FILE); + #[cfg_attr(target_os = "netbsd", link_name = "__fgetpos50")] + pub fn fgetpos(stream: *mut FILE, ptr: *mut fpos_t) -> c_int; + #[cfg_attr(target_os = "netbsd", link_name = "__fsetpos50")] + pub fn fsetpos(stream: *mut FILE, ptr: *const fpos_t) -> c_int; + pub fn feof(stream: *mut FILE) -> c_int; + pub fn ferror(stream: *mut FILE) -> c_int; + pub fn perror(s: *const c_char); + pub fn atoi(s: *const c_char) -> c_int; + #[cfg_attr( + all(target_os = "macos", target_arch = "x86"), + link_name = "strtod$UNIX2003" + )] + pub fn strtod(s: *const c_char, endp: *mut *mut c_char) -> c_double; + pub fn strtol(s: *const c_char, endp: *mut *mut c_char, + base: c_int) -> c_long; + pub fn strtoul(s: *const c_char, endp: *mut *mut c_char, + base: c_int) -> c_ulong; + pub fn calloc(nobj: size_t, size: size_t) -> *mut c_void; + pub fn malloc(size: size_t) -> *mut c_void; + pub fn realloc(p: *mut c_void, size: size_t) -> *mut c_void; + pub fn free(p: *mut c_void); + pub fn abort() -> !; + pub fn exit(status: c_int) -> !; + pub fn _exit(status: c_int) -> !; + pub fn atexit(cb: extern fn()) -> c_int; + #[cfg_attr( + all(target_os = "macos", target_arch = "x86"), + link_name = "system$UNIX2003" + )] + pub fn system(s: *const c_char) -> c_int; + pub fn getenv(s: *const c_char) -> *mut c_char; + + pub fn strcpy(dst: *mut c_char, src: *const c_char) -> *mut c_char; + pub fn strncpy(dst: *mut c_char, src: *const c_char, + n: size_t) -> *mut c_char; + pub fn strcat(s: *mut c_char, ct: *const c_char) -> *mut c_char; + pub fn strncat(s: *mut c_char, ct: *const c_char, + n: size_t) -> *mut c_char; + pub fn strcmp(cs: *const c_char, ct: *const c_char) -> c_int; + pub fn strncmp(cs: *const c_char, ct: *const c_char, n: size_t) -> c_int; + pub fn strcoll(cs: *const c_char, ct: *const c_char) -> c_int; + pub fn strchr(cs: *const c_char, c: c_int) -> *mut c_char; + pub fn strrchr(cs: *const c_char, c: c_int) -> *mut c_char; + pub fn strspn(cs: *const c_char, ct: *const c_char) -> size_t; + pub fn strcspn(cs: *const c_char, ct: *const c_char) -> size_t; + pub fn strdup(cs: *const c_char) -> *mut c_char; + pub fn strpbrk(cs: *const c_char, ct: *const c_char) -> *mut c_char; + pub fn strstr(cs: *const c_char, ct: *const c_char) -> *mut c_char; + pub fn strcasecmp(s1: *const c_char, s2: *const c_char) -> c_int; + pub fn strncasecmp(s1: *const c_char, s2: *const c_char, + n: size_t) -> c_int; + pub fn strlen(cs: *const c_char) -> size_t; + pub fn strnlen(cs: *const c_char, maxlen: size_t) -> size_t; + #[cfg_attr( + all(target_os = "macos", target_arch = "x86"), + link_name = "strerror$UNIX2003" + )] + pub fn strerror(n: c_int) -> *mut c_char; + pub fn strtok(s: *mut c_char, t: *const c_char) -> *mut c_char; + pub fn strxfrm(s: *mut c_char, ct: *const c_char, n: size_t) -> size_t; + pub fn wcslen(buf: *const wchar_t) -> size_t; + pub fn wcstombs(dest: *mut c_char, src: *const wchar_t, + n: size_t) -> ::size_t; + + pub fn memchr(cx: *const c_void, c: c_int, n: size_t) -> *mut c_void; + pub fn memcmp(cx: *const c_void, ct: *const c_void, n: size_t) -> c_int; + pub fn memcpy(dest: *mut c_void, src: *const c_void, + n: size_t) -> *mut c_void; + pub fn memmove(dest: *mut c_void, src: *const c_void, + n: size_t) -> *mut c_void; + pub fn memset(dest: *mut c_void, c: c_int, n: size_t) -> *mut c_void; +} + extern { #[cfg_attr(target_os = "netbsd", link_name = "__getpwnam50")] pub fn getpwnam(name: *const ::c_char) -> *mut passwd; @@ -551,6 +711,7 @@ -> ::ssize_t; pub fn rmdir(path: *const c_char) -> ::c_int; pub fn seteuid(uid: uid_t) -> ::c_int; + pub fn setegid(gid: gid_t) -> ::c_int; pub fn setgid(gid: gid_t) -> ::c_int; pub fn setpgid(pid: pid_t, pgid: pid_t) -> ::c_int; pub fn setsid() -> pid_t; @@ -641,6 +802,7 @@ pub fn symlink(path1: *const c_char, path2: *const c_char) -> ::c_int; + pub fn truncate(path: *const c_char, length: off_t) -> ::c_int; pub fn ftruncate(fd: ::c_int, length: off_t) -> ::c_int; pub fn signal(signum: ::c_int, handler: sighandler_t) -> sighandler_t; @@ -946,6 +1108,10 @@ pub fn posix_openpt(flags: ::c_int) -> ::c_int; pub fn ptsname(fd: ::c_int) -> *mut ::c_char; pub fn unlockpt(fd: ::c_int) -> ::c_int; + + pub fn strcasestr(cs: *const c_char, ct: *const c_char) -> *mut c_char; + pub fn getline (lineptr: *mut *mut c_char, n: *mut size_t, + stream: *mut FILE) -> ssize_t; } cfg_if! { @@ -957,8 +1123,7 @@ pub use self::newlib::*; } else if #[cfg(any(target_os = "linux", target_os = "android", - target_os = "emscripten", - target_os = "fuchsia"))] { + target_os = "emscripten"))] { mod notbsd; pub use self::notbsd::*; } else if #[cfg(any(target_os = "macos", @@ -983,3 +1148,21 @@ // Unknown target_os } } + +cfg_if! { + if #[cfg(core_cvoid)] { + pub use core::ffi::c_void; + } else { + // Use repr(u8) as LLVM expects `void*` to be the same as `i8*` to help + // enable more optimization opportunities around it recognizing things + // like malloc/free. + #[repr(u8)] + pub enum c_void { + // Two dummy variants so the #[repr] attribute can be used. + #[doc(hidden)] + __variant1, + #[doc(hidden)] + __variant2, + } + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/newlib/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/newlib/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/newlib/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/newlib/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -654,6 +654,12 @@ } extern { + pub fn abs(i: ::c_int) -> ::c_int; + pub fn atof(s: *const ::c_char) -> ::c_double; + pub fn labs(i: ::c_long) -> ::c_long; + pub fn rand() -> ::c_int; + pub fn srand(seed: ::c_uint); + pub fn bind(fd: ::c_int, addr: *const sockaddr, len: socklen_t) -> ::c_int; pub fn closesocket(sockfd: ::c_int) -> ::c_int; pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/android/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/android/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/android/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/android/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -177,7 +177,11 @@ pub ssi_stime: ::c_ulonglong, pub ssi_addr: ::c_ulonglong, pub ssi_addr_lsb: ::uint16_t, - _pad: [::uint8_t; 46], + _pad2: ::uint16_t, + pub ssi_syscall: ::int32_t, + pub ssi_call_addr: ::uint64_t, + pub ssi_arch: ::uint32_t, + _pad: [::uint8_t; 28], } pub struct ucred { @@ -662,6 +666,8 @@ pub const SO_PEEK_OFF: ::c_int = 42; pub const SO_BUSY_POLL: ::c_int = 46; +pub const IPTOS_ECN_NOTECT: u8 = 0x00; + pub const O_ACCMODE: ::c_int = 3; pub const O_APPEND: ::c_int = 1024; pub const O_CREAT: ::c_int = 64; @@ -744,6 +750,10 @@ pub const F_SETLK: ::c_int = 6; pub const F_SETLKW: ::c_int = 7; +pub const F_RDLCK: ::c_int = 0; +pub const F_WRLCK: ::c_int = 1; +pub const F_UNLCK: ::c_int = 2; + pub const TCGETS: ::c_int = 0x5401; pub const TCSETS: ::c_int = 0x5402; pub const TCSETSW: ::c_int = 0x5403; @@ -1048,6 +1058,7 @@ pub const MFD_CLOEXEC: ::c_uint = 0x0001; pub const MFD_ALLOW_SEALING: ::c_uint = 0x0002; +pub const MFD_HUGETLB: ::c_uint = 0x0004; // linux/netfilter.h pub const NF_DROP: ::c_int = 0; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/emscripten.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/emscripten.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/emscripten.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/emscripten.rs 2019-01-04 19:47:54.000000000 +0000 @@ -184,7 +184,12 @@ pub ssi_utime: ::uint64_t, pub ssi_stime: ::uint64_t, pub ssi_addr: ::uint64_t, - _pad: [::uint8_t; 48], + pub ssi_addr_lsb: ::uint16_t, + _pad2: ::uint16_t, + pub ssi_syscall: ::int32_t, + pub ssi_call_addr: ::uint64_t, + pub ssi_arch: ::uint32_t, + _pad: [::uint8_t; 28], } pub struct fsid_t { @@ -1568,6 +1573,12 @@ } extern { + pub fn abs(i: ::c_int) -> ::c_int; + pub fn atof(s: *const ::c_char) -> ::c_double; + pub fn labs(i: ::c_long) -> ::c_long; + pub fn rand() -> ::c_int; + pub fn srand(seed: ::c_uint); + pub fn setpwent(); pub fn endpwent(); pub fn getpwent() -> *mut passwd; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/mips/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/mips/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/mips/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/mips/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -397,8 +397,6 @@ pub const SO_TIMESTAMPNS: ::c_int = 35; pub const SCM_TIMESTAMPNS: ::c_int = SO_TIMESTAMPNS; pub const SO_MARK: ::c_int = 36; -pub const SO_TIMESTAMPING: ::c_int = 37; -pub const SCM_TIMESTAMPING: ::c_int = SO_TIMESTAMPING; pub const SO_RXQ_OVFL: ::c_int = 40; pub const SO_WIFI_STATUS: ::c_int = 41; pub const SCM_WIFI_STATUS: ::c_int = SO_WIFI_STATUS; @@ -539,6 +537,9 @@ pub const EFD_NONBLOCK: ::c_int = 0x80; +pub const F_RDLCK: ::c_int = 0; +pub const F_WRLCK: ::c_int = 1; +pub const F_UNLCK: ::c_int = 2; pub const F_GETLK: ::c_int = 14; pub const F_GETOWN: ::c_int = 23; pub const F_SETOWN: ::c_int = 24; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -33,6 +33,10 @@ pub type Elf64_Off = u64; pub type Elf64_Addr = u64; pub type Elf64_Xword = u64; +pub type Elf64_Sxword = i64; + +pub type Elf32_Section = u16; +pub type Elf64_Section = u16; pub enum fpos64_t {} // TODO: fill this out with a struct @@ -266,7 +270,12 @@ pub ssi_utime: ::uint64_t, pub ssi_stime: ::uint64_t, pub ssi_addr: ::uint64_t, - _pad: [::uint8_t; 48], + pub ssi_addr_lsb: ::uint16_t, + _pad2: ::uint16_t, + pub ssi_syscall: ::int32_t, + pub ssi_call_addr: ::uint64_t, + pub ssi_arch: ::uint32_t, + _pad: [::uint8_t; 28], } pub struct itimerspec { @@ -479,6 +488,58 @@ pub dlpi_tls_data: *mut ::c_void, } + pub struct Elf32_Ehdr { + pub e_ident: [::c_uchar; 16], + pub e_type: Elf32_Half, + pub e_machine: Elf32_Half, + pub e_version: Elf32_Word, + pub e_entry: Elf32_Addr, + pub e_phoff: Elf32_Off, + pub e_shoff: Elf32_Off, + pub e_flags: Elf32_Word, + pub e_ehsize: Elf32_Half, + pub e_phentsize: Elf32_Half, + pub e_phnum: Elf32_Half, + pub e_shentsize: Elf32_Half, + pub e_shnum: Elf32_Half, + pub e_shstrndx: Elf32_Half, + } + + pub struct Elf64_Ehdr { + pub e_ident: [::c_uchar; 16], + pub e_type: Elf64_Half, + pub e_machine: Elf64_Half, + pub e_version: Elf64_Word, + pub e_entry: Elf64_Addr, + pub e_phoff: Elf64_Off, + pub e_shoff: Elf64_Off, + pub e_flags: Elf64_Word, + pub e_ehsize: Elf64_Half, + pub e_phentsize: Elf64_Half, + pub e_phnum: Elf64_Half, + pub e_shentsize: Elf64_Half, + pub e_shnum: Elf64_Half, + pub e_shstrndx: Elf64_Half, + } + + pub struct Elf32_Sym { + pub st_name: Elf32_Word, + pub st_value: Elf32_Addr, + pub st_size: Elf32_Word, + pub st_info: ::c_uchar, + pub st_other: ::c_uchar, + pub st_shndx: Elf32_Section, + } + + pub struct Elf64_Sym { + pub st_name: Elf64_Word, + pub st_info: ::c_uchar, + pub st_other: ::c_uchar, + pub st_shndx: Elf64_Section, + pub st_value: Elf64_Addr, + pub st_size: Elf64_Xword, + } + pub struct Elf32_Phdr { pub p_type: Elf32_Word, pub p_offset: Elf32_Off, @@ -501,6 +562,45 @@ pub p_align: Elf64_Xword, } + pub struct Elf32_Shdr { + pub sh_name: Elf32_Word, + pub sh_type: Elf32_Word, + pub sh_flags: Elf32_Word, + pub sh_addr: Elf32_Addr, + pub sh_offset: Elf32_Off, + pub sh_size: Elf32_Word, + pub sh_link: Elf32_Word, + pub sh_info: Elf32_Word, + pub sh_addralign: Elf32_Word, + pub sh_entsize: Elf32_Word, + } + + pub struct Elf64_Shdr { + pub sh_name: Elf64_Word, + pub sh_type: Elf64_Word, + pub sh_flags: Elf64_Xword, + pub sh_addr: Elf64_Addr, + pub sh_offset: Elf64_Off, + pub sh_size: Elf64_Xword, + pub sh_link: Elf64_Word, + pub sh_info: Elf64_Word, + pub sh_addralign: Elf64_Xword, + pub sh_entsize: Elf64_Xword, + } + + pub struct Elf32_Chdr { + pub ch_type: Elf32_Word, + pub ch_size: Elf32_Word, + pub ch_addralign: Elf32_Word, + } + + pub struct Elf64_Chdr { + pub ch_type: Elf64_Word, + pub ch_reserved: Elf64_Word, + pub ch_size: Elf64_Xword, + pub ch_addralign: Elf64_Xword, + } + pub struct ucred { pub pid: ::pid_t, pub uid: ::uid_t, @@ -958,10 +1058,12 @@ pub const AF_MPLS: ::c_int = 28; pub const AF_NFC: ::c_int = 39; pub const AF_VSOCK: ::c_int = 40; +pub const AF_XDP: ::c_int = 44; pub const PF_IB: ::c_int = AF_IB; pub const PF_MPLS: ::c_int = AF_MPLS; pub const PF_NFC: ::c_int = AF_NFC; pub const PF_VSOCK: ::c_int = AF_VSOCK; +pub const PF_XDP: ::c_int = AF_XDP; // System V IPC pub const IPC_PRIVATE: ::key_t = 0; @@ -1218,6 +1320,7 @@ pub const MFD_CLOEXEC: ::c_uint = 0x0001; pub const MFD_ALLOW_SEALING: ::c_uint = 0x0002; +pub const MFD_HUGETLB: ::c_uint = 0x0004; // these are used in the p_type field of Elf32_Phdr and Elf64_Phdr, which has // the type Elf32Word and Elf64Word respectively. Luckily, both of those are u32 @@ -1509,6 +1612,8 @@ pub const IPTOS_TOS_MASK: u8 = 0x1E; pub const IPTOS_PREC_MASK: u8 = 0xE0; +pub const IPTOS_ECN_NOT_ECT: u8 = 0x00; + pub const RTF_UP: ::c_ushort = 0x0001; pub const RTF_GATEWAY: ::c_ushort = 0x0002; @@ -1572,10 +1677,25 @@ pub const ARPD_FLUSH: ::c_ushort = 0x03; pub const ATF_MAGIC: ::c_int = 0x80; +#[cfg(not(target_arch = "sparc64"))] +pub const SO_TIMESTAMPING: ::c_int = 37; +#[cfg(target_arch = "sparc64")] +pub const SO_TIMESTAMPING: ::c_int = 35; +pub const SCM_TIMESTAMPING: ::c_int = SO_TIMESTAMPING; + // linux/module.h pub const MODULE_INIT_IGNORE_MODVERSIONS: ::c_uint = 0x0001; pub const MODULE_INIT_IGNORE_VERMAGIC: ::c_uint = 0x0002; +// linux/net_tstamp.h +pub const SOF_TIMESTAMPING_TX_HARDWARE: ::c_uint = 1 << 0; +pub const SOF_TIMESTAMPING_TX_SOFTWARE: ::c_uint = 1 << 1; +pub const SOF_TIMESTAMPING_RX_HARDWARE: ::c_uint = 1 << 2; +pub const SOF_TIMESTAMPING_RX_SOFTWARE: ::c_uint = 1 << 3; +pub const SOF_TIMESTAMPING_SOFTWARE: ::c_uint = 1 << 4; +pub const SOF_TIMESTAMPING_SYS_HARDWARE: ::c_uint = 1 << 5; +pub const SOF_TIMESTAMPING_RAW_HARDWARE: ::c_uint = 1 << 6; + f! { pub fn CPU_ZERO(cpuset: &mut cpu_set_t) -> () { for slot in cpuset.bits.iter_mut() { @@ -1654,6 +1774,12 @@ } extern { + pub fn abs(i: ::c_int) -> ::c_int; + pub fn atof(s: *const ::c_char) -> ::c_double; + pub fn labs(i: ::c_long) -> ::c_long; + pub fn rand() -> ::c_int; + pub fn srand(seed: ::c_uint); + pub fn aio_read(aiocbp: *mut aiocb) -> ::c_int; pub fn aio_write(aiocbp: *mut aiocb) -> ::c_int; pub fn aio_fsync(op: ::c_int, aiocbp: *mut aiocb) -> ::c_int; @@ -1721,8 +1847,12 @@ pub fn ftello64(stream: *mut ::FILE) -> ::off64_t; pub fn fallocate(fd: ::c_int, mode: ::c_int, offset: ::off_t, len: ::off_t) -> ::c_int; + pub fn fallocate64(fd: ::c_int, mode: ::c_int, + offset: ::off64_t, len: ::off64_t) -> ::c_int; pub fn posix_fallocate(fd: ::c_int, offset: ::off_t, len: ::off_t) -> ::c_int; + pub fn posix_fallocate64(fd: ::c_int, offset: ::off64_t, + len: ::off64_t) -> ::c_int; pub fn readahead(fd: ::c_int, offset: ::off64_t, count: ::size_t) -> ::ssize_t; pub fn getxattr(path: *const c_char, name: *const c_char, @@ -2132,7 +2262,7 @@ } cfg_if! { - if #[cfg(any(target_env = "musl", target_os = "fuchsia"))] { + if #[cfg(target_env = "musl")] { mod musl; pub use self::musl::*; } else if #[cfg(any(target_arch = "mips", diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b32/arm.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b32/arm.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b32/arm.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b32/arm.rs 2019-01-04 19:47:54.000000000 +0000 @@ -467,6 +467,9 @@ pub const FIONREAD: ::c_int = 0x541B; pub const TIOCCONS: ::c_int = 0x541D; +pub const TIOCGRS485: ::c_int = 0x542E; +pub const TIOCSRS485: ::c_int = 0x542F; + pub const POLLWRNORM: ::c_short = 0x100; pub const POLLWRBAND: ::c_short = 0x200; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b32/mips.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b32/mips.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b32/mips.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b32/mips.rs 2019-01-04 19:47:54.000000000 +0000 @@ -478,6 +478,9 @@ pub const FIONREAD: ::c_int = 0x467F; pub const TIOCCONS: ::c_int = 0x80047478; +pub const TIOCGRS485: ::c_int = 0x4020542E; +pub const TIOCSRS485: ::c_int = 0xC020542F; + pub const POLLWRNORM: ::c_short = 0x4; pub const POLLWRBAND: ::c_short = 0x100; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b32/powerpc.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b32/powerpc.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b32/powerpc.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b32/powerpc.rs 2019-01-04 19:47:54.000000000 +0000 @@ -470,6 +470,9 @@ pub const FIONREAD: ::c_int = 0x4004667F; pub const TIOCCONS: ::c_int = 0x541D; +pub const TIOCGRS485: ::c_int = 0x542e; +pub const TIOCSRS485: ::c_int = 0x542f; + pub const POLLWRNORM: ::c_short = 0x100; pub const POLLWRBAND: ::c_short = 0x200; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b32/x86.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b32/x86.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b32/x86.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b32/x86.rs 2019-01-04 19:47:54.000000000 +0000 @@ -481,6 +481,9 @@ pub const FIONREAD: ::c_int = 0x541B; pub const TIOCCONS: ::c_int = 0x541D; +pub const TIOCGRS485: ::c_int = 0x542E; +pub const TIOCSRS485: ::c_int = 0x542F; + pub const POLLWRNORM: ::c_short = 0x100; pub const POLLWRBAND: ::c_short = 0x200; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b64/aarch64.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b64/aarch64.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b64/aarch64.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b64/aarch64.rs 2019-01-04 19:47:54.000000000 +0000 @@ -459,6 +459,9 @@ pub const FIONREAD: ::c_int = 0x541B; pub const TIOCCONS: ::c_int = 0x541D; +pub const TIOCGRS485: ::c_int = 0x542E; +pub const TIOCSRS485: ::c_int = 0x542F; + pub const TIOCM_LE: ::c_int = 0x001; pub const TIOCM_DTR: ::c_int = 0x002; pub const TIOCM_RTS: ::c_int = 0x004; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b64/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b64/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b64/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b64/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -92,16 +92,25 @@ pub msg_name: *mut ::c_void, pub msg_namelen: ::socklen_t, pub msg_iov: *mut ::iovec, + #[cfg(target_endian = "big")] + __pad1: ::c_int, pub msg_iovlen: ::c_int, + #[cfg(target_endian = "little")] __pad1: ::c_int, pub msg_control: *mut ::c_void, + #[cfg(target_endian = "big")] + __pad2: ::c_int, pub msg_controllen: ::socklen_t, - __pad2: ::socklen_t, + #[cfg(target_endian = "little")] + __pad2: ::c_int, pub msg_flags: ::c_int, } pub struct cmsghdr { + #[cfg(target_endian = "big")] + pub __pad1: ::c_int, pub cmsg_len: ::socklen_t, + #[cfg(target_endian = "little")] pub __pad1: ::c_int, pub cmsg_level: ::c_int, pub cmsg_type: ::c_int, diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b64/powerpc64.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b64/powerpc64.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b64/powerpc64.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/b64/powerpc64.rs 2019-01-04 19:47:54.000000000 +0000 @@ -435,8 +435,8 @@ pub const SYS_pwritev2: ::c_long = 381; pub const SYS_kexec_file_load: ::c_long = 382; -pub const FIOCLEX: ::c_ulong = 0x20006601; -pub const FIONBIO: ::c_ulong = 0x8004667e; +pub const FIOCLEX: ::c_int = 0x20006601; +pub const FIONBIO: ::c_int = 0x8004667e; pub const EDEADLK: ::c_int = 58; pub const EDEADLOCK: ::c_int = EDEADLK; pub const SO_PASSCRED: ::c_int = 20; @@ -452,49 +452,52 @@ pub const IEXTEN: ::tcflag_t = 0x00000400; pub const TOSTOP: ::tcflag_t = 0x00400000; pub const FLUSHO: ::tcflag_t = 0x00800000; -pub const TCGETS: ::c_ulong = 0x403c7413; -pub const TCSETS: ::c_ulong = 0x803c7414; -pub const TCSETSW: ::c_ulong = 0x803c7415; -pub const TCSETSF: ::c_ulong = 0x803c7416; -pub const TCGETA: ::c_ulong = 0x40147417; -pub const TCSETA: ::c_ulong = 0x80147418; -pub const TCSETAW: ::c_ulong = 0x80147419; -pub const TCSETAF: ::c_ulong = 0x8014741c; -pub const TCSBRK: ::c_ulong = 0x2000741d; -pub const TCXONC: ::c_ulong = 0x2000741e; -pub const TCFLSH: ::c_ulong = 0x2000741f; -pub const TIOCGSOFTCAR: ::c_ulong = 0x5419; -pub const TIOCSSOFTCAR: ::c_ulong = 0x541A; -pub const TIOCLINUX: ::c_ulong = 0x541C; -pub const TIOCGSERIAL: ::c_ulong = 0x541E; -pub const TIOCEXCL: ::c_ulong = 0x540C; -pub const TIOCNXCL: ::c_ulong = 0x540D; -pub const TIOCSCTTY: ::c_ulong = 0x540E; -pub const TIOCGPGRP: ::c_ulong = 0x40047477; -pub const TIOCSPGRP: ::c_ulong = 0x80047476; -pub const TIOCOUTQ: ::c_ulong = 0x40047473; -pub const TIOCGWINSZ: ::c_ulong = 0x40087468; -pub const TIOCSWINSZ: ::c_ulong = 0x80087467; -pub const TIOCMGET: ::c_ulong = 0x5415; -pub const TIOCMBIS: ::c_ulong = 0x5416; -pub const TIOCMBIC: ::c_ulong = 0x5417; -pub const TIOCMSET: ::c_ulong = 0x5418; -pub const FIONREAD: ::c_ulong = 0x4004667f; -pub const TIOCCONS: ::c_ulong = 0x541D; -pub const TIOCM_LE: ::c_ulong = 0x001; -pub const TIOCM_DTR: ::c_ulong = 0x002; -pub const TIOCM_RTS: ::c_ulong = 0x004; -pub const TIOCM_ST: ::c_ulong = 0x008; -pub const TIOCM_SR: ::c_ulong = 0x010; -pub const TIOCM_CTS: ::c_ulong = 0x020; -pub const TIOCM_CAR: ::c_ulong = 0x040; -pub const TIOCM_RNG: ::c_ulong = 0x080; -pub const TIOCM_DSR: ::c_ulong = 0x100; -pub const TIOCM_CD: ::c_ulong = TIOCM_CAR; -pub const TIOCM_RI: ::c_ulong = TIOCM_RNG; +pub const TCGETS: ::c_int = 0x403c7413; +pub const TCSETS: ::c_int = 0x803c7414; +pub const TCSETSW: ::c_int = 0x803c7415; +pub const TCSETSF: ::c_int = 0x803c7416; +pub const TCGETA: ::c_int = 0x40147417; +pub const TCSETA: ::c_int = 0x80147418; +pub const TCSETAW: ::c_int = 0x80147419; +pub const TCSETAF: ::c_int = 0x8014741c; +pub const TCSBRK: ::c_int = 0x2000741d; +pub const TCXONC: ::c_int = 0x2000741e; +pub const TCFLSH: ::c_int = 0x2000741f; +pub const TIOCGSOFTCAR: ::c_int = 0x5419; +pub const TIOCSSOFTCAR: ::c_int = 0x541A; +pub const TIOCLINUX: ::c_int = 0x541C; +pub const TIOCGSERIAL: ::c_int = 0x541E; +pub const TIOCEXCL: ::c_int = 0x540C; +pub const TIOCNXCL: ::c_int = 0x540D; +pub const TIOCSCTTY: ::c_int = 0x540E; +pub const TIOCGPGRP: ::c_int = 0x40047477; +pub const TIOCSPGRP: ::c_int = 0x80047476; +pub const TIOCOUTQ: ::c_int = 0x40047473; +pub const TIOCGWINSZ: ::c_int = 0x40087468; +pub const TIOCSWINSZ: ::c_int = 0x80087467; +pub const TIOCMGET: ::c_int = 0x5415; +pub const TIOCMBIS: ::c_int = 0x5416; +pub const TIOCMBIC: ::c_int = 0x5417; +pub const TIOCMSET: ::c_int = 0x5418; +pub const FIONREAD: ::c_int = 0x4004667f; +pub const TIOCCONS: ::c_int = 0x541D; +pub const TIOCM_LE: ::c_int = 0x001; +pub const TIOCM_DTR: ::c_int = 0x002; +pub const TIOCM_RTS: ::c_int = 0x004; +pub const TIOCM_ST: ::c_int = 0x008; +pub const TIOCM_SR: ::c_int = 0x010; +pub const TIOCM_CTS: ::c_int = 0x020; +pub const TIOCM_CAR: ::c_int = 0x040; +pub const TIOCM_RNG: ::c_int = 0x080; +pub const TIOCM_DSR: ::c_int = 0x100; +pub const TIOCM_CD: ::c_int = TIOCM_CAR; +pub const TIOCM_RI: ::c_int = TIOCM_RNG; + +pub const TIOCGRS485: ::c_int = 0x542E; +pub const TIOCSRS485: ::c_int = 0x542F; pub const RLIMIT_NLIMITS: ::c_int = 15; -pub const TIOCINQ: ::c_ulong = ::FIONREAD; +pub const TIOCINQ: ::c_int = ::FIONREAD; pub const MCL_CURRENT: ::c_int = 0x2000; pub const MCL_FUTURE: ::c_int = 0x4000; pub const CBAUD: ::tcflag_t = 0xff; @@ -568,5 +571,5 @@ pub const B4000000: ::speed_t = 0o00036; extern { - pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int; + pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int; } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/musl/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -121,6 +121,10 @@ pub const EPROTO: ::c_int = 71; pub const EDOTDOT: ::c_int = 73; +pub const F_RDLCK: ::c_int = 0; +pub const F_WRLCK: ::c_int = 1; +pub const F_UNLCK: ::c_int = 2; + pub const SA_NODEFER: ::c_int = 0x40000000; pub const SA_RESETHAND: ::c_int = 0x80000000; pub const SA_RESTART: ::c_int = 0x10000000; @@ -250,6 +254,13 @@ pub fn ptrace(request: ::c_int, ...) -> ::c_long; pub fn getpriority(which: ::c_int, who: ::id_t) -> ::c_int; pub fn setpriority(which: ::c_int, who: ::id_t, prio: ::c_int) -> ::c_int; + pub fn pthread_getaffinity_np(thread: ::pthread_t, + cpusetsize: ::size_t, + cpuset: *mut ::cpu_set_t) -> ::c_int; + pub fn pthread_setaffinity_np(thread: ::pthread_t, + cpusetsize: ::size_t, + cpuset: *const ::cpu_set_t) -> ::c_int; + pub fn sched_getcpu() -> ::c_int; } cfg_if! { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/other/b32/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/other/b32/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/other/b32/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/other/b32/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -251,6 +251,10 @@ pub const F_SETLK: ::c_int = 6; pub const F_SETLKW: ::c_int = 7; +pub const F_RDLCK: ::c_int = 0; +pub const F_WRLCK: ::c_int = 1; +pub const F_UNLCK: ::c_int = 2; + pub const SFD_NONBLOCK: ::c_int = 0x0800; pub const TIOCEXCL: ::c_ulong = 0x540C; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/other/b64/aarch64.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/other/b64/aarch64.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/other/b64/aarch64.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/other/b64/aarch64.rs 2019-01-04 19:47:54.000000000 +0000 @@ -284,8 +284,6 @@ pub const SO_TIMESTAMPNS: ::c_int = 35; pub const SCM_TIMESTAMPNS: ::c_int = SO_TIMESTAMPNS; pub const SO_MARK: ::c_int = 36; -pub const SO_TIMESTAMPING: ::c_int = 37; -pub const SCM_TIMESTAMPING: ::c_int = SO_TIMESTAMPING; pub const SO_PROTOCOL: ::c_int = 38; pub const SO_DOMAIN: ::c_int = 39; pub const SO_RXQ_OVFL: ::c_int = 40; @@ -340,6 +338,10 @@ pub const F_SETLK: ::c_int = 6; pub const F_SETLKW: ::c_int = 7; +pub const F_RDLCK: ::c_int = 0; +pub const F_WRLCK: ::c_int = 1; +pub const F_UNLCK: ::c_int = 2; + pub const SFD_NONBLOCK: ::c_int = 0x0800; pub const TIOCEXCL: ::c_ulong = 0x540C; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/other/b64/powerpc64.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/other/b64/powerpc64.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/other/b64/powerpc64.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/other/b64/powerpc64.rs 2019-01-04 19:47:54.000000000 +0000 @@ -271,8 +271,6 @@ pub const SO_TIMESTAMPNS: ::c_int = 35; pub const SCM_TIMESTAMPNS: ::c_int = SO_TIMESTAMPNS; pub const SO_MARK: ::c_int = 36; -pub const SO_TIMESTAMPING: ::c_int = 37; -pub const SCM_TIMESTAMPING: ::c_int = SO_TIMESTAMPING; pub const SO_PROTOCOL: ::c_int = 38; pub const SO_DOMAIN: ::c_int = 39; pub const SO_RXQ_OVFL: ::c_int = 40; @@ -327,6 +325,10 @@ pub const F_SETLK: ::c_int = 6; pub const F_SETLKW: ::c_int = 7; +pub const F_RDLCK: ::c_int = 0; +pub const F_WRLCK: ::c_int = 1; +pub const F_UNLCK: ::c_int = 2; + pub const SFD_NONBLOCK: ::c_int = 0x0800; pub const TIOCEXCL: ::c_ulong = 0x540C; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/other/b64/sparc64.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/other/b64/sparc64.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/other/b64/sparc64.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/other/b64/sparc64.rs 2019-01-04 19:47:54.000000000 +0000 @@ -247,6 +247,7 @@ pub const SOL_SOCKET: ::c_int = 0xffff; +pub const SO_PASSCRED: ::c_int = 2; pub const SO_REUSEADDR: ::c_int = 4; pub const SO_BINDTODEVICE: ::c_int = 0x000d; pub const SO_TIMESTAMP: ::c_int = 0x001d; @@ -305,6 +306,10 @@ pub const F_SETLK: ::c_int = 8; pub const F_SETLKW: ::c_int = 9; +pub const F_RDLCK: ::c_int = 1; +pub const F_WRLCK: ::c_int = 2; +pub const F_UNLCK: ::c_int = 3; + pub const SFD_NONBLOCK: ::c_int = 0x4000; pub const TIOCEXCL: ::c_ulong = 0x2000740d; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/other/b64/x86_64.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/other/b64/x86_64.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/other/b64/x86_64.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/other/b64/x86_64.rs 2019-01-04 19:47:54.000000000 +0000 @@ -371,8 +371,6 @@ pub const SO_TIMESTAMPNS: ::c_int = 35; pub const SCM_TIMESTAMPNS: ::c_int = SO_TIMESTAMPNS; pub const SO_MARK: ::c_int = 36; -pub const SO_TIMESTAMPING: ::c_int = 37; -pub const SCM_TIMESTAMPING: ::c_int = SO_TIMESTAMPING; pub const SO_PROTOCOL: ::c_int = 38; pub const SO_DOMAIN: ::c_int = 39; pub const SO_RXQ_OVFL: ::c_int = 40; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/other/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/other/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/other/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/other/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -269,13 +269,13 @@ pub const SOL_RXRPC: ::c_int = 272; pub const SOL_PPPOL2TP: ::c_int = 273; -pub const SOL_BLUETOOTH: ::c_int = 274; pub const SOL_PNPIPE: ::c_int = 275; pub const SOL_RDS: ::c_int = 276; pub const SOL_IUCV: ::c_int = 277; pub const SOL_CAIF: ::c_int = 278; pub const SOL_ALG: ::c_int = 279; pub const SOL_NFC: ::c_int = 280; +pub const SOL_XDP: ::c_int = 283; pub const MSG_TRYHARD: ::c_int = 4; @@ -824,6 +824,19 @@ pub const NFT_NG_INCREMENTAL: ::c_int = 0; pub const NFT_NG_RANDOM: ::c_int = 1; +pub const M_MXFAST: ::c_int = 1; +pub const M_NLBLKS: ::c_int = 2; +pub const M_GRAIN: ::c_int = 3; +pub const M_KEEP: ::c_int = 4; +pub const M_TRIM_THRESHOLD: ::c_int = -1; +pub const M_TOP_PAD: ::c_int = -2; +pub const M_MMAP_THRESHOLD: ::c_int = -3; +pub const M_MMAP_MAX: ::c_int = -4; +pub const M_CHECK_ACTION: ::c_int = -5; +pub const M_PERTURB: ::c_int = -6; +pub const M_ARENA_TEST: ::c_int = -7; +pub const M_ARENA_MAX: ::c_int = -8; + #[doc(hidden)] pub const AF_MAX: ::c_int = 42; #[doc(hidden)] @@ -856,6 +869,7 @@ pub fn setutxent(); pub fn endutxent(); pub fn getpt() -> ::c_int; + pub fn mallopt(param: ::c_int, value: ::c_int) -> ::c_int; } #[link(name = "util")] diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/s390x.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/s390x.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/s390x.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/linux/s390x.rs 2019-01-04 19:47:54.000000000 +0000 @@ -791,6 +791,9 @@ pub const EFD_NONBLOCK: ::c_int = 0x800; +pub const F_RDLCK: ::c_int = 0; +pub const F_WRLCK: ::c_int = 1; +pub const F_UNLCK: ::c_int = 2; pub const F_GETLK: ::c_int = 5; pub const F_GETOWN: ::c_int = 9; pub const F_SETOWN: ::c_int = 8; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/notbsd/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/notbsd/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -53,8 +53,7 @@ pub ai_addrlen: socklen_t, #[cfg(any(target_os = "linux", - target_os = "emscripten", - target_os = "fuchsia"))] + target_os = "emscripten"))] pub ai_addr: *mut ::sockaddr, pub ai_canonname: *mut c_char, @@ -514,6 +513,7 @@ pub const SOL_DCCP: ::c_int = 269; pub const SOL_NETLINK: ::c_int = 270; pub const SOL_TIPC: ::c_int = 271; +pub const SOL_BLUETOOTH: ::c_int = 274; pub const AF_UNSPEC: ::c_int = 0; pub const AF_UNIX: ::c_int = 1; @@ -623,9 +623,11 @@ pub const IP_MULTICAST_IF: ::c_int = 32; pub const IP_MULTICAST_TTL: ::c_int = 33; pub const IP_MULTICAST_LOOP: ::c_int = 34; +pub const IP_TOS: ::c_int = 1; pub const IP_TTL: ::c_int = 2; pub const IP_HDRINCL: ::c_int = 3; pub const IP_PKTINFO: ::c_int = 8; +pub const IP_RECVTOS: ::c_int = 13; pub const IP_ADD_MEMBERSHIP: ::c_int = 35; pub const IP_DROP_MEMBERSHIP: ::c_int = 36; pub const IP_TRANSPARENT: ::c_int = 19; @@ -638,6 +640,8 @@ pub const IPV6_V6ONLY: ::c_int = 26; pub const IPV6_RECVPKTINFO: ::c_int = 49; pub const IPV6_PKTINFO: ::c_int = 50; +pub const IPV6_RECVTCLASS: ::c_int = 66; +pub const IPV6_TCLASS: ::c_int = 67; pub const TCP_NODELAY: ::c_int = 1; pub const TCP_MAXSEG: ::c_int = 2; @@ -874,6 +878,11 @@ pub const IPTOS_PREC_PRIORITY: u8 = 0x20; pub const IPTOS_PREC_ROUTINE: u8 = 0x00; +pub const IPTOS_ECN_MASK: u8 = 0x03; +pub const IPTOS_ECN_ECT1: u8 = 0x01; +pub const IPTOS_ECN_ECT0: u8 = 0x02; +pub const IPTOS_ECN_CE: u8 = 0x03; + pub const IPOPT_COPY: u8 = 0x80; pub const IPOPT_CLASS_MASK: u8 = 0x60; pub const IPOPT_NUMBER_MASK: u8 = 0x1f; @@ -977,6 +986,43 @@ pub const ARPHRD_NONE: u16 = 0xFFFE; f! { + pub fn CMSG_FIRSTHDR(mhdr: *const msghdr) -> *mut cmsghdr { + if (*mhdr).msg_controllen as usize >= mem::size_of::<cmsghdr>() { + (*mhdr).msg_control as *mut cmsghdr + } else { + 0 as *mut cmsghdr + } + } + + pub fn CMSG_NXTHDR(mhdr: *const msghdr, + cmsg: *const cmsghdr) -> *mut cmsghdr { + if cmsg.is_null() { + return CMSG_FIRSTHDR(mhdr); + }; + let pad = mem::align_of::<cmsghdr>() - 1; + let next = cmsg as usize + (*cmsg).cmsg_len as usize + pad & !pad; + let max = (*mhdr).msg_control as usize + + (*mhdr).msg_controllen as usize; + if next < max { + next as *mut cmsghdr + } else { + 0 as *mut cmsghdr + } + } + + pub fn CMSG_DATA(cmsg: *const cmsghdr) -> *mut ::c_uchar { + cmsg.offset(1) as *mut ::c_uchar + } + + pub fn CMSG_SPACE(length: ::c_uint) -> ::c_uint { + let pad = mem::align_of::<cmsghdr>() as ::c_uint - 1; + mem::size_of::<cmsghdr>() as ::c_uint + ((length + pad) & !pad) + } + + pub fn CMSG_LEN(length: ::c_uint) -> ::c_uint { + mem::size_of::<cmsghdr>() as ::c_uint + length + } + pub fn FD_CLR(fd: ::c_int, set: *mut fd_set) -> () { let fd = fd as usize; let size = mem::size_of_val(&(*set).fds_bits[0]) * 8; @@ -1050,6 +1096,10 @@ pub fn IPOPT_NUMBER(o: u8) -> u8 { o & IPOPT_NUMBER_MASK } + + pub fn IPTOS_ECN(x: u8) -> u8 { + x & ::IPTOS_ECN_MASK + } } extern { @@ -1198,7 +1248,7 @@ if #[cfg(target_os = "emscripten")] { mod emscripten; pub use self::emscripten::*; - } else if #[cfg(any(target_os = "linux", target_os = "fuchsia"))] { + } else if #[cfg(target_os = "linux")] { mod linux; pub use self::linux::*; } else if #[cfg(target_os = "android")] { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/solaris/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/solaris/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/solaris/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/solaris/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -1195,6 +1195,9 @@ pub const PORT_SOURCE_POSTWAIT: ::c_int = 8; pub const PORT_SOURCE_SIGNAL: ::c_int = 9; +pub const TIOCGWINSZ: ::c_int = 0x5468; +pub const TIOCSWINSZ: ::c_int = 0x5467; + pub const EPOLLIN: ::c_int = 0x1; pub const EPOLLPRI: ::c_int = 0x2; pub const EPOLLOUT: ::c_int = 0x4; @@ -1255,6 +1258,12 @@ } extern { + pub fn abs(i: ::c_int) -> ::c_int; + pub fn atof(s: *const ::c_char) -> ::c_double; + pub fn labs(i: ::c_long) -> ::c_long; + pub fn rand() -> ::c_int; + pub fn srand(seed: ::c_uint); + pub fn getifaddrs(ifap: *mut *mut ::ifaddrs) -> ::c_int; pub fn freeifaddrs(ifa: *mut ::ifaddrs); @@ -1455,4 +1464,6 @@ pub fn getgrgid(gid: ::gid_t) -> *mut ::group; pub fn popen(command: *const c_char, mode: *const c_char) -> *mut ::FILE; + + pub fn dup3(src: ::c_int, dst: ::c_int, flags: ::c_int) -> ::c_int; } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/uclibc/mips/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/uclibc/mips/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/uclibc/mips/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/uclibc/mips/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -226,8 +226,8 @@ pub const FIOCLEX: ::c_ulong = 0x6601; pub const FIONBIO: ::c_ulong = 0x667e; -pub const SA_ONSTACK: ::c_int = 0x08000000; -pub const SA_SIGINFO: ::c_int = 0x00000008; +pub const SA_ONSTACK: ::c_uint = 0x08000000; +pub const SA_SIGINFO: ::c_uint = 0x00000008; pub const SA_NOCLDWAIT: ::c_int = 0x00010000; pub const SIGCHLD: ::c_int = 18; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/uclibc/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/uclibc/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/unix/uclibc/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/unix/uclibc/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -391,7 +391,12 @@ pub ssi_utime: ::uint64_t, pub ssi_stime: ::uint64_t, pub ssi_addr: ::uint64_t, - _pad: [::uint8_t; 48], + pub ssi_addr_lsb: ::uint16_t, + _pad2: ::uint16_t, + pub ssi_syscall: ::int32_t, + pub ssi_call_addr: ::uint64_t, + pub ssi_arch: ::uint32_t, + _pad: [::uint8_t; 28], } pub struct fsid_t { @@ -1546,6 +1551,12 @@ } extern { + pub fn abs(i: ::c_int) -> ::c_int; + pub fn atof(s: *const ::c_char) -> ::c_double; + pub fn labs(i: ::c_long) -> ::c_long; + pub fn rand() -> ::c_int; + pub fn srand(seed: ::c_uint); + pub fn fdatasync(fd: ::c_int) -> ::c_int; pub fn mincore(addr: *mut ::c_void, len: ::size_t, vec: *mut ::c_uchar) -> ::c_int; @@ -1634,6 +1645,8 @@ pub fn uselocale(loc: ::locale_t) -> ::locale_t; pub fn creat64(path: *const c_char, mode: mode_t) -> ::c_int; pub fn fstat64(fildes: ::c_int, buf: *mut stat64) -> ::c_int; + pub fn fstatat64(fildes: ::c_int, path: *const ::c_char, + buf: *mut stat64, flag: ::c_int) -> ::c_int; pub fn ftruncate64(fd: ::c_int, length: off64_t) -> ::c_int; pub fn getrlimit64(resource: ::c_int, rlim: *mut rlimit64) -> ::c_int; pub fn lseek64(fd: ::c_int, offset: off64_t, whence: ::c_int) -> off64_t; @@ -1853,6 +1866,8 @@ pub fn seekdir(dirp: *mut ::DIR, loc: ::c_long); + pub fn dirfd(dirp: *mut ::DIR) -> ::c_int; + pub fn telldir(dirp: *mut ::DIR) -> ::c_long; pub fn madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) -> ::c_int; @@ -1941,7 +1956,7 @@ } cfg_if! { - if #[cfg(target_arch = "mips")] { + if #[cfg(any(target_arch = "mips", target_arch = "mips64"))] { mod mips; pub use self::mips::*; } else if #[cfg(target_arch = "x86_64")] { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/windows/gnu.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/windows/gnu.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/windows/gnu.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/windows/gnu.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,13 @@ +pub const L_tmpnam: ::c_uint = 14; +pub const TMP_MAX: ::c_uint = 0x7fff; + +// stdio file descriptor numbers +pub const STDIN_FILENO: ::c_int = 0; +pub const STDOUT_FILENO: ::c_int = 1; +pub const STDERR_FILENO: ::c_int = 2; + +extern { + pub fn strcasecmp(s1: *const ::c_char, s2: *const ::c_char) -> ::c_int; + pub fn strncasecmp(s1: *const ::c_char, s2: *const ::c_char, + n: ::size_t) -> ::c_int; +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/windows/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/windows/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/windows/mod.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/windows/mod.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,449 @@ +//! Windows CRT definitions + +pub type int8_t = i8; +pub type int16_t = i16; +pub type int32_t = i32; +pub type int64_t = i64; +pub type uint8_t = u8; +pub type uint16_t = u16; +pub type uint32_t = u32; +pub type uint64_t = u64; + +pub type c_schar = i8; +pub type c_uchar = u8; +pub type c_short = i16; +pub type c_ushort = u16; +pub type c_int = i32; +pub type c_uint = u32; +pub type c_float = f32; +pub type c_double = f64; +pub type c_longlong = i64; +pub type c_ulonglong = u64; +pub type intmax_t = i64; +pub type uintmax_t = u64; + +pub type size_t = usize; +pub type ptrdiff_t = isize; +pub type intptr_t = isize; +pub type uintptr_t = usize; +pub type ssize_t = isize; +pub type sighandler_t = usize; + +pub type c_char = i8; +pub type c_long = i32; +pub type c_ulong = u32; +pub type wchar_t = u16; + +pub type clock_t = i32; + +cfg_if! { + if #[cfg(all(target_arch = "x86", target_env = "gnu"))] { + pub type time_t = i32; + } else { + pub type time_t = i64; + } +} + +pub type off_t = i32; +pub type dev_t = u32; +pub type ino_t = u16; +pub enum timezone {} +pub type time64_t = i64; + +pub type SOCKET = ::uintptr_t; + +s! { + // note this is the struct called stat64 in Windows. Not stat, nor stati64. + pub struct stat { + pub st_dev: dev_t, + pub st_ino: ino_t, + pub st_mode: u16, + pub st_nlink: ::c_short, + pub st_uid: ::c_short, + pub st_gid: ::c_short, + pub st_rdev: dev_t, + pub st_size: i64, + pub st_atime: time64_t, + pub st_mtime: time64_t, + pub st_ctime: time64_t, + } + + // note that this is called utimbuf64 in Windows + pub struct utimbuf { + pub actime: time64_t, + pub modtime: time64_t, + } + + pub struct tm { + pub tm_sec: ::c_int, + pub tm_min: ::c_int, + pub tm_hour: ::c_int, + pub tm_mday: ::c_int, + pub tm_mon: ::c_int, + pub tm_year: ::c_int, + pub tm_wday: ::c_int, + pub tm_yday: ::c_int, + pub tm_isdst: ::c_int, + } + + pub struct timeval { + pub tv_sec: c_long, + pub tv_usec: c_long, + } + + pub struct timespec { + pub tv_sec: time_t, + pub tv_nsec: c_long, + } + + pub struct sockaddr { + pub sa_family: c_ushort, + pub sa_data: [c_char; 14], + } +} + +pub const INT_MIN: c_int = -2147483648; +pub const INT_MAX: c_int = 2147483647; + +pub const EXIT_FAILURE: ::c_int = 1; +pub const EXIT_SUCCESS: ::c_int = 0; +pub const RAND_MAX: ::c_int = 32767; +pub const EOF: ::c_int = -1; +pub const SEEK_SET: ::c_int = 0; +pub const SEEK_CUR: ::c_int = 1; +pub const SEEK_END: ::c_int = 2; +pub const _IOFBF: ::c_int = 0; +pub const _IONBF: ::c_int = 4; +pub const _IOLBF: ::c_int = 64; +pub const BUFSIZ: ::c_uint = 512; +pub const FOPEN_MAX: ::c_uint = 20; +pub const FILENAME_MAX: ::c_uint = 260; + +pub const O_RDONLY: ::c_int = 0; +pub const O_WRONLY: ::c_int = 1; +pub const O_RDWR: ::c_int = 2; +pub const O_APPEND: ::c_int = 8; +pub const O_CREAT: ::c_int = 256; +pub const O_EXCL: ::c_int = 1024; +pub const O_TEXT: ::c_int = 16384; +pub const O_BINARY: ::c_int = 32768; +pub const O_NOINHERIT: ::c_int = 128; +pub const O_TRUNC: ::c_int = 512; +pub const S_IFCHR: ::c_int = 8192; +pub const S_IFDIR: ::c_int = 16384; +pub const S_IFREG: ::c_int = 32768; +pub const S_IFMT: ::c_int = 61440; +pub const S_IEXEC: ::c_int = 64; +pub const S_IWRITE: ::c_int = 128; +pub const S_IREAD: ::c_int = 256; + +pub const LC_ALL: ::c_int = 0; +pub const LC_COLLATE: ::c_int = 1; +pub const LC_CTYPE: ::c_int = 2; +pub const LC_MONETARY: ::c_int = 3; +pub const LC_NUMERIC: ::c_int = 4; +pub const LC_TIME: ::c_int = 5; + +pub const EPERM: ::c_int = 1; +pub const ENOENT: ::c_int = 2; +pub const ESRCH: ::c_int = 3; +pub const EINTR: ::c_int = 4; +pub const EIO: ::c_int = 5; +pub const ENXIO: ::c_int = 6; +pub const E2BIG: ::c_int = 7; +pub const ENOEXEC: ::c_int = 8; +pub const EBADF: ::c_int = 9; +pub const ECHILD: ::c_int = 10; +pub const EAGAIN: ::c_int = 11; +pub const ENOMEM: ::c_int = 12; +pub const EACCES: ::c_int = 13; +pub const EFAULT: ::c_int = 14; +pub const EBUSY: ::c_int = 16; +pub const EEXIST: ::c_int = 17; +pub const EXDEV: ::c_int = 18; +pub const ENODEV: ::c_int = 19; +pub const ENOTDIR: ::c_int = 20; +pub const EISDIR: ::c_int = 21; +pub const EINVAL: ::c_int = 22; +pub const ENFILE: ::c_int = 23; +pub const EMFILE: ::c_int = 24; +pub const ENOTTY: ::c_int = 25; +pub const EFBIG: ::c_int = 27; +pub const ENOSPC: ::c_int = 28; +pub const ESPIPE: ::c_int = 29; +pub const EROFS: ::c_int = 30; +pub const EMLINK: ::c_int = 31; +pub const EPIPE: ::c_int = 32; +pub const EDOM: ::c_int = 33; +pub const ERANGE: ::c_int = 34; +pub const EDEADLK: ::c_int = 36; +pub const EDEADLOCK: ::c_int = 36; +pub const ENAMETOOLONG: ::c_int = 38; +pub const ENOLCK: ::c_int = 39; +pub const ENOSYS: ::c_int = 40; +pub const ENOTEMPTY: ::c_int = 41; +pub const EILSEQ: ::c_int = 42; +pub const STRUNCATE: ::c_int = 80; + +// signal codes +pub const SIGINT: ::c_int = 2; +pub const SIGILL: ::c_int = 4; +pub const SIGFPE: ::c_int = 8; +pub const SIGSEGV: ::c_int = 11; +pub const SIGTERM: ::c_int = 15; +pub const SIGABRT: ::c_int = 22; +pub const NSIG: ::c_int = 23; +pub const SIG_ERR: ::c_int = -1; + +// inline comment below appeases style checker +#[cfg(all(target_env = "msvc", feature = "rustc-dep-of-std"))] // " if " +#[link(name = "msvcrt", cfg(not(target_feature = "crt-static")))] +#[link(name = "libcmt", cfg(target_feature = "crt-static"))] +extern {} + +pub enum FILE {} +pub enum fpos_t {} // TODO: fill this out with a struct + +extern { + pub fn isalnum(c: c_int) -> c_int; + pub fn isalpha(c: c_int) -> c_int; + pub fn iscntrl(c: c_int) -> c_int; + pub fn isdigit(c: c_int) -> c_int; + pub fn isgraph(c: c_int) -> c_int; + pub fn islower(c: c_int) -> c_int; + pub fn isprint(c: c_int) -> c_int; + pub fn ispunct(c: c_int) -> c_int; + pub fn isspace(c: c_int) -> c_int; + pub fn isupper(c: c_int) -> c_int; + pub fn isxdigit(c: c_int) -> c_int; + pub fn tolower(c: c_int) -> c_int; + pub fn toupper(c: c_int) -> c_int; + pub fn fopen(filename: *const c_char, mode: *const c_char) -> *mut FILE; + pub fn freopen(filename: *const c_char, mode: *const c_char, + file: *mut FILE) -> *mut FILE; + pub fn fflush(file: *mut FILE) -> c_int; + pub fn fclose(file: *mut FILE) -> c_int; + pub fn remove(filename: *const c_char) -> c_int; + pub fn rename(oldname: *const c_char, newname: *const c_char) -> c_int; + pub fn tmpfile() -> *mut FILE; + pub fn setvbuf(stream: *mut FILE, buffer: *mut c_char, mode: c_int, + size: size_t) -> c_int; + pub fn setbuf(stream: *mut FILE, buf: *mut c_char); + pub fn getchar() -> c_int; + pub fn putchar(c: c_int) -> c_int; + pub fn fgetc(stream: *mut FILE) -> c_int; + pub fn fgets(buf: *mut c_char, n: c_int, stream: *mut FILE) -> *mut c_char; + pub fn fputc(c: c_int, stream: *mut FILE) -> c_int; + pub fn fputs(s: *const c_char, stream: *mut FILE) -> c_int; + pub fn puts(s: *const c_char) -> c_int; + pub fn ungetc(c: c_int, stream: *mut FILE) -> c_int; + pub fn fread(ptr: *mut c_void, size: size_t, nobj: size_t, + stream: *mut FILE) -> size_t; + pub fn fwrite(ptr: *const c_void, size: size_t, nobj: size_t, + stream: *mut FILE) -> size_t; + pub fn fseek(stream: *mut FILE, offset: c_long, whence: c_int) -> c_int; + pub fn ftell(stream: *mut FILE) -> c_long; + pub fn rewind(stream: *mut FILE); + pub fn fgetpos(stream: *mut FILE, ptr: *mut fpos_t) -> c_int; + pub fn fsetpos(stream: *mut FILE, ptr: *const fpos_t) -> c_int; + pub fn feof(stream: *mut FILE) -> c_int; + pub fn ferror(stream: *mut FILE) -> c_int; + pub fn perror(s: *const c_char); + pub fn atoi(s: *const c_char) -> c_int; + pub fn strtod(s: *const c_char, endp: *mut *mut c_char) -> c_double; + pub fn strtol(s: *const c_char, endp: *mut *mut c_char, + base: c_int) -> c_long; + pub fn strtoul(s: *const c_char, endp: *mut *mut c_char, + base: c_int) -> c_ulong; + pub fn calloc(nobj: size_t, size: size_t) -> *mut c_void; + pub fn malloc(size: size_t) -> *mut c_void; + pub fn realloc(p: *mut c_void, size: size_t) -> *mut c_void; + pub fn free(p: *mut c_void); + pub fn abort() -> !; + pub fn exit(status: c_int) -> !; + pub fn _exit(status: c_int) -> !; + pub fn atexit(cb: extern fn()) -> c_int; + pub fn system(s: *const c_char) -> c_int; + pub fn getenv(s: *const c_char) -> *mut c_char; + + pub fn strcpy(dst: *mut c_char, src: *const c_char) -> *mut c_char; + pub fn strncpy(dst: *mut c_char, src: *const c_char, + n: size_t) -> *mut c_char; + pub fn strcat(s: *mut c_char, ct: *const c_char) -> *mut c_char; + pub fn strncat(s: *mut c_char, ct: *const c_char, + n: size_t) -> *mut c_char; + pub fn strcmp(cs: *const c_char, ct: *const c_char) -> c_int; + pub fn strncmp(cs: *const c_char, ct: *const c_char, n: size_t) -> c_int; + pub fn strcoll(cs: *const c_char, ct: *const c_char) -> c_int; + pub fn strchr(cs: *const c_char, c: c_int) -> *mut c_char; + pub fn strrchr(cs: *const c_char, c: c_int) -> *mut c_char; + pub fn strspn(cs: *const c_char, ct: *const c_char) -> size_t; + pub fn strcspn(cs: *const c_char, ct: *const c_char) -> size_t; + pub fn strdup(cs: *const c_char) -> *mut c_char; + pub fn strpbrk(cs: *const c_char, ct: *const c_char) -> *mut c_char; + pub fn strstr(cs: *const c_char, ct: *const c_char) -> *mut c_char; + pub fn strlen(cs: *const c_char) -> size_t; + pub fn strnlen(cs: *const c_char, maxlen: size_t) -> size_t; + pub fn strerror(n: c_int) -> *mut c_char; + pub fn strtok(s: *mut c_char, t: *const c_char) -> *mut c_char; + pub fn strxfrm(s: *mut c_char, ct: *const c_char, n: size_t) -> size_t; + pub fn wcslen(buf: *const wchar_t) -> size_t; + pub fn wcstombs(dest: *mut c_char, src: *const wchar_t, + n: size_t) -> ::size_t; + + pub fn memchr(cx: *const c_void, c: c_int, n: size_t) -> *mut c_void; + pub fn memcmp(cx: *const c_void, ct: *const c_void, n: size_t) -> c_int; + pub fn memcpy(dest: *mut c_void, src: *const c_void, + n: size_t) -> *mut c_void; + pub fn memmove(dest: *mut c_void, src: *const c_void, + n: size_t) -> *mut c_void; + pub fn memset(dest: *mut c_void, c: c_int, n: size_t) -> *mut c_void; + + pub fn abs(i: c_int) -> c_int; + pub fn atof(s: *const c_char) -> c_double; + pub fn labs(i: c_long) -> c_long; + pub fn rand() -> c_int; + pub fn srand(seed: c_uint); + + pub fn signal(signum: c_int, handler: sighandler_t) -> sighandler_t; + pub fn raise(signum: c_int) -> c_int; + + #[link_name = "_chmod"] + pub fn chmod(path: *const c_char, mode: ::c_int) -> ::c_int; + #[link_name = "_wchmod"] + pub fn wchmod(path: *const wchar_t, mode: ::c_int) -> ::c_int; + #[link_name = "_mkdir"] + pub fn mkdir(path: *const c_char) -> ::c_int; + #[link_name = "_wrmdir"] + pub fn wrmdir(path: *const wchar_t) -> ::c_int; + #[link_name = "_fstat64"] + pub fn fstat(fildes: ::c_int, buf: *mut stat) -> ::c_int; + #[link_name = "_stat64"] + pub fn stat(path: *const c_char, buf: *mut stat) -> ::c_int; + #[link_name = "_wstat64"] + pub fn wstat(path: *const wchar_t, buf: *mut stat) -> ::c_int; + #[link_name = "_wutime64"] + pub fn wutime(file: *const wchar_t, buf: *mut utimbuf) -> ::c_int; + #[link_name = "_popen"] + pub fn popen(command: *const c_char, mode: *const c_char) -> *mut ::FILE; + #[link_name = "_pclose"] + pub fn pclose(stream: *mut ::FILE) -> ::c_int; + #[link_name = "_fdopen"] + pub fn fdopen(fd: ::c_int, mode: *const c_char) -> *mut ::FILE; + #[link_name = "_fileno"] + pub fn fileno(stream: *mut ::FILE) -> ::c_int; + #[link_name = "_open"] + pub fn open(path: *const c_char, oflag: ::c_int, ...) -> ::c_int; + #[link_name = "_wopen"] + pub fn wopen(path: *const wchar_t, oflag: ::c_int, ...) -> ::c_int; + #[link_name = "_creat"] + pub fn creat(path: *const c_char, mode: ::c_int) -> ::c_int; + #[link_name = "_access"] + pub fn access(path: *const c_char, amode: ::c_int) -> ::c_int; + #[link_name = "_chdir"] + pub fn chdir(dir: *const c_char) -> ::c_int; + #[link_name = "_close"] + pub fn close(fd: ::c_int) -> ::c_int; + #[link_name = "_dup"] + pub fn dup(fd: ::c_int) -> ::c_int; + #[link_name = "_dup2"] + pub fn dup2(src: ::c_int, dst: ::c_int) -> ::c_int; + #[link_name = "_execv"] + pub fn execv(prog: *const c_char, argv: *const *const c_char) -> ::intptr_t; + #[link_name = "_execve"] + pub fn execve(prog: *const c_char, argv: *const *const c_char, + envp: *const *const c_char) -> ::c_int; + #[link_name = "_execvp"] + pub fn execvp(c: *const c_char, argv: *const *const c_char) -> ::c_int; + #[link_name = "_execvpe"] + pub fn execvpe(c: *const c_char, argv: *const *const c_char, + envp: *const *const c_char) -> ::c_int; + #[link_name = "_getcwd"] + pub fn getcwd(buf: *mut c_char, size: ::c_int) -> *mut c_char; + #[link_name = "_getpid"] + pub fn getpid() -> ::c_int; + #[link_name = "_isatty"] + pub fn isatty(fd: ::c_int) -> ::c_int; + #[link_name = "_lseek"] + pub fn lseek(fd: ::c_int, offset: c_long, origin: ::c_int) -> c_long; + #[link_name = "_pipe"] + pub fn pipe(fds: *mut ::c_int, + psize: ::c_uint, + textmode: ::c_int) -> ::c_int; + #[link_name = "_read"] + pub fn read(fd: ::c_int, buf: *mut ::c_void, count: ::c_uint) -> ::c_int; + #[link_name = "_rmdir"] + pub fn rmdir(path: *const c_char) -> ::c_int; + #[link_name = "_unlink"] + pub fn unlink(c: *const c_char) -> ::c_int; + #[link_name = "_write"] + pub fn write(fd: ::c_int, buf: *const ::c_void, count: ::c_uint) -> ::c_int; + #[link_name = "_commit"] + pub fn commit(fd: ::c_int) -> ::c_int; + #[link_name = "_get_osfhandle"] + pub fn get_osfhandle(fd: ::c_int) -> ::intptr_t; + #[link_name = "_open_osfhandle"] + pub fn open_osfhandle(osfhandle: ::intptr_t, flags: ::c_int) -> ::c_int; + pub fn setlocale(category: ::c_int, locale: *const c_char) -> *mut c_char; + #[link_name = "_wsetlocale"] + pub fn wsetlocale(category: ::c_int, + locale: *const wchar_t) -> *mut wchar_t; +} + +extern "system" { + pub fn listen(s: SOCKET, backlog: ::c_int) -> ::c_int; + pub fn accept(s: SOCKET, addr: *mut ::sockaddr, + addrlen: *mut ::c_int) -> SOCKET; + pub fn bind(s: SOCKET, name: *const ::sockaddr, + namelen: ::c_int) -> ::c_int; + pub fn connect(s: SOCKET, name: *const ::sockaddr, + namelen: ::c_int) -> ::c_int; + pub fn getpeername(s: SOCKET, name: *mut ::sockaddr, + nameln: *mut ::c_int) -> ::c_int; + pub fn getsockname(s: SOCKET, name: *mut ::sockaddr, + nameln: *mut ::c_int) -> ::c_int; + pub fn getsockopt(s: SOCKET, level: ::c_int, optname: ::c_int, + optval: *mut ::c_char, + optlen: *mut ::c_int) -> ::c_int; + pub fn recvfrom(s: SOCKET, buf: *mut ::c_char, len: ::c_int, + flags: ::c_int, from: *mut ::sockaddr, + fromlen: *mut ::c_int) -> ::c_int; + pub fn sendto(s: SOCKET, buf: *const ::c_char, len: ::c_int, + flags: ::c_int, to: *const ::sockaddr, + tolen: ::c_int) -> ::c_int; + pub fn setsockopt(s: SOCKET, level: ::c_int, optname: ::c_int, + optval: *const ::c_char, + optlen: ::c_int) -> ::c_int; + pub fn socket(af: ::c_int, socket_type: ::c_int, + protocol: ::c_int) -> SOCKET; +} + +cfg_if! { + if #[cfg(core_cvoid)] { + pub use core::ffi::c_void; + } else { + // Use repr(u8) as LLVM expects `void*` to be the same as `i8*` to help + // enable more optimization opportunities around it recognizing things + // like malloc/free. + #[repr(u8)] + pub enum c_void { + // Two dummy variants so the #[repr] attribute can be used. + #[doc(hidden)] + __variant1, + #[doc(hidden)] + __variant2, + } + } +} + +cfg_if! { + if #[cfg(all(target_env = "gnu"))] { + mod gnu; + pub use self::gnu::*; + } else if #[cfg(all(target_env = "msvc"))] { + mod msvc; + pub use self::msvc::*; + } else { + // Unknown target_env + } +} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/windows/msvc.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/windows/msvc.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/windows/msvc.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/windows/msvc.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,10 @@ +pub const L_tmpnam: ::c_uint = 260; +pub const TMP_MAX: ::c_uint = 0x7fff_ffff; + +extern { + #[link_name = "_stricmp"] + pub fn stricmp(s1: *const ::c_char, s2: *const ::c_char) -> ::c_int; + #[link_name = "_strnicmp"] + pub fn strnicmp(s1: *const ::c_char, s2: *const ::c_char, + n: ::size_t) -> ::c_int; +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/windows.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/windows.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/src/windows.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/src/windows.rs 1970-01-01 00:00:00.000000000 +0000 @@ -1,248 +0,0 @@ -//! Windows CRT definitions - -pub type c_char = i8; -pub type c_long = i32; -pub type c_ulong = u32; -pub type wchar_t = u16; - -pub type clock_t = i32; - -cfg_if! { - if #[cfg(all(target_arch = "x86", target_env = "gnu"))] { - pub type time_t = i32; - } else { - pub type time_t = i64; - } -} - -pub type off_t = i32; -pub type dev_t = u32; -pub type ino_t = u16; -pub enum timezone {} -pub type time64_t = i64; - -s! { - // note this is the struct called stat64 in Windows. Not stat, nor stati64. - pub struct stat { - pub st_dev: dev_t, - pub st_ino: ino_t, - pub st_mode: u16, - pub st_nlink: ::c_short, - pub st_uid: ::c_short, - pub st_gid: ::c_short, - pub st_rdev: dev_t, - pub st_size: i64, - pub st_atime: time64_t, - pub st_mtime: time64_t, - pub st_ctime: time64_t, - } - - // note that this is called utimbuf64 in Windows - pub struct utimbuf { - pub actime: time64_t, - pub modtime: time64_t, - } - - pub struct tm { - tm_sec: ::c_int, - tm_min: ::c_int, - tm_hour: ::c_int, - tm_mday: ::c_int, - tm_mon: ::c_int, - tm_year: ::c_int, - tm_wday: ::c_int, - tm_yday: ::c_int, - tm_isdst: ::c_int, - } - - pub struct timeval { - pub tv_sec: c_long, - pub tv_usec: c_long, - } - - pub struct timespec { - pub tv_sec: time_t, - pub tv_nsec: c_long, - } -} - -pub const EXIT_FAILURE: ::c_int = 1; -pub const EXIT_SUCCESS: ::c_int = 0; -pub const RAND_MAX: ::c_int = 32767; -pub const EOF: ::c_int = -1; -pub const SEEK_SET: ::c_int = 0; -pub const SEEK_CUR: ::c_int = 1; -pub const SEEK_END: ::c_int = 2; -pub const _IOFBF: ::c_int = 0; -pub const _IONBF: ::c_int = 4; -pub const _IOLBF: ::c_int = 64; -pub const BUFSIZ: ::c_uint = 512; -pub const FOPEN_MAX: ::c_uint = 20; -pub const FILENAME_MAX: ::c_uint = 260; - -cfg_if! { - if #[cfg(all(target_env = "gnu"))] { - pub const L_tmpnam: ::c_uint = 14; - pub const TMP_MAX: ::c_uint = 0x7fff; - } else if #[cfg(all(target_env = "msvc"))] { - pub const L_tmpnam: ::c_uint = 260; - pub const TMP_MAX: ::c_uint = 0x7fff_ffff; - } else { - // Unknown target_env - } -} - -pub const O_RDONLY: ::c_int = 0; -pub const O_WRONLY: ::c_int = 1; -pub const O_RDWR: ::c_int = 2; -pub const O_APPEND: ::c_int = 8; -pub const O_CREAT: ::c_int = 256; -pub const O_EXCL: ::c_int = 1024; -pub const O_TEXT: ::c_int = 16384; -pub const O_BINARY: ::c_int = 32768; -pub const O_NOINHERIT: ::c_int = 128; -pub const O_TRUNC: ::c_int = 512; -pub const S_IFCHR: ::c_int = 8192; -pub const S_IFDIR: ::c_int = 16384; -pub const S_IFREG: ::c_int = 32768; -pub const S_IFMT: ::c_int = 61440; -pub const S_IEXEC: ::c_int = 64; -pub const S_IWRITE: ::c_int = 128; -pub const S_IREAD: ::c_int = 256; - -pub const LC_ALL: ::c_int = 0; -pub const LC_COLLATE: ::c_int = 1; -pub const LC_CTYPE: ::c_int = 2; -pub const LC_MONETARY: ::c_int = 3; -pub const LC_NUMERIC: ::c_int = 4; -pub const LC_TIME: ::c_int = 5; - -pub const EPERM: ::c_int = 1; -pub const ENOENT: ::c_int = 2; -pub const ESRCH: ::c_int = 3; -pub const EINTR: ::c_int = 4; -pub const EIO: ::c_int = 5; -pub const ENXIO: ::c_int = 6; -pub const E2BIG: ::c_int = 7; -pub const ENOEXEC: ::c_int = 8; -pub const EBADF: ::c_int = 9; -pub const ECHILD: ::c_int = 10; -pub const EAGAIN: ::c_int = 11; -pub const ENOMEM: ::c_int = 12; -pub const EACCES: ::c_int = 13; -pub const EFAULT: ::c_int = 14; -pub const EBUSY: ::c_int = 16; -pub const EEXIST: ::c_int = 17; -pub const EXDEV: ::c_int = 18; -pub const ENODEV: ::c_int = 19; -pub const ENOTDIR: ::c_int = 20; -pub const EISDIR: ::c_int = 21; -pub const EINVAL: ::c_int = 22; -pub const ENFILE: ::c_int = 23; -pub const EMFILE: ::c_int = 24; -pub const ENOTTY: ::c_int = 25; -pub const EFBIG: ::c_int = 27; -pub const ENOSPC: ::c_int = 28; -pub const ESPIPE: ::c_int = 29; -pub const EROFS: ::c_int = 30; -pub const EMLINK: ::c_int = 31; -pub const EPIPE: ::c_int = 32; -pub const EDOM: ::c_int = 33; -pub const ERANGE: ::c_int = 34; -pub const EDEADLK: ::c_int = 36; -pub const EDEADLOCK: ::c_int = 36; -pub const ENAMETOOLONG: ::c_int = 38; -pub const ENOLCK: ::c_int = 39; -pub const ENOSYS: ::c_int = 40; -pub const ENOTEMPTY: ::c_int = 41; -pub const EILSEQ: ::c_int = 42; -pub const STRUNCATE: ::c_int = 80; - -// inline comment below appeases style checker -#[cfg(all(target_env = "msvc", feature = "stdbuild"))] // " if " -#[link(name = "msvcrt", cfg(not(target_feature = "crt-static")))] -#[link(name = "libcmt", cfg(target_feature = "crt-static"))] -extern {} - -extern { - #[link_name = "_chmod"] - pub fn chmod(path: *const c_char, mode: ::c_int) -> ::c_int; - #[link_name = "_wchmod"] - pub fn wchmod(path: *const wchar_t, mode: ::c_int) -> ::c_int; - #[link_name = "_mkdir"] - pub fn mkdir(path: *const c_char) -> ::c_int; - #[link_name = "_wrmdir"] - pub fn wrmdir(path: *const wchar_t) -> ::c_int; - #[link_name = "_fstat64"] - pub fn fstat(fildes: ::c_int, buf: *mut stat) -> ::c_int; - #[link_name = "_stat64"] - pub fn stat(path: *const c_char, buf: *mut stat) -> ::c_int; - #[link_name = "_wstat64"] - pub fn wstat(path: *const wchar_t, buf: *mut stat) -> ::c_int; - #[link_name = "_wutime64"] - pub fn wutime(file: *const wchar_t, buf: *mut utimbuf) -> ::c_int; - #[link_name = "_popen"] - pub fn popen(command: *const c_char, mode: *const c_char) -> *mut ::FILE; - #[link_name = "_pclose"] - pub fn pclose(stream: *mut ::FILE) -> ::c_int; - #[link_name = "_fdopen"] - pub fn fdopen(fd: ::c_int, mode: *const c_char) -> *mut ::FILE; - #[link_name = "_fileno"] - pub fn fileno(stream: *mut ::FILE) -> ::c_int; - #[link_name = "_open"] - pub fn open(path: *const c_char, oflag: ::c_int, ...) -> ::c_int; - #[link_name = "_wopen"] - pub fn wopen(path: *const wchar_t, oflag: ::c_int, ...) -> ::c_int; - #[link_name = "_creat"] - pub fn creat(path: *const c_char, mode: ::c_int) -> ::c_int; - #[link_name = "_access"] - pub fn access(path: *const c_char, amode: ::c_int) -> ::c_int; - #[link_name = "_chdir"] - pub fn chdir(dir: *const c_char) -> ::c_int; - #[link_name = "_close"] - pub fn close(fd: ::c_int) -> ::c_int; - #[link_name = "_dup"] - pub fn dup(fd: ::c_int) -> ::c_int; - #[link_name = "_dup2"] - pub fn dup2(src: ::c_int, dst: ::c_int) -> ::c_int; - #[link_name = "_execv"] - pub fn execv(prog: *const c_char, argv: *const *const c_char) -> ::intptr_t; - #[link_name = "_execve"] - pub fn execve(prog: *const c_char, argv: *const *const c_char, - envp: *const *const c_char) -> ::c_int; - #[link_name = "_execvp"] - pub fn execvp(c: *const c_char, argv: *const *const c_char) -> ::c_int; - #[link_name = "_execvpe"] - pub fn execvpe(c: *const c_char, argv: *const *const c_char, - envp: *const *const c_char) -> ::c_int; - #[link_name = "_getcwd"] - pub fn getcwd(buf: *mut c_char, size: ::c_int) -> *mut c_char; - #[link_name = "_getpid"] - pub fn getpid() -> ::c_int; - #[link_name = "_isatty"] - pub fn isatty(fd: ::c_int) -> ::c_int; - #[link_name = "_lseek"] - pub fn lseek(fd: ::c_int, offset: c_long, origin: ::c_int) -> c_long; - #[link_name = "_pipe"] - pub fn pipe(fds: *mut ::c_int, - psize: ::c_uint, - textmode: ::c_int) -> ::c_int; - #[link_name = "_read"] - pub fn read(fd: ::c_int, buf: *mut ::c_void, count: ::c_uint) -> ::c_int; - #[link_name = "_rmdir"] - pub fn rmdir(path: *const c_char) -> ::c_int; - #[link_name = "_unlink"] - pub fn unlink(c: *const c_char) -> ::c_int; - #[link_name = "_write"] - pub fn write(fd: ::c_int, buf: *const ::c_void, count: ::c_uint) -> ::c_int; - #[link_name = "_commit"] - pub fn commit(fd: ::c_int) -> ::c_int; - #[link_name = "_get_osfhandle"] - pub fn get_osfhandle(fd: ::c_int) -> ::intptr_t; - #[link_name = "_open_osfhandle"] - pub fn open_osfhandle(osfhandle: ::intptr_t, flags: ::c_int) -> ::c_int; - pub fn setlocale(category: ::c_int, locale: *const c_char) -> *mut c_char; - #[link_name = "_wsetlocale"] - pub fn wsetlocale(category: ::c_int, - locale: *const wchar_t) -> *mut wchar_t; -} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/.travis.yml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/.travis.yml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/libc/.travis.yml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/libc/.travis.yml 1970-01-01 00:00:00.000000000 +0000 @@ -1,123 +0,0 @@ -language: rust -rust: stable -sudo: required -dist: trusty -services: - - docker -install: - - if [ -z "$NO_ADD" ]; then rustup target add $TARGET; fi -script: - - cargo build $OPT - - cargo build $OPT --no-default-features - - cargo generate-lockfile --manifest-path libc-test/Cargo.toml - - if [[ $TRAVIS_OS_NAME = "linux" ]]; then - sh ci/run-docker.sh $TARGET; - else - export CARGO_TARGET_DIR=`pwd`/target; - sh ci/run.sh $TARGET; - fi - - rustc ci/style.rs && ./style src -env: - global: - secure: "e2/3QjgRN9atOuSHp22TrYG7QVKcYUWY48Hi9b60w+r1+BhPkTseIJLte7WefRhdXtqpjjUJTooKDhnurFOeHaCT+nmBgiv+FPU893sBl4bhesY4m0vgUJVbNZcs6lTImYekWVb+aqjGdgV/XAgCw7c3kPmrZV0MzGDWL64Xaps=" -matrix: - allow_failures: - # FIXME(#987) move back to include once 404 is fixed - - env: TARGET=s390x-unknown-linux-gnu - include: - # 1.13.0 compat - - env: TARGET=x86_64-unknown-linux-gnu NO_ADD=1 - rust: 1.13.0 - script: rm -f Cargo.lock && cargo build - install: - - # build documentation - - env: TARGET=x86_64-unknown-linux-gnu NO_ADD=1 - rust: nightly - script: sh ci/dox.sh - - # stable compat - - env: TARGET=x86_64-unknown-linux-gnu NO_ADD=1 - - env: TARGET=i686-unknown-linux-gnu - - os: osx - env: TARGET=x86_64-apple-darwin NO_ADD=1 - osx_image: xcode9.4 - - os: osx - env: TARGET=i686-apple-darwin - osx_image: xcode9.4 - - env: TARGET=arm-linux-androideabi - - env: TARGET=aarch64-linux-android - # FIXME(#826) should reenable - #- env: TARGET=i686-linux-android - - env: TARGET=x86_64-linux-android - - env: TARGET=x86_64-unknown-linux-musl - - env: TARGET=i686-unknown-linux-musl - - env: TARGET=arm-unknown-linux-gnueabihf - - env: TARGET=arm-unknown-linux-musleabihf - - env: TARGET=aarch64-unknown-linux-gnu - - env: TARGET=aarch64-unknown-linux-musl - # FIXME(#856) - rust: 1.22.1 - - os: osx - osx_image: xcode9.4 - env: TARGET=i386-apple-ios - CARGO_TARGET_I386_APPLE_IOS_RUNNER=$HOME/runtest - RUSTFLAGS=-Clink-arg=-mios-simulator-version-min=7.0 - before_install: - rustc ./ci/ios/deploy_and_run_on_ios_simulator.rs -o $HOME/runtest - - os: osx - osx_image: xcode9.4 - env: TARGET=x86_64-apple-ios - CARGO_TARGET_X86_64_APPLE_IOS_RUNNER=$HOME/runtest - RUSTFLAGS=-Clink-arg=-mios-simulator-version-min=7.0 - before_install: - rustc ./ci/ios/deploy_and_run_on_ios_simulator.rs -o $HOME/runtest - - env: TARGET=x86_64-rumprun-netbsd - - env: TARGET=powerpc-unknown-linux-gnu - - env: TARGET=powerpc64-unknown-linux-gnu - - env: TARGET=powerpc64le-unknown-linux-gnu - - env: TARGET=mips-unknown-linux-musl - - env: TARGET=mipsel-unknown-linux-musl - - env: TARGET=mips64-unknown-linux-gnuabi64 - - env: TARGET=mips64el-unknown-linux-gnuabi64 - - env: TARGET=mips-unknown-linux-gnu - - env: TARGET=s390x-unknown-linux-gnu - - env: TARGET=sparc64-unknown-linux-gnu - - env: TARGET=asmjs-unknown-emscripten - - env: TARGET=wasm32-unknown-emscripten - - # beta - - env: TARGET=x86_64-unknown-linux-gnu NO_ADD=1 - rust: beta - - os: osx - env: TARGET=x86_64-apple-darwin NO_ADD=1 - osx_image: xcode9.4 - rust: beta - - # nightly - - env: TARGET=x86_64-unknown-linux-gnu NO_ADD=1 - rust: nightly - - os: osx - env: TARGET=x86_64-apple-darwin NO_ADD=1 - osx_image: xcode9.4 - rust: nightly - # not available on stable - # without --release the build fails - # see https://github.com/rust-lang/rust/issues/45417 - - env: TARGET=x86_64-unknown-linux-gnux32 OPT="--release" - rust: nightly - - # QEMU based targets that compile in an emulator - - env: TARGET=x86_64-unknown-freebsd - allow_failures: - - env: TARGET=i386-apple-ios - CARGO_TARGET_I386_APPLE_IOS_RUNNER=$HOME/runtest - RUSTFLAGS=-Clink-arg=-mios-simulator-version-min=7.0 - - env: TARGET=x86_64-apple-ios - CARGO_TARGET_X86_64_APPLE_IOS_RUNNER=$HOME/runtest - RUSTFLAGS=-Clink-arg=-mios-simulator-version-min=7.0 - -notifications: - email: - on_success: never - webhooks: https://buildbot.rust-lang.org/homu/travis diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/memchr/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/memchr/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/memchr/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/memchr/.cargo-checksum.json 2019-01-04 19:47:54.000000000 +0000 @@ -1 +1 @@ -{"files":{".cargo_vcs_info.json":"e9e75d408c8cc683f2d4a342b0ebda3404ec9bcc2f57a4e6140d6635e027ac79","COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.toml":"67dd2af5f82f799d0c6813c0bd2842d4d6a617245e4b72b7852eb5eee01cac12","LICENSE-MIT":"0f96a83840e146e43c0ec96a22ec1f392e0680e6c1226e6f3ba87e0740af850f","README.md":"21eb8e15c7eb21e7983e7f8a832fd7fd9abb261e09b1a19c24d808c55e7cf2b4","UNLICENSE":"7e12e5df4bae12cb21581ba157ced20e1986a0508dd10d0e8a4ab9a4cf94e85c","build.rs":"9f5847801620525d5afe503bb9f01ed86f652f0bacfcc446ddf6db6fa4665b8a","src/c.rs":"86fe35cbb46c8bece9927fbde20f1ca3af526defdde05ac969ad2f4bc9bb25e9","src/fallback.rs":"a79752e3bdc3c16febef90fcddb560f80659f802fac202cce3fdffd0b78f6d08","src/iter.rs":"5949fd42b266d3edebf133172c74700d1c0249bdd26c203bcfd1409583e7b502","src/lib.rs":"f70e83d1fea95d5f420c59783a381899267de151fb09e33ffc66069749631a21","src/naive.rs":"d908e5895586ef88913ee10ff3135aabd20363e0e0871c7006a5d40457851deb","src/tests/iter.rs":"262c09e5cabd1caef533475832da8716638b142ec8015e8270c6f5240e478ac1","src/tests/memchr.rs":"f30074eeab99a16ce5ca8a30f1890f86c43c0422523a7195cbb3ca5f3e465b67","src/tests/mod.rs":"8a7bd2bce336daf3767e5d012d06077b07be445c98af0e15ab03f5eb438ec876","src/x86/avx.rs":"11d4a149007fde9f34168fa43b3cba700667782c987796dca8526564b3e01007","src/x86/mod.rs":"f2e558e364e64b90c1bd55659332f54a3d6d36badc1aab9f67c4cfc2689c557a","src/x86/sse2.rs":"103bb9d555be789e678f1af5baa737e13911f60e90888d25fa2883b39a9dffce","src/x86/sse42.rs":"f671ae9dd2b518a823e499a09ce32d4957bc5ae043db90d61c027e32f688f2b2"},"package":"0a3eb002f0535929f1199681417029ebea04aadc0c7a4224b46be99c7f5d6a16"} \ No newline at end of file +{"files":{".cargo_vcs_info.json":"874c8a2e49e4d8c6d8dba55ad707a4ed25d3898034b17e97a345b58505c8c867","COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.toml":"25b632ec2b3231078c664f12a183ae906722f8f93750eb2f07f97cbc94962c19","LICENSE-MIT":"0f96a83840e146e43c0ec96a22ec1f392e0680e6c1226e6f3ba87e0740af850f","README.md":"21eb8e15c7eb21e7983e7f8a832fd7fd9abb261e09b1a19c24d808c55e7cf2b4","UNLICENSE":"7e12e5df4bae12cb21581ba157ced20e1986a0508dd10d0e8a4ab9a4cf94e85c","build.rs":"9f5847801620525d5afe503bb9f01ed86f652f0bacfcc446ddf6db6fa4665b8a","src/c.rs":"86fe35cbb46c8bece9927fbde20f1ca3af526defdde05ac969ad2f4bc9bb25e9","src/fallback.rs":"a79752e3bdc3c16febef90fcddb560f80659f802fac202cce3fdffd0b78f6d08","src/iter.rs":"5949fd42b266d3edebf133172c74700d1c0249bdd26c203bcfd1409583e7b502","src/lib.rs":"acdc505d518dd465ec62fbb810e19decf3bd2aff225603f41d57221bfdccaa1a","src/naive.rs":"d908e5895586ef88913ee10ff3135aabd20363e0e0871c7006a5d40457851deb","src/tests/iter.rs":"262c09e5cabd1caef533475832da8716638b142ec8015e8270c6f5240e478ac1","src/tests/memchr.rs":"f30074eeab99a16ce5ca8a30f1890f86c43c0422523a7195cbb3ca5f3e465b67","src/tests/mod.rs":"8a7bd2bce336daf3767e5d012d06077b07be445c98af0e15ab03f5eb438ec876","src/x86/avx.rs":"11d4a149007fde9f34168fa43b3cba700667782c987796dca8526564b3e01007","src/x86/mod.rs":"f2e558e364e64b90c1bd55659332f54a3d6d36badc1aab9f67c4cfc2689c557a","src/x86/sse2.rs":"103bb9d555be789e678f1af5baa737e13911f60e90888d25fa2883b39a9dffce","src/x86/sse42.rs":"f671ae9dd2b518a823e499a09ce32d4957bc5ae043db90d61c027e32f688f2b2"},"package":"db4c41318937f6e76648f42826b1d9ade5c09cafb5aef7e351240a70f39206e9"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/memchr/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/memchr/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/memchr/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/memchr/Cargo.toml 2019-01-04 19:47:54.000000000 +0000 @@ -12,7 +12,7 @@ [package] name = "memchr" -version = "2.1.1" +version = "2.1.2" authors = ["Andrew Gallant <jamslam@gmail.com>", "bluss"] exclude = ["/ci/*", "/.travis.yml", "/Makefile", "/appveyor.yml", "/ctags.rust", "/session.vim"] description = "Safe interface to memchr." diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/memchr/.cargo_vcs_info.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/memchr/.cargo_vcs_info.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/memchr/.cargo_vcs_info.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/memchr/.cargo_vcs_info.json 2019-01-04 19:47:54.000000000 +0000 @@ -1,5 +1,5 @@ { "git": { - "sha1": "f53072a33b39a3286c4cd38c16938a2aa828ebb2" + "sha1": "437a177ab53bc1c27b5bcd5c23c3f2b0b6594d73" } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/memchr/src/lib.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/memchr/src/lib.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/memchr/src/lib.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/memchr/src/lib.rs 2019-01-04 19:47:54.000000000 +0000 @@ -46,6 +46,7 @@ #[cfg(all( feature = "libc", not(target_arch = "wasm32"), + not(target_env = "sgx"), ))] mod c; #[allow(dead_code)] @@ -118,7 +119,7 @@ /// /// While this is operationally the same as something like /// `haystack.iter().position(|&b| b == needle)`, `memchr` will use a highly -/// optimized routine that can be up to an order of magnitude master in some +/// optimized routine that can be up to an order of magnitude faster in some /// cases. /// /// # Example @@ -143,6 +144,7 @@ feature = "libc", not(target_arch = "wasm32"), not(target_arch = "windows"), + not(target_env = "sgx"), ))] { #[inline(always)] fn imp(n1: u8, haystack: &[u8]) -> Option<usize> { @@ -246,6 +248,7 @@ target_os = "linux", not(target_arch = "wasm32"), not(target_arch = "windows"), + not(target_env = "sgx"), ))] { #[inline(always)] fn imp(n1: u8, haystack: &[u8]) -> Option<usize> { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/nodrop/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/nodrop/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/nodrop/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/nodrop/.cargo-checksum.json 2019-01-04 19:47:54.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"518e2e6cea4cec4804a6fc04c8138a2db95783cbc13e0b49526553232f7b9699","README.rst":"68844a4fd6edead8ecd0c0053a8618f89fc5bbe8bc1ee000808358f6f0f4d8ff","src/lib.rs":"96d5ddaf03ccbdff8ddcd79b5fdc015aad4451a8d76d0b9a94dff14f49e2dcc9"},"package":"9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2"} \ No newline at end of file +{"files":{".cargo_vcs_info.json":"a63b5aa897fa6a4b2b16a1e6e192172dcff670a5491912073e857cae4308fbf0","Cargo.toml":"e112b37952d4e1939005df672d254a0e4e460ea04cc56914fd0337a2d9c97e0d","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"0245ee104228a100ce5fceecf43e25faae450494d9173f43fd94c27d69fdac13","README.rst":"68844a4fd6edead8ecd0c0053a8618f89fc5bbe8bc1ee000808358f6f0f4d8ff","src/lib.rs":"96d5ddaf03ccbdff8ddcd79b5fdc015aad4451a8d76d0b9a94dff14f49e2dcc9"},"package":"2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/nodrop/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/nodrop/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/nodrop/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/nodrop/Cargo.toml 2019-01-04 19:47:54.000000000 +0000 @@ -12,7 +12,7 @@ [package] name = "nodrop" -version = "0.1.12" +version = "0.1.13" authors = ["bluss"] description = "A wrapper type to inhibit drop (destructor). Use std::mem::ManuallyDrop instead!" documentation = "https://docs.rs/nodrop/" @@ -27,7 +27,7 @@ optional = true [features] +default = ["std"] std = [] -use_union = ["nodrop-union"] use_needs_drop = [] -default = ["std"] +use_union = ["nodrop-union"] diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/nodrop/.cargo_vcs_info.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/nodrop/.cargo_vcs_info.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/nodrop/.cargo_vcs_info.json 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/nodrop/.cargo_vcs_info.json 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,5 @@ +{ + "git": { + "sha1": "08c20edbb0c62939904759b9c14095ca0fd07d03" + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/nodrop/LICENSE-APACHE distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/nodrop/LICENSE-APACHE --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/nodrop/LICENSE-APACHE 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/nodrop/LICENSE-APACHE 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,201 @@ + 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 -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/nodrop/LICENSE-MIT distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/nodrop/LICENSE-MIT --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/nodrop/LICENSE-MIT 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/nodrop/LICENSE-MIT 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,25 @@ +Copyright (c) Ulrik Sverdrup "bluss" 2015-2017 + +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 -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/num_cpus/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/num_cpus/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/num_cpus/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/num_cpus/.cargo-checksum.json 2019-01-04 19:47:54.000000000 +0000 @@ -1 +1 @@ -{"files":{".appveyor.yml":"2f3f82a91e82a6c0b601048a5c9cd9b39fa78dfb7172ecfe7ff3d4d010af66d8",".travis.yml":"7ed9195d081e7416bdd3b8e55884d1576d884254f9c46939cbe03340d812cbb1","CHANGELOG.md":"d0c6e3a26fcecc0de47ad2b20062a7d8bb9394bfccc1da0452aad19d6f5f60cd","CONTRIBUTING.md":"2390961aab1bba026135338da1216b6cc828dfaeed9357d9c155c55a252d3efb","Cargo.toml":"239b7c3b0d1dc06135126159213c339ec7b3b18ed9efc6a87b5fb883dd4a23d0","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"0593d22d122d4bfec6407115e3907546312976f75473417aaa4c57ecd2095ae6","README.md":"12451d6905fe9cdac206410de8071b562e5ea936b6e55a19ac97982831a0fcdb","src/lib.rs":"a5e5b054f6a4c8f35b3da147a97d07f8b7b40a8df717bccb220e5481d7a01818"},"package":"c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30"} \ No newline at end of file +{"files":{".appveyor.yml":"2f3f82a91e82a6c0b601048a5c9cd9b39fa78dfb7172ecfe7ff3d4d010af66d8",".cargo_vcs_info.json":"6001725b35dc338ebb38a4f9c1aef918a8d77533bd20171dd67a7f90dd9e38e1",".travis.yml":"7ed9195d081e7416bdd3b8e55884d1576d884254f9c46939cbe03340d812cbb1","CHANGELOG.md":"58727c3d54599ce33d01718d3340eaff7ccb06e9c1814b5205a05179a20810e1","CONTRIBUTING.md":"2390961aab1bba026135338da1216b6cc828dfaeed9357d9c155c55a252d3efb","Cargo.toml":"2c821b2486ab51316e2ffb4eaa2f674ee77898b85e3f4168fe7da91aff6424d4","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"0593d22d122d4bfec6407115e3907546312976f75473417aaa4c57ecd2095ae6","README.md":"12451d6905fe9cdac206410de8071b562e5ea936b6e55a19ac97982831a0fcdb","src/lib.rs":"30a4489dcae47f5aa63a7e5394e67652ab63639db1a2ed37aef48ca3eee042ef"},"package":"5a69d464bdc213aaaff628444e99578ede64e9c854025aa43b9796530afa9238"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/num_cpus/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/num_cpus/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/num_cpus/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/num_cpus/Cargo.toml 2019-01-04 19:47:54.000000000 +0000 @@ -12,7 +12,7 @@ [package] name = "num_cpus" -version = "1.8.0" +version = "1.9.0" authors = ["Sean McArthur <sean@seanmonstar.com>"] description = "Get the number of CPUs on a machine." documentation = "https://docs.rs/num_cpus" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/num_cpus/.cargo_vcs_info.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/num_cpus/.cargo_vcs_info.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/num_cpus/.cargo_vcs_info.json 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/num_cpus/.cargo_vcs_info.json 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,5 @@ +{ + "git": { + "sha1": "f8c39709074a56414848c3f39d35e06064d779b7" + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/num_cpus/CHANGELOG.md distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/num_cpus/CHANGELOG.md --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/num_cpus/CHANGELOG.md 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/num_cpus/CHANGELOG.md 2019-01-04 19:47:54.000000000 +0000 @@ -1,3 +1,9 @@ +## v1.9.0 + +#### Features + +- add `sgx` target env support + ## v1.8.0 #### Features diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/num_cpus/src/lib.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/num_cpus/src/lib.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/num_cpus/src/lib.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/num_cpus/src/lib.rs 2019-01-04 19:47:54.000000000 +0000 @@ -28,7 +28,7 @@ //! [`rayon::ThreadPool`]: https://docs.rs/rayon/0.8.2/rayon/struct.ThreadPool.html #![cfg_attr(test, deny(warnings))] #![deny(missing_docs)] -#![doc(html_root_url = "https://docs.rs/num_cpus/1.8.0")] +#![doc(html_root_url = "https://docs.rs/num_cpus/1.9.0")] #![allow(non_snake_case)] #[cfg(not(windows))] @@ -374,12 +374,13 @@ } } -#[cfg(any(target_os = "emscripten", target_os = "redox", target_os = "haiku"))] -fn get_num_cpus() -> usize { - 1 -} - -#[cfg(all(target_arch = "wasm32", not(target_os = "emscripten")))] +#[cfg(any( + target_os = "emscripten", + target_os = "redox", + target_os = "haiku", + target_arch = "wasm32", + target_env = "sgx" +))] fn get_num_cpus() -> usize { 1 } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/os-detect/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/os-detect/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/os-detect/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/os-detect/.cargo-checksum.json 2019-01-04 19:47:54.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"91deb4eddc04f0dba858f1704d47ce6273ae09e1123ede7b8c9183bc7c583778","LICENSE":"97c6b886c115baca7675e470f040a3ce2ff6d5cd2fc55a3d44538ed142ca9767","README.md":"7f96686b242c7fd030c13b2f23aa2856be204e969d239408ed381803bfa06283","src/lib.rs":"78f1fefced9d1ae10ae42153f53feb771f7fa9bd5a2feb3908730046a807f6e8"},"package":"c42d4bbf05eb63347ad4e8a2acb8242cbbd2e7d10ddcd2eb7572ff38d9f39a4f"} \ No newline at end of file +{"files":{"Cargo.toml":"21a4da178f270e003a09290102fea4b5545954ebb986a6357600b91cdb8bf124","LICENSE":"97c6b886c115baca7675e470f040a3ce2ff6d5cd2fc55a3d44538ed142ca9767","README.md":"7f96686b242c7fd030c13b2f23aa2856be204e969d239408ed381803bfa06283","src/lib.rs":"78f1fefced9d1ae10ae42153f53feb771f7fa9bd5a2feb3908730046a807f6e8"},"package":"0aea13363b04f639cec843005eef8527671b1cca253f3bcc279b0cbed90c1171"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/os-detect/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/os-detect/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/os-detect/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/os-detect/Cargo.toml 2019-01-04 19:47:54.000000000 +0000 @@ -12,7 +12,7 @@ [package] name = "os-detect" -version = "0.2.1" +version = "0.2.2" authors = ["Jeremy Soller <jackpot51@gmail.com>", "Michael Aaron Murphy <mmstickman@gmail.com>"] description = "Detect an OS installed on a partition" readme = "README.md" @@ -27,10 +27,10 @@ version = "0.1.0" [dependencies.partition-identity] -version = "0.1.6" +version = "0.2.0" [dependencies.sys-mount] -version = "1.0.3" +version = "1.1.0" [dependencies.tempdir] version = "0.3.7" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/partition-identity/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/partition-identity/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/partition-identity/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/partition-identity/.cargo-checksum.json 2019-01-04 19:47:54.000000000 +0000 @@ -1 +1 @@ -{"files":{".cargo_vcs_info.json":"ef01a28d4c486b0fd3a2ca2003e9a3c2e65e15ff3a73d82b43a969714c873d8f","Cargo.toml":"f8c6b815ba98494d4d5c9e6e148bf4256d4340f0bbeef4af706b2544f4cdc5c0","LICENSE":"97c6b886c115baca7675e470f040a3ce2ff6d5cd2fc55a3d44538ed142ca9767","README.md":"8454673028c4fedba4df9bc688c6837fe2fc35cf06eec9d80b68174a812c3403","examples/example.rs":"83efb3a40c9347db96b6f88e24a4f479b61040a45e4f82782b6f4a0fa157b1b6","src/lib.rs":"f40b5087ddff0f24ee50630e212c045adcb3186e90f121793b291e0af6292fb4"},"package":"63980992bd7ba72ae074d8e408af71aa5290cadccc5a80be1590dd9572c4f386"} \ No newline at end of file +{"files":{"Cargo.toml":"d0a71e9cfb6d5ee581a0e1f229cef2f7ce7493148b97e971fcd7c7a4b32274d0","LICENSE":"97c6b886c115baca7675e470f040a3ce2ff6d5cd2fc55a3d44538ed142ca9767","README.md":"8454673028c4fedba4df9bc688c6837fe2fc35cf06eec9d80b68174a812c3403","examples/example.rs":"15dc4338c3b4ef8c9f9f8f1c4482b5f869fc3603aa4860fae24fbcd511403b33","src/lib.rs":"10b1106b32ad3a2d6ef7dbfa84308b3060ae0f862ff988132e496a8eadd0e6d1"},"package":"08bee0933f5f97475cfd0041fb511532b0f01b63bba547216c3d361240a5630a"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/partition-identity/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/partition-identity/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/partition-identity/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/partition-identity/Cargo.toml 2019-01-04 19:47:54.000000000 +0000 @@ -12,7 +12,7 @@ [package] name = "partition-identity" -version = "0.1.7" +version = "0.2.0" authors = ["Michael Aaron Murphy <mmstickman@gmail.com>"] description = "Find the ID of a device by its path, or find a device path by its ID." readme = "README.md" @@ -20,5 +20,8 @@ categories = ["os", "os::unix-apis"] license = "MIT" repository = "https://github.com/pop-os/partition-identity" +[dependencies.failure] +version = "0.1" -[dependencies] +[dependencies.failure_derive] +version = "0.1" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/partition-identity/.cargo_vcs_info.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/partition-identity/.cargo_vcs_info.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/partition-identity/.cargo_vcs_info.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/partition-identity/.cargo_vcs_info.json 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -{ - "git": { - "sha1": "70cf74314cd47313ee0c863e7a14173b6dd635b9" - } -} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/partition-identity/examples/example.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/partition-identity/examples/example.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/partition-identity/examples/example.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/partition-identity/examples/example.rs 2019-01-04 19:47:54.000000000 +0000 @@ -35,6 +35,19 @@ println!("{}: {:?}", id, var.get_device_path()); } } + "detect-by" => { + for id in args { + let id = match PartitionID::from_disk_by_path(&id) { + Ok(id) => id, + Err(why) => { + eprintln!("{}: {}", id, why); + exit(1); + } + }; + + println!("{:?} = {:?}", id, id.get_device_path()); + } + } _ => { eprintln!("invalid subcommand: valid commansd: [from-path, by-uuid, by-partuuid, ]"); exit(1); diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/partition-identity/src/lib.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/partition-identity/src/lib.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/partition-identity/src/lib.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/partition-identity/src/lib.rs 2019-01-04 19:47:54.000000000 +0000 @@ -1,11 +1,24 @@ //! Find the ID of a device by its path, or find a device path by its ID. +extern crate failure; +#[macro_use] +extern crate failure_derive; + use self::PartitionSource::*; use self::PartitionSource::Path as SourcePath; use std::fs; use std::path::{Path, PathBuf}; use std::str::FromStr; +#[derive(Debug, Fail)] +pub enum Error { + #[fail(display = "the partition ID key was invalid")] + InvalidKey, + #[fail(display = "the provided path was not valid in this context")] + InvalidPath, + #[fail(display = "the provided `/dev/disk/by-` path was not supported")] + UnknownByPath +} /// Describes a partition identity. /// @@ -75,6 +88,35 @@ Self::get_source(PartUUID, path) } + /// Fetch a partition ID by a `/dev/disk/by-` path. + pub fn from_disk_by_path<S: AsRef<str>>(path: S) -> Result<Self, Error> { + let path = path.as_ref(); + + let path = if path.starts_with("/dev/disk/by-") { + &path[13..] + } else { + return Err(Error::InvalidPath); + }; + + let id = if path.starts_with("id/") { + Self::new(ID, path[3..].into()) + } else if path.starts_with("label/") { + Self::new(Label, path[6..].into()) + } else if path.starts_with("partlabel/") { + Self::new(PartLabel, path[10..].into()) + } else if path.starts_with("partuuid/") { + Self::new(PartUUID, path[9..].into()) + } else if path.starts_with("path/") { + Self::new(Path, path[5..].into()) + } else if path.starts_with("uuid/") { + Self::new(UUID, path[5..].into()) + } else { + return Err(Error::UnknownByPath); + }; + + Ok(id) + } + fn dir(variant: PartitionSource) -> Option<fs::ReadDir> { let idpath = variant.disk_by_path(); idpath.read_dir().ok() @@ -82,7 +124,7 @@ } impl FromStr for PartitionID { - type Err = String; + type Err = Error; fn from_str(input: &str) -> Result<Self, Self::Err> { if input.starts_with('/') { @@ -98,7 +140,7 @@ } else if input.starts_with("UUID=") { Ok(PartitionID { variant: UUID, id: input[5..].to_owned() }) } else { - Err(format!("'{}' is not a valid PartitionID string", input)) + Err(Error::InvalidKey) } } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-macro2/build.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-macro2/build.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-macro2/build.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-macro2/build.rs 2019-01-04 19:47:54.000000000 +0000 @@ -22,11 +22,13 @@ println!("cargo:rustc-cfg=use_proc_macro"); // Rust 1.29 stabilized the necessary APIs in the `proc_macro` crate - if minor >= 29 || cfg!(feature = "nightly") { + if (minor >= 29 && !cfg!(procmacro2_semver_exempt)) || cfg!(feature = "nightly") { println!("cargo:rustc-cfg=wrap_proc_macro"); if cfg!(procmacro2_semver_exempt) { println!("cargo:rustc-cfg=super_unstable"); + // https://github.com/alexcrichton/proc-macro2/issues/147 + println!("cargo:rustc-cfg=procmacro2_semver_exempt"); } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-macro2/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-macro2/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-macro2/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-macro2/.cargo-checksum.json 2019-01-04 19:47:54.000000000 +0000 @@ -1 +1 @@ -{"files":{".cargo_vcs_info.json":"018823136d5cf8ffb086924aba4f4b8bcf656d268ebf71b780ecb1a5941cbd48",".travis.yml":"66255656e45e0eec2db0efb7186a9a052318ee02131c15d1e5b79f9e5af5881f","Cargo.toml":"fd5121bd859b876c6dccf522cf488516fdba2c4624a3028bca47edef3fdc6fa8","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"538fd635d385b6a90ef4cc1e361aad717162a139e932a6192212cad8407aa8e1","build.rs":"fe6bb3cbcb042386f350dd53a98be345bc4101de1f30e8d9bed4be5bb84910a1","src/lib.rs":"18c5c387933bef4466d3bcaaf2ef9a0633339eedd6c46cf34a2ca4ee16e453de","src/stable.rs":"fe9cac05f10c9c827933520b01595ab3fb3d082bbc7b31b42af125dcad15e728","src/strnom.rs":"807c377bdb49b8b1c67d013089b8ff33fe93ffd3fa36b6440dbb1d6fe8cd9c17","src/unstable.rs":"4f087bd9cd82d15844fe80c566391989729f611877cb3336ee359061576f0247","tests/test.rs":"428f4298e16a23db8f8fbb6101a30e993f08dc0befa2d95439dcefb364d7a7cf"},"package":"ab2fc21ba78ac73e4ff6b3818ece00be4e175ffbef4d0a717d978b48b24150c4"} \ No newline at end of file +{"files":{".travis.yml":"86bdfc24af6928e7f105bf5a86c4b838f014e99be6f87b6b180d94cc7cdcbbe3","Cargo.toml":"f020c87cba7dd2260861239307b2cb93e16c2bed6e2ef6c9178642b1dfcc43a3","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"538fd635d385b6a90ef4cc1e361aad717162a139e932a6192212cad8407aa8e1","build.rs":"7698abdd3087e0f3308916c37ade3349b6b000165186b80913013af18d36ecb6","src/lib.rs":"c5c276236d828189a5151c890a66f2b7d1c02beca98f08f2d9c01166df441eb2","src/stable.rs":"a1f29e850e5fc4c602ee1204847124e266087175695d77ec448016db910acb6b","src/strnom.rs":"807c377bdb49b8b1c67d013089b8ff33fe93ffd3fa36b6440dbb1d6fe8cd9c17","src/unstable.rs":"0b7f86862d8254104330d14837ea6ec89e7b3bf2ffe910b73629269f2bc282de","tests/marker.rs":"0227d07bbc7f2e2ad34662a6acb65668b7dc2f79141c4faa672703a04e27bea0","tests/test.rs":"427821bab498926aa56bfcea7d28c36fb24a7d63d7f59d3e7e097bcfc77fe95b"},"package":"77619697826f31a02ae974457af0b29b723e5619e113e9397b8b82c6bd253f09"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-macro2/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-macro2/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-macro2/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-macro2/Cargo.toml 2019-01-04 19:47:54.000000000 +0000 @@ -12,7 +12,7 @@ [package] name = "proc-macro2" -version = "0.4.21" +version = "0.4.24" authors = ["Alex Crichton <alex@alexcrichton.com>"] build = "build.rs" description = "A stable implementation of the upcoming new `proc_macro` API. Comes with an\noption, off by default, to also reimplement itself in terms of the upstream\nunstable API.\n" @@ -23,12 +23,12 @@ license = "MIT/Apache-2.0" repository = "https://github.com/alexcrichton/proc-macro2" [package.metadata.docs.rs] +rustc-args = ["--cfg", "procmacro2_semver_exempt"] rustdoc-args = ["--cfg", "procmacro2_semver_exempt"] - -[lib] -doctest = false [dependencies.unicode-xid] version = "0.1" +[dev-dependencies.quote] +version = "0.6" [features] default = ["proc-macro"] diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-macro2/.cargo_vcs_info.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-macro2/.cargo_vcs_info.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-macro2/.cargo_vcs_info.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-macro2/.cargo_vcs_info.json 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -{ - "git": { - "sha1": "3f8382d1bb42f0121707660b9b7f0628a371c840" - } -} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-macro2/src/lib.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-macro2/src/lib.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-macro2/src/lib.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-macro2/src/lib.rs 2019-01-04 19:47:54.000000000 +0000 @@ -43,7 +43,7 @@ //! [ts]: https://doc.rust-lang.org/proc_macro/struct.TokenStream.html // Proc-macro2 types in rustdoc of other crates get linked to here. -#![doc(html_root_url = "https://docs.rs/proc-macro2/0.4.21")] +#![doc(html_root_url = "https://docs.rs/proc-macro2/0.4.24")] #![cfg_attr( super_unstable, feature(proc_macro_raw_ident, proc_macro_span, proc_macro_def_site) @@ -58,6 +58,8 @@ use std::hash::{Hash, Hasher}; use std::iter::FromIterator; use std::marker; +#[cfg(procmacro2_semver_exempt)] +use std::path::PathBuf; use std::rc::Rc; use std::str::FromStr; @@ -211,19 +213,25 @@ } } -// Returned by reference, so we can't easily wrap it. -#[cfg(procmacro2_semver_exempt)] -pub use imp::FileName; - /// The source file of a given `Span`. /// /// This type is semver exempt and not exposed by default. #[cfg(procmacro2_semver_exempt)] #[derive(Clone, PartialEq, Eq)] -pub struct SourceFile(imp::SourceFile); +pub struct SourceFile { + inner: imp::SourceFile, + _marker: marker::PhantomData<Rc<()>>, +} #[cfg(procmacro2_semver_exempt)] impl SourceFile { + fn _new(inner: imp::SourceFile) -> Self { + SourceFile { + inner: inner, + _marker: marker::PhantomData, + } + } + /// Get the path to this source file. /// /// ### Note @@ -237,28 +245,21 @@ /// may not actually be valid. /// /// [`is_real`]: #method.is_real - pub fn path(&self) -> &FileName { - self.0.path() + pub fn path(&self) -> PathBuf { + self.inner.path() } /// Returns `true` if this source file is a real source file, and not /// generated by an external macro's expansion. pub fn is_real(&self) -> bool { - self.0.is_real() - } -} - -#[cfg(procmacro2_semver_exempt)] -impl AsRef<FileName> for SourceFile { - fn as_ref(&self) -> &FileName { - self.0.path() + self.inner.is_real() } } #[cfg(procmacro2_semver_exempt)] impl fmt::Debug for SourceFile { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - self.0.fmt(f) + self.inner.fmt(f) } } @@ -344,7 +345,7 @@ /// This method is semver exempt and not exposed by default. #[cfg(procmacro2_semver_exempt)] pub fn source_file(&self) -> SourceFile { - SourceFile(self.inner.source_file()) + SourceFile::_new(self.inner.source_file()) } /// Get the starting line/column in the source file for this span. @@ -714,11 +715,11 @@ /// - A lifetime is not an identifier. Use `syn::Lifetime` instead. /// /// An identifier constructed with `Ident::new` is permitted to be a Rust -/// keyword, though parsing one through its [`Synom`] implementation rejects -/// Rust keywords. Use `call!(Ident::parse_any)` when parsing to match the +/// keyword, though parsing one through its [`Parse`] implementation rejects +/// Rust keywords. Use `input.call(Ident::parse_any)` when parsing to match the /// behaviour of `Ident::new`. /// -/// [`Synom`]: https://docs.rs/syn/0.14/syn/synom/trait.Synom.html +/// [`Parse`]: https://docs.rs/syn/0.15/syn/parse/trait.Parse.html /// /// # Examples /// diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-macro2/src/stable.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-macro2/src/stable.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-macro2/src/stable.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-macro2/src/stable.rs 2019-01-04 19:47:54.000000000 +0000 @@ -6,6 +6,9 @@ use std::cmp; use std::fmt; use std::iter; +#[cfg(procmacro2_semver_exempt)] +use std::path::Path; +use std::path::PathBuf; use std::str::FromStr; use std::vec; @@ -190,29 +193,15 @@ } } -#[derive(Clone, PartialEq, Eq, Debug)] -pub struct FileName(String); - -#[allow(dead_code)] -pub fn file_name(s: String) -> FileName { - FileName(s) -} - -impl fmt::Display for FileName { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - self.0.fmt(f) - } -} - #[derive(Clone, PartialEq, Eq)] pub struct SourceFile { - name: FileName, + path: PathBuf, } impl SourceFile { /// Get the path to this source file as a string. - pub fn path(&self) -> &FileName { - &self.name + pub fn path(&self) -> PathBuf { + self.path.clone() } pub fn is_real(&self) -> bool { @@ -221,12 +210,6 @@ } } -impl AsRef<FileName> for SourceFile { - fn as_ref(&self) -> &FileName { - self.path() - } -} - impl fmt::Debug for SourceFile { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { f.debug_struct("SourceFile") @@ -382,7 +365,7 @@ let cm = cm.borrow(); let fi = cm.fileinfo(*self); SourceFile { - name: FileName(fi.name.clone()), + path: Path::new(&fi.name).to_owned(), } }) } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-macro2/src/unstable.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-macro2/src/unstable.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-macro2/src/unstable.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-macro2/src/unstable.rs 2019-01-04 19:47:54.000000000 +0000 @@ -3,6 +3,8 @@ use std::fmt; use std::iter; use std::panic::{self, PanicInfo}; +#[cfg(super_unstable)] +use std::path::PathBuf; use std::str::FromStr; use proc_macro; @@ -382,52 +384,40 @@ } } -pub use stable::FileName; - -// NOTE: We have to generate our own filename object here because we can't wrap -// the one provided by proc_macro. #[derive(Clone, PartialEq, Eq)] #[cfg(super_unstable)] pub enum SourceFile { - Nightly(proc_macro::SourceFile, FileName), + Nightly(proc_macro::SourceFile), Stable(stable::SourceFile), } #[cfg(super_unstable)] impl SourceFile { fn nightly(sf: proc_macro::SourceFile) -> Self { - let filename = stable::file_name(sf.path().display().to_string()); - SourceFile::Nightly(sf, filename) + SourceFile::Nightly(sf) } /// Get the path to this source file as a string. - pub fn path(&self) -> &FileName { + pub fn path(&self) -> PathBuf { match self { - SourceFile::Nightly(_, f) => f, + SourceFile::Nightly(a) => a.path(), SourceFile::Stable(a) => a.path(), } } pub fn is_real(&self) -> bool { match self { - SourceFile::Nightly(a, _) => a.is_real(), + SourceFile::Nightly(a) => a.is_real(), SourceFile::Stable(a) => a.is_real(), } } } #[cfg(super_unstable)] -impl AsRef<FileName> for SourceFile { - fn as_ref(&self) -> &FileName { - self.path() - } -} - -#[cfg(super_unstable)] impl fmt::Debug for SourceFile { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match self { - SourceFile::Nightly(a, _) => a.fmt(f), + SourceFile::Nightly(a) => a.fmt(f), SourceFile::Stable(a) => a.fmt(f), } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-macro2/tests/marker.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-macro2/tests/marker.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-macro2/tests/marker.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-macro2/tests/marker.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,61 @@ +extern crate proc_macro2; + +use proc_macro2::*; + +macro_rules! assert_impl { + ($ty:ident is $($marker:ident) and +) => { + #[test] + #[allow(non_snake_case)] + fn $ty() { + fn assert_implemented<T: $($marker +)+>() {} + assert_implemented::<$ty>(); + } + }; + + ($ty:ident is not $($marker:ident) or +) => { + #[test] + #[allow(non_snake_case)] + fn $ty() { + $( + { + // Implemented for types that implement $marker. + trait IsNotImplemented { + fn assert_not_implemented() {} + } + impl<T: $marker> IsNotImplemented for T {} + + // Implemented for the type being tested. + trait IsImplemented { + fn assert_not_implemented() {} + } + impl IsImplemented for $ty {} + + // If $ty does not implement $marker, there is no ambiguity + // in the following trait method call. + <$ty>::assert_not_implemented(); + } + )+ + } + }; +} + +assert_impl!(Delimiter is Send and Sync); +assert_impl!(Spacing is Send and Sync); + +assert_impl!(Group is not Send or Sync); +assert_impl!(Ident is not Send or Sync); +assert_impl!(LexError is not Send or Sync); +assert_impl!(Literal is not Send or Sync); +assert_impl!(Punct is not Send or Sync); +assert_impl!(Span is not Send or Sync); +assert_impl!(TokenStream is not Send or Sync); +assert_impl!(TokenTree is not Send or Sync); + +#[cfg(procmacro2_semver_exempt)] +mod semver_exempt { + use super::*; + + assert_impl!(LineColumn is Send and Sync); + + assert_impl!(SourceFile is not Send or Sync); +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-macro2/tests/test.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-macro2/tests/test.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-macro2/tests/test.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-macro2/tests/test.rs 2019-01-04 19:47:54.000000000 +0000 @@ -203,7 +203,7 @@ assert_eq!(end.line, 1); assert_eq!(end.column, 0); let source_file = Span::call_site().source_file(); - assert_eq!(source_file.path().to_string(), "<unspecified>"); + assert_eq!(source_file.path().to_string_lossy(), "<unspecified>"); assert!(!source_file.is_real()); } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-macro2/.travis.yml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-macro2/.travis.yml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-macro2/.travis.yml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-macro2/.travis.yml 2019-01-04 19:47:54.000000000 +0000 @@ -3,7 +3,11 @@ matrix: include: - - rust: 1.15.0 + - rust: 1.15.0 # oldest supported version + script: cargo build + - rust: 1.19.0 # first release with the --tests flag + script: cargo test --tests + - rust: 1.26.0 # first release on which our doc tests pass - rust: stable - rust: beta - rust: nightly @@ -23,6 +27,7 @@ script: - cargo test + - RUSTFLAGS='--cfg procmacro2_semver_exempt' cargo test notifications: email: diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-mounts/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-mounts/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-mounts/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-mounts/.cargo-checksum.json 2019-01-04 19:47:54.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"ae858080c9dc7060c6c38f4ed92580ffbe4e582c85e840783fe8363e904b7736","LICENSE":"97c6b886c115baca7675e470f040a3ce2ff6d5cd2fc55a3d44538ed142ca9767","README.md":"1bba6661799f11f58676a6cf8600b0f4c9e57c7960afc1a241bbdd3906b66745","examples/example.rs":"5a28a673446d817f8a826f79d097522fdd01549fcc834e1422fb92f53daf0256","src/lib.rs":"8843000912a51cce05baf157baaeab73b1b8c6c09d5515133a3aef508651a61a","src/mounts.rs":"f1bb8617c95f709f1592b8709b92667bb38bfdf97d63d9733effbfe985cca728","src/swaps.rs":"46e705fb1016b125e446dfebd011c86c453ee5de7eb161e6bdd3cae1d1206a93"},"package":"8b1511bbfdc0fdd4acf0bab54df6793767e8ca87749b882f4d3b7dc53621e2e7"} \ No newline at end of file +{"files":{"Cargo.toml":"86d00baefe604be5929f01688f236b3c78d2c7088d8772f821669ea517225413","LICENSE":"97c6b886c115baca7675e470f040a3ce2ff6d5cd2fc55a3d44538ed142ca9767","README.md":"1bba6661799f11f58676a6cf8600b0f4c9e57c7960afc1a241bbdd3906b66745","examples/example.rs":"79aff50a0fa8bf73f2c80cde18a32884c3d10bcb67859be28a60b4c2c1b9fe0a","src/lib.rs":"b2c72f393e638e4ed15d955321531e26e55fe7b9612ddfa8a03dd859d6fd7789","src/mounts.rs":"7b45fad4db2ae63b61272e59b9ffa5668ee26f72afae69ba690fecaca6834d8e","src/swaps.rs":"46e705fb1016b125e446dfebd011c86c453ee5de7eb161e6bdd3cae1d1206a93"},"package":"3dbfc3eb15d90df4f4b3c0631f6b1e85e987c01b188bfadd02a504e5c95d9007"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-mounts/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-mounts/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-mounts/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-mounts/Cargo.toml 2019-01-04 19:47:54.000000000 +0000 @@ -12,7 +12,7 @@ [package] name = "proc-mounts" -version = "0.1.0" +version = "0.1.2" authors = ["Jeremy Soller <jackpot51@gmail.com>", "Michael Aaron Murphy <mmstickman@gmail.com>"] description = "Fetch active mounts and swaps on a Linux system" readme = "README.md" @@ -22,3 +22,6 @@ repository = "https://github.com/pop-os/proc-mounts" [dependencies.lazy_static] version = "1.1.0" + +[dependencies.partition-identity] +version = "0.2.0" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-mounts/examples/example.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-mounts/examples/example.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-mounts/examples/example.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-mounts/examples/example.rs 2019-01-04 19:47:54.000000000 +0000 @@ -6,7 +6,10 @@ fn main() -> io::Result<()> { println!("# Active Mounts"); for mount in MountIter::new()? { - println!("{:#?}", mount); + match mount { + Ok(mount) => println!("{:?}: {:?}", mount.source, mount.dest), + Err(why) => eprintln!("error reading mount: {}", why) + } } println!("# Active Swaps"); diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-mounts/src/lib.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-mounts/src/lib.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-mounts/src/lib.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-mounts/src/lib.rs 2019-01-04 19:47:54.000000000 +0000 @@ -23,6 +23,7 @@ #[macro_use] extern crate lazy_static; +extern crate partition_identity; mod mounts; mod swaps; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-mounts/src/mounts.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-mounts/src/mounts.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/proc-mounts/src/mounts.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/proc-mounts/src/mounts.rs 2019-01-04 19:47:54.000000000 +0000 @@ -4,14 +4,15 @@ use std::io::{self, BufRead, BufReader, Error, ErrorKind}; use std::os::unix::ffi::{OsStrExt, OsStringExt}; use std::path::{Path, PathBuf}; +use partition_identity::PartitionID; -/// A mount entry which contains information regarding how and where a device +/// A mount entry which contains information regarding how and where a source /// is mounted. #[derive(Debug, Clone, Hash, Eq, PartialEq)] pub struct MountInfo { - /// The device which is mounted. + /// The source which is mounted. pub source: PathBuf, - /// Where the device is mounted. + /// Where the source is mounted. pub dest: PathBuf, /// The type of the mounted file system. pub fstype: String, @@ -52,9 +53,29 @@ .parse::<i32>() .map_err(|_| Error::new(ErrorKind::InvalidData, "pass value is not a number"))?; + let path = Self::parse_value(source)?; + let path = path.to_str() + .ok_or_else(|| Error::new(ErrorKind::InvalidData, "non-utf8 paths are unsupported"))?; + + let source = if path.starts_with("/dev/disk/by-") { + Self::fetch_from_disk_by_path(path)? + } else { + PathBuf::from(path) + }; + + let path = Self::parse_value(dest)?; + let path = path.to_str() + .ok_or_else(|| Error::new(ErrorKind::InvalidData, "non-utf8 paths are unsupported"))?; + + let dest = if path.starts_with("/dev/disk/by-") { + Self::fetch_from_disk_by_path(path)? + } else { + PathBuf::from(path) + }; + Ok(MountInfo { - source: PathBuf::from(Self::parse_value(source)?), - dest: PathBuf::from(Self::parse_value(dest)?), + source, + dest, fstype: fstype.to_owned(), options: options.split(',').map(String::from).collect(), dump, @@ -62,6 +83,16 @@ }) } + fn fetch_from_disk_by_path(path: &str) -> io::Result<PathBuf> { + PartitionID::from_disk_by_path(path) + .map_err(|why| Error::new(ErrorKind::InvalidData, format!("{}: {}", path, why)))? + .get_device_path() + .ok_or_else(|| Error::new( + ErrorKind::NotFound, + format!("device path for {} was not found", path) + )) + } + fn parse_value(value: &str) -> io::Result<OsString> { let mut ret = Vec::new(); @@ -108,6 +139,12 @@ Ok(MountList(MountIter::new()?.collect::<io::Result<Vec<MountInfo>>>()?)) } + // Returns true if the `source` is mounted at the given `dest`. + pub fn source_mounted_at<D: AsRef<Path>, P: AsRef<Path>>(&self, source: D, path: P) -> bool { + self.get_mount_by_source(source) + .map_or(false, |mount| mount.dest.as_path() == path.as_ref()) + } + /// Find the first mount which which has the `path` destination. pub fn get_mount_by_dest<P: AsRef<Path>>(&self, path: P) -> Option<&MountInfo> { self.0 @@ -161,6 +198,29 @@ buffer: String::with_capacity(512), }) } + + /// Iterator-based variant of `source_mounted_at`. + /// + /// Returns true if the `source` is mounted at the given `dest`. + /// + /// Due to iterative parsing of the mount file, an error may be returned. + pub fn source_mounted_at<D: AsRef<Path>, P: AsRef<Path>>(source: D, path: P) -> io::Result<bool> { + let source = source.as_ref(); + let path = path.as_ref(); + + let mut is_found = false; + + let mounts = MountIter::new()?; + for mount in mounts { + let mount = mount?; + if mount.source == source { + is_found = mount.dest == path; + break + } + } + + Ok(is_found) + } } impl Iterator for MountIter { @@ -191,6 +251,13 @@ /dev/sda6 /mnt/data ext4 rw,noatime,data=ordered 0 0"#; #[test] + fn source_mounted_at() { + let mounts = MountList::parse_from(SAMPLE.lines()).unwrap(); + assert!(mounts.source_mounted_at("/dev/sda2", "/")); + assert!(mounts.source_mounted_at("/dev/sda1", "/boot/efi")); + } + + #[test] fn mounts() { let mounts = MountList::parse_from(SAMPLE.lines()).unwrap(); diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/quote/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/quote/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/quote/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/quote/.cargo-checksum.json 2019-01-04 19:47:54.000000000 +0000 @@ -1 +1 @@ -{"files":{".cargo_vcs_info.json":"1eff8dffb0ba72966ace65bb096ae5a189aff9058a3c1c3956a39ba0ed83b9d6","Cargo.toml":"5cb268a00475eb0014774ec62e16c3eb5343dfecbc729f25929b0e48af1848ba","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"c9a75f18b9ab2927829a208fc6aa2cf4e63b8420887ba29cdb265d6619ae82d5","README.md":"b43ef9b9c61628f8de7036271e61322cba23d878d056748e571f4f6cf9fba1b1","src/ext.rs":"a2def0b0f24c822b3f936a781c347e5f6fdc75120f85874c94f5e7eb708168c2","src/lib.rs":"3689b579765ba8d68aa1344ed25dea8e2bdce4a93ccb173709bfaed24ab1eafd","src/to_tokens.rs":"6c6e37057d21e4f6a7cb2d82194e981de8ed138354bbdb04e2fdeabad4a39e28","tests/test.rs":"90fe0e9a704e628339fe9298f0cb8307e94ebadfe28fffd7b2fc2d94203bc342"},"package":"63b5829244f52738cfee93b3a165c1911388675be000c888d2fae620dee8fa5b"} \ No newline at end of file +{"files":{".cargo_vcs_info.json":"8e4b3d9c314284d16c5e1d5df8ba48ef393e227947977440e979430d8a3832f2","Cargo.toml":"44cf9d3a28be1b21f4247572b6ca4d38dc3fd42fa84c4a4e0e5632aa27bee083","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"c9a75f18b9ab2927829a208fc6aa2cf4e63b8420887ba29cdb265d6619ae82d5","README.md":"b43ef9b9c61628f8de7036271e61322cba23d878d056748e571f4f6cf9fba1b1","src/ext.rs":"a2def0b0f24c822b3f936a781c347e5f6fdc75120f85874c94f5e7eb708168c2","src/lib.rs":"f1ba768690c57252e8135ee474a20bdd513fd0bd0664e9e9b697800163f39d08","src/to_tokens.rs":"86c419a72017846ef33a0acc53caee7312c750c90b3f1d3b58e33f20efcb94f4","tests/conditional/integer128.rs":"d83e21a91efbaa801a82ae499111bdda2d31edaa620e78c0199eba42d69c9ee6","tests/test.rs":"810013d7fd77b738abd0ace90ce2f2f3e219c757652eabab29bc1c0ce4a73b24"},"package":"53fa22a1994bd0f9372d7a816207d8a2677ad0325b073f5c5332760f0fb62b5c"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/quote/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/quote/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/quote/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/quote/Cargo.toml 2019-01-04 19:47:54.000000000 +0000 @@ -12,7 +12,7 @@ [package] name = "quote" -version = "0.6.9" +version = "0.6.10" authors = ["David Tolnay <dtolnay@gmail.com>"] include = ["Cargo.toml", "src/**/*.rs", "tests/**/*.rs", "README.md", "LICENSE-APACHE", "LICENSE-MIT"] description = "Quasi-quoting macro quote!(...)" @@ -23,7 +23,7 @@ license = "MIT/Apache-2.0" repository = "https://github.com/dtolnay/quote" [dependencies.proc-macro2] -version = "0.4.13" +version = "0.4.21" default-features = false [features] diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/quote/.cargo_vcs_info.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/quote/.cargo_vcs_info.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/quote/.cargo_vcs_info.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/quote/.cargo_vcs_info.json 2019-01-04 19:47:54.000000000 +0000 @@ -1,5 +1,5 @@ { "git": { - "sha1": "c731dbbf7bb1e917eec3e49dc2ab52d3060c4a7e" + "sha1": "44038ca42c212a5e10d22d8efa3d218d0dd2a743" } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/quote/src/lib.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/quote/src/lib.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/quote/src/lib.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/quote/src/lib.rs 2019-01-04 19:47:54.000000000 +0000 @@ -92,7 +92,7 @@ //! An even higher limit may be necessary for especially large invocations. // Quote types in rustdoc of other crates get linked to here. -#![doc(html_root_url = "https://docs.rs/quote/0.6.9")] +#![doc(html_root_url = "https://docs.rs/quote/0.6.10")] #[cfg(all( not(all(target_arch = "wasm32", target_os = "unknown")), diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/quote/src/to_tokens.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/quote/src/to_tokens.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/quote/src/to_tokens.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/quote/src/to_tokens.rs 2019-01-04 19:47:54.000000000 +0000 @@ -143,6 +143,12 @@ f64 => f64_suffixed } +#[cfg(integer128)] +primitive! { + i128 => i128_suffixed + u128 => u128_suffixed +} + impl ToTokens for char { fn to_tokens(&self, tokens: &mut TokenStream) { tokens.append(Literal::character(*self)); diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/quote/tests/conditional/integer128.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/quote/tests/conditional/integer128.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/quote/tests/conditional/integer128.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/quote/tests/conditional/integer128.rs 2019-01-04 19:47:54.000000000 +0000 @@ -0,0 +1,11 @@ +#[test] +fn test_integer128() { + let ii128 = -1i128; + let uu128 = 1u128; + + let tokens = quote! { + #ii128 #uu128 + }; + let expected = "-1i128 1u128"; + assert_eq!(expected, tokens.to_string()); +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/quote/tests/test.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/quote/tests/test.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/quote/tests/test.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/quote/tests/test.rs 2019-01-04 19:47:54.000000000 +0000 @@ -9,6 +9,11 @@ use proc_macro2::{Ident, Span, TokenStream}; use quote::TokenStreamExt; +mod conditional { + #[cfg(integer128)] + mod integer128; +} + struct X; impl quote::ToTokens for X { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/.cargo-checksum.json 2019-01-04 19:47:55.000000000 +0000 @@ -1 +1 @@ -{"files":{"Cargo.toml":"d4f95ba4b7a643ac25ab611086988285cdef652b80f5c7ed9bd7ed7416ae06c7","LICENSE":"efcfee7981ff72431fffb06925cad00a23dce079ed4354f61030ad5abdb78829","README.md":"f2aabeb00e422ebe0f5ccdde1449fca7e8da5e563fb84024db83742ca12633fc","rust-toolchain":"58bea07cb6d97f9cfcd5c8f98b1feca0fb81cce5b0bf29a8e70ed2641956e9a6","src/arch/arm.rs":"44ed9097879fce0ebe85d29e25ba378fb3ee7fcd649b569207495ed601c42a1c","src/arch/x86.rs":"e72a7f653c25b1ea5595af7ce991fe0e5c96547e127fc67e4967d60abbe1d3bd","src/arch/x86_64.rs":"499a0c997756c1cac5f4b4b98cff474a4e759695d3664712bd1a92d5d4a4a5f1","src/call.rs":"8d7479d1e5b4fae19a04f1623756e26789f97527ba27f8e6991734c50febaf39","src/data.rs":"8602d05b437216e6774658902f2d5fb030edc7510754ce7277fd299ab53a6b8b","src/error.rs":"b23c12db8cafb64f3b909a95bdd47cf03f62f6fa1201b40892febf46ec56bcb4","src/flag.rs":"3369635fa04a27b1460abdfe6907aeba693720de5e5681f18ee047b9ea3e7e9a","src/io/dma.rs":"4ab65016b3bc9121f0844dc4b8de77608eba327c0e0d930900254242b2c204b0","src/io/io.rs":"1bcb36d1867e9bab6a8186cd6928efe70ae2655e9f9d0dd3def20bc0fb6a82f6","src/io/mmio.rs":"b9fdb37d37a25a48106d60f1a977c541cb5162b20b12507c7dcd6eb3dff0a2c8","src/io/mod.rs":"4df12af3e82e6b5fe22112c9f51552112ee4811b7d1131d2a43d608d8d1cac09","src/io/pio.rs":"219fcd317d6c490a14794ec4db9de3e305c722dda720043c67076bda60632bb8","src/lib.rs":"92d39d4d3d02766ba0024124fcfb704c39565eb81fc39a044b186a747fab0e5a","src/number.rs":"6f9551ccf3a3e709fbb56c39b96ff9844aab30e24eff123526e59f8615288c41","src/scheme/generate.sh":"b022adacb74f2af1470e691341c37acc1582f428e9b8b6b9dccb790dde594b40","src/scheme/mod.rs":"2679272397bf0247e1a4695853465243ca02960feb4ced1124969f67ebd3e3ce","src/scheme/scheme.rs":"5f789f0abae9a0b4d5d888198cab4c90221cdc4cec97d6c80b083aa83963267f","src/scheme/scheme_block.rs":"f5b49f70ef895ca89d566cc5d20ecde640971f6c088c363088146d5a7e6ee8a7","src/scheme/scheme_block_mut.rs":"3adf8797c2009ef66699035abc717c5b470957c0bcc17a43962b5f1d71490b9a","src/scheme/scheme_mut.rs":"e63dc3171f2f544b66d32daae2783bbb97525bfa4d703be8377fd34dcc95a7e5"},"package":"c214e91d3ecf43e9a4e41e578973adeb14b474f2bee858742d127af75a0112b1"} \ No newline at end of file +{"files":{".cargo_vcs_info.json":"49d5587442d51104eb14ce1a74033165759b48f4f7475180a00d6f6656a9a7e6","Cargo.toml":"066da88f95be335b89991adc9409a86639f460ce289415ea68b5d1296b06286f","LICENSE":"efcfee7981ff72431fffb06925cad00a23dce079ed4354f61030ad5abdb78829","README.md":"9161f18ba7f69b4ca51e844aee8ffb8237513a468c5c3b1f3a5f989044f895ac","src/arch/aarch64.rs":"3c36537214f8e10331d42ce4c7ac57a472db49fed029193c31982279d08bdad5","src/arch/arm.rs":"44ed9097879fce0ebe85d29e25ba378fb3ee7fcd649b569207495ed601c42a1c","src/arch/x86.rs":"e72a7f653c25b1ea5595af7ce991fe0e5c96547e127fc67e4967d60abbe1d3bd","src/arch/x86_64.rs":"499a0c997756c1cac5f4b4b98cff474a4e759695d3664712bd1a92d5d4a4a5f1","src/call.rs":"b3e8bb24bf8a845e5b72e98671041c315743cac64208dfb8fffee964ae9a29a8","src/data.rs":"6296b1938b0d681c945c8a19933415968683630fabc7d8dc6f7fd7e2fc52d59c","src/error.rs":"d832a641ccb1baf10315e2e1ce59b12c30d605a526fc65a31f63bb3a92c3a2f7","src/flag.rs":"133609ce827d79ecfab1f7068ccad305fc1ed693b9f3341c0bb9283648700cb0","src/io/dma.rs":"740cd441f844718a14f77c2fe292d29b7c468d686505810d8b3281f9528a6fe7","src/io/io.rs":"1bcb36d1867e9bab6a8186cd6928efe70ae2655e9f9d0dd3def20bc0fb6a82f6","src/io/mmio.rs":"b9fdb37d37a25a48106d60f1a977c541cb5162b20b12507c7dcd6eb3dff0a2c8","src/io/mod.rs":"4df12af3e82e6b5fe22112c9f51552112ee4811b7d1131d2a43d608d8d1cac09","src/io/pio.rs":"219fcd317d6c490a14794ec4db9de3e305c722dda720043c67076bda60632bb8","src/lib.rs":"dcefb8c5e272ab84162355b1ab08822d3d68a2eddb197eeeb6e56c15c9e7a757","src/number.rs":"4718baa58a0f3e6b9b66d1f328cb2a145e9b1f807654c3079a13b226c4085a29","src/scheme/generate.sh":"b022adacb74f2af1470e691341c37acc1582f428e9b8b6b9dccb790dde594b40","src/scheme/mod.rs":"2679272397bf0247e1a4695853465243ca02960feb4ced1124969f67ebd3e3ce","src/scheme/scheme.rs":"0e75ab9a945823560ac38f7e17a18f09ca9758a6c62eef404fbec9211eea161b","src/scheme/scheme_block.rs":"c2b5cc8f4c8b117276df4160c73b3b79b431a62bf3161509dae7255ea183d446","src/scheme/scheme_block_mut.rs":"2aabeb8651a993da8840b29a2aa2b02c1713caf97f7798a744b42489eb34c970","src/scheme/scheme_mut.rs":"a6a5b672790aae899797faf75af84003168c83866289704e9a8d1dd2ad2772df"},"package":"52ee9a534dc1301776eff45b4fa92d2c39b1d8c3d3357e6eb593e0d795506fc2"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/Cargo.toml 2019-01-04 19:47:55.000000000 +0000 @@ -12,12 +12,12 @@ [package] name = "redox_syscall" -version = "0.1.40" +version = "0.1.50" authors = ["Jeremy Soller <jackpot51@gmail.com>"] description = "A Rust library to access raw Redox system calls" documentation = "https://docs.rs/redox_syscall" license = "MIT" -repository = "https://github.com/redox-os/syscall" +repository = "https://gitlab.redox-os.org/redox-os/syscall" [lib] name = "syscall" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/.cargo_vcs_info.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/.cargo_vcs_info.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/.cargo_vcs_info.json 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/.cargo_vcs_info.json 2019-01-04 19:47:55.000000000 +0000 @@ -0,0 +1,5 @@ +{ + "git": { + "sha1": "9a3734c41ac452bc3f8fe6d9a6b687c96cc3ca15" + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/README.md distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/README.md --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/README.md 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/README.md 2019-01-04 19:47:55.000000000 +0000 @@ -1,7 +1,6 @@ -[Redox OS][1]'s syscall API - -[Documentation][2] - -[1]: https://github.com/redox-os/redox -[2]: https://docs.rs/redox_syscall +# syscall +[Redox OS](https://gitlab.redox-os.org/redox-os/redox)'s syscall API +[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE) +[![crates.io](http://meritbadge.herokuapp.com/redox_syscall)](https://crates.io/crates/redox_syscall) +[![docs.rs](https://docs.rs/redox_syscall/badge.svg)](https://docs.rs/redox_syscall) diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/rust-toolchain distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/rust-toolchain --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/rust-toolchain 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/rust-toolchain 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -nightly diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/src/arch/aarch64.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/src/arch/aarch64.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/src/arch/aarch64.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/src/arch/aarch64.rs 2019-01-04 19:47:55.000000000 +0000 @@ -0,0 +1,77 @@ +use super::error::{Error, Result}; + +pub unsafe fn syscall0(mut a: usize) -> Result<usize> { + asm!("svc 0" + : "={x0}"(a) + : "{x8}"(a) + : "x0", "x8" + : "volatile"); + + Error::demux(a) +} + +pub unsafe fn syscall1(mut a: usize, b: usize) -> Result<usize> { + asm!("svc 0" + : "={x0}"(a) + : "{x8}"(a), "{x0}"(b) + : "x0", "x8" + : "volatile"); + + Error::demux(a) +} + +// Clobbers all registers - special for clone +pub unsafe fn syscall1_clobber(mut a: usize, b: usize) -> Result<usize> { + asm!("svc 0" + : "={x0}"(a) + : "{x8}"(a), "{x0}"(b) + : "memory", + "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", + "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", + "x16", "x17","x18", "x19", "x20", "x21", "x22", "x23", + "x24", "x25", "x26", "x27", "x28", "x29", "x30" + : "volatile"); + + Error::demux(a) +} + +pub unsafe fn syscall2(mut a: usize, b: usize, c: usize) -> Result<usize> { + asm!("svc 0" + : "={x0}"(a) + : "{x8}"(a), "{x0}"(b), "{x1}"(c) + : "x0", "x1", "x8" + : "volatile"); + + Error::demux(a) +} + +pub unsafe fn syscall3(mut a: usize, b: usize, c: usize, d: usize) -> Result<usize> { + asm!("svc 0" + : "={x0}"(a) + : "{x8}"(a), "{x0}"(b), "{x1}"(c), "{x2}"(d) + : "x0", "x1", "x2", "x8" + : "volatile"); + + Error::demux(a) +} + +pub unsafe fn syscall4(mut a: usize, b: usize, c: usize, d: usize, e: usize) -> Result<usize> { + asm!("svc 0" + : "={x0}"(a) + : "{x8}"(a), "{x0}"(b), "{x1}"(c), "{x2}"(d), "{x3}"(e) + : "x0", "x1", "x2", "x3", "x8" + : "volatile"); + + Error::demux(a) +} + +pub unsafe fn syscall5(mut a: usize, b: usize, c: usize, d: usize, e: usize, f: usize) + -> Result<usize> { + asm!("svc 0" + : "={x0}"(a) + : "{x8}"(a), "{x0}"(b), "{x1}"(c), "{x2}"(d), "{x3}"(e), "{x4}"(f) + : "x0", "x1", "x2", "x3", "x4", "x8" + : "volatile"); + + Error::demux(a) +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/src/call.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/src/call.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/src/call.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/src/call.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,5 +1,5 @@ use super::arch::*; -use super::data::{SigAction, Stat, StatVfs, TimeSpec}; +use super::data::{Map, SigAction, Stat, StatVfs, TimeSpec}; use super::error::Result; use super::number::*; @@ -72,12 +72,6 @@ unsafe { syscall4(SYS_DUP2, fd, newfd, buf.as_ptr() as usize, buf.len()) } } -/// Replace the current process with a new executable -pub fn execve<T: AsRef<[u8]>>(path: T, args: &[[usize; 2]]) -> Result<usize> { - unsafe { syscall4(SYS_EXECVE, path.as_ref().as_ptr() as usize, - path.as_ref().len(), args.as_ptr() as usize, args.len()) } -} - /// Exit the current process pub fn exit(status: usize) -> Result<usize> { unsafe { syscall1(SYS_EXIT, status) } @@ -100,9 +94,14 @@ unsafe { syscall3(SYS_FCNTL, fd, cmd, arg) } } +/// Replace the current process with a new executable +pub fn fexec(fd: usize, args: &[[usize; 2]], vars: &[[usize; 2]]) -> Result<usize> { + unsafe { syscall5(SYS_FEXEC, fd, args.as_ptr() as usize, args.len(), vars.as_ptr() as usize, vars.len()) } +} + /// Map a file into memory -pub unsafe fn fmap(fd: usize, offset: usize, size: usize) -> Result<usize> { - syscall3(SYS_FMAP, fd, offset, size) +pub unsafe fn fmap(fd: usize, map: &Map) -> Result<usize> { + syscall3(SYS_FMAP, fd, map as *const Map as usize, mem::size_of::<Map>()) } /// Unmap a memory-mapped file @@ -202,6 +201,11 @@ } /// Set the I/O privilege level +/// +/// # Errors +/// +/// * `EPERM` - `uid != 0` +/// * `EINVAL` - `level > 3` pub unsafe fn iopl(level: usize) -> Result<usize> { syscall1(SYS_IOPL, level) } @@ -226,6 +230,11 @@ unsafe { syscall2(SYS_MKNS, schemes.as_ptr() as usize, schemes.len()) } } +/// Change mapping flags +pub unsafe fn mprotect(addr: usize, size: usize, flags: usize) -> Result<usize> { + syscall3(SYS_MPROTECT, addr, size, flags) +} + /// Sleep for the time specified in `req` pub fn nanosleep(req: &TimeSpec, rem: &mut TimeSpec) -> Result<usize> { unsafe { syscall2(SYS_NANOSLEEP, req as *const TimeSpec as usize, @@ -238,21 +247,39 @@ } /// Allocate pages, linearly in physical memory +/// +/// # Errors +/// +/// * `EPERM` - `uid != 0` +/// * `ENOMEM` - the system has run out of available memory pub unsafe fn physalloc(size: usize) -> Result<usize> { syscall1(SYS_PHYSALLOC, size) } /// Free physically allocated pages +/// +/// # Errors +/// +/// * `EPERM` - `uid != 0` pub unsafe fn physfree(physical_address: usize, size: usize) -> Result<usize> { syscall2(SYS_PHYSFREE, physical_address, size) } /// Map physical memory to virtual memory +/// +/// # Errors +/// +/// * `EPERM` - `uid != 0` pub unsafe fn physmap(physical_address: usize, size: usize, flags: usize) -> Result<usize> { syscall3(SYS_PHYSMAP, physical_address, size, flags) } /// Unmap previously mapped physical memory +/// +/// # Errors +/// +/// * `EPERM` - `uid != 0` +/// * `EFAULT` - `virtual_address` has not been mapped pub unsafe fn physunmap(virtual_address: usize) -> Result<usize> { syscall1(SYS_PHYSUNMAP, virtual_address) } @@ -300,17 +327,33 @@ restorer as usize) } } +/// Get and/or set signal masks +pub fn sigprocmask(how: usize, set: Option<&[u64; 2]>, oldset: Option<&mut [u64; 2]>) -> Result<usize> { + unsafe { syscall3(SYS_SIGPROCMASK, how, + set.map(|x| x as *const _).unwrap_or_else(ptr::null) as usize, + oldset.map(|x| x as *mut _).unwrap_or_else(ptr::null_mut) as usize) } +} + // Return from signal handler pub fn sigreturn() -> Result<usize> { unsafe { syscall0(SYS_SIGRETURN) } } +/// Set the file mode creation mask +pub fn umask(mask: usize) -> Result<usize> { + unsafe { syscall1(SYS_UMASK, mask) } +} + /// Remove a file pub fn unlink<T: AsRef<[u8]>>(path: T) -> Result<usize> { unsafe { syscall2(SYS_UNLINK, path.as_ref().as_ptr() as usize, path.as_ref().len()) } } /// Convert a virtual address to a physical one +/// +/// # Errors +/// +/// * `EPERM` - `uid != 0` pub unsafe fn virttophys(virtual_address: usize) -> Result<usize> { syscall1(SYS_VIRTTOPHYS, virtual_address) } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/src/data.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/src/data.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/src/data.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/src/data.rs 2019-01-04 19:47:55.000000000 +0000 @@ -2,6 +2,7 @@ use core::{mem, slice}; #[derive(Copy, Clone, Debug, Default)] +#[repr(C)] pub struct Event { pub id: usize, pub flags: usize, @@ -24,6 +25,57 @@ } } } + +#[derive(Copy, Clone, Debug, Default)] +#[repr(C)] +pub struct ITimerSpec { + pub it_interval: TimeSpec, + pub it_value: TimeSpec, +} + +impl Deref for ITimerSpec { + type Target = [u8]; + fn deref(&self) -> &[u8] { + unsafe { + slice::from_raw_parts(self as *const ITimerSpec as *const u8, + mem::size_of::<ITimerSpec>()) as &[u8] + } + } +} + +impl DerefMut for ITimerSpec { + fn deref_mut(&mut self) -> &mut [u8] { + unsafe { + slice::from_raw_parts_mut(self as *mut ITimerSpec as *mut u8, + mem::size_of::<ITimerSpec>()) as &mut [u8] + } + } +} + +#[derive(Copy, Clone, Debug, Default)] +#[repr(C)] +pub struct Map { + pub offset: usize, + pub size: usize, + pub flags: usize, +} + +impl Deref for Map { + type Target = [u8]; + fn deref(&self) -> &[u8] { + unsafe { + slice::from_raw_parts(self as *const Map as *const u8, mem::size_of::<Map>()) as &[u8] + } + } +} + +impl DerefMut for Map { + fn deref_mut(&mut self) -> &mut [u8] { + unsafe { + slice::from_raw_parts_mut(self as *mut Map as *mut u8, mem::size_of::<Map>()) as &mut [u8] + } + } +} #[derive(Copy, Clone, Debug, Default)] #[repr(C)] diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/src/error.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/src/error.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/src/error.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/src/error.rs 2019-01-04 19:47:55.000000000 +0000 @@ -28,12 +28,8 @@ } } - pub fn text(&self) -> &str { - if let Some(description) = STR_ERROR.get(self.errno as usize) { - description - } else { - "Unknown Error" - } + pub fn text(&self) -> &'static str { + STR_ERROR.get(self.errno as usize).map(|&x| x).unwrap_or("Unknown Error") } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/src/flag.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/src/flag.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/src/flag.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/src/flag.rs 2019-01-04 19:47:55.000000000 +0000 @@ -22,8 +22,8 @@ pub const FUTEX_WAKE: usize = 1; pub const FUTEX_REQUEUE: usize = 2; -pub const MAP_WRITE: usize = 1; -pub const MAP_WRITE_COMBINE: usize = 2; +pub const MAP_SHARED: usize = 0x0001; +pub const MAP_PRIVATE: usize = 0x0002; pub const MODE_TYPE: u16 = 0xF000; pub const MODE_DIR: u16 = 0x4000; @@ -55,6 +55,14 @@ pub const O_NOFOLLOW: usize = 0x8000_0000; pub const O_ACCMODE: usize = O_RDONLY | O_WRONLY | O_RDWR; +pub const PHYSMAP_WRITE: usize = 1; +pub const PHYSMAP_WRITE_COMBINE: usize = 2; + +pub const PROT_NONE: usize = 0x0000_0000; +pub const PROT_EXEC: usize = 0x0001_0000; +pub const PROT_WRITE: usize = 0x0002_0000; +pub const PROT_READ: usize = 0x0004_0000; + pub const SEEK_SET: usize = 0; pub const SEEK_CUR: usize = 1; pub const SEEK_END: usize = 2; @@ -94,6 +102,10 @@ pub const SIG_DFL: usize = 0; pub const SIG_IGN: usize = 1; +pub const SIG_BLOCK: usize = 0; +pub const SIG_UNBLOCK: usize = 1; +pub const SIG_SETMASK: usize = 2; + pub const SA_NOCLDSTOP: usize = 0x00000001; pub const SA_NOCLDWAIT: usize = 0x00000002; pub const SA_SIGINFO: usize = 0x00000004; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/src/io/dma.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/src/io/dma.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/src/io/dma.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/src/io/dma.rs 2019-01-04 19:47:55.000000000 +0000 @@ -32,7 +32,7 @@ impl<T> Dma<T> { pub fn new(value: T) -> Result<Dma<T>> { let phys = PhysBox::new(mem::size_of::<T>())?; - let virt = unsafe { ::physmap(phys.address, phys.size, ::MAP_WRITE)? } as *mut T; + let virt = unsafe { ::physmap(phys.address, phys.size, ::PHYSMAP_WRITE)? } as *mut T; unsafe { ptr::write(virt, value); } Ok(Dma { phys: phys, @@ -42,7 +42,7 @@ pub fn zeroed() -> Result<Dma<T>> { let phys = PhysBox::new(mem::size_of::<T>())?; - let virt = unsafe { ::physmap(phys.address, phys.size, ::MAP_WRITE)? } as *mut T; + let virt = unsafe { ::physmap(phys.address, phys.size, ::PHYSMAP_WRITE)? } as *mut T; unsafe { ptr::write_bytes(virt as *mut u8, 0, phys.size); } Ok(Dma { phys: phys, diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/src/lib.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/src/lib.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/src/lib.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/src/lib.rs 2019-01-04 19:47:55.000000000 +0000 @@ -17,6 +17,10 @@ #[path="arch/arm.rs"] mod arch; +#[cfg(target_arch = "aarch64")] +#[path="arch/aarch64.rs"] +mod arch; + #[cfg(target_arch = "x86")] #[path="arch/x86.rs"] mod arch; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/src/number.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/src/number.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/src/number.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/src/number.rs 2019-01-04 19:47:55.000000000 +0000 @@ -26,7 +26,8 @@ pub const SYS_FCHOWN: usize = SYS_CLASS_FILE | 207; pub const SYS_FCNTL: usize = SYS_CLASS_FILE | 55; pub const SYS_FEVENT: usize = SYS_CLASS_FILE | 927; -pub const SYS_FMAP: usize = SYS_CLASS_FILE | 90; +pub const SYS_FEXEC: usize = SYS_CLASS_FILE | 11; +pub const SYS_FMAP: usize = SYS_CLASS_FILE | SYS_ARG_SLICE | 90; pub const SYS_FUNMAP: usize = SYS_CLASS_FILE | 91; pub const SYS_FPATH: usize = SYS_CLASS_FILE | SYS_ARG_MSLICE | 928; pub const SYS_FRENAME: usize = SYS_CLASS_FILE | SYS_ARG_PATH | 38; @@ -40,7 +41,6 @@ pub const SYS_CHDIR: usize = 12; pub const SYS_CLOCK_GETTIME: usize = 265; pub const SYS_CLONE: usize = 120; -pub const SYS_EXECVE: usize = 11; pub const SYS_EXIT: usize = 1; pub const SYS_FUTEX: usize = 240; pub const SYS_GETCWD: usize = 183; @@ -55,6 +55,7 @@ pub const SYS_GETUID: usize = 199; pub const SYS_IOPL: usize = 110; pub const SYS_KILL: usize = 37; +pub const SYS_MPROTECT: usize = 125; pub const SYS_MKNS: usize = 984; pub const SYS_NANOSLEEP: usize =162; pub const SYS_PHYSALLOC: usize =945; @@ -68,6 +69,8 @@ pub const SYS_SETRENS: usize = 952; pub const SYS_SETREUID: usize = 203; pub const SYS_SIGACTION: usize =67; +pub const SYS_SIGPROCMASK:usize=126; pub const SYS_SIGRETURN: usize =119; +pub const SYS_UMASK: usize = 60; pub const SYS_WAITPID: usize = 7; pub const SYS_YIELD: usize = 158; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/src/scheme/scheme_block_mut.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/src/scheme/scheme_block_mut.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/src/scheme/scheme_block_mut.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/src/scheme/scheme_block_mut.rs 2019-01-04 19:47:55.000000000 +0000 @@ -20,7 +20,11 @@ SYS_FCHOWN => self.fchown(packet.b, packet.c as u32, packet.d as u32), SYS_FCNTL => self.fcntl(packet.b, packet.c, packet.d), SYS_FEVENT => self.fevent(packet.b, packet.c), - SYS_FMAP => self.fmap(packet.b, packet.c, packet.d), + SYS_FMAP => if packet.d >= mem::size_of::<Map>() { + self.fmap(packet.b, unsafe { &*(packet.c as *const Map) }) + } else { + Err(Error::new(EFAULT)) + }, SYS_FPATH => self.fpath(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }), SYS_FRENAME => self.frename(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }, packet.uid, packet.gid), SYS_FSTAT => if packet.d >= mem::size_of::<Stat>() { @@ -111,7 +115,7 @@ } #[allow(unused_variables)] - fn fmap(&mut self, id: usize, offset: usize, size: usize) -> Result<Option<usize>> { + fn fmap(&mut self, id: usize, map: &Map) -> Result<Option<usize>> { Err(Error::new(EBADF)) } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/src/scheme/scheme_block.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/src/scheme/scheme_block.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/src/scheme/scheme_block.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/src/scheme/scheme_block.rs 2019-01-04 19:47:55.000000000 +0000 @@ -20,7 +20,11 @@ SYS_FCHOWN => self.fchown(packet.b, packet.c as u32, packet.d as u32), SYS_FCNTL => self.fcntl(packet.b, packet.c, packet.d), SYS_FEVENT => self.fevent(packet.b, packet.c), - SYS_FMAP => self.fmap(packet.b, packet.c, packet.d), + SYS_FMAP => if packet.d >= mem::size_of::<Map>() { + self.fmap(packet.b, unsafe { &*(packet.c as *const Map) }) + } else { + Err(Error::new(EFAULT)) + }, SYS_FPATH => self.fpath(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }), SYS_FRENAME => self.frename(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }, packet.uid, packet.gid), SYS_FSTAT => if packet.d >= mem::size_of::<Stat>() { @@ -111,7 +115,7 @@ } #[allow(unused_variables)] - fn fmap(&self, id: usize, offset: usize, size: usize) -> Result<Option<usize>> { + fn fmap(&self, id: usize, map: &Map) -> Result<Option<usize>> { Err(Error::new(EBADF)) } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/src/scheme/scheme_mut.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/src/scheme/scheme_mut.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/src/scheme/scheme_mut.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/src/scheme/scheme_mut.rs 2019-01-04 19:47:55.000000000 +0000 @@ -20,7 +20,11 @@ SYS_FCHOWN => self.fchown(packet.b, packet.c as u32, packet.d as u32), SYS_FCNTL => self.fcntl(packet.b, packet.c, packet.d), SYS_FEVENT => self.fevent(packet.b, packet.c), - SYS_FMAP => self.fmap(packet.b, packet.c, packet.d), + SYS_FMAP => if packet.d >= mem::size_of::<Map>() { + self.fmap(packet.b, unsafe { &*(packet.c as *const Map) }) + } else { + Err(Error::new(EFAULT)) + }, SYS_FPATH => self.fpath(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }), SYS_FRENAME => self.frename(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }, packet.uid, packet.gid), SYS_FSTAT => if packet.d >= mem::size_of::<Stat>() { @@ -111,7 +115,7 @@ } #[allow(unused_variables)] - fn fmap(&mut self, id: usize, offset: usize, size: usize) -> Result<usize> { + fn fmap(&mut self, id: usize, map: &Map) -> Result<usize> { Err(Error::new(EBADF)) } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/src/scheme/scheme.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/src/scheme/scheme.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/redox_syscall/src/scheme/scheme.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/redox_syscall/src/scheme/scheme.rs 2019-01-04 19:47:55.000000000 +0000 @@ -20,7 +20,11 @@ SYS_FCHOWN => self.fchown(packet.b, packet.c as u32, packet.d as u32), SYS_FCNTL => self.fcntl(packet.b, packet.c, packet.d), SYS_FEVENT => self.fevent(packet.b, packet.c), - SYS_FMAP => self.fmap(packet.b, packet.c, packet.d), + SYS_FMAP => if packet.d >= mem::size_of::<Map>() { + self.fmap(packet.b, unsafe { &*(packet.c as *const Map) }) + } else { + Err(Error::new(EFAULT)) + }, SYS_FPATH => self.fpath(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }), SYS_FRENAME => self.frename(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }, packet.uid, packet.gid), SYS_FSTAT => if packet.d >= mem::size_of::<Stat>() { @@ -111,7 +115,7 @@ } #[allow(unused_variables)] - fn fmap(&self, id: usize, offset: usize, size: usize) -> Result<usize> { + fn fmap(&self, id: usize, map: &Map) -> Result<usize> { Err(Error::new(EBADF)) } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/.cargo-checksum.json 2019-01-04 19:47:55.000000000 +0000 @@ -1 +1 @@ -{"files":{".cargo_vcs_info.json":"c9e22a0fe2301ea44197fc57f8085e6a8b735ff657ded7ae8f614b3f96fcba6b","CHANGELOG.md":"42fc0cade5e708e2d9d8f24d622f460a984608e0f67db09aacaaf141ec6a80a3","Cargo.toml":"b50eae8802ca0050b226c3c624c63c207c3961e63759793d479d4c9da1fc1eb2","HACKING.md":"33e3e555fbcf70d7c235068a10c0d9c3d53c02d71712eda52d252d0b20f70eb3","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","PERFORMANCE.md":"c776b18758b6dc8f2f9d37e9a95261f75c5f744925e8ddf216b83953bf7467b7","README.md":"35e3481785806be3422bf52369249146c80d6a8922bb166650561d9e8bf5d4c7","UNICODE.md":"d7992c142299cb79f524c964ca8d4cf247b5db99fcf4103e4eebaf6c54cf06f6","build.rs":"cebf7813476c332764ab9f26f8e0e7d9b5460ff1468e7ab2703eec812f82bdee","examples/regexdna-input.txt":"156a49710bb3e1ed4bc2bbb0af0f383b747b3d0281453cfff39c296124c598f8","examples/regexdna-output.txt":"35e85b19b70a893d752fd43e54e1e9da08bac43559191cea85b33387c24c4cc1","examples/shootout-regex-dna-bytes.rs":"f097a923fef2e9bd9a9abd3686eea84830e8050bb750bcab840b6575873227ff","examples/shootout-regex-dna-cheat.rs":"4b5a590ec88a9ba67cc4a34621cb038a400d45e64a15a354f3e07fdaf41a935b","examples/shootout-regex-dna-replace.rs":"15677e7de356427fe2b983e918de073a7a730337b090d4ab0e815e1e66f74f73","examples/shootout-regex-dna-single-cheat.rs":"5e743b3a6ec968713ce064a289b1fbd11c302add824d1c749a2ffb546c73128e","examples/shootout-regex-dna-single.rs":"c86969adb0fb08c5e23f749ec6922a58404da7d0e1925c848957a5144ddc8815","examples/shootout-regex-dna.rs":"e627f1e5e24c1cf4e9c9d52b844b6d971c59b7169b0e8762d8d9d1cb7debc6e6","src/backtrack.rs":"0372ada608dca9c8d3e1fabf56e33498f8ff4fbdfd445873c4a4be6657465c68","src/compile.rs":"5a73bd637756a2b9781cf67109435f686d0805c1e73ca3b9523031bdb63ad353","src/dfa.rs":"163aa4ec0dcdb1ffc7dd687debc1d64acffeeca7861cb4bb303d2da0ad33b3a6","src/error.rs":"d26673a95e372665863c7e01558836ef6e957aadf421d5056525720e16a9683d","src/exec.rs":"08c9a2dceb42f88bf8bfabd2628ad98661f9541505d895de027676f1a423ea3c","src/expand.rs":"4333da32d6fbb05ec05bead810eb659c5b012e2d361a9bb9e24bb30e8939fb88","src/freqs.rs":"e25871eec51d1c02c15abbc04d61dbea71fb2dbc15f370c98279687416c969de","src/input.rs":"9b092fe88a66b46dee0dfe0a2e67e4b78b01a32f53b28443b5f382b8514d0cfb","src/lib.rs":"c81e67cb35d6ccfafbfd73af57a1fccbadabb9aec13423d27e168d8d8530d684","src/literal/mod.rs":"c395221efe19f36edd9d92c8f8283e5b30553e0e9b408ccb1430d11f038730f8","src/literal/teddy_avx2/fallback.rs":"f24b70f9dd028eefe2802b7bbc6b2dca97663b03a931058e3a59750f0693a15c","src/literal/teddy_avx2/imp.rs":"b0e4634bc9fbc793e3b0938b97a236df4b8fb17a0ac08040a6394bc73042aa8b","src/literal/teddy_avx2/mod.rs":"b7373cb7bc823e60be4e585b93fe15e7a477c2cb16a45563f66c2e5c0d7e660d","src/literal/teddy_ssse3/fallback.rs":"f24b70f9dd028eefe2802b7bbc6b2dca97663b03a931058e3a59750f0693a15c","src/literal/teddy_ssse3/imp.rs":"be4565c47a3807ab09343f2da4ef0e3297d4776719472efb60dee8e55380c2ec","src/literal/teddy_ssse3/mod.rs":"34dba2fde2ec15c1b37faae164a1475b92227ad5c1010bc619d0c318bc30e332","src/pattern.rs":"4e820c17a2b983050f47d3fd13282094ce9f27b75fd852fcec438d61f07f0b0b","src/pikevm.rs":"9600a8b135075f8cf62683e6b08c73834873a203347d275f1e9ca3a97221dbeb","src/prog.rs":"7fdfa764562867c3b051554921fbf6452d08e6f860ade6657cf021b6a734b899","src/re_builder.rs":"94b348b7b6aa9f8502b01240cebc50434d9f460f4f63bd0aec013cc9f9b3eec1","src/re_bytes.rs":"d3ca160c650a29cb1e09342611187d8c683df0e0f5d8b9e277c7d6d596c14b49","src/re_set.rs":"0b8df90c7a9ce94c4af5962fcdc647958a8e42f50a86c22fcf043292f1d2fe72","src/re_trait.rs":"45b2e81076cce0b87bace2c05e125d44b8e3b71ff8d5c94130a7ae2c915f237d","src/re_unicode.rs":"b7ae7149a651b962087c6e5111c82aa70c237313996a8d7e0e695d429427d40a","src/sparse.rs":"04e70bb0bd006f806e8c9cf19825625e907036304823bc03b6c8f2e5046a38ef","src/testdata/LICENSE":"58cf078acc03da3e280a938c2bd9943f554fc9b6ced89ad93ba35ca436872899","src/testdata/README":"45f869e37f798905c773bfbe0ef19a5fb7e585cbf0b7c21b5b5a784e8cec3c14","src/testdata/basic.dat":"3756a5bdd6f387ed34731197fbdaab8521b0ae1726250100ba235756cb42b4b1","src/testdata/nullsubexpr.dat":"496ac0278eec3b6d9170faace14554569032dd3d909618364d9326156de39ecf","src/testdata/repetition.dat":"1f7959063015b284b18a4a2c1c8b416d438a2d6c4b1a362da43406b865f50e69","src/utf8.rs":"1a2d7bc43ab139bfc2b2610627efd59a7ead2a959492ba73eebb743d482c7957","src/vector/avx2.rs":"1ef39371a9215144b69bf72df9aa3533ea6be44d7425cdc5c8192de79dfc5e96","src/vector/mod.rs":"fc238d33117c500381f57d2d1fbaba14bd6ab855ba3fe55304c37256b1c0e965","src/vector/ssse3.rs":"f8549244fddfcb73f538761c0ae5a81c535e5ae5e129cebf8e3e6f9db4fa79f4","tests/api.rs":"803faacd9ac5efc149959ff63a2132f5ca155f75a246b79807c549b464b5c497","tests/api_str.rs":"8ccb6c3dfe0220229ad33fcaf9dea420b414aea17c7498d978efd1b8aceaa980","tests/bytes.rs":"3564a933f12f84d65488c220d71067a9902ed9860522a7d9139a713f818a0b1c","tests/consistent.rs":"51b12bfec3ec2b49471b508dec537dbbd50823673a34a16b98e38dc3ae2a0793","tests/crates_regex.rs":"7812e91c25a2aad48ba024bcbeb8b922ffc1cfa3113a33615885d72d8a2cae64","tests/crazy.rs":"b0c593be5022341606ddb15b3d28aa39d2d52977db4b1b72c41c6133a7f7a7e0","tests/flags.rs":"cd3788760defc667b32adb2732b6657b289372e1051fc240dfd0e435e2835353","tests/fowler.rs":"e0b7420fa5b636301d4c11cd4dfb803ec09fa7b27be47c594d231167de1241e3","tests/macros.rs":"f021b62e3ce8d122f6450a5aab36972eccf4c21c62a53c604924d4d01d90c0d8","tests/macros_bytes.rs":"5574c19bff5dfa45802238b65f642605f1a8b8adc6a353660a251c80490ad68e","tests/macros_str.rs":"518bde310ceb9fb689b20294279483454601ba3a3fd7c95a04d07331f05d476d","tests/misc.rs":"c8cc85ac916980ebd053df2444fe9b795a00f2ac42c5cd828fc3df487f689265","tests/multiline.rs":"4e872a9473bc229d955716c18c77aa3530625a8f3a28ecaefdb70b9aff0f0a8b","tests/noparse.rs":"8850d31cb95e413e3a67edecce8590cd158f49779abcc2e5722381113346179c","tests/regression.rs":"1f077b6c0057e9877e94ff515774463012cbcb396f5b35af629a7a2cb6f30ce0","tests/replace.rs":"a121da1d86fa39d45b6b29ccd74e4327deaf0c9c1914dc1da46e6358084e4459","tests/searcher.rs":"124c9909a1e8fcfddee8ecfae3a1fb9d76f9ddac62fda23d9b895744728a0aa8","tests/set.rs":"0cecf5d2acb3d0df2b051e0ab56a4a853bb58c0e922480f5e460b9a05a0d16af","tests/shortest_match.rs":"7ca223e0a61b1a26a1f36465ab49de021475295e18f4d6421497461af1e107be","tests/suffix_reverse.rs":"cd497c1a51246a8fc727062133470e0c6300620ad80333d20d63c0ee4224ef1c","tests/test_backtrack.rs":"b07a114b2eb7f1f17357629be9c8458e31f7952fb2c327d66d9415f08855c624","tests/test_backtrack_bytes.rs":"dd3cec3c630d6f41892c9111bee87227bf47126651b2402672c30b084fa9c28c","tests/test_backtrack_utf8bytes.rs":"b576b933d6be21f8cedb281e456441d4278350b0145a139dbccb1861639a54f9","tests/test_crates_regex.rs":"6d7f2cfade28ebab6a831282882b83e4b3d66a5171411730505e2a8bb95074a8","tests/test_default.rs":"dc819a5973dd03a58165afa37da20727e8bf7085f1482414290654483fe20aa1","tests/test_default_bytes.rs":"c5228278e0a1d8fab5157dfd2b52642fd0ec68db346dc133f4c16f178d63e856","tests/test_nfa.rs":"aad36ca01f3f7eb23633a1207056e9056d686be2ef6e3661fad83805fa482927","tests/test_nfa_bytes.rs":"198f7b58c5c7dd0a05f16ddb3b9b63dab29ef2a56448378ac602c5d087c01e4e","tests/test_nfa_utf8bytes.rs":"854d80114ca1bed14d4ad3f2b3bf292ff0fa44e12d7d3f2ec6dd17cbbaa82175","tests/unicode.rs":"cadd620a5d70216d6a3100d18f21598bd3ed6c343023697a7d3c57b7dc45149e","tests/word_boundary.rs":"7081317ddcec1e82dd4a2090a571c6abf2ff4bbfa8cd10395e1eb3f386157fae","tests/word_boundary_ascii.rs":"cd0be5b5b485de0ba7994b42e2864585556c3d2d8bf5eab05b58931d9aaf4b87","tests/word_boundary_unicode.rs":"75dbcc35d3abc0f9795c2ea99e216dc227b0a5b58e9ca5eef767815ff0513921"},"package":"ee84f70c8c08744ea9641a731c7fadb475bf2ecc52d7f627feb833e0b3990467"} \ No newline at end of file +{"files":{".cargo_vcs_info.json":"b03671fe3d8e220bff07041f9227c2799c1fc98fc7d4d64f03b6f2d4c26d55a0","CHANGELOG.md":"d51b6cb87b132bc405a65539ca3e49edfd1413e7f358f8cd6ad4164d84acf6a4","Cargo.toml":"b7961d13f82982c6c0628da5ea5a27f3c3e497954305da2a7b0648b039e29443","HACKING.md":"33e3e555fbcf70d7c235068a10c0d9c3d53c02d71712eda52d252d0b20f70eb3","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","PERFORMANCE.md":"c776b18758b6dc8f2f9d37e9a95261f75c5f744925e8ddf216b83953bf7467b7","README.md":"19cc4864bf0b9b1f76cca038ad1e086c08da1d13eb3952f2f6d7c6aae2aba689","UNICODE.md":"27be97e94d0819ae18ae71029559c3de21c8ffd343d4a791959d0fc22b06dfe6","build.rs":"cebf7813476c332764ab9f26f8e0e7d9b5460ff1468e7ab2703eec812f82bdee","examples/regexdna-input.txt":"156a49710bb3e1ed4bc2bbb0af0f383b747b3d0281453cfff39c296124c598f8","examples/regexdna-output.txt":"35e85b19b70a893d752fd43e54e1e9da08bac43559191cea85b33387c24c4cc1","examples/shootout-regex-dna-bytes.rs":"f097a923fef2e9bd9a9abd3686eea84830e8050bb750bcab840b6575873227ff","examples/shootout-regex-dna-cheat.rs":"4b5a590ec88a9ba67cc4a34621cb038a400d45e64a15a354f3e07fdaf41a935b","examples/shootout-regex-dna-replace.rs":"15677e7de356427fe2b983e918de073a7a730337b090d4ab0e815e1e66f74f73","examples/shootout-regex-dna-single-cheat.rs":"5e743b3a6ec968713ce064a289b1fbd11c302add824d1c749a2ffb546c73128e","examples/shootout-regex-dna-single.rs":"c86969adb0fb08c5e23f749ec6922a58404da7d0e1925c848957a5144ddc8815","examples/shootout-regex-dna.rs":"e627f1e5e24c1cf4e9c9d52b844b6d971c59b7169b0e8762d8d9d1cb7debc6e6","rustfmt.toml":"3025e466e14d8ac54e5371397434f79be4976b5bf3faf64e36c5e941980a0cf2","src/backtrack.rs":"0372ada608dca9c8d3e1fabf56e33498f8ff4fbdfd445873c4a4be6657465c68","src/compile.rs":"794434c5cbe6c919adde4589960fbf78826da669b15215167dae9d40df2cf524","src/dfa.rs":"5fcebff2805fcfbbca393706e1dcd2c4b0ebbdd03bd2bdfc08c6156724bde14a","src/error.rs":"d26673a95e372665863c7e01558836ef6e957aadf421d5056525720e16a9683d","src/exec.rs":"b1eb21ec86213f38f8e806c26808143e0312cbc1477eb1107d2010ee55c8a767","src/expand.rs":"3d70f38aa9755b5cdc18e5deb6ddfb89aad9e5c20aeb16eaf6cf89e19ec15edf","src/freqs.rs":"e25871eec51d1c02c15abbc04d61dbea71fb2dbc15f370c98279687416c969de","src/input.rs":"9b092fe88a66b46dee0dfe0a2e67e4b78b01a32f53b28443b5f382b8514d0cfb","src/lib.rs":"c81e67cb35d6ccfafbfd73af57a1fccbadabb9aec13423d27e168d8d8530d684","src/literal/mod.rs":"c395221efe19f36edd9d92c8f8283e5b30553e0e9b408ccb1430d11f038730f8","src/literal/teddy_avx2/fallback.rs":"f24b70f9dd028eefe2802b7bbc6b2dca97663b03a931058e3a59750f0693a15c","src/literal/teddy_avx2/imp.rs":"b0e4634bc9fbc793e3b0938b97a236df4b8fb17a0ac08040a6394bc73042aa8b","src/literal/teddy_avx2/mod.rs":"b7373cb7bc823e60be4e585b93fe15e7a477c2cb16a45563f66c2e5c0d7e660d","src/literal/teddy_ssse3/fallback.rs":"f24b70f9dd028eefe2802b7bbc6b2dca97663b03a931058e3a59750f0693a15c","src/literal/teddy_ssse3/imp.rs":"be4565c47a3807ab09343f2da4ef0e3297d4776719472efb60dee8e55380c2ec","src/literal/teddy_ssse3/mod.rs":"34dba2fde2ec15c1b37faae164a1475b92227ad5c1010bc619d0c318bc30e332","src/pattern.rs":"4e820c17a2b983050f47d3fd13282094ce9f27b75fd852fcec438d61f07f0b0b","src/pikevm.rs":"9600a8b135075f8cf62683e6b08c73834873a203347d275f1e9ca3a97221dbeb","src/prog.rs":"55accd0ef93a71facf348d969cb0ac5af5166288ed617fd2fd0320ca9009619d","src/re_builder.rs":"a71b56428c84a1c14f300451a19570f1ad59ac16f5230d63bae160f78c87fc94","src/re_bytes.rs":"d3ca160c650a29cb1e09342611187d8c683df0e0f5d8b9e277c7d6d596c14b49","src/re_set.rs":"ca831fc302d9d31b0e35ca76098b6f36ffd09481e2c4aaae161786334766be87","src/re_trait.rs":"45b2e81076cce0b87bace2c05e125d44b8e3b71ff8d5c94130a7ae2c915f237d","src/re_unicode.rs":"b7ae7149a651b962087c6e5111c82aa70c237313996a8d7e0e695d429427d40a","src/sparse.rs":"f59784a788555ae03fc73b0cdf4b3aec6d2f54b0edf3d9f2bed4b00171fdc52e","src/testdata/LICENSE":"58cf078acc03da3e280a938c2bd9943f554fc9b6ced89ad93ba35ca436872899","src/testdata/README":"45f869e37f798905c773bfbe0ef19a5fb7e585cbf0b7c21b5b5a784e8cec3c14","src/testdata/basic.dat":"3756a5bdd6f387ed34731197fbdaab8521b0ae1726250100ba235756cb42b4b1","src/testdata/nullsubexpr.dat":"496ac0278eec3b6d9170faace14554569032dd3d909618364d9326156de39ecf","src/testdata/repetition.dat":"1f7959063015b284b18a4a2c1c8b416d438a2d6c4b1a362da43406b865f50e69","src/utf8.rs":"1a2d7bc43ab139bfc2b2610627efd59a7ead2a959492ba73eebb743d482c7957","src/vector/avx2.rs":"1ef39371a9215144b69bf72df9aa3533ea6be44d7425cdc5c8192de79dfc5e96","src/vector/mod.rs":"fc238d33117c500381f57d2d1fbaba14bd6ab855ba3fe55304c37256b1c0e965","src/vector/ssse3.rs":"f8549244fddfcb73f538761c0ae5a81c535e5ae5e129cebf8e3e6f9db4fa79f4","tests/api.rs":"803faacd9ac5efc149959ff63a2132f5ca155f75a246b79807c549b464b5c497","tests/api_str.rs":"8ccb6c3dfe0220229ad33fcaf9dea420b414aea17c7498d978efd1b8aceaa980","tests/bytes.rs":"3564a933f12f84d65488c220d71067a9902ed9860522a7d9139a713f818a0b1c","tests/consistent.rs":"51b12bfec3ec2b49471b508dec537dbbd50823673a34a16b98e38dc3ae2a0793","tests/crates_regex.rs":"7812e91c25a2aad48ba024bcbeb8b922ffc1cfa3113a33615885d72d8a2cae64","tests/crazy.rs":"b0c593be5022341606ddb15b3d28aa39d2d52977db4b1b72c41c6133a7f7a7e0","tests/flags.rs":"cd3788760defc667b32adb2732b6657b289372e1051fc240dfd0e435e2835353","tests/fowler.rs":"e0b7420fa5b636301d4c11cd4dfb803ec09fa7b27be47c594d231167de1241e3","tests/macros.rs":"f021b62e3ce8d122f6450a5aab36972eccf4c21c62a53c604924d4d01d90c0d8","tests/macros_bytes.rs":"5574c19bff5dfa45802238b65f642605f1a8b8adc6a353660a251c80490ad68e","tests/macros_str.rs":"518bde310ceb9fb689b20294279483454601ba3a3fd7c95a04d07331f05d476d","tests/misc.rs":"c8cc85ac916980ebd053df2444fe9b795a00f2ac42c5cd828fc3df487f689265","tests/multiline.rs":"4e872a9473bc229d955716c18c77aa3530625a8f3a28ecaefdb70b9aff0f0a8b","tests/noparse.rs":"8850d31cb95e413e3a67edecce8590cd158f49779abcc2e5722381113346179c","tests/regression.rs":"1f077b6c0057e9877e94ff515774463012cbcb396f5b35af629a7a2cb6f30ce0","tests/replace.rs":"a121da1d86fa39d45b6b29ccd74e4327deaf0c9c1914dc1da46e6358084e4459","tests/searcher.rs":"124c9909a1e8fcfddee8ecfae3a1fb9d76f9ddac62fda23d9b895744728a0aa8","tests/set.rs":"4f632b1f25f69af48053089a5cef272a9bb7cf0ac80277b36ae74888c7adc0df","tests/shortest_match.rs":"7ca223e0a61b1a26a1f36465ab49de021475295e18f4d6421497461af1e107be","tests/suffix_reverse.rs":"cd497c1a51246a8fc727062133470e0c6300620ad80333d20d63c0ee4224ef1c","tests/test_backtrack.rs":"b07a114b2eb7f1f17357629be9c8458e31f7952fb2c327d66d9415f08855c624","tests/test_backtrack_bytes.rs":"dd3cec3c630d6f41892c9111bee87227bf47126651b2402672c30b084fa9c28c","tests/test_backtrack_utf8bytes.rs":"b576b933d6be21f8cedb281e456441d4278350b0145a139dbccb1861639a54f9","tests/test_crates_regex.rs":"6d7f2cfade28ebab6a831282882b83e4b3d66a5171411730505e2a8bb95074a8","tests/test_default.rs":"dc819a5973dd03a58165afa37da20727e8bf7085f1482414290654483fe20aa1","tests/test_default_bytes.rs":"c5228278e0a1d8fab5157dfd2b52642fd0ec68db346dc133f4c16f178d63e856","tests/test_nfa.rs":"aad36ca01f3f7eb23633a1207056e9056d686be2ef6e3661fad83805fa482927","tests/test_nfa_bytes.rs":"198f7b58c5c7dd0a05f16ddb3b9b63dab29ef2a56448378ac602c5d087c01e4e","tests/test_nfa_utf8bytes.rs":"854d80114ca1bed14d4ad3f2b3bf292ff0fa44e12d7d3f2ec6dd17cbbaa82175","tests/unicode.rs":"d5750e15f8c197fc4b6b2ecfa1678d8ad39d609760392d33b3d89c449630c881","tests/word_boundary.rs":"7081317ddcec1e82dd4a2090a571c6abf2ff4bbfa8cd10395e1eb3f386157fae","tests/word_boundary_ascii.rs":"cd0be5b5b485de0ba7994b42e2864585556c3d2d8bf5eab05b58931d9aaf4b87","tests/word_boundary_unicode.rs":"75dbcc35d3abc0f9795c2ea99e216dc227b0a5b58e9ca5eef767815ff0513921"},"package":"37e7cbbd370869ce2e8dff25c7018702d10b21a20ef7135316f8daecd6c25b7f"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/Cargo.toml 2019-01-04 19:47:55.000000000 +0000 @@ -12,7 +12,7 @@ [package] name = "regex" -version = "1.0.6" +version = "1.1.0" authors = ["The Rust Project Developers"] exclude = ["/.travis.yml", "/appveyor.yml", "/ci/*", "/scripts/*"] autotests = false diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/.cargo_vcs_info.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/.cargo_vcs_info.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/.cargo_vcs_info.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/.cargo_vcs_info.json 2019-01-04 19:47:55.000000000 +0000 @@ -1,5 +1,5 @@ { "git": { - "sha1": "6ff88ffe064ef1e5a90a4a0f280ca8e0429d29a3" + "sha1": "d4b9419ed41907d5e8b43166ce7aef77e6fb93d9" } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/CHANGELOG.md distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/CHANGELOG.md --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/CHANGELOG.md 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/CHANGELOG.md 2019-01-04 19:47:55.000000000 +0000 @@ -1,3 +1,70 @@ +1.1.0 (2018-11-30) +================== +This is a small release with a couple small enhancements. This release also +increases the minimal supported Rust version (MSRV) to 1.24.1 (from 1.20.0). In +accordance with this crate's MSRV policy, this release bumps the minor version +number. + +Performance improvements: + +* [OPT #511](https://github.com/rust-lang/regex/pull/511), + [OPT #540](https://github.com/rust-lang/regex/pull/540): + Improve lazy DFA construction for large regex sets. + +New features: + +* [FEATURE #538](https://github.com/rust-lang/regex/pull/538): + Add Emoji and "break" Unicode properties. See [UNICODE.md](UNICODE.md). + +Bug fixes: + +* [BUG #530](https://github.com/rust-lang/regex/pull/530): + Add Unicode license (for data tables). +* Various typo/doc fixups. + + +1.0.6 (2018-11-06) +================== +This is a small release. + +Performance improvements: + +* [OPT #513](https://github.com/rust-lang/regex/pull/513): + Improve performance of compiling large Unicode classes by 8-10%. + +Bug fixes: + +* [BUG #533](https://github.com/rust-lang/regex/issues/533): + Fix definition of `[[:blank:]]` class that regressed in `regex-syntax 0.5`. + + +1.0.5 (2018-09-06) +================== +This is a small release with an API enhancement. + +New features: + +* [FEATURE #509](https://github.com/rust-lang/regex/pull/509): + Generalize impls of the `Replacer` trait. + + +1.0.4 (2018-08-25) +================== +This is a small release that bumps the quickcheck dependency. + + +1.0.3 (2018-08-24) +================== +This is a small bug fix release. + +Bug fixes: + +* [BUG #504](https://github.com/rust-lang/regex/pull/504): + Fix for Cargo's "minimal version" support. +* [BUG 1e39165f](https://github.com/rust-lang/regex/commit/1e39165f): + Fix doc examples for byte regexes. + + 1.0.2 (2018-07-18) ================== This release exposes some new lower level APIs on `Regex` that permit diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/README.md distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/README.md --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/README.md 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/README.md 2019-01-04 19:47:55.000000000 +0000 @@ -210,7 +210,7 @@ ### Minimum Rust version policy -This crate's minimum supported `rustc` version is `1.20.0`. +This crate's minimum supported `rustc` version is `1.24.1`. The current **tentative** policy is that the minimum Rust version required to use this crate can be increased in minor version updates. For example, if @@ -232,3 +232,7 @@ http://opensource.org/licenses/MIT) at your option. + +The data in `regex-syntax/src/unicode_tables/` is licensed under the Unicode +License Agreement +([LICENSE-UNICODE](http://www.unicode.org/copyright.html#License)). diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/rustfmt.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/rustfmt.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/rustfmt.toml 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/rustfmt.toml 2019-01-04 19:47:55.000000000 +0000 @@ -0,0 +1 @@ +disable_all_formatting = true diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/src/compile.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/src/compile.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/src/compile.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/src/compile.rs 2019-01-04 19:47:55.000000000 +0000 @@ -73,7 +73,7 @@ /// If bytes is true, then the program is compiled as a byte based /// automaton, which incorporates UTF-8 decoding into the machine. If it's /// false, then the automaton is Unicode scalar value based, e.g., an - /// engine utilizing such an automaton is resposible for UTF-8 decoding. + /// engine utilizing such an automaton is responsible for UTF-8 decoding. /// /// The specific invariant is that when returning a byte based machine, /// the neither the `Char` nor `Ranges` instructions are produced. diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/src/dfa.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/src/dfa.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/src/dfa.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/src/dfa.rs 2019-01-04 19:47:55.000000000 +0000 @@ -50,6 +50,7 @@ use std::fmt; use std::iter::repeat; use std::mem; +use std::sync::Arc; use exec::ProgramCache; use prog::{Inst, Program}; @@ -88,7 +89,7 @@ /// This cache is reused between multiple invocations of the same regex /// program. (It is not shared simultaneously between threads. If there is /// contention, then new caches are created.) -#[derive(Clone, Debug)] +#[derive(Debug)] pub struct Cache { /// Group persistent DFA related cache state together. The sparse sets /// listed below are used as scratch space while computing uncached states. @@ -107,7 +108,7 @@ /// `CacheInner` is logically just a part of Cache, but groups together fields /// that aren't passed as function parameters throughout search. (This split /// is mostly an artifact of the borrow checker. It is happily paid.) -#[derive(Clone, Debug)] +#[derive(Debug)] struct CacheInner { /// A cache of pre-compiled DFA states, keyed by the set of NFA states /// and the set of empty-width flags set at the byte in the input when the @@ -117,7 +118,7 @@ /// things, we just pass indexes around manually. The performance impact of /// this is probably an instruction or two in the inner loop. However, on /// 64 bit, each StatePtr is half the size of a *State. - compiled: HashMap<State, StatePtr>, + compiled: StateMap, /// The transition table. /// /// The transition table is laid out in row-major order, where states are @@ -134,9 +135,6 @@ /// bytes that never discriminate a distinct path through the DFA from each /// other. trans: Transitions, - /// Our set of states. Note that `StatePtr / num_byte_classes` indexes - /// this Vec rather than just a `StatePtr`. - states: Vec<State>, /// A set of cached start states, which are limited to the number of /// permutations of flags set just before the initial byte of input. (The /// index into this vec is a `EmptyFlags`.) @@ -155,6 +153,9 @@ /// The total heap size of the DFA's cache. We use this to determine when /// we should flush the cache. size: usize, + /// Scratch space used when building instruction pointer lists for new + /// states. This helps amortize allocation. + insts_scratch_space: Vec<u8>, } /// The transition table. @@ -267,8 +268,8 @@ /// it is packed into a single byte; Otherwise the byte 128 (-128 as an i8) /// is coded as a flag, followed by 4 bytes encoding the delta. #[derive(Clone, Eq, Hash, PartialEq)] -struct State{ - data: Box<[u8]>, +struct State { + data: Arc<[u8]>, } /// `InstPtr` is a 32 bit pointer into a sequence of opcodes (i.e., it indexes @@ -428,13 +429,13 @@ let starts = vec![STATE_UNKNOWN; 256]; let mut cache = Cache { inner: CacheInner { - compiled: HashMap::new(), + compiled: StateMap::new(num_byte_classes), trans: Transitions::new(num_byte_classes), - states: vec![], start_states: starts, stack: vec![], flush_count: 0, size: 0, + insts_scratch_space: vec![], }, qcur: SparseSet::new(prog.insts.len()), qnext: SparseSet::new(prog.insts.len()), @@ -1179,7 +1180,11 @@ Some(v) => v, }; // In the cache? Cool. Done. - if let Some(&si) = self.cache.compiled.get(&key) { + if let Some(si) = self + .cache + .compiled + .get_ptr(&key) + { return Some(si); } // If the cache has gotten too big, wipe it. @@ -1219,8 +1224,14 @@ // are conditional, we need to make them part of a state's key in the // cache. + let mut insts = mem::replace( + &mut self.cache.insts_scratch_space, + vec![], + ); + insts.clear(); // Reserve 1 byte for flags. - let mut insts = vec![0]; + insts.push(0); + let mut prev = 0; for &ip in q { let ip = usize_to_u32(ip); @@ -1244,13 +1255,16 @@ // see a match when expanding NFA states previously, then this is a // dead state and no amount of additional input can transition out // of this state. - if insts.len() == 1 && !state_flags.is_match() { - None - } else { - let StateFlags(f) = *state_flags; - insts[0] = f; - Some(State { data: insts.into_boxed_slice() }) - } + let opt_state = + if insts.len() == 1 && !state_flags.is_match() { + None + } else { + let StateFlags(f) = *state_flags; + insts[0] = f; + Some(State { data: Arc::from(&*insts) }) + }; + self.cache.insts_scratch_space = insts; + opt_state } /// Clears the cache, but saves and restores current_state if it is not @@ -1265,7 +1279,7 @@ &mut self, current_state: Option<&mut StatePtr>, ) -> bool { - if self.cache.states.is_empty() { + if self.cache.compiled.is_empty() { // Nothing to clear... return true; } @@ -1295,7 +1309,7 @@ // 10 or fewer bytes per state. // Additionally, we permit the cache to be flushed a few times before // caling it quits. - let nstates = self.cache.states.len(); + let nstates = self.cache.compiled.len(); if self.cache.flush_count >= 3 && self.at >= self.last_cache_flush && (self.at - self.last_cache_flush) <= 10 * nstates { @@ -1314,7 +1328,6 @@ }; self.cache.reset_size(); self.cache.trans.clear(); - self.cache.states.clear(); self.cache.compiled.clear(); for s in &mut self.cache.start_states { *s = STATE_UNKNOWN; @@ -1334,7 +1347,7 @@ fn restore_state(&mut self, state: State) -> Option<StatePtr> { // If we've already stored this state, just return a pointer to it. // None will be the wiser. - if let Some(&si) = self.cache.compiled.get(&state) { + if let Some(si) = self.cache.compiled.get_ptr(&state) { return Some(si); } self.add_state(state) @@ -1475,7 +1488,7 @@ /// Returns a reference to a State given a pointer to it. fn state(&self, si: StatePtr) -> &State { - &self.cache.states[si as usize / self.num_byte_classes()] + self.cache.compiled.get_state(si).unwrap() } /// Adds the given state to the DFA. @@ -1508,16 +1521,13 @@ // so we can find it later. self.cache.size += self.cache.trans.state_heap_size() - + (2 * state.data.len()) + + state.data.len() + (2 * mem::size_of::<State>()) + mem::size_of::<StatePtr>(); - self.cache.states.push(state.clone()); self.cache.compiled.insert(state, si); // Transition table and set of states and map should all be in sync. - debug_assert!(self.cache.states.len() + debug_assert!(self.cache.compiled.len() == self.cache.trans.num_states()); - debug_assert!(self.cache.states.len() - == self.cache.compiled.len()); Some(si) } @@ -1598,6 +1608,66 @@ } } +/// An abstraction for representing a map of states. The map supports two +/// different ways of state lookup. One is fast constant time access via a +/// state pointer. The other is a hashmap lookup based on the DFA's +/// constituent NFA states. +/// +/// A DFA state internally uses an Arc such that we only need to store the +/// set of NFA states on the heap once, even though we support looking up +/// states by two different means. A more natural way to express this might +/// use raw pointers, but an Arc is safe and effectively achieves the same +/// thing. +#[derive(Debug)] +struct StateMap { + /// The keys are not actually static but rely on always pointing to a + /// buffer in `states` which will never be moved except when clearing + /// the map or on drop, in which case the keys of this map will be + /// removed before + map: HashMap<State, StatePtr>, + /// Our set of states. Note that `StatePtr / num_byte_classes` indexes + /// this Vec rather than just a `StatePtr`. + states: Vec<State>, + /// The number of byte classes in the DFA. Used to index `states`. + num_byte_classes: usize, +} + +impl StateMap { + fn new(num_byte_classes: usize) -> StateMap { + StateMap { + map: HashMap::new(), + states: vec![], + num_byte_classes: num_byte_classes, + } + } + + fn len(&self) -> usize { + self.states.len() + } + + fn is_empty(&self) -> bool { + self.states.is_empty() + } + + fn get_ptr(&self, state: &State) -> Option<StatePtr> { + self.map.get(state).cloned() + } + + fn get_state(&self, si: StatePtr) -> Option<&State> { + self.states.get(si as usize / self.num_byte_classes) + } + + fn insert(&mut self, state: State, si: StatePtr) { + self.map.insert(state.clone(), si); + self.states.push(state); + } + + fn clear(&mut self) { + self.map.clear(); + self.states.clear(); + } +} + impl Transitions { /// Create a new transition table. /// @@ -1844,6 +1914,7 @@ mod tests { extern crate rand; + use std::sync::Arc; use quickcheck::{QuickCheck, StdGen, quickcheck}; use super::{ StateFlags, State, push_inst_ptr, @@ -1858,7 +1929,7 @@ for &ip in ips.iter() { push_inst_ptr(&mut data, &mut prev, ip); } - let state = State { data: data.into_boxed_slice() }; + let state = State { data: Arc::from(&data[..]) }; let expected: Vec<usize> = ips.into_iter().map(|ip| ip as usize).collect(); diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/src/exec.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/src/exec.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/src/exec.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/src/exec.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1271,7 +1271,7 @@ /// available to a particular program. pub type ProgramCache = RefCell<ProgramCacheInner>; -#[derive(Clone, Debug)] +#[derive(Debug)] pub struct ProgramCacheInner { pub pikevm: pikevm::Cache, pub backtrack: backtrack::Cache, diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/src/expand.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/src/expand.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/src/expand.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/src/expand.rs 2019-01-04 19:47:55.000000000 +0000 @@ -92,7 +92,7 @@ /// `CaptureRef` represents a reference to a capture group inside some text. /// The reference is either a capture group name or a number. /// -/// It is also tagged with the position in the text immediately proceding the +/// It is also tagged with the position in the text immediately proceeding the /// capture reference. #[derive(Clone, Copy, Debug, Eq, PartialEq)] struct CaptureRef<'a> { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/src/prog.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/src/prog.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/src/prog.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/src/prog.rs 2019-01-04 19:47:55.000000000 +0000 @@ -161,6 +161,7 @@ impl Deref for Program { type Target = [Inst]; + #[inline(always)] fn deref(&self) -> &Self::Target { &*self.insts } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/src/re_builder.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/src/re_builder.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/src/re_builder.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/src/re_builder.rs 2019-01-04 19:47:55.000000000 +0000 @@ -205,7 +205,7 @@ /// they should impose a limit on the length, in bytes, of the concrete /// pattern string. In particular, this is viable since this parser /// implementation will limit itself to heap space proportional to the - /// lenth of the pattern string. + /// length of the pattern string. /// /// Note that a nest limit of `0` will return a nest limit error for most /// patterns but not all. For example, a nest limit of `0` permits `a` but @@ -342,7 +342,7 @@ /// /// Note that this is a *per thread* limit. There is no way to set a global /// limit. In particular, if a regex is used from multiple threads - /// simulanteously, then each thread may use up to the number of bytes + /// simultaneously, then each thread may use up to the number of bytes /// specified here. pub fn dfa_size_limit(&mut self, limit: usize) -> &mut RegexSetBuilder { self.0.dfa_size_limit = limit; @@ -366,7 +366,7 @@ /// they should impose a limit on the length, in bytes, of the concrete /// pattern string. In particular, this is viable since this parser /// implementation will limit itself to heap space proportional to the - /// lenth of the pattern string. + /// length of the pattern string. /// /// Note that a nest limit of `0` will return a nest limit error for most /// patterns but not all. For example, a nest limit of `0` permits `a` but diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/src/re_set.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/src/re_set.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/src/re_set.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/src/re_set.rs 2019-01-04 19:47:55.000000000 +0000 @@ -216,6 +216,37 @@ pub fn len(&self) -> usize { self.0.regex_strings().len() } + + /// Returns the patterns that this set will match on. + /// + /// This function can be used to determine the pattern for a match. The + /// slice returned has exactly as many patterns givens to this regex set, + /// and the order of the slice is the same as the order of the patterns + /// provided to the set. + /// + /// # Example + /// + /// ```rust + /// # use regex::RegexSet; + /// let set = RegexSet::new(&[ + /// r"\w+", + /// r"\d+", + /// r"\pL+", + /// r"foo", + /// r"bar", + /// r"barfoo", + /// r"foobar", + /// ]).unwrap(); + /// let matches: Vec<_> = set + /// .matches("foobar") + /// .into_iter() + /// .map(|match_idx| &set.patterns()[match_idx]) + /// .collect(); + /// assert_eq!(matches, vec![r"\w+", r"\pL+", r"foo", r"bar", r"foobar"]); + /// ``` + pub fn patterns(&self) -> &[String] { + self.0.regex_strings() + } } /// A set of matches returned by a regex set. diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/src/sparse.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/src/sparse.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/src/sparse.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/src/sparse.rs 2019-01-04 19:47:55.000000000 +0000 @@ -8,58 +8,55 @@ /// in the order in which they were inserted. /// /// The data structure is based on: http://research.swtch.com/sparse -/// Note though that we don't actually use unitialized memory. We generally +/// Note though that we don't actually use uninitialized memory. We generally /// reuse allocations, so the initial allocation cost is bareable. However, /// its other properties listed above are extremely useful. #[derive(Clone, Debug)] pub struct SparseSet { /// Dense contains the instruction pointers in the order in which they - /// were inserted. Accessing elements >= self.size is illegal. + /// were inserted. dense: Vec<usize>, /// Sparse maps instruction pointers to their location in dense. /// /// An instruction pointer is in the set if and only if - /// sparse[ip] < size && ip == dense[sparse[ip]]. - sparse: Vec<usize>, - /// The number of elements in the set. - size: usize, + /// sparse[ip] < dense.len() && ip == dense[sparse[ip]]. + sparse: Box<[usize]>, } impl SparseSet { pub fn new(size: usize) -> SparseSet { SparseSet { - dense: vec![0; size], - sparse: vec![0; size], - size: 0, + dense: Vec::with_capacity(size), + sparse: vec![0; size].into_boxed_slice(), } } pub fn len(&self) -> usize { - self.size + self.dense.len() } pub fn is_empty(&self) -> bool { - self.size == 0 + self.dense.is_empty() } pub fn capacity(&self) -> usize { - self.dense.len() + self.dense.capacity() } pub fn insert(&mut self, value: usize) { - let i = self.size; - self.dense[i] = value; + let i = self.len(); + assert!(i < self.capacity()); + self.dense.push(value); self.sparse[value] = i; - self.size += 1; } pub fn contains(&self, value: usize) -> bool { let i = self.sparse[value]; - i < self.size && self.dense[i] == value + self.dense.get(i) == Some(&value) } pub fn clear(&mut self) { - self.size = 0; + self.dense.clear(); } } @@ -67,7 +64,7 @@ type Target = [usize]; fn deref(&self) -> &Self::Target { - &self.dense[0..self.size] + &self.dense } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/tests/set.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/tests/set.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/tests/set.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/tests/set.rs 2019-01-04 19:47:55.000000000 +0000 @@ -30,3 +30,9 @@ assert!(set.matches(text).matched(1)); assert!(set.matches(text).matched(1)); } + +#[test] +fn get_set_patterns() { + let set = regex_set!(&["a", "b"]); + assert_eq!(vec!["a", "b"], set.patterns()); +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/tests/unicode.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/tests/unicode.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/tests/unicode.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/tests/unicode.rs 2019-01-04 19:47:55.000000000 +0000 @@ -108,3 +108,40 @@ r"\p{Unassigned}", "\u{10FFFF}", Some((0, 4))); mat!(uni_class_gencat_uppercase_letter, r"\p{Uppercase_Letter}", "Ꝋ", Some((0, 3))); + +// Test a smattering of properties. +mat!(uni_class_prop_emoji1, r"\p{Emoji}", "\u{23E9}", Some((0, 3))); +mat!(uni_class_prop_emoji2, r"\p{emoji}", "\u{1F21A}", Some((0, 4))); +mat!(uni_class_prop_picto1, + r"\p{extendedpictographic}", "\u{1FA6E}", Some((0, 4))); +mat!(uni_class_prop_picto2, + r"\p{extendedpictographic}", "\u{1FFFD}", Some((0, 4))); + +// grapheme_cluster_break +mat!(uni_class_gcb_prepend, + r"\p{grapheme_cluster_break=prepend}", "\u{11D46}", Some((0, 4))); +mat!(uni_class_gcb_ri1, + r"\p{gcb=regional_indicator}", "\u{1F1E6}", Some((0, 4))); +mat!(uni_class_gcb_ri2, + r"\p{gcb=ri}", "\u{1F1E7}", Some((0, 4))); +mat!(uni_class_gcb_ri3, + r"\p{gcb=regionalindicator}", "\u{1F1FF}", Some((0, 4))); +mat!(uni_class_gcb_lvt, + r"\p{gcb=lvt}", "\u{C989}", Some((0, 3))); +mat!(uni_class_gcb_zwj, + r"\p{gcb=zwj}", "\u{200D}", Some((0, 3))); + +// word_break +mat!(uni_class_wb1, + r"\p{word_break=Hebrew_Letter}", "\u{FB46}", Some((0, 3))); +mat!(uni_class_wb2, r"\p{wb=hebrewletter}", "\u{FB46}", Some((0, 3))); +mat!(uni_class_wb3, r"\p{wb=ExtendNumLet}", "\u{FF3F}", Some((0, 3))); +mat!(uni_class_wb4, r"\p{wb=WSegSpace}", "\u{3000}", Some((0, 3))); +mat!(uni_class_wb5, r"\p{wb=numeric}", "\u{1E950}", Some((0, 4))); + +// sentence_break +mat!(uni_class_sb1, r"\p{sentence_break=Lower}", "\u{0469}", Some((0, 2))); +mat!(uni_class_sb2, r"\p{sb=lower}", "\u{0469}", Some((0, 2))); +mat!(uni_class_sb3, r"\p{sb=Close}", "\u{FF60}", Some((0, 3))); +mat!(uni_class_sb4, r"\p{sb=Close}", "\u{1F677}", Some((0, 4))); +mat!(uni_class_sb5, r"\p{sb=SContinue}", "\u{FF64}", Some((0, 3))); diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/UNICODE.md distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/UNICODE.md --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex/UNICODE.md 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex/UNICODE.md 2019-01-04 19:47:55.000000000 +0000 @@ -108,8 +108,15 @@ * `Default_Ignorable_Code_Point` \* * `Deprecated` * `Diacritic` +* `Emoji` +* `Emoji_Presentation` +* `Emoji_Modifier` +* `Emoji_Modifier_Base` +* `Emoji_Component` +* `Extended_Pictographic` * `Extender` * `Grapheme_Base` +* `Grapheme_Cluster_Break` * `Grapheme_Extend` * `Hex_Digit` * `IDS_Binary_Operator` @@ -127,6 +134,7 @@ * `Quotation_Mark` * `Radical` * `Regional_Indicator` +* `Sentence_Break` * `Sentence_Terminal` * `Soft_Dotted` * `Terminal_Punctuation` @@ -134,6 +142,7 @@ * `Uppercase` \* * `Variation_Selector` * `White_Space` \* +* `Word_Break` * `XID_Continue` * `XID_Start` diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex-syntax/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex-syntax/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex-syntax/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex-syntax/.cargo-checksum.json 2019-01-04 19:47:55.000000000 +0000 @@ -1 +1 @@ -{"files":{".cargo_vcs_info.json":"f7ccd8813cd365a28b77cc37e598e15598f4aad06fbb0774c271e2989c645081","Cargo.toml":"dea8db95389ce01e09e0b1caed06c28fa4073c59df30e8042b6bdf387560f4b7","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","benches/bench.rs":"4d09c75f457459f850877ee334a924f331c701a22fa19b1f7942c3504c8981f4","src/ast/mod.rs":"31825eaa0fdc0ae9939cf118f07c9a3ce7c0485065e0646df353a2d310ae5cd8","src/ast/parse.rs":"d1b5a837df7f7b09e5f6b70350407eeef56dfa5e6d27519fd903c07d16968fd1","src/ast/print.rs":"c7281fdec95b796c4e32393d3f750ab58cb5bea1dd77e87d4284c0ea0a304f1e","src/ast/visitor.rs":"493be4ba270f8cfeffe096b981947a12a5992542c1df1ed470e015f1c41ed081","src/either.rs":"1758e3edd056884eccadd995708d1e374ba9aa65846bd0e13b1aae852607c560","src/error.rs":"ae638c6e6adcc7843dec98eb52b2dda2e5085a7c029a8d7f005ef40d35557617","src/hir/interval.rs":"3c2599c9c07149afb0770eca720ab66ed9599402ee58b34bf6709eac4c895239","src/hir/literal/mod.rs":"4fd26946232d056342a5052b4c84a28b6c0b956f57b4a4ff8fe64eb1b710aae5","src/hir/mod.rs":"07bdd0dc1c7c60194ab8a3242cb2fe58d5b51ba36d303d495dcd394726ea469e","src/hir/print.rs":"a7efad3703d1718de65c6657eff6be72a4e96bc3db8a56d08d2a96c0abdb99b8","src/hir/translate.rs":"ba2647fc8407ec88fc1705078b0783d2d7cbff44e54586f68dc54f90f0c548a9","src/hir/visitor.rs":"8e15e646c8c219fd1f4620fc3611dfbd0d63d598bc5c8bcbfb0106053134613c","src/lib.rs":"d1cbe98975034f18276e149bc42ce44d77623a62d53385b7d3a3fa1e2df9f383","src/parser.rs":"70e0386d373af3bc4e491c0371be06069a773cfb0476e44224702c3da643ce24","src/unicode.rs":"74e35b368555ad683284dc4795084e5b7f7cc9bb8fddd17bdd8e40a51588f43e","src/unicode_tables/LICENSE-UNICODE":"74db5baf44a41b1000312c673544b3374e4198af5605c7f9080a402cec42cfa3","src/unicode_tables/age.rs":"ad5413c1e4811d85ad845ccb21f12e6bbf33f7d048d0f91863b18da143eb49e8","src/unicode_tables/case_folding_simple.rs":"270a52df6dcb639cafaa9de563ff4dc88522fa9bfe7174f0b8c140d4208c71c7","src/unicode_tables/general_category.rs":"d0e8e05acf7563e426835502b2b510595a01a2739374ae54db29eefee642ed51","src/unicode_tables/mod.rs":"c395afbe606c4a9ef8656cd315b1ce2d5c1729fd60c99da8c6d661c49c47adf4","src/unicode_tables/perl_word.rs":"34050803ae07324c0bd1c976ffeac65df35ea8da3874ab391c997ece258130f3","src/unicode_tables/property_bool.rs":"12f0298e3cbaf7170ba8a9abaa4c1449ac9cc54a8126927e481f3aa350f42641","src/unicode_tables/property_names.rs":"3d1a6a69fb2780089e30919504f3b8314c71847bc89be24b98bc3fa96a5e1567","src/unicode_tables/property_values.rs":"2a86b2723a72f2c164f32b91907895edaf759a98e01b92f135fd2a70a62e5f00","src/unicode_tables/script.rs":"1584c2d3360fc331c0ae697903b59e7bd309d60a6920db8f6ef35d24a6846ec3","src/unicode_tables/script_extension.rs":"269b12f032940e098abcfa88234a3a0f0c74e036756bb3835d76fc197a73c54d"},"package":"fbc557aac2b708fe84121caf261346cc2eed71978024337e42eb46b8a252ac6e"} \ No newline at end of file +{"files":{".cargo_vcs_info.json":"d2761f1b7d1f820a950b48667cd3a1cf6fb6e2c7cf0a79be169d8a079a844533","Cargo.toml":"5b9cded231b10942f7620a800f50e7e420f04e9f8c16a3e96d84ba894d48ff32","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","benches/bench.rs":"4d09c75f457459f850877ee334a924f331c701a22fa19b1f7942c3504c8981f4","src/ast/mod.rs":"31825eaa0fdc0ae9939cf118f07c9a3ce7c0485065e0646df353a2d310ae5cd8","src/ast/parse.rs":"d1b5a837df7f7b09e5f6b70350407eeef56dfa5e6d27519fd903c07d16968fd1","src/ast/print.rs":"c7281fdec95b796c4e32393d3f750ab58cb5bea1dd77e87d4284c0ea0a304f1e","src/ast/visitor.rs":"493be4ba270f8cfeffe096b981947a12a5992542c1df1ed470e015f1c41ed081","src/either.rs":"1758e3edd056884eccadd995708d1e374ba9aa65846bd0e13b1aae852607c560","src/error.rs":"ae638c6e6adcc7843dec98eb52b2dda2e5085a7c029a8d7f005ef40d35557617","src/hir/interval.rs":"31e9cd022486dd562d5cacb5d2b15eaca4c4ae93fb11befeebdbf5cbab49cc8f","src/hir/literal/mod.rs":"4fd26946232d056342a5052b4c84a28b6c0b956f57b4a4ff8fe64eb1b710aae5","src/hir/mod.rs":"07bdd0dc1c7c60194ab8a3242cb2fe58d5b51ba36d303d495dcd394726ea469e","src/hir/print.rs":"a7efad3703d1718de65c6657eff6be72a4e96bc3db8a56d08d2a96c0abdb99b8","src/hir/translate.rs":"ba2647fc8407ec88fc1705078b0783d2d7cbff44e54586f68dc54f90f0c548a9","src/hir/visitor.rs":"8e15e646c8c219fd1f4620fc3611dfbd0d63d598bc5c8bcbfb0106053134613c","src/lib.rs":"d1cbe98975034f18276e149bc42ce44d77623a62d53385b7d3a3fa1e2df9f383","src/parser.rs":"70e0386d373af3bc4e491c0371be06069a773cfb0476e44224702c3da643ce24","src/unicode.rs":"d25f23ebc2b52a5ae8074dced1507959b2377586cbaa3193cfaaae7e8252ea64","src/unicode_tables/LICENSE-UNICODE":"74db5baf44a41b1000312c673544b3374e4198af5605c7f9080a402cec42cfa3","src/unicode_tables/age.rs":"ad5413c1e4811d85ad845ccb21f12e6bbf33f7d048d0f91863b18da143eb49e8","src/unicode_tables/case_folding_simple.rs":"270a52df6dcb639cafaa9de563ff4dc88522fa9bfe7174f0b8c140d4208c71c7","src/unicode_tables/general_category.rs":"d0e8e05acf7563e426835502b2b510595a01a2739374ae54db29eefee642ed51","src/unicode_tables/grapheme_cluster_break.rs":"c3cd5dd6f19bbe36737274e3e2a9fb9106ebca3ab742b6791ebe886ec9498887","src/unicode_tables/mod.rs":"c1c05ac6d24cbab0b84d1d8decf87d0a05431fcd37b608e12a946da98349b34e","src/unicode_tables/perl_word.rs":"34050803ae07324c0bd1c976ffeac65df35ea8da3874ab391c997ece258130f3","src/unicode_tables/property_bool.rs":"488c0baf323ca011c1e10457fd62b237987c59bd6eea37eb62dffa0f72be2098","src/unicode_tables/property_names.rs":"08f380d5d3cb9359e96db365450555e118b88438197954692a3a13031f91f823","src/unicode_tables/property_values.rs":"da0ddadeb5a956d18ad3a2702e5a4df4cc860ce0c25c7973e2fbfdfa6a6f3ab0","src/unicode_tables/script.rs":"1584c2d3360fc331c0ae697903b59e7bd309d60a6920db8f6ef35d24a6846ec3","src/unicode_tables/script_extension.rs":"269b12f032940e098abcfa88234a3a0f0c74e036756bb3835d76fc197a73c54d","src/unicode_tables/sentence_break.rs":"444a02e0e0f6409edae73ed32b157c530b1253fe124d46173485f1850db77366","src/unicode_tables/word_break.rs":"f9c8ee8acec3157d79ea4747c1b09f792c1c0097a214bed4d559d62cf7ab9817"},"package":"4e47a2ed29da7a9e1960e1639e7a982e6edc6d49be308a3b02daf511504a16d1"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex-syntax/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex-syntax/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex-syntax/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex-syntax/Cargo.toml 2019-01-04 19:47:55.000000000 +0000 @@ -12,7 +12,7 @@ [package] name = "regex-syntax" -version = "0.6.3" +version = "0.6.4" authors = ["The Rust Project Developers"] description = "A regular expression parser." homepage = "https://github.com/rust-lang/regex" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex-syntax/.cargo_vcs_info.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex-syntax/.cargo_vcs_info.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex-syntax/.cargo_vcs_info.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex-syntax/.cargo_vcs_info.json 2019-01-04 19:47:55.000000000 +0000 @@ -1,5 +1,5 @@ { "git": { - "sha1": "770edd59b2c4d84dc40231e8648eeb65b2f0d94a" + "sha1": "b77e3fca8a320dbb0ba93637d13f63f41e011a0f" } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex-syntax/src/hir/interval.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex-syntax/src/hir/interval.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex-syntax/src/hir/interval.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex-syntax/src/hir/interval.rs 2019-01-04 19:47:55.000000000 +0000 @@ -9,7 +9,7 @@ // The primary invariant that interval sets guards is canonical ordering. That // is, every interval set contains an ordered sequence of intervals where // no two intervals are overlapping or adjacent. While this invariant is -// ocassionally broken within the implementation, it should be impossible for +// occasionally broken within the implementation, it should be impossible for // callers to observe it. // // Since case folding (as implemented below) breaks that invariant, we roll diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex-syntax/src/unicode.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex-syntax/src/unicode.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex-syntax/src/unicode.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex-syntax/src/unicode.rs 2019-01-04 19:47:55.000000000 +0000 @@ -7,11 +7,14 @@ use unicode_tables::age; use unicode_tables::case_folding_simple::CASE_FOLDING_SIMPLE; use unicode_tables::general_category; +use unicode_tables::grapheme_cluster_break; use unicode_tables::property_bool; use unicode_tables::property_names::PROPERTY_NAMES; use unicode_tables::property_values::PROPERTY_VALUES; use unicode_tables::script; use unicode_tables::script_extension; +use unicode_tables::sentence_break; +use unicode_tables::word_break; type Result<T> = result::Result<T, Error>; @@ -250,6 +253,21 @@ .map(hir_class) .ok_or(Error::PropertyValueNotFound) } + ByValue { property_name: "Grapheme_Cluster_Break", property_value } => { + property_set(grapheme_cluster_break::BY_NAME, property_value) + .map(hir_class) + .ok_or(Error::PropertyValueNotFound) + } + ByValue { property_name: "Sentence_Break", property_value } => { + property_set(sentence_break::BY_NAME, property_value) + .map(hir_class) + .ok_or(Error::PropertyValueNotFound) + } + ByValue { property_name: "Word_Break", property_value } => { + property_set(word_break::BY_NAME, property_value) + .map(hir_class) + .ok_or(Error::PropertyValueNotFound) + } _ => { // What else should we support? Err(Error::PropertyNotFound) diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/grapheme_cluster_break.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/grapheme_cluster_break.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/grapheme_cluster_break.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/grapheme_cluster_break.rs 2019-01-04 19:47:55.000000000 +0000 @@ -0,0 +1,455 @@ +// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY: +// +// ucd-generate grapheme-cluster-break /home/andrew/tmp/ucd-11.0.0/ --chars +// +// ucd-generate is available on crates.io. + +pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[ + ("CR", CR), ("Control", CONTROL), ("Extend", EXTEND), ("L", L), ("LF", LF), + ("LV", LV), ("LVT", LVT), ("Prepend", PREPEND), + ("Regional_Indicator", REGIONAL_INDICATOR), ("SpacingMark", SPACINGMARK), + ("T", T), ("V", V), ("ZWJ", ZWJ), +]; + +pub const CR: &'static [(char, char)] = &[ + ('\r', '\r'), +]; + +pub const CONTROL: &'static [(char, char)] = &[ + ('\u{0}', '\t'), ('\u{b}', '\u{c}'), ('\u{e}', '\u{1f}'), + ('\u{7f}', '\u{9f}'), ('\u{ad}', '\u{ad}'), ('\u{61c}', '\u{61c}'), + ('\u{180e}', '\u{180e}'), ('\u{200b}', '\u{200b}'), + ('\u{200e}', '\u{200f}'), ('\u{2028}', '\u{202e}'), + ('\u{2060}', '\u{206f}'), ('\u{feff}', '\u{feff}'), + ('\u{fff0}', '\u{fffb}'), ('\u{1bca0}', '\u{1bca3}'), + ('\u{1d173}', '\u{1d17a}'), ('\u{e0000}', '\u{e001f}'), + ('\u{e0080}', '\u{e00ff}'), ('\u{e01f0}', '\u{e0fff}'), +]; + +pub const EXTEND: &'static [(char, char)] = &[ + ('\u{300}', '\u{36f}'), ('\u{483}', '\u{489}'), ('\u{591}', '\u{5bd}'), + ('\u{5bf}', '\u{5bf}'), ('\u{5c1}', '\u{5c2}'), ('\u{5c4}', '\u{5c5}'), + ('\u{5c7}', '\u{5c7}'), ('\u{610}', '\u{61a}'), ('\u{64b}', '\u{65f}'), + ('\u{670}', '\u{670}'), ('\u{6d6}', '\u{6dc}'), ('\u{6df}', '\u{6e4}'), + ('\u{6e7}', '\u{6e8}'), ('\u{6ea}', '\u{6ed}'), ('\u{711}', '\u{711}'), + ('\u{730}', '\u{74a}'), ('\u{7a6}', '\u{7b0}'), ('\u{7eb}', '\u{7f3}'), + ('\u{7fd}', '\u{7fd}'), ('\u{816}', '\u{819}'), ('\u{81b}', '\u{823}'), + ('\u{825}', '\u{827}'), ('\u{829}', '\u{82d}'), ('\u{859}', '\u{85b}'), + ('\u{8d3}', '\u{8e1}'), ('\u{8e3}', '\u{902}'), ('\u{93a}', '\u{93a}'), + ('\u{93c}', '\u{93c}'), ('\u{941}', '\u{948}'), ('\u{94d}', '\u{94d}'), + ('\u{951}', '\u{957}'), ('\u{962}', '\u{963}'), ('\u{981}', '\u{981}'), + ('\u{9bc}', '\u{9bc}'), ('\u{9be}', '\u{9be}'), ('\u{9c1}', '\u{9c4}'), + ('\u{9cd}', '\u{9cd}'), ('\u{9d7}', '\u{9d7}'), ('\u{9e2}', '\u{9e3}'), + ('\u{9fe}', '\u{9fe}'), ('\u{a01}', '\u{a02}'), ('\u{a3c}', '\u{a3c}'), + ('\u{a41}', '\u{a42}'), ('\u{a47}', '\u{a48}'), ('\u{a4b}', '\u{a4d}'), + ('\u{a51}', '\u{a51}'), ('\u{a70}', '\u{a71}'), ('\u{a75}', '\u{a75}'), + ('\u{a81}', '\u{a82}'), ('\u{abc}', '\u{abc}'), ('\u{ac1}', '\u{ac5}'), + ('\u{ac7}', '\u{ac8}'), ('\u{acd}', '\u{acd}'), ('\u{ae2}', '\u{ae3}'), + ('\u{afa}', '\u{aff}'), ('\u{b01}', '\u{b01}'), ('\u{b3c}', '\u{b3c}'), + ('\u{b3e}', '\u{b3f}'), ('\u{b41}', '\u{b44}'), ('\u{b4d}', '\u{b4d}'), + ('\u{b56}', '\u{b57}'), ('\u{b62}', '\u{b63}'), ('\u{b82}', '\u{b82}'), + ('\u{bbe}', '\u{bbe}'), ('\u{bc0}', '\u{bc0}'), ('\u{bcd}', '\u{bcd}'), + ('\u{bd7}', '\u{bd7}'), ('\u{c00}', '\u{c00}'), ('\u{c04}', '\u{c04}'), + ('\u{c3e}', '\u{c40}'), ('\u{c46}', '\u{c48}'), ('\u{c4a}', '\u{c4d}'), + ('\u{c55}', '\u{c56}'), ('\u{c62}', '\u{c63}'), ('\u{c81}', '\u{c81}'), + ('\u{cbc}', '\u{cbc}'), ('\u{cbf}', '\u{cbf}'), ('\u{cc2}', '\u{cc2}'), + ('\u{cc6}', '\u{cc6}'), ('\u{ccc}', '\u{ccd}'), ('\u{cd5}', '\u{cd6}'), + ('\u{ce2}', '\u{ce3}'), ('\u{d00}', '\u{d01}'), ('\u{d3b}', '\u{d3c}'), + ('\u{d3e}', '\u{d3e}'), ('\u{d41}', '\u{d44}'), ('\u{d4d}', '\u{d4d}'), + ('\u{d57}', '\u{d57}'), ('\u{d62}', '\u{d63}'), ('\u{dca}', '\u{dca}'), + ('\u{dcf}', '\u{dcf}'), ('\u{dd2}', '\u{dd4}'), ('\u{dd6}', '\u{dd6}'), + ('\u{ddf}', '\u{ddf}'), ('\u{e31}', '\u{e31}'), ('\u{e34}', '\u{e3a}'), + ('\u{e47}', '\u{e4e}'), ('\u{eb1}', '\u{eb1}'), ('\u{eb4}', '\u{eb9}'), + ('\u{ebb}', '\u{ebc}'), ('\u{ec8}', '\u{ecd}'), ('\u{f18}', '\u{f19}'), + ('\u{f35}', '\u{f35}'), ('\u{f37}', '\u{f37}'), ('\u{f39}', '\u{f39}'), + ('\u{f71}', '\u{f7e}'), ('\u{f80}', '\u{f84}'), ('\u{f86}', '\u{f87}'), + ('\u{f8d}', '\u{f97}'), ('\u{f99}', '\u{fbc}'), ('\u{fc6}', '\u{fc6}'), + ('\u{102d}', '\u{1030}'), ('\u{1032}', '\u{1037}'), + ('\u{1039}', '\u{103a}'), ('\u{103d}', '\u{103e}'), + ('\u{1058}', '\u{1059}'), ('\u{105e}', '\u{1060}'), + ('\u{1071}', '\u{1074}'), ('\u{1082}', '\u{1082}'), + ('\u{1085}', '\u{1086}'), ('\u{108d}', '\u{108d}'), + ('\u{109d}', '\u{109d}'), ('\u{135d}', '\u{135f}'), + ('\u{1712}', '\u{1714}'), ('\u{1732}', '\u{1734}'), + ('\u{1752}', '\u{1753}'), ('\u{1772}', '\u{1773}'), + ('\u{17b4}', '\u{17b5}'), ('\u{17b7}', '\u{17bd}'), + ('\u{17c6}', '\u{17c6}'), ('\u{17c9}', '\u{17d3}'), + ('\u{17dd}', '\u{17dd}'), ('\u{180b}', '\u{180d}'), + ('\u{1885}', '\u{1886}'), ('\u{18a9}', '\u{18a9}'), + ('\u{1920}', '\u{1922}'), ('\u{1927}', '\u{1928}'), + ('\u{1932}', '\u{1932}'), ('\u{1939}', '\u{193b}'), + ('\u{1a17}', '\u{1a18}'), ('\u{1a1b}', '\u{1a1b}'), + ('\u{1a56}', '\u{1a56}'), ('\u{1a58}', '\u{1a5e}'), + ('\u{1a60}', '\u{1a60}'), ('\u{1a62}', '\u{1a62}'), + ('\u{1a65}', '\u{1a6c}'), ('\u{1a73}', '\u{1a7c}'), + ('\u{1a7f}', '\u{1a7f}'), ('\u{1ab0}', '\u{1abe}'), + ('\u{1b00}', '\u{1b03}'), ('\u{1b34}', '\u{1b34}'), + ('\u{1b36}', '\u{1b3a}'), ('\u{1b3c}', '\u{1b3c}'), + ('\u{1b42}', '\u{1b42}'), ('\u{1b6b}', '\u{1b73}'), + ('\u{1b80}', '\u{1b81}'), ('\u{1ba2}', '\u{1ba5}'), + ('\u{1ba8}', '\u{1ba9}'), ('\u{1bab}', '\u{1bad}'), + ('\u{1be6}', '\u{1be6}'), ('\u{1be8}', '\u{1be9}'), + ('\u{1bed}', '\u{1bed}'), ('\u{1bef}', '\u{1bf1}'), + ('\u{1c2c}', '\u{1c33}'), ('\u{1c36}', '\u{1c37}'), + ('\u{1cd0}', '\u{1cd2}'), ('\u{1cd4}', '\u{1ce0}'), + ('\u{1ce2}', '\u{1ce8}'), ('\u{1ced}', '\u{1ced}'), + ('\u{1cf4}', '\u{1cf4}'), ('\u{1cf8}', '\u{1cf9}'), + ('\u{1dc0}', '\u{1df9}'), ('\u{1dfb}', '\u{1dff}'), + ('\u{200c}', '\u{200c}'), ('\u{20d0}', '\u{20f0}'), + ('\u{2cef}', '\u{2cf1}'), ('\u{2d7f}', '\u{2d7f}'), + ('\u{2de0}', '\u{2dff}'), ('\u{302a}', '\u{302f}'), + ('\u{3099}', '\u{309a}'), ('\u{a66f}', '\u{a672}'), + ('\u{a674}', '\u{a67d}'), ('\u{a69e}', '\u{a69f}'), + ('\u{a6f0}', '\u{a6f1}'), ('\u{a802}', '\u{a802}'), + ('\u{a806}', '\u{a806}'), ('\u{a80b}', '\u{a80b}'), + ('\u{a825}', '\u{a826}'), ('\u{a8c4}', '\u{a8c5}'), + ('\u{a8e0}', '\u{a8f1}'), ('\u{a8ff}', '\u{a8ff}'), + ('\u{a926}', '\u{a92d}'), ('\u{a947}', '\u{a951}'), + ('\u{a980}', '\u{a982}'), ('\u{a9b3}', '\u{a9b3}'), + ('\u{a9b6}', '\u{a9b9}'), ('\u{a9bc}', '\u{a9bc}'), + ('\u{a9e5}', '\u{a9e5}'), ('\u{aa29}', '\u{aa2e}'), + ('\u{aa31}', '\u{aa32}'), ('\u{aa35}', '\u{aa36}'), + ('\u{aa43}', '\u{aa43}'), ('\u{aa4c}', '\u{aa4c}'), + ('\u{aa7c}', '\u{aa7c}'), ('\u{aab0}', '\u{aab0}'), + ('\u{aab2}', '\u{aab4}'), ('\u{aab7}', '\u{aab8}'), + ('\u{aabe}', '\u{aabf}'), ('\u{aac1}', '\u{aac1}'), + ('\u{aaec}', '\u{aaed}'), ('\u{aaf6}', '\u{aaf6}'), + ('\u{abe5}', '\u{abe5}'), ('\u{abe8}', '\u{abe8}'), + ('\u{abed}', '\u{abed}'), ('\u{fb1e}', '\u{fb1e}'), + ('\u{fe00}', '\u{fe0f}'), ('\u{fe20}', '\u{fe2f}'), + ('\u{ff9e}', '\u{ff9f}'), ('\u{101fd}', '\u{101fd}'), + ('\u{102e0}', '\u{102e0}'), ('\u{10376}', '\u{1037a}'), + ('\u{10a01}', '\u{10a03}'), ('\u{10a05}', '\u{10a06}'), + ('\u{10a0c}', '\u{10a0f}'), ('\u{10a38}', '\u{10a3a}'), + ('\u{10a3f}', '\u{10a3f}'), ('\u{10ae5}', '\u{10ae6}'), + ('\u{10d24}', '\u{10d27}'), ('\u{10f46}', '\u{10f50}'), + ('\u{11001}', '\u{11001}'), ('\u{11038}', '\u{11046}'), + ('\u{1107f}', '\u{11081}'), ('\u{110b3}', '\u{110b6}'), + ('\u{110b9}', '\u{110ba}'), ('\u{11100}', '\u{11102}'), + ('\u{11127}', '\u{1112b}'), ('\u{1112d}', '\u{11134}'), + ('\u{11173}', '\u{11173}'), ('\u{11180}', '\u{11181}'), + ('\u{111b6}', '\u{111be}'), ('\u{111c9}', '\u{111cc}'), + ('\u{1122f}', '\u{11231}'), ('\u{11234}', '\u{11234}'), + ('\u{11236}', '\u{11237}'), ('\u{1123e}', '\u{1123e}'), + ('\u{112df}', '\u{112df}'), ('\u{112e3}', '\u{112ea}'), + ('\u{11300}', '\u{11301}'), ('\u{1133b}', '\u{1133c}'), + ('\u{1133e}', '\u{1133e}'), ('\u{11340}', '\u{11340}'), + ('\u{11357}', '\u{11357}'), ('\u{11366}', '\u{1136c}'), + ('\u{11370}', '\u{11374}'), ('\u{11438}', '\u{1143f}'), + ('\u{11442}', '\u{11444}'), ('\u{11446}', '\u{11446}'), + ('\u{1145e}', '\u{1145e}'), ('\u{114b0}', '\u{114b0}'), + ('\u{114b3}', '\u{114b8}'), ('\u{114ba}', '\u{114ba}'), + ('\u{114bd}', '\u{114bd}'), ('\u{114bf}', '\u{114c0}'), + ('\u{114c2}', '\u{114c3}'), ('\u{115af}', '\u{115af}'), + ('\u{115b2}', '\u{115b5}'), ('\u{115bc}', '\u{115bd}'), + ('\u{115bf}', '\u{115c0}'), ('\u{115dc}', '\u{115dd}'), + ('\u{11633}', '\u{1163a}'), ('\u{1163d}', '\u{1163d}'), + ('\u{1163f}', '\u{11640}'), ('\u{116ab}', '\u{116ab}'), + ('\u{116ad}', '\u{116ad}'), ('\u{116b0}', '\u{116b5}'), + ('\u{116b7}', '\u{116b7}'), ('\u{1171d}', '\u{1171f}'), + ('\u{11722}', '\u{11725}'), ('\u{11727}', '\u{1172b}'), + ('\u{1182f}', '\u{11837}'), ('\u{11839}', '\u{1183a}'), + ('\u{11a01}', '\u{11a0a}'), ('\u{11a33}', '\u{11a38}'), + ('\u{11a3b}', '\u{11a3e}'), ('\u{11a47}', '\u{11a47}'), + ('\u{11a51}', '\u{11a56}'), ('\u{11a59}', '\u{11a5b}'), + ('\u{11a8a}', '\u{11a96}'), ('\u{11a98}', '\u{11a99}'), + ('\u{11c30}', '\u{11c36}'), ('\u{11c38}', '\u{11c3d}'), + ('\u{11c3f}', '\u{11c3f}'), ('\u{11c92}', '\u{11ca7}'), + ('\u{11caa}', '\u{11cb0}'), ('\u{11cb2}', '\u{11cb3}'), + ('\u{11cb5}', '\u{11cb6}'), ('\u{11d31}', '\u{11d36}'), + ('\u{11d3a}', '\u{11d3a}'), ('\u{11d3c}', '\u{11d3d}'), + ('\u{11d3f}', '\u{11d45}'), ('\u{11d47}', '\u{11d47}'), + ('\u{11d90}', '\u{11d91}'), ('\u{11d95}', '\u{11d95}'), + ('\u{11d97}', '\u{11d97}'), ('\u{11ef3}', '\u{11ef4}'), + ('\u{16af0}', '\u{16af4}'), ('\u{16b30}', '\u{16b36}'), + ('\u{16f8f}', '\u{16f92}'), ('\u{1bc9d}', '\u{1bc9e}'), + ('\u{1d165}', '\u{1d165}'), ('\u{1d167}', '\u{1d169}'), + ('\u{1d16e}', '\u{1d172}'), ('\u{1d17b}', '\u{1d182}'), + ('\u{1d185}', '\u{1d18b}'), ('\u{1d1aa}', '\u{1d1ad}'), + ('\u{1d242}', '\u{1d244}'), ('\u{1da00}', '\u{1da36}'), + ('\u{1da3b}', '\u{1da6c}'), ('\u{1da75}', '\u{1da75}'), + ('\u{1da84}', '\u{1da84}'), ('\u{1da9b}', '\u{1da9f}'), + ('\u{1daa1}', '\u{1daaf}'), ('\u{1e000}', '\u{1e006}'), + ('\u{1e008}', '\u{1e018}'), ('\u{1e01b}', '\u{1e021}'), + ('\u{1e023}', '\u{1e024}'), ('\u{1e026}', '\u{1e02a}'), + ('\u{1e8d0}', '\u{1e8d6}'), ('\u{1e944}', '\u{1e94a}'), ('🏻', '🏿'), + ('\u{e0020}', '\u{e007f}'), ('\u{e0100}', '\u{e01ef}'), +]; + +pub const L: &'static [(char, char)] = &[ + ('ᄀ', 'ᅟ'), ('ꥠ', 'ꥼ'), +]; + +pub const LF: &'static [(char, char)] = &[ + ('\n', '\n'), +]; + +pub const LV: &'static [(char, char)] = &[ + ('가', '가'), ('개', '개'), ('갸', '갸'), ('걔', '걔'), + ('거', '거'), ('게', '게'), ('겨', '겨'), ('계', '계'), + ('고', '고'), ('과', '과'), ('괘', '괘'), ('괴', '괴'), + ('교', '교'), ('구', '구'), ('궈', '궈'), ('궤', '궤'), + ('귀', '귀'), ('규', '규'), ('그', '그'), ('긔', '긔'), + ('기', '기'), ('까', '까'), ('깨', '깨'), ('꺄', '꺄'), + ('꺠', '꺠'), ('꺼', '꺼'), ('께', '께'), ('껴', '껴'), + ('꼐', '꼐'), ('꼬', '꼬'), ('꽈', '꽈'), ('꽤', '꽤'), + ('꾀', '꾀'), ('꾜', '꾜'), ('꾸', '꾸'), ('꿔', '꿔'), + ('꿰', '꿰'), ('뀌', '뀌'), ('뀨', '뀨'), ('끄', '끄'), + ('끠', '끠'), ('끼', '끼'), ('나', '나'), ('내', '내'), + ('냐', '냐'), ('냬', '냬'), ('너', '너'), ('네', '네'), + ('녀', '녀'), ('녜', '녜'), ('노', '노'), ('놔', '놔'), + ('놰', '놰'), ('뇌', '뇌'), ('뇨', '뇨'), ('누', '누'), + ('눠', '눠'), ('눼', '눼'), ('뉘', '뉘'), ('뉴', '뉴'), + ('느', '느'), ('늬', '늬'), ('니', '니'), ('다', '다'), + ('대', '대'), ('댜', '댜'), ('댸', '댸'), ('더', '더'), + ('데', '데'), ('뎌', '뎌'), ('뎨', '뎨'), ('도', '도'), + ('돠', '돠'), ('돼', '돼'), ('되', '되'), ('됴', '됴'), + ('두', '두'), ('둬', '둬'), ('뒈', '뒈'), ('뒤', '뒤'), + ('듀', '듀'), ('드', '드'), ('듸', '듸'), ('디', '디'), + ('따', '따'), ('때', '때'), ('땨', '땨'), ('떄', '떄'), + ('떠', '떠'), ('떼', '떼'), ('뗘', '뗘'), ('뗴', '뗴'), + ('또', '또'), ('똬', '똬'), ('뙈', '뙈'), ('뙤', '뙤'), + ('뚀', '뚀'), ('뚜', '뚜'), ('뚸', '뚸'), ('뛔', '뛔'), + ('뛰', '뛰'), ('뜌', '뜌'), ('뜨', '뜨'), ('띄', '띄'), + ('띠', '띠'), ('라', '라'), ('래', '래'), ('랴', '랴'), + ('럐', '럐'), ('러', '러'), ('레', '레'), ('려', '려'), + ('례', '례'), ('로', '로'), ('롸', '롸'), ('뢔', '뢔'), + ('뢰', '뢰'), ('료', '료'), ('루', '루'), ('뤄', '뤄'), + ('뤠', '뤠'), ('뤼', '뤼'), ('류', '류'), ('르', '르'), + ('릐', '릐'), ('리', '리'), ('마', '마'), ('매', '매'), + ('먀', '먀'), ('먜', '먜'), ('머', '머'), ('메', '메'), + ('며', '며'), ('몌', '몌'), ('모', '모'), ('뫄', '뫄'), + ('뫠', '뫠'), ('뫼', '뫼'), ('묘', '묘'), ('무', '무'), + ('뭐', '뭐'), ('뭬', '뭬'), ('뮈', '뮈'), ('뮤', '뮤'), + ('므', '므'), ('믜', '믜'), ('미', '미'), ('바', '바'), + ('배', '배'), ('뱌', '뱌'), ('뱨', '뱨'), ('버', '버'), + ('베', '베'), ('벼', '벼'), ('볘', '볘'), ('보', '보'), + ('봐', '봐'), ('봬', '봬'), ('뵈', '뵈'), ('뵤', '뵤'), + ('부', '부'), ('붜', '붜'), ('붸', '붸'), ('뷔', '뷔'), + ('뷰', '뷰'), ('브', '브'), ('븨', '븨'), ('비', '비'), + ('빠', '빠'), ('빼', '빼'), ('뺘', '뺘'), ('뺴', '뺴'), + ('뻐', '뻐'), ('뻬', '뻬'), ('뼈', '뼈'), ('뼤', '뼤'), + ('뽀', '뽀'), ('뽜', '뽜'), ('뽸', '뽸'), ('뾔', '뾔'), + ('뾰', '뾰'), ('뿌', '뿌'), ('뿨', '뿨'), ('쀄', '쀄'), + ('쀠', '쀠'), ('쀼', '쀼'), ('쁘', '쁘'), ('쁴', '쁴'), + ('삐', '삐'), ('사', '사'), ('새', '새'), ('샤', '샤'), + ('섀', '섀'), ('서', '서'), ('세', '세'), ('셔', '셔'), + ('셰', '셰'), ('소', '소'), ('솨', '솨'), ('쇄', '쇄'), + ('쇠', '쇠'), ('쇼', '쇼'), ('수', '수'), ('숴', '숴'), + ('쉐', '쉐'), ('쉬', '쉬'), ('슈', '슈'), ('스', '스'), + ('싀', '싀'), ('시', '시'), ('싸', '싸'), ('쌔', '쌔'), + ('쌰', '쌰'), ('썌', '썌'), ('써', '써'), ('쎄', '쎄'), + ('쎠', '쎠'), ('쎼', '쎼'), ('쏘', '쏘'), ('쏴', '쏴'), + ('쐐', '쐐'), ('쐬', '쐬'), ('쑈', '쑈'), ('쑤', '쑤'), + ('쒀', '쒀'), ('쒜', '쒜'), ('쒸', '쒸'), ('쓔', '쓔'), + ('쓰', '쓰'), ('씌', '씌'), ('씨', '씨'), ('아', '아'), + ('애', '애'), ('야', '야'), ('얘', '얘'), ('어', '어'), + ('에', '에'), ('여', '여'), ('예', '예'), ('오', '오'), + ('와', '와'), ('왜', '왜'), ('외', '외'), ('요', '요'), + ('우', '우'), ('워', '워'), ('웨', '웨'), ('위', '위'), + ('유', '유'), ('으', '으'), ('의', '의'), ('이', '이'), + ('자', '자'), ('재', '재'), ('쟈', '쟈'), ('쟤', '쟤'), + ('저', '저'), ('제', '제'), ('져', '져'), ('졔', '졔'), + ('조', '조'), ('좌', '좌'), ('좨', '좨'), ('죄', '죄'), + ('죠', '죠'), ('주', '주'), ('줘', '줘'), ('줴', '줴'), + ('쥐', '쥐'), ('쥬', '쥬'), ('즈', '즈'), ('즤', '즤'), + ('지', '지'), ('짜', '짜'), ('째', '째'), ('쨔', '쨔'), + ('쨰', '쨰'), ('쩌', '쩌'), ('쩨', '쩨'), ('쪄', '쪄'), + ('쪠', '쪠'), ('쪼', '쪼'), ('쫘', '쫘'), ('쫴', '쫴'), + ('쬐', '쬐'), ('쬬', '쬬'), ('쭈', '쭈'), ('쭤', '쭤'), + ('쮀', '쮀'), ('쮜', '쮜'), ('쮸', '쮸'), ('쯔', '쯔'), + ('쯰', '쯰'), ('찌', '찌'), ('차', '차'), ('채', '채'), + ('챠', '챠'), ('챼', '챼'), ('처', '처'), ('체', '체'), + ('쳐', '쳐'), ('쳬', '쳬'), ('초', '초'), ('촤', '촤'), + ('쵀', '쵀'), ('최', '최'), ('쵸', '쵸'), ('추', '추'), + ('춰', '춰'), ('췌', '췌'), ('취', '취'), ('츄', '츄'), + ('츠', '츠'), ('츼', '츼'), ('치', '치'), ('카', '카'), + ('캐', '캐'), ('캬', '캬'), ('컈', '컈'), ('커', '커'), + ('케', '케'), ('켜', '켜'), ('켸', '켸'), ('코', '코'), + ('콰', '콰'), ('쾌', '쾌'), ('쾨', '쾨'), ('쿄', '쿄'), + ('쿠', '쿠'), ('쿼', '쿼'), ('퀘', '퀘'), ('퀴', '퀴'), + ('큐', '큐'), ('크', '크'), ('킈', '킈'), ('키', '키'), + ('타', '타'), ('태', '태'), ('탸', '탸'), ('턔', '턔'), + ('터', '터'), ('테', '테'), ('텨', '텨'), ('톄', '톄'), + ('토', '토'), ('톼', '톼'), ('퇘', '퇘'), ('퇴', '퇴'), + ('툐', '툐'), ('투', '투'), ('퉈', '퉈'), ('퉤', '퉤'), + ('튀', '튀'), ('튜', '튜'), ('트', '트'), ('틔', '틔'), + ('티', '티'), ('파', '파'), ('패', '패'), ('퍄', '퍄'), + ('퍠', '퍠'), ('퍼', '퍼'), ('페', '페'), ('펴', '펴'), + ('폐', '폐'), ('포', '포'), ('퐈', '퐈'), ('퐤', '퐤'), + ('푀', '푀'), ('표', '표'), ('푸', '푸'), ('풔', '풔'), + ('풰', '풰'), ('퓌', '퓌'), ('퓨', '퓨'), ('프', '프'), + ('픠', '픠'), ('피', '피'), ('하', '하'), ('해', '해'), + ('햐', '햐'), ('햬', '햬'), ('허', '허'), ('헤', '헤'), + ('혀', '혀'), ('혜', '혜'), ('호', '호'), ('화', '화'), + ('홰', '홰'), ('회', '회'), ('효', '효'), ('후', '후'), + ('훠', '훠'), ('훼', '훼'), ('휘', '휘'), ('휴', '휴'), + ('흐', '흐'), ('희', '희'), ('히', '히'), +]; + +pub const LVT: &'static [(char, char)] = &[ + ('각', '갛'), ('객', '갷'), ('갹', '걓'), ('걕', '걯'), + ('걱', '겋'), ('겍', '겧'), ('격', '곃'), ('곅', '곟'), + ('곡', '곻'), ('곽', '괗'), ('괙', '괳'), ('괵', '굏'), + ('굑', '굫'), ('국', '궇'), ('궉', '궣'), ('궥', '궿'), + ('귁', '귛'), ('귝', '귷'), ('극', '긓'), ('긕', '긯'), + ('긱', '깋'), ('깍', '깧'), ('깩', '꺃'), ('꺅', '꺟'), + ('꺡', '꺻'), ('꺽', '껗'), ('껙', '껳'), ('껵', '꼏'), + ('꼑', '꼫'), ('꼭', '꽇'), ('꽉', '꽣'), ('꽥', '꽿'), + ('꾁', '꾛'), ('꾝', '꾷'), ('꾹', '꿓'), ('꿕', '꿯'), + ('꿱', '뀋'), ('뀍', '뀧'), ('뀩', '끃'), ('끅', '끟'), + ('끡', '끻'), ('끽', '낗'), ('낙', '낳'), ('낵', '냏'), + ('냑', '냫'), ('냭', '넇'), ('넉', '넣'), ('넥', '넿'), + ('녁', '녛'), ('녝', '녷'), ('녹', '놓'), ('놕', '놯'), + ('놱', '뇋'), ('뇍', '뇧'), ('뇩', '눃'), ('눅', '눟'), + ('눡', '눻'), ('눽', '뉗'), ('뉙', '뉳'), ('뉵', '늏'), + ('늑', '늫'), ('늭', '닇'), ('닉', '닣'), ('닥', '닿'), + ('댁', '댛'), ('댝', '댷'), ('댹', '덓'), ('덕', '덯'), + ('덱', '뎋'), ('뎍', '뎧'), ('뎩', '돃'), ('독', '돟'), + ('돡', '돻'), ('돽', '됗'), ('됙', '됳'), ('됵', '둏'), + ('둑', '둫'), ('둭', '뒇'), ('뒉', '뒣'), ('뒥', '뒿'), + ('듁', '듛'), ('득', '듷'), ('듹', '딓'), ('딕', '딯'), + ('딱', '땋'), ('땍', '땧'), ('땩', '떃'), ('떅', '떟'), + ('떡', '떻'), ('떽', '뗗'), ('뗙', '뗳'), ('뗵', '똏'), + ('똑', '똫'), ('똭', '뙇'), ('뙉', '뙣'), ('뙥', '뙿'), + ('뚁', '뚛'), ('뚝', '뚷'), ('뚹', '뛓'), ('뛕', '뛯'), + ('뛱', '뜋'), ('뜍', '뜧'), ('뜩', '띃'), ('띅', '띟'), + ('띡', '띻'), ('락', '랗'), ('랙', '랳'), ('략', '럏'), + ('럑', '럫'), ('럭', '렇'), ('렉', '렣'), ('력', '렿'), + ('롁', '롛'), ('록', '롷'), ('롹', '뢓'), ('뢕', '뢯'), + ('뢱', '룋'), ('룍', '룧'), ('룩', '뤃'), ('뤅', '뤟'), + ('뤡', '뤻'), ('뤽', '륗'), ('륙', '륳'), ('륵', '릏'), + ('릑', '릫'), ('릭', '맇'), ('막', '맣'), ('맥', '맿'), + ('먁', '먛'), ('먝', '먷'), ('먹', '멓'), ('멕', '멯'), + ('멱', '몋'), ('몍', '몧'), ('목', '뫃'), ('뫅', '뫟'), + ('뫡', '뫻'), ('뫽', '묗'), ('묙', '묳'), ('묵', '뭏'), + ('뭑', '뭫'), ('뭭', '뮇'), ('뮉', '뮣'), ('뮥', '뮿'), + ('믁', '믛'), ('믝', '믷'), ('믹', '밓'), ('박', '밯'), + ('백', '뱋'), ('뱍', '뱧'), ('뱩', '벃'), ('벅', '벟'), + ('벡', '벻'), ('벽', '볗'), ('볙', '볳'), ('복', '봏'), + ('봑', '봫'), ('봭', '뵇'), ('뵉', '뵣'), ('뵥', '뵿'), + ('북', '붛'), ('붝', '붷'), ('붹', '뷓'), ('뷕', '뷯'), + ('뷱', '븋'), ('븍', '븧'), ('븩', '빃'), ('빅', '빟'), + ('빡', '빻'), ('빽', '뺗'), ('뺙', '뺳'), ('뺵', '뻏'), + ('뻑', '뻫'), ('뻭', '뼇'), ('뼉', '뼣'), ('뼥', '뼿'), + ('뽁', '뽛'), ('뽝', '뽷'), ('뽹', '뾓'), ('뾕', '뾯'), + ('뾱', '뿋'), ('뿍', '뿧'), ('뿩', '쀃'), ('쀅', '쀟'), + ('쀡', '쀻'), ('쀽', '쁗'), ('쁙', '쁳'), ('쁵', '삏'), + ('삑', '삫'), ('삭', '샇'), ('색', '샣'), ('샥', '샿'), + ('섁', '섛'), ('석', '섷'), ('섹', '셓'), ('셕', '셯'), + ('셱', '솋'), ('속', '솧'), ('솩', '쇃'), ('쇅', '쇟'), + ('쇡', '쇻'), ('쇽', '숗'), ('숙', '숳'), ('숵', '쉏'), + ('쉑', '쉫'), ('쉭', '슇'), ('슉', '슣'), ('슥', '슿'), + ('싁', '싛'), ('식', '싷'), ('싹', '쌓'), ('쌕', '쌯'), + ('쌱', '썋'), ('썍', '썧'), ('썩', '쎃'), ('쎅', '쎟'), + ('쎡', '쎻'), ('쎽', '쏗'), ('쏙', '쏳'), ('쏵', '쐏'), + ('쐑', '쐫'), ('쐭', '쑇'), ('쑉', '쑣'), ('쑥', '쑿'), + ('쒁', '쒛'), ('쒝', '쒷'), ('쒹', '쓓'), ('쓕', '쓯'), + ('쓱', '씋'), ('씍', '씧'), ('씩', '앃'), ('악', '앟'), + ('액', '앻'), ('약', '얗'), ('얙', '얳'), ('억', '엏'), + ('엑', '엫'), ('역', '옇'), ('옉', '옣'), ('옥', '옿'), + ('왁', '왛'), ('왝', '왷'), ('왹', '욓'), ('욕', '욯'), + ('욱', '웋'), ('웍', '웧'), ('웩', '윃'), ('윅', '윟'), + ('육', '윻'), ('윽', '읗'), ('읙', '읳'), ('익', '잏'), + ('작', '잫'), ('잭', '쟇'), ('쟉', '쟣'), ('쟥', '쟿'), + ('적', '젛'), ('젝', '젷'), ('젹', '졓'), ('졕', '졯'), + ('족', '좋'), ('좍', '좧'), ('좩', '죃'), ('죅', '죟'), + ('죡', '죻'), ('죽', '줗'), ('줙', '줳'), ('줵', '쥏'), + ('쥑', '쥫'), ('쥭', '즇'), ('즉', '즣'), ('즥', '즿'), + ('직', '짛'), ('짝', '짷'), ('짹', '쨓'), ('쨕', '쨯'), + ('쨱', '쩋'), ('쩍', '쩧'), ('쩩', '쪃'), ('쪅', '쪟'), + ('쪡', '쪻'), ('쪽', '쫗'), ('쫙', '쫳'), ('쫵', '쬏'), + ('쬑', '쬫'), ('쬭', '쭇'), ('쭉', '쭣'), ('쭥', '쭿'), + ('쮁', '쮛'), ('쮝', '쮷'), ('쮹', '쯓'), ('쯕', '쯯'), + ('쯱', '찋'), ('찍', '찧'), ('착', '챃'), ('책', '챟'), + ('챡', '챻'), ('챽', '첗'), ('척', '첳'), ('첵', '쳏'), + ('쳑', '쳫'), ('쳭', '촇'), ('촉', '촣'), ('촥', '촿'), + ('쵁', '쵛'), ('쵝', '쵷'), ('쵹', '춓'), ('축', '춯'), + ('춱', '췋'), ('췍', '췧'), ('췩', '츃'), ('츅', '츟'), + ('측', '츻'), ('츽', '칗'), ('칙', '칳'), ('칵', '캏'), + ('캑', '캫'), ('캭', '컇'), ('컉', '컣'), ('컥', '컿'), + ('켁', '켛'), ('켝', '켷'), ('켹', '콓'), ('콕', '콯'), + ('콱', '쾋'), ('쾍', '쾧'), ('쾩', '쿃'), ('쿅', '쿟'), + ('쿡', '쿻'), ('쿽', '퀗'), ('퀙', '퀳'), ('퀵', '큏'), + ('큑', '큫'), ('큭', '킇'), ('킉', '킣'), ('킥', '킿'), + ('탁', '탛'), ('택', '탷'), ('탹', '턓'), ('턕', '턯'), + ('턱', '텋'), ('텍', '텧'), ('텩', '톃'), ('톅', '톟'), + ('톡', '톻'), ('톽', '퇗'), ('퇙', '퇳'), ('퇵', '툏'), + ('툑', '툫'), ('툭', '퉇'), ('퉉', '퉣'), ('퉥', '퉿'), + ('튁', '튛'), ('튝', '튷'), ('특', '틓'), ('틕', '틯'), + ('틱', '팋'), ('팍', '팧'), ('팩', '퍃'), ('퍅', '퍟'), + ('퍡', '퍻'), ('퍽', '펗'), ('펙', '펳'), ('펵', '폏'), + ('폑', '폫'), ('폭', '퐇'), ('퐉', '퐣'), ('퐥', '퐿'), + ('푁', '푛'), ('푝', '푷'), ('푹', '풓'), ('풕', '풯'), + ('풱', '퓋'), ('퓍', '퓧'), ('퓩', '픃'), ('픅', '픟'), + ('픡', '픻'), ('픽', '핗'), ('학', '핳'), ('핵', '햏'), + ('햑', '햫'), ('햭', '헇'), ('헉', '헣'), ('헥', '헿'), + ('혁', '혛'), ('혝', '혷'), ('혹', '홓'), ('확', '홯'), + ('홱', '횋'), ('획', '횧'), ('횩', '훃'), ('훅', '훟'), + ('훡', '훻'), ('훽', '휗'), ('휙', '휳'), ('휵', '흏'), + ('흑', '흫'), ('흭', '힇'), ('힉', '힣'), +]; + +pub const PREPEND: &'static [(char, char)] = &[ + ('\u{600}', '\u{605}'), ('\u{6dd}', '\u{6dd}'), ('\u{70f}', '\u{70f}'), + ('\u{8e2}', '\u{8e2}'), ('ൎ', 'ൎ'), ('\u{110bd}', '\u{110bd}'), + ('\u{110cd}', '\u{110cd}'), ('𑇂', '𑇃'), ('𑨺', '𑨺'), + ('𑪆', '𑪉'), ('𑵆', '𑵆'), +]; + +pub const REGIONAL_INDICATOR: &'static [(char, char)] = &[ + ('🇦', '🇿'), +]; + +pub const SPACINGMARK: &'static [(char, char)] = &[ + ('ः', 'ः'), ('ऻ', 'ऻ'), ('ा', 'ी'), ('ॉ', 'ौ'), + ('ॎ', 'ॏ'), ('ং', 'ঃ'), ('ি', 'ী'), ('ে', 'ৈ'), + ('ো', 'ৌ'), ('ਃ', 'ਃ'), ('ਾ', 'ੀ'), ('ઃ', 'ઃ'), + ('ા', 'ી'), ('ૉ', 'ૉ'), ('ો', 'ૌ'), ('ଂ', 'ଃ'), + ('ୀ', 'ୀ'), ('େ', 'ୈ'), ('ୋ', 'ୌ'), ('ி', 'ி'), + ('ு', 'ூ'), ('ெ', 'ை'), ('ொ', 'ௌ'), ('ఁ', 'ః'), + ('ు', 'ౄ'), ('ಂ', 'ಃ'), ('ಾ', 'ಾ'), ('ೀ', 'ು'), + ('ೃ', 'ೄ'), ('ೇ', 'ೈ'), ('ೊ', 'ೋ'), ('ം', 'ഃ'), + ('ി', 'ീ'), ('െ', 'ൈ'), ('ൊ', 'ൌ'), ('ං', 'ඃ'), + ('ැ', 'ෑ'), ('ෘ', 'ෞ'), ('ෲ', 'ෳ'), ('ำ', 'ำ'), + ('ຳ', 'ຳ'), ('༾', '༿'), ('ཿ', 'ཿ'), ('ေ', 'ေ'), + ('ျ', 'ြ'), ('ၖ', 'ၗ'), ('ႄ', 'ႄ'), ('ា', 'ា'), + ('ើ', 'ៅ'), ('ះ', 'ៈ'), ('ᤣ', 'ᤦ'), ('ᤩ', 'ᤫ'), + ('ᤰ', 'ᤱ'), ('ᤳ', 'ᤸ'), ('ᨙ', 'ᨚ'), ('ᩕ', 'ᩕ'), + ('ᩗ', 'ᩗ'), ('ᩭ', 'ᩲ'), ('ᬄ', 'ᬄ'), ('ᬵ', 'ᬵ'), + ('ᬻ', 'ᬻ'), ('ᬽ', 'ᭁ'), ('ᭃ', '᭄'), ('ᮂ', 'ᮂ'), + ('ᮡ', 'ᮡ'), ('ᮦ', 'ᮧ'), ('᮪', '᮪'), ('ᯧ', 'ᯧ'), + ('ᯪ', 'ᯬ'), ('ᯮ', 'ᯮ'), ('᯲', '᯳'), ('ᰤ', 'ᰫ'), + ('ᰴ', 'ᰵ'), ('᳡', '᳡'), ('ᳲ', 'ᳳ'), ('᳷', '᳷'), + ('ꠣ', 'ꠤ'), ('ꠧ', 'ꠧ'), ('ꢀ', 'ꢁ'), ('ꢴ', 'ꣃ'), + ('ꥒ', '꥓'), ('ꦃ', 'ꦃ'), ('ꦴ', 'ꦵ'), ('ꦺ', 'ꦻ'), + ('ꦽ', '꧀'), ('ꨯ', 'ꨰ'), ('ꨳ', 'ꨴ'), ('ꩍ', 'ꩍ'), + ('ꫫ', 'ꫫ'), ('ꫮ', 'ꫯ'), ('ꫵ', 'ꫵ'), ('ꯣ', 'ꯤ'), + ('ꯦ', 'ꯧ'), ('ꯩ', 'ꯪ'), ('꯬', '꯬'), ('𑀀', '𑀀'), + ('𑀂', '𑀂'), ('𑂂', '𑂂'), ('𑂰', '𑂲'), ('𑂷', '𑂸'), + ('𑄬', '𑄬'), ('𑅅', '𑅆'), ('𑆂', '𑆂'), ('𑆳', '𑆵'), + ('𑆿', '𑇀'), ('𑈬', '𑈮'), ('𑈲', '𑈳'), ('𑈵', '𑈵'), + ('𑋠', '𑋢'), ('𑌂', '𑌃'), ('𑌿', '𑌿'), ('𑍁', '𑍄'), + ('𑍇', '𑍈'), ('𑍋', '𑍍'), ('𑍢', '𑍣'), ('𑐵', '𑐷'), + ('𑑀', '𑑁'), ('𑑅', '𑑅'), ('𑒱', '𑒲'), ('𑒹', '𑒹'), + ('𑒻', '𑒼'), ('𑒾', '𑒾'), ('𑓁', '𑓁'), ('𑖰', '𑖱'), + ('𑖸', '𑖻'), ('𑖾', '𑖾'), ('𑘰', '𑘲'), ('𑘻', '𑘼'), + ('𑘾', '𑘾'), ('𑚬', '𑚬'), ('𑚮', '𑚯'), ('𑚶', '𑚶'), + ('𑜠', '𑜡'), ('𑜦', '𑜦'), ('𑠬', '𑠮'), ('𑠸', '𑠸'), + ('𑨹', '𑨹'), ('𑩗', '𑩘'), ('𑪗', '𑪗'), ('𑰯', '𑰯'), + ('𑰾', '𑰾'), ('𑲩', '𑲩'), ('𑲱', '𑲱'), ('𑲴', '𑲴'), + ('𑶊', '𑶎'), ('𑶓', '𑶔'), ('𑶖', '𑶖'), ('𑻵', '𑻶'), + ('𖽑', '𖽾'), ('𝅦', '𝅦'), ('𝅭', '𝅭'), +]; + +pub const T: &'static [(char, char)] = &[ + ('ᆨ', 'ᇿ'), ('ퟋ', 'ퟻ'), +]; + +pub const V: &'static [(char, char)] = &[ + ('ᅠ', 'ᆧ'), ('ힰ', 'ퟆ'), +]; + +pub const ZWJ: &'static [(char, char)] = &[ + ('\u{200d}', '\u{200d}'), +]; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/mod.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,9 +1,12 @@ pub mod age; pub mod case_folding_simple; pub mod general_category; +pub mod grapheme_cluster_break; pub mod perl_word; pub mod property_bool; pub mod property_names; pub mod property_values; pub mod script_extension; pub mod script; +pub mod sentence_break; +pub mod word_break; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/property_bool.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/property_bool.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/property_bool.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/property_bool.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,6 +1,6 @@ // DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY: // -// ucd-generate property-bool tmp/ucd-11.0.0/ --chars +// ucd-generate property-bool /home/andrew/tmp/ucd-11.0.0 --chars // // ucd-generate is available on crates.io. @@ -13,11 +13,14 @@ ("Changes_When_Titlecased", CHANGES_WHEN_TITLECASED), ("Changes_When_Uppercased", CHANGES_WHEN_UPPERCASED), ("Dash", DASH), ("Default_Ignorable_Code_Point", DEFAULT_IGNORABLE_CODE_POINT), - ("Deprecated", DEPRECATED), ("Diacritic", DIACRITIC), - ("Extender", EXTENDER), ("Grapheme_Base", GRAPHEME_BASE), - ("Grapheme_Extend", GRAPHEME_EXTEND), ("Grapheme_Link", GRAPHEME_LINK), - ("Hex_Digit", HEX_DIGIT), ("Hyphen", HYPHEN), - ("IDS_Binary_Operator", IDS_BINARY_OPERATOR), + ("Deprecated", DEPRECATED), ("Diacritic", DIACRITIC), ("Emoji", EMOJI), + ("Emoji_Component", EMOJI_COMPONENT), ("Emoji_Modifier", EMOJI_MODIFIER), + ("Emoji_Modifier_Base", EMOJI_MODIFIER_BASE), + ("Emoji_Presentation", EMOJI_PRESENTATION), + ("Extended_Pictographic", EXTENDED_PICTOGRAPHIC), ("Extender", EXTENDER), + ("Grapheme_Base", GRAPHEME_BASE), ("Grapheme_Extend", GRAPHEME_EXTEND), + ("Grapheme_Link", GRAPHEME_LINK), ("Hex_Digit", HEX_DIGIT), + ("Hyphen", HYPHEN), ("IDS_Binary_Operator", IDS_BINARY_OPERATOR), ("IDS_Trinary_Operator", IDS_TRINARY_OPERATOR), ("ID_Continue", ID_CONTINUE), ("ID_Start", ID_START), ("Ideographic", IDEOGRAPHIC), ("Join_Control", JOIN_CONTROL), @@ -49,73 +52,77 @@ pub const ALPHABETIC: &'static [(char, char)] = &[ ('A', 'Z'), ('a', 'z'), ('ª', 'ª'), ('µ', 'µ'), ('º', 'º'), ('À', 'Ö'), ('Ø', 'ö'), ('ø', 'ˁ'), ('ˆ', 'ˑ'), ('ˠ', 'ˤ'), - ('ˬ', 'ˬ'), ('ˮ', 'ˮ'), ('ͅ', 'ͅ'), ('Ͱ', 'ʹ'), ('Ͷ', 'ͷ'), - ('ͺ', 'ͽ'), ('Ϳ', 'Ϳ'), ('Ά', 'Ά'), ('Έ', 'Ί'), ('Ό', 'Ό'), - ('Ύ', 'Ρ'), ('Σ', 'ϵ'), ('Ϸ', 'ҁ'), ('Ҋ', 'ԯ'), ('Ա', 'Ֆ'), - ('ՙ', 'ՙ'), ('\u{560}', '\u{588}'), ('ְ', 'ֽ'), ('ֿ', 'ֿ'), - ('ׁ', 'ׂ'), ('ׄ', 'ׅ'), ('ׇ', 'ׇ'), ('א', 'ת'), ('\u{5ef}', 'ײ'), - ('ؐ', 'ؚ'), ('ؠ', 'ٗ'), ('ٙ', 'ٟ'), ('ٮ', 'ۓ'), ('ە', 'ۜ'), - ('ۡ', 'ۨ'), ('ۭ', 'ۯ'), ('ۺ', 'ۼ'), ('ۿ', 'ۿ'), ('ܐ', 'ܿ'), - ('ݍ', 'ޱ'), ('ߊ', 'ߪ'), ('ߴ', 'ߵ'), ('ߺ', 'ߺ'), ('ࠀ', 'ࠗ'), - ('ࠚ', 'ࠬ'), ('ࡀ', 'ࡘ'), ('ࡠ', 'ࡪ'), ('ࢠ', 'ࢴ'), - ('ࢶ', 'ࢽ'), ('ࣔ', 'ࣟ'), ('ࣣ', 'ࣩ'), ('ࣰ', 'ऻ'), - ('ऽ', 'ौ'), ('ॎ', 'ॐ'), ('ॕ', 'ॣ'), ('ॱ', 'ঃ'), - ('অ', 'ঌ'), ('এ', 'ঐ'), ('ও', 'ন'), ('প', 'র'), - ('ল', 'ল'), ('শ', 'হ'), ('ঽ', 'ৄ'), ('ে', 'ৈ'), - ('ো', 'ৌ'), ('ৎ', 'ৎ'), ('ৗ', 'ৗ'), ('ড়', 'ঢ়'), - ('য়', 'ৣ'), ('ৰ', 'ৱ'), ('ৼ', 'ৼ'), ('ਁ', 'ਃ'), - ('ਅ', 'ਊ'), ('ਏ', 'ਐ'), ('ਓ', 'ਨ'), ('ਪ', 'ਰ'), - ('ਲ', 'ਲ਼'), ('ਵ', 'ਸ਼'), ('ਸ', 'ਹ'), ('ਾ', 'ੂ'), - ('ੇ', 'ੈ'), ('ੋ', 'ੌ'), ('ੑ', 'ੑ'), ('ਖ਼', 'ੜ'), - ('ਫ਼', 'ਫ਼'), ('ੰ', 'ੵ'), ('ઁ', 'ઃ'), ('અ', 'ઍ'), + ('ˬ', 'ˬ'), ('ˮ', 'ˮ'), ('\u{345}', '\u{345}'), ('Ͱ', 'ʹ'), + ('Ͷ', 'ͷ'), ('ͺ', 'ͽ'), ('Ϳ', 'Ϳ'), ('Ά', 'Ά'), ('Έ', 'Ί'), + ('Ό', 'Ό'), ('Ύ', 'Ρ'), ('Σ', 'ϵ'), ('Ϸ', 'ҁ'), ('Ҋ', 'ԯ'), + ('Ա', 'Ֆ'), ('ՙ', 'ՙ'), ('ՠ', 'ֈ'), ('\u{5b0}', '\u{5bd}'), + ('\u{5bf}', '\u{5bf}'), ('\u{5c1}', '\u{5c2}'), ('\u{5c4}', '\u{5c5}'), + ('\u{5c7}', '\u{5c7}'), ('א', 'ת'), ('ׯ', 'ײ'), ('\u{610}', '\u{61a}'), + ('ؠ', '\u{657}'), ('\u{659}', '\u{65f}'), ('ٮ', 'ۓ'), ('ە', '\u{6dc}'), + ('\u{6e1}', '\u{6e8}'), ('\u{6ed}', 'ۯ'), ('ۺ', 'ۼ'), ('ۿ', 'ۿ'), + ('ܐ', '\u{73f}'), ('ݍ', 'ޱ'), ('ߊ', 'ߪ'), ('ߴ', 'ߵ'), ('ߺ', 'ߺ'), + ('ࠀ', '\u{817}'), ('ࠚ', '\u{82c}'), ('ࡀ', 'ࡘ'), ('ࡠ', 'ࡪ'), + ('ࢠ', 'ࢴ'), ('ࢶ', 'ࢽ'), ('\u{8d4}', '\u{8df}'), + ('\u{8e3}', '\u{8e9}'), ('\u{8f0}', 'ऻ'), ('ऽ', 'ौ'), ('ॎ', 'ॐ'), + ('\u{955}', '\u{963}'), ('ॱ', 'ঃ'), ('অ', 'ঌ'), ('এ', 'ঐ'), + ('ও', 'ন'), ('প', 'র'), ('ল', 'ল'), ('শ', 'হ'), + ('ঽ', '\u{9c4}'), ('ে', 'ৈ'), ('ো', 'ৌ'), ('ৎ', 'ৎ'), + ('\u{9d7}', '\u{9d7}'), ('ড়', 'ঢ়'), ('য়', '\u{9e3}'), ('ৰ', 'ৱ'), + ('ৼ', 'ৼ'), ('\u{a01}', 'ਃ'), ('ਅ', 'ਊ'), ('ਏ', 'ਐ'), + ('ਓ', 'ਨ'), ('ਪ', 'ਰ'), ('ਲ', 'ਲ਼'), ('ਵ', 'ਸ਼'), + ('ਸ', 'ਹ'), ('ਾ', '\u{a42}'), ('\u{a47}', '\u{a48}'), + ('\u{a4b}', '\u{a4c}'), ('\u{a51}', '\u{a51}'), ('ਖ਼', 'ੜ'), + ('ਫ਼', 'ਫ਼'), ('\u{a70}', '\u{a75}'), ('\u{a81}', 'ઃ'), ('અ', 'ઍ'), ('એ', 'ઑ'), ('ઓ', 'ન'), ('પ', 'ર'), ('લ', 'ળ'), - ('વ', 'હ'), ('ઽ', 'ૅ'), ('ે', 'ૉ'), ('ો', 'ૌ'), - ('ૐ', 'ૐ'), ('ૠ', 'ૣ'), ('ૹ', 'ૼ'), ('ଁ', 'ଃ'), + ('વ', 'હ'), ('ઽ', '\u{ac5}'), ('\u{ac7}', 'ૉ'), ('ો', 'ૌ'), + ('ૐ', 'ૐ'), ('ૠ', '\u{ae3}'), ('ૹ', '\u{afc}'), ('\u{b01}', 'ଃ'), ('ଅ', 'ଌ'), ('ଏ', 'ଐ'), ('ଓ', 'ନ'), ('ପ', 'ର'), - ('ଲ', 'ଳ'), ('ଵ', 'ହ'), ('ଽ', 'ୄ'), ('େ', 'ୈ'), - ('ୋ', 'ୌ'), ('ୖ', 'ୗ'), ('ଡ଼', 'ଢ଼'), ('ୟ', 'ୣ'), - ('ୱ', 'ୱ'), ('ஂ', 'ஃ'), ('அ', 'ஊ'), ('எ', 'ஐ'), + ('ଲ', 'ଳ'), ('ଵ', 'ହ'), ('ଽ', '\u{b44}'), ('େ', 'ୈ'), + ('ୋ', 'ୌ'), ('\u{b56}', '\u{b57}'), ('ଡ଼', 'ଢ଼'), ('ୟ', '\u{b63}'), + ('ୱ', 'ୱ'), ('\u{b82}', 'ஃ'), ('அ', 'ஊ'), ('எ', 'ஐ'), ('ஒ', 'க'), ('ங', 'ச'), ('ஜ', 'ஜ'), ('ஞ', 'ட'), - ('ண', 'த'), ('ந', 'ப'), ('ம', 'ஹ'), ('ா', 'ூ'), - ('ெ', 'ை'), ('ொ', 'ௌ'), ('ௐ', 'ௐ'), ('ௗ', 'ௗ'), - ('ఀ', 'ః'), ('అ', 'ఌ'), ('ఎ', 'ఐ'), ('ఒ', 'న'), - ('ప', 'హ'), ('ఽ', 'ౄ'), ('ె', 'ై'), ('ొ', 'ౌ'), - ('ౕ', 'ౖ'), ('ౘ', 'ౚ'), ('ౠ', 'ౣ'), ('ಀ', 'ಃ'), - ('ಅ', 'ಌ'), ('ಎ', 'ಐ'), ('ಒ', 'ನ'), ('ಪ', 'ಳ'), - ('ವ', 'ಹ'), ('ಽ', 'ೄ'), ('ೆ', 'ೈ'), ('ೊ', 'ೌ'), - ('ೕ', 'ೖ'), ('ೞ', 'ೞ'), ('ೠ', 'ೣ'), ('ೱ', 'ೲ'), - ('ഀ', 'ഃ'), ('അ', 'ഌ'), ('എ', 'ഐ'), ('ഒ', 'ഺ'), - ('ഽ', 'ൄ'), ('െ', 'ൈ'), ('ൊ', 'ൌ'), ('ൎ', 'ൎ'), - ('ൔ', 'ൗ'), ('ൟ', 'ൣ'), ('ൺ', 'ൿ'), ('ං', 'ඃ'), - ('අ', 'ඖ'), ('ක', 'න'), ('ඳ', 'ර'), ('ල', 'ල'), - ('ව', 'ෆ'), ('ා', 'ු'), ('ූ', 'ූ'), ('ෘ', 'ෟ'), - ('ෲ', 'ෳ'), ('ก', 'ฺ'), ('เ', 'ๆ'), ('ํ', 'ํ'), + ('ண', 'த'), ('ந', 'ப'), ('ம', 'ஹ'), ('\u{bbe}', 'ூ'), + ('ெ', 'ை'), ('ொ', 'ௌ'), ('ௐ', 'ௐ'), ('\u{bd7}', '\u{bd7}'), + ('\u{c00}', 'ః'), ('అ', 'ఌ'), ('ఎ', 'ఐ'), ('ఒ', 'న'), + ('ప', 'హ'), ('ఽ', 'ౄ'), ('\u{c46}', '\u{c48}'), + ('\u{c4a}', '\u{c4c}'), ('\u{c55}', '\u{c56}'), ('ౘ', 'ౚ'), + ('ౠ', '\u{c63}'), ('ಀ', 'ಃ'), ('ಅ', 'ಌ'), ('ಎ', 'ಐ'), + ('ಒ', 'ನ'), ('ಪ', 'ಳ'), ('ವ', 'ಹ'), ('ಽ', 'ೄ'), + ('\u{cc6}', 'ೈ'), ('ೊ', '\u{ccc}'), ('\u{cd5}', '\u{cd6}'), + ('ೞ', 'ೞ'), ('ೠ', '\u{ce3}'), ('ೱ', 'ೲ'), ('\u{d00}', 'ഃ'), + ('അ', 'ഌ'), ('എ', 'ഐ'), ('ഒ', 'ഺ'), ('ഽ', '\u{d44}'), + ('െ', 'ൈ'), ('ൊ', 'ൌ'), ('ൎ', 'ൎ'), ('ൔ', '\u{d57}'), + ('ൟ', '\u{d63}'), ('ൺ', 'ൿ'), ('ං', 'ඃ'), ('අ', 'ඖ'), + ('ක', 'න'), ('ඳ', 'ර'), ('ල', 'ල'), ('ව', 'ෆ'), + ('\u{dcf}', '\u{dd4}'), ('\u{dd6}', '\u{dd6}'), ('ෘ', '\u{ddf}'), + ('ෲ', 'ෳ'), ('ก', '\u{e3a}'), ('เ', 'ๆ'), ('\u{e4d}', '\u{e4d}'), ('ກ', 'ຂ'), ('ຄ', 'ຄ'), ('ງ', 'ຈ'), ('ຊ', 'ຊ'), ('ຍ', 'ຍ'), ('ດ', 'ທ'), ('ນ', 'ຟ'), ('ມ', 'ຣ'), - ('ລ', 'ລ'), ('ວ', 'ວ'), ('ສ', 'ຫ'), ('ອ', 'ູ'), - ('ົ', 'ຽ'), ('ເ', 'ໄ'), ('ໆ', 'ໆ'), ('ໍ', 'ໍ'), + ('ລ', 'ລ'), ('ວ', 'ວ'), ('ສ', 'ຫ'), ('ອ', '\u{eb9}'), + ('\u{ebb}', 'ຽ'), ('ເ', 'ໄ'), ('ໆ', 'ໆ'), ('\u{ecd}', '\u{ecd}'), ('ໜ', 'ໟ'), ('ༀ', 'ༀ'), ('ཀ', 'ཇ'), ('ཉ', 'ཬ'), - ('ཱ', 'ཱྀ'), ('ྈ', 'ྗ'), ('ྙ', 'ྼ'), ('က', 'ံ'), - ('း', 'း'), ('ျ', 'ဿ'), ('ၐ', 'ၢ'), ('ၥ', 'ၨ'), - ('ၮ', 'ႆ'), ('ႎ', 'ႎ'), ('ႜ', 'ႝ'), ('Ⴀ', 'Ⴥ'), - ('Ⴧ', 'Ⴧ'), ('Ⴭ', 'Ⴭ'), ('ა', 'ჺ'), ('ჼ', 'ቈ'), - ('ቊ', 'ቍ'), ('ቐ', 'ቖ'), ('ቘ', 'ቘ'), ('ቚ', 'ቝ'), - ('በ', 'ኈ'), ('ኊ', 'ኍ'), ('ነ', 'ኰ'), ('ኲ', 'ኵ'), - ('ኸ', 'ኾ'), ('ዀ', 'ዀ'), ('ዂ', 'ዅ'), ('ወ', 'ዖ'), - ('ዘ', 'ጐ'), ('ጒ', 'ጕ'), ('ጘ', 'ፚ'), ('፟', '፟'), - ('ᎀ', 'ᎏ'), ('Ꭰ', 'Ᏽ'), ('ᏸ', 'ᏽ'), ('ᐁ', 'ᙬ'), - ('ᙯ', 'ᙿ'), ('ᚁ', 'ᚚ'), ('ᚠ', 'ᛪ'), ('ᛮ', 'ᛸ'), - ('ᜀ', 'ᜌ'), ('ᜎ', 'ᜓ'), ('ᜠ', 'ᜳ'), ('ᝀ', 'ᝓ'), - ('ᝠ', 'ᝬ'), ('ᝮ', 'ᝰ'), ('ᝲ', 'ᝳ'), ('ក', 'ឳ'), - ('ា', 'ៈ'), ('ៗ', 'ៗ'), ('ៜ', 'ៜ'), ('ᠠ', '\u{1878}'), - ('ᢀ', 'ᢪ'), ('ᢰ', 'ᣵ'), ('ᤀ', 'ᤞ'), ('ᤠ', 'ᤫ'), - ('ᤰ', 'ᤸ'), ('ᥐ', 'ᥭ'), ('ᥰ', 'ᥴ'), ('ᦀ', 'ᦫ'), - ('ᦰ', 'ᧉ'), ('ᨀ', 'ᨛ'), ('ᨠ', 'ᩞ'), ('ᩡ', 'ᩴ'), - ('ᪧ', 'ᪧ'), ('ᬀ', 'ᬳ'), ('ᬵ', 'ᭃ'), ('ᭅ', 'ᭋ'), - ('ᮀ', 'ᮩ'), ('ᮬ', 'ᮯ'), ('ᮺ', 'ᯥ'), ('ᯧ', 'ᯱ'), - ('ᰀ', 'ᰵ'), ('ᱍ', 'ᱏ'), ('ᱚ', 'ᱽ'), ('ᲀ', 'ᲈ'), - ('\u{1c90}', '\u{1cba}'), ('\u{1cbd}', '\u{1cbf}'), ('ᳩ', 'ᳬ'), - ('ᳮ', 'ᳳ'), ('ᳵ', 'ᳶ'), ('ᴀ', 'ᶿ'), ('ᷧ', 'ᷴ'), + ('\u{f71}', '\u{f81}'), ('ྈ', '\u{f97}'), ('\u{f99}', '\u{fbc}'), + ('က', '\u{1036}'), ('း', 'း'), ('ျ', 'ဿ'), ('ၐ', 'ၢ'), + ('ၥ', 'ၨ'), ('ၮ', '\u{1086}'), ('ႎ', 'ႎ'), ('ႜ', '\u{109d}'), + ('Ⴀ', 'Ⴥ'), ('Ⴧ', 'Ⴧ'), ('Ⴭ', 'Ⴭ'), ('ა', 'ჺ'), + ('ჼ', 'ቈ'), ('ቊ', 'ቍ'), ('ቐ', 'ቖ'), ('ቘ', 'ቘ'), + ('ቚ', 'ቝ'), ('በ', 'ኈ'), ('ኊ', 'ኍ'), ('ነ', 'ኰ'), + ('ኲ', 'ኵ'), ('ኸ', 'ኾ'), ('ዀ', 'ዀ'), ('ዂ', 'ዅ'), + ('ወ', 'ዖ'), ('ዘ', 'ጐ'), ('ጒ', 'ጕ'), ('ጘ', 'ፚ'), + ('\u{135f}', '\u{135f}'), ('ᎀ', 'ᎏ'), ('Ꭰ', 'Ᏽ'), ('ᏸ', 'ᏽ'), + ('ᐁ', 'ᙬ'), ('ᙯ', 'ᙿ'), ('ᚁ', 'ᚚ'), ('ᚠ', 'ᛪ'), + ('ᛮ', 'ᛸ'), ('ᜀ', 'ᜌ'), ('ᜎ', '\u{1713}'), ('ᜠ', '\u{1733}'), + ('ᝀ', '\u{1753}'), ('ᝠ', 'ᝬ'), ('ᝮ', 'ᝰ'), + ('\u{1772}', '\u{1773}'), ('ក', 'ឳ'), ('ា', 'ៈ'), ('ៗ', 'ៗ'), + ('ៜ', 'ៜ'), ('ᠠ', 'ᡸ'), ('ᢀ', 'ᢪ'), ('ᢰ', 'ᣵ'), + ('ᤀ', 'ᤞ'), ('\u{1920}', 'ᤫ'), ('ᤰ', 'ᤸ'), ('ᥐ', 'ᥭ'), + ('ᥰ', 'ᥴ'), ('ᦀ', 'ᦫ'), ('ᦰ', 'ᧉ'), ('ᨀ', '\u{1a1b}'), + ('ᨠ', '\u{1a5e}'), ('ᩡ', '\u{1a74}'), ('ᪧ', 'ᪧ'), + ('\u{1b00}', 'ᬳ'), ('ᬵ', 'ᭃ'), ('ᭅ', 'ᭋ'), + ('\u{1b80}', '\u{1ba9}'), ('\u{1bac}', 'ᮯ'), ('ᮺ', 'ᯥ'), + ('ᯧ', '\u{1bf1}'), ('ᰀ', 'ᰵ'), ('ᱍ', 'ᱏ'), ('ᱚ', 'ᱽ'), + ('ᲀ', 'ᲈ'), ('Ა', 'Ჺ'), ('Ჽ', 'Ჿ'), ('ᳩ', 'ᳬ'), + ('ᳮ', 'ᳳ'), ('ᳵ', 'ᳶ'), ('ᴀ', 'ᶿ'), ('\u{1de7}', '\u{1df4}'), ('Ḁ', 'ἕ'), ('Ἐ', 'Ἕ'), ('ἠ', 'ὅ'), ('Ὀ', 'Ὅ'), ('ὐ', 'ὗ'), ('Ὑ', 'Ὑ'), ('Ὓ', 'Ὓ'), ('Ὕ', 'Ὕ'), ('Ὗ', 'ώ'), ('ᾀ', 'ᾴ'), ('ᾶ', 'ᾼ'), ('ι', 'ι'), @@ -130,19 +137,19 @@ ('ⴭ', 'ⴭ'), ('ⴰ', 'ⵧ'), ('ⵯ', 'ⵯ'), ('ⶀ', 'ⶖ'), ('ⶠ', 'ⶦ'), ('ⶨ', 'ⶮ'), ('ⶰ', 'ⶶ'), ('ⶸ', 'ⶾ'), ('ⷀ', 'ⷆ'), ('ⷈ', 'ⷎ'), ('ⷐ', 'ⷖ'), ('ⷘ', 'ⷞ'), - ('ⷠ', 'ⷿ'), ('ⸯ', 'ⸯ'), ('々', '〇'), ('〡', '〩'), + ('\u{2de0}', '\u{2dff}'), ('ⸯ', 'ⸯ'), ('々', '〇'), ('〡', '〩'), ('〱', '〵'), ('〸', '〼'), ('ぁ', 'ゖ'), ('ゝ', 'ゟ'), - ('ァ', 'ヺ'), ('ー', 'ヿ'), ('ㄅ', '\u{312f}'), ('ㄱ', 'ㆎ'), - ('ㆠ', 'ㆺ'), ('ㇰ', 'ㇿ'), ('㐀', '䶵'), ('一', '\u{9fef}'), + ('ァ', 'ヺ'), ('ー', 'ヿ'), ('ㄅ', 'ㄯ'), ('ㄱ', 'ㆎ'), + ('ㆠ', 'ㆺ'), ('ㇰ', 'ㇿ'), ('㐀', '䶵'), ('一', '鿯'), ('ꀀ', 'ꒌ'), ('ꓐ', 'ꓽ'), ('ꔀ', 'ꘌ'), ('ꘐ', 'ꘟ'), - ('ꘪ', 'ꘫ'), ('Ꙁ', 'ꙮ'), ('ꙴ', 'ꙻ'), ('ꙿ', 'ꛯ'), - ('ꜗ', 'ꜟ'), ('Ꜣ', 'ꞈ'), ('Ꞌ', '\u{a7b9}'), ('ꟷ', 'ꠁ'), + ('ꘪ', 'ꘫ'), ('Ꙁ', 'ꙮ'), ('\u{a674}', '\u{a67b}'), ('ꙿ', 'ꛯ'), + ('ꜗ', 'ꜟ'), ('Ꜣ', 'ꞈ'), ('Ꞌ', 'ꞹ'), ('ꟷ', 'ꠁ'), ('ꠃ', 'ꠅ'), ('ꠇ', 'ꠊ'), ('ꠌ', 'ꠧ'), ('ꡀ', 'ꡳ'), - ('ꢀ', 'ꣃ'), ('ꣅ', 'ꣅ'), ('ꣲ', 'ꣷ'), ('ꣻ', 'ꣻ'), - ('ꣽ', '\u{a8fe}'), ('ꤊ', 'ꤪ'), ('ꤰ', 'ꥒ'), ('ꥠ', 'ꥼ'), - ('ꦀ', 'ꦲ'), ('ꦴ', 'ꦿ'), ('ꧏ', 'ꧏ'), ('ꧠ', 'ꧤ'), - ('ꧦ', 'ꧯ'), ('ꧺ', 'ꧾ'), ('ꨀ', 'ꨶ'), ('ꩀ', 'ꩍ'), - ('ꩠ', 'ꩶ'), ('ꩺ', 'ꩺ'), ('ꩾ', 'ꪾ'), ('ꫀ', 'ꫀ'), + ('ꢀ', 'ꣃ'), ('\u{a8c5}', '\u{a8c5}'), ('ꣲ', 'ꣷ'), ('ꣻ', 'ꣻ'), + ('ꣽ', 'ꣾ'), ('ꤊ', '\u{a92a}'), ('ꤰ', 'ꥒ'), ('ꥠ', 'ꥼ'), + ('\u{a980}', 'ꦲ'), ('ꦴ', 'ꦿ'), ('ꧏ', 'ꧏ'), ('ꧠ', 'ꧤ'), + ('ꧦ', 'ꧯ'), ('ꧺ', 'ꧾ'), ('ꨀ', '\u{aa36}'), ('ꩀ', 'ꩍ'), + ('ꩠ', 'ꩶ'), ('ꩺ', 'ꩺ'), ('ꩾ', '\u{aabe}'), ('ꫀ', 'ꫀ'), ('ꫂ', 'ꫂ'), ('ꫛ', 'ꫝ'), ('ꫠ', 'ꫯ'), ('ꫲ', 'ꫵ'), ('ꬁ', 'ꬆ'), ('ꬉ', 'ꬎ'), ('ꬑ', 'ꬖ'), ('ꬠ', 'ꬦ'), ('ꬨ', 'ꬮ'), ('ꬰ', 'ꭚ'), ('ꭜ', 'ꭥ'), ('ꭰ', 'ꯪ'), @@ -155,69 +162,72 @@ ('ᅧ', 'ᅬ'), ('ᅭ', 'ᅲ'), ('ᅳ', 'ᅵ'), ('𐀀', '𐀋'), ('𐀍', '𐀦'), ('𐀨', '𐀺'), ('𐀼', '𐀽'), ('𐀿', '𐁍'), ('𐁐', '𐁝'), ('𐂀', '𐃺'), ('𐅀', '𐅴'), ('𐊀', '𐊜'), - ('𐊠', '𐋐'), ('𐌀', '𐌟'), ('𐌭', '𐍊'), ('𐍐', '𐍺'), + ('𐊠', '𐋐'), ('𐌀', '𐌟'), ('𐌭', '𐍊'), ('𐍐', '\u{1037a}'), ('𐎀', '𐎝'), ('𐎠', '𐏃'), ('𐏈', '𐏏'), ('𐏑', '𐏕'), ('𐐀', '𐒝'), ('𐒰', '𐓓'), ('𐓘', '𐓻'), ('𐔀', '𐔧'), ('𐔰', '𐕣'), ('𐘀', '𐜶'), ('𐝀', '𐝕'), ('𐝠', '𐝧'), ('𐠀', '𐠅'), ('𐠈', '𐠈'), ('𐠊', '𐠵'), ('𐠷', '𐠸'), ('𐠼', '𐠼'), ('𐠿', '𐡕'), ('𐡠', '𐡶'), ('𐢀', '𐢞'), ('𐣠', '𐣲'), ('𐣴', '𐣵'), ('𐤀', '𐤕'), ('𐤠', '𐤹'), - ('𐦀', '𐦷'), ('𐦾', '𐦿'), ('𐨀', '𐨃'), ('𐨅', '𐨆'), - ('𐨌', '𐨓'), ('𐨕', '𐨗'), ('𐨙', '\u{10a35}'), ('𐩠', '𐩼'), - ('𐪀', '𐪜'), ('𐫀', '𐫇'), ('𐫉', '𐫤'), ('𐬀', '𐬵'), - ('𐭀', '𐭕'), ('𐭠', '𐭲'), ('𐮀', '𐮑'), ('𐰀', '𐱈'), - ('𐲀', '𐲲'), ('𐳀', '𐳲'), ('\u{10d00}', '\u{10d27}'), - ('\u{10f00}', '\u{10f1c}'), ('\u{10f27}', '\u{10f27}'), - ('\u{10f30}', '\u{10f45}'), ('𑀀', '𑁅'), ('𑂂', '𑂸'), - ('𑃐', '𑃨'), ('𑄀', '𑄲'), ('\u{11144}', '\u{11146}'), - ('𑅐', '𑅲'), ('𑅶', '𑅶'), ('𑆀', '𑆿'), ('𑇁', '𑇄'), - ('𑇚', '𑇚'), ('𑇜', '𑇜'), ('𑈀', '𑈑'), ('𑈓', '𑈴'), - ('𑈷', '𑈷'), ('𑈾', '𑈾'), ('𑊀', '𑊆'), ('𑊈', '𑊈'), - ('𑊊', '𑊍'), ('𑊏', '𑊝'), ('𑊟', '𑊨'), ('𑊰', '𑋨'), - ('𑌀', '𑌃'), ('𑌅', '𑌌'), ('𑌏', '𑌐'), ('𑌓', '𑌨'), - ('𑌪', '𑌰'), ('𑌲', '𑌳'), ('𑌵', '𑌹'), ('𑌽', '𑍄'), - ('𑍇', '𑍈'), ('𑍋', '𑍌'), ('𑍐', '𑍐'), ('𑍗', '𑍗'), - ('𑍝', '𑍣'), ('𑐀', '𑑁'), ('𑑃', '𑑅'), ('𑑇', '𑑊'), - ('𑒀', '𑓁'), ('𑓄', '𑓅'), ('𑓇', '𑓇'), ('𑖀', '𑖵'), - ('𑖸', '𑖾'), ('𑗘', '𑗝'), ('𑘀', '𑘾'), ('𑙀', '𑙀'), - ('𑙄', '𑙄'), ('𑚀', '𑚵'), ('𑜀', '\u{1171a}'), ('𑜝', '𑜪'), - ('\u{11800}', '\u{11838}'), ('𑢠', '𑣟'), ('𑣿', '𑣿'), - ('𑨀', '𑨲'), ('𑨵', '𑨾'), ('𑩐', '𑪃'), ('𑪆', '𑪗'), - ('\u{11a9d}', '\u{11a9d}'), ('𑫀', '𑫸'), ('𑰀', '𑰈'), - ('𑰊', '𑰶'), ('𑰸', '𑰾'), ('𑱀', '𑱀'), ('𑱲', '𑲏'), - ('𑲒', '𑲧'), ('𑲩', '𑲶'), ('𑴀', '𑴆'), ('𑴈', '𑴉'), - ('𑴋', '𑴶'), ('𑴺', '𑴺'), ('𑴼', '𑴽'), ('𑴿', '𑵁'), - ('𑵃', '𑵃'), ('𑵆', '𑵇'), ('\u{11d60}', '\u{11d65}'), - ('\u{11d67}', '\u{11d68}'), ('\u{11d6a}', '\u{11d8e}'), - ('\u{11d90}', '\u{11d91}'), ('\u{11d93}', '\u{11d96}'), - ('\u{11d98}', '\u{11d98}'), ('\u{11ee0}', '\u{11ef6}'), ('𒀀', '𒎙'), + ('𐦀', '𐦷'), ('𐦾', '𐦿'), ('𐨀', '\u{10a03}'), + ('\u{10a05}', '\u{10a06}'), ('\u{10a0c}', '𐨓'), ('𐨕', '𐨗'), + ('𐨙', '𐨵'), ('𐩠', '𐩼'), ('𐪀', '𐪜'), ('𐫀', '𐫇'), + ('𐫉', '𐫤'), ('𐬀', '𐬵'), ('𐭀', '𐭕'), ('𐭠', '𐭲'), + ('𐮀', '𐮑'), ('𐰀', '𐱈'), ('𐲀', '𐲲'), ('𐳀', '𐳲'), + ('𐴀', '\u{10d27}'), ('𐼀', '𐼜'), ('𐼧', '𐼧'), ('𐼰', '𐽅'), + ('𑀀', '\u{11045}'), ('𑂂', '𑂸'), ('𑃐', '𑃨'), + ('\u{11100}', '\u{11132}'), ('𑅄', '𑅆'), ('𑅐', '𑅲'), + ('𑅶', '𑅶'), ('\u{11180}', '𑆿'), ('𑇁', '𑇄'), ('𑇚', '𑇚'), + ('𑇜', '𑇜'), ('𑈀', '𑈑'), ('𑈓', '\u{11234}'), + ('\u{11237}', '\u{11237}'), ('\u{1123e}', '\u{1123e}'), ('𑊀', '𑊆'), + ('𑊈', '𑊈'), ('𑊊', '𑊍'), ('𑊏', '𑊝'), ('𑊟', '𑊨'), + ('𑊰', '\u{112e8}'), ('\u{11300}', '𑌃'), ('𑌅', '𑌌'), + ('𑌏', '𑌐'), ('𑌓', '𑌨'), ('𑌪', '𑌰'), ('𑌲', '𑌳'), + ('𑌵', '𑌹'), ('𑌽', '𑍄'), ('𑍇', '𑍈'), ('𑍋', '𑍌'), + ('𑍐', '𑍐'), ('\u{11357}', '\u{11357}'), ('𑍝', '𑍣'), + ('𑐀', '𑑁'), ('\u{11443}', '𑑅'), ('𑑇', '𑑊'), ('𑒀', '𑓁'), + ('𑓄', '𑓅'), ('𑓇', '𑓇'), ('𑖀', '\u{115b5}'), ('𑖸', '𑖾'), + ('𑗘', '\u{115dd}'), ('𑘀', '𑘾'), ('\u{11640}', '\u{11640}'), + ('𑙄', '𑙄'), ('𑚀', '\u{116b5}'), ('𑜀', '𑜚'), + ('\u{1171d}', '\u{1172a}'), ('𑠀', '𑠸'), ('𑢠', '𑣟'), + ('𑣿', '𑣿'), ('𑨀', '𑨲'), ('\u{11a35}', '\u{11a3e}'), + ('𑩐', '𑪃'), ('𑪆', '𑪗'), ('𑪝', '𑪝'), ('𑫀', '𑫸'), + ('𑰀', '𑰈'), ('𑰊', '\u{11c36}'), ('\u{11c38}', '𑰾'), + ('𑱀', '𑱀'), ('𑱲', '𑲏'), ('\u{11c92}', '\u{11ca7}'), + ('𑲩', '\u{11cb6}'), ('𑴀', '𑴆'), ('𑴈', '𑴉'), + ('𑴋', '\u{11d36}'), ('\u{11d3a}', '\u{11d3a}'), + ('\u{11d3c}', '\u{11d3d}'), ('\u{11d3f}', '\u{11d41}'), + ('\u{11d43}', '\u{11d43}'), ('𑵆', '\u{11d47}'), ('𑵠', '𑵥'), + ('𑵧', '𑵨'), ('𑵪', '𑶎'), ('\u{11d90}', '\u{11d91}'), + ('𑶓', '𑶖'), ('𑶘', '𑶘'), ('𑻠', '𑻶'), ('𒀀', '𒎙'), ('𒐀', '𒑮'), ('𒒀', '𒕃'), ('𓀀', '𓐮'), ('𔐀', '𔙆'), - ('𖠀', '𖨸'), ('𖩀', '𖩞'), ('𖫐', '𖫭'), ('𖬀', '𖬶'), - ('𖭀', '𖭃'), ('𖭣', '𖭷'), ('𖭽', '𖮏'), - ('\u{16e40}', '\u{16e7f}'), ('𖼀', '𖽄'), ('𖽐', '𖽾'), - ('𖾓', '𖾟'), ('𖿠', '𖿡'), ('𗀀', '\u{187f1}'), ('𘠀', '𘫲'), - ('𛀀', '𛄞'), ('𛅰', '𛋻'), ('𛰀', '𛱪'), ('𛱰', '𛱼'), - ('𛲀', '𛲈'), ('𛲐', '𛲙'), ('𛲞', '𛲞'), ('𝐀', '𝑔'), - ('𝑖', '𝒜'), ('𝒞', '𝒟'), ('𝒢', '𝒢'), ('𝒥', '𝒦'), - ('𝒩', '𝒬'), ('𝒮', '𝒹'), ('𝒻', '𝒻'), ('𝒽', '𝓃'), - ('𝓅', '𝔅'), ('𝔇', '𝔊'), ('𝔍', '𝔔'), ('𝔖', '𝔜'), - ('𝔞', '𝔹'), ('𝔻', '𝔾'), ('𝕀', '𝕄'), ('𝕆', '𝕆'), - ('𝕊', '𝕐'), ('𝕒', '𝚥'), ('𝚨', '𝛀'), ('𝛂', '𝛚'), - ('𝛜', '𝛺'), ('𝛼', '𝜔'), ('𝜖', '𝜴'), ('𝜶', '𝝎'), - ('𝝐', '𝝮'), ('𝝰', '𝞈'), ('𝞊', '𝞨'), ('𝞪', '𝟂'), - ('𝟄', '𝟋'), ('𞀀', '𞀆'), ('𞀈', '𞀘'), ('𞀛', '𞀡'), - ('𞀣', '𞀤'), ('𞀦', '𞀪'), ('𞠀', '𞣄'), ('𞤀', '𞥃'), - ('𞥇', '𞥇'), ('𞸀', '𞸃'), ('𞸅', '𞸟'), ('𞸡', '𞸢'), - ('𞸤', '𞸤'), ('𞸧', '𞸧'), ('𞸩', '𞸲'), ('𞸴', '𞸷'), - ('𞸹', '𞸹'), ('𞸻', '𞸻'), ('𞹂', '𞹂'), ('𞹇', '𞹇'), - ('𞹉', '𞹉'), ('𞹋', '𞹋'), ('𞹍', '𞹏'), ('𞹑', '𞹒'), - ('𞹔', '𞹔'), ('𞹗', '𞹗'), ('𞹙', '𞹙'), ('𞹛', '𞹛'), - ('𞹝', '𞹝'), ('𞹟', '𞹟'), ('𞹡', '𞹢'), ('𞹤', '𞹤'), - ('𞹧', '𞹪'), ('𞹬', '𞹲'), ('𞹴', '𞹷'), ('𞹹', '𞹼'), - ('𞹾', '𞹾'), ('𞺀', '𞺉'), ('𞺋', '𞺛'), ('𞺡', '𞺣'), - ('𞺥', '𞺩'), ('𞺫', '𞺻'), ('🄰', '🅉'), ('🅐', '🅩'), - ('🅰', '🆉'), ('𠀀', '𪛖'), ('𪜀', '𫜴'), ('𫝀', '𫠝'), - ('𫠠', '𬺡'), ('𬺰', '𮯠'), ('丽', '𪘀'), + ('𖠀', '𖨸'), ('𖩀', '𖩞'), ('𖫐', '𖫭'), ('𖬀', '\u{16b36}'), + ('𖭀', '𖭃'), ('𖭣', '𖭷'), ('𖭽', '𖮏'), ('𖹀', '𖹿'), + ('𖼀', '𖽄'), ('𖽐', '𖽾'), ('𖾓', '𖾟'), ('𖿠', '𖿡'), + ('𗀀', '𘟱'), ('𘠀', '𘫲'), ('𛀀', '𛄞'), ('𛅰', '𛋻'), + ('𛰀', '𛱪'), ('𛱰', '𛱼'), ('𛲀', '𛲈'), ('𛲐', '𛲙'), + ('\u{1bc9e}', '\u{1bc9e}'), ('𝐀', '𝑔'), ('𝑖', '𝒜'), + ('𝒞', '𝒟'), ('𝒢', '𝒢'), ('𝒥', '𝒦'), ('𝒩', '𝒬'), + ('𝒮', '𝒹'), ('𝒻', '𝒻'), ('𝒽', '𝓃'), ('𝓅', '𝔅'), + ('𝔇', '𝔊'), ('𝔍', '𝔔'), ('𝔖', '𝔜'), ('𝔞', '𝔹'), + ('𝔻', '𝔾'), ('𝕀', '𝕄'), ('𝕆', '𝕆'), ('𝕊', '𝕐'), + ('𝕒', '𝚥'), ('𝚨', '𝛀'), ('𝛂', '𝛚'), ('𝛜', '𝛺'), + ('𝛼', '𝜔'), ('𝜖', '𝜴'), ('𝜶', '𝝎'), ('𝝐', '𝝮'), + ('𝝰', '𝞈'), ('𝞊', '𝞨'), ('𝞪', '𝟂'), ('𝟄', '𝟋'), + ('\u{1e000}', '\u{1e006}'), ('\u{1e008}', '\u{1e018}'), + ('\u{1e01b}', '\u{1e021}'), ('\u{1e023}', '\u{1e024}'), + ('\u{1e026}', '\u{1e02a}'), ('𞠀', '𞣄'), ('𞤀', '𞥃'), + ('\u{1e947}', '\u{1e947}'), ('𞸀', '𞸃'), ('𞸅', '𞸟'), + ('𞸡', '𞸢'), ('𞸤', '𞸤'), ('𞸧', '𞸧'), ('𞸩', '𞸲'), + ('𞸴', '𞸷'), ('𞸹', '𞸹'), ('𞸻', '𞸻'), ('𞹂', '𞹂'), + ('𞹇', '𞹇'), ('𞹉', '𞹉'), ('𞹋', '𞹋'), ('𞹍', '𞹏'), + ('𞹑', '𞹒'), ('𞹔', '𞹔'), ('𞹗', '𞹗'), ('𞹙', '𞹙'), + ('𞹛', '𞹛'), ('𞹝', '𞹝'), ('𞹟', '𞹟'), ('𞹡', '𞹢'), + ('𞹤', '𞹤'), ('𞹧', '𞹪'), ('𞹬', '𞹲'), ('𞹴', '𞹷'), + ('𞹹', '𞹼'), ('𞹾', '𞹾'), ('𞺀', '𞺉'), ('𞺋', '𞺛'), + ('𞺡', '𞺣'), ('𞺥', '𞺩'), ('𞺫', '𞺻'), ('🄰', '🅉'), + ('🅐', '🅩'), ('🅰', '🆉'), ('𠀀', '𪛖'), ('𪜀', '𫜴'), + ('𫝀', '𫠝'), ('𫠠', '𬺡'), ('𬺰', '𮯠'), ('丽', '𪘀'), ]; pub const BIDI_CONTROL: &'static [(char, char)] = &[ @@ -228,142 +238,197 @@ pub const CASE_IGNORABLE: &'static [(char, char)] = &[ ('\'', '\''), ('.', '.'), (':', ':'), ('^', '^'), ('`', '`'), ('¨', '¨'), ('\u{ad}', '\u{ad}'), ('¯', '¯'), ('´', '´'), ('·', '¸'), - ('ʰ', 'ͯ'), ('ʹ', '͵'), ('ͺ', 'ͺ'), ('΄', '΅'), ('·', '·'), - ('҃', '҉'), ('ՙ', 'ՙ'), ('֑', 'ֽ'), ('ֿ', 'ֿ'), ('ׁ', 'ׂ'), - ('ׄ', 'ׅ'), ('ׇ', 'ׇ'), ('״', '״'), ('\u{600}', '\u{605}'), - ('ؐ', 'ؚ'), ('\u{61c}', '\u{61c}'), ('ـ', 'ـ'), ('ً', 'ٟ'), - ('ٰ', 'ٰ'), ('ۖ', '\u{6dd}'), ('۟', 'ۨ'), ('۪', 'ۭ'), - ('\u{70f}', '\u{70f}'), ('ܑ', 'ܑ'), ('ܰ', '݊'), ('ަ', 'ް'), - ('߫', 'ߵ'), ('ߺ', 'ߺ'), ('\u{7fd}', '\u{7fd}'), ('ࠖ', '࠭'), - ('࡙', '࡛'), ('\u{8d3}', 'ं'), ('ऺ', 'ऺ'), ('़', '़'), - ('ु', 'ै'), ('्', '्'), ('॑', 'ॗ'), ('ॢ', 'ॣ'), - ('ॱ', 'ॱ'), ('ঁ', 'ঁ'), ('়', '়'), ('ু', 'ৄ'), - ('্', '্'), ('ৢ', 'ৣ'), ('\u{9fe}', '\u{9fe}'), ('ਁ', 'ਂ'), - ('਼', '਼'), ('ੁ', 'ੂ'), ('ੇ', 'ੈ'), ('ੋ', '੍'), - ('ੑ', 'ੑ'), ('ੰ', 'ੱ'), ('ੵ', 'ੵ'), ('ઁ', 'ં'), - ('઼', '઼'), ('ુ', 'ૅ'), ('ે', 'ૈ'), ('્', '્'), - ('ૢ', 'ૣ'), ('ૺ', '૿'), ('ଁ', 'ଁ'), ('଼', '଼'), - ('ି', 'ି'), ('ୁ', 'ୄ'), ('୍', '୍'), ('ୖ', 'ୖ'), - ('ୢ', 'ୣ'), ('ஂ', 'ஂ'), ('ீ', 'ீ'), ('்', '்'), - ('ఀ', 'ఀ'), ('\u{c04}', '\u{c04}'), ('ా', 'ీ'), ('ె', 'ై'), - ('ొ', '్'), ('ౕ', 'ౖ'), ('ౢ', 'ౣ'), ('ಁ', 'ಁ'), - ('಼', '಼'), ('ಿ', 'ಿ'), ('ೆ', 'ೆ'), ('ೌ', '್'), - ('ೢ', 'ೣ'), ('ഀ', 'ഁ'), ('഻', '഼'), ('ു', 'ൄ'), - ('്', '്'), ('ൢ', 'ൣ'), ('්', '්'), ('ි', 'ු'), - ('ූ', 'ූ'), ('ั', 'ั'), ('ิ', 'ฺ'), ('ๆ', '๎'), - ('ັ', 'ັ'), ('ິ', 'ູ'), ('ົ', 'ຼ'), ('ໆ', 'ໆ'), - ('່', 'ໍ'), ('༘', '༙'), ('༵', '༵'), ('༷', '༷'), - ('༹', '༹'), ('ཱ', 'ཾ'), ('ྀ', '྄'), ('྆', '྇'), - ('ྍ', 'ྗ'), ('ྙ', 'ྼ'), ('࿆', '࿆'), ('ိ', 'ူ'), - ('ဲ', '့'), ('္', '်'), ('ွ', 'ှ'), ('ၘ', 'ၙ'), - ('ၞ', 'ၠ'), ('ၱ', 'ၴ'), ('ႂ', 'ႂ'), ('ႅ', 'ႆ'), - ('ႍ', 'ႍ'), ('ႝ', 'ႝ'), ('ჼ', 'ჼ'), ('፝', '፟'), - ('ᜒ', '᜔'), ('ᜲ', '᜴'), ('ᝒ', 'ᝓ'), ('ᝲ', 'ᝳ'), - ('឴', '឵'), ('ិ', 'ួ'), ('ំ', 'ំ'), ('៉', '៓'), - ('ៗ', 'ៗ'), ('៝', '៝'), ('᠋', '\u{180e}'), ('ᡃ', 'ᡃ'), - ('ᢅ', 'ᢆ'), ('ᢩ', 'ᢩ'), ('ᤠ', 'ᤢ'), ('ᤧ', 'ᤨ'), - ('ᤲ', 'ᤲ'), ('᤹', '᤻'), ('ᨗ', 'ᨘ'), ('ᨛ', 'ᨛ'), - ('ᩖ', 'ᩖ'), ('ᩘ', 'ᩞ'), ('᩠', '᩠'), ('ᩢ', 'ᩢ'), - ('ᩥ', 'ᩬ'), ('ᩳ', '᩼'), ('᩿', '᩿'), ('ᪧ', 'ᪧ'), - ('᪰', '᪾'), ('ᬀ', 'ᬃ'), ('᬴', '᬴'), ('ᬶ', 'ᬺ'), - ('ᬼ', 'ᬼ'), ('ᭂ', 'ᭂ'), ('᭫', '᭳'), ('ᮀ', 'ᮁ'), - ('ᮢ', 'ᮥ'), ('ᮨ', 'ᮩ'), ('᮫', 'ᮭ'), ('᯦', '᯦'), - ('ᯨ', 'ᯩ'), ('ᯭ', 'ᯭ'), ('ᯯ', 'ᯱ'), ('ᰬ', 'ᰳ'), - ('ᰶ', '᰷'), ('ᱸ', 'ᱽ'), ('᳐', '᳒'), ('᳔', '᳠'), - ('᳢', '᳨'), ('᳭', '᳭'), ('᳴', '᳴'), ('᳸', '᳹'), - ('ᴬ', 'ᵪ'), ('ᵸ', 'ᵸ'), ('ᶛ', '᷹'), ('᷻', '᷿'), - ('᾽', '᾽'), ('᾿', '῁'), ('῍', '῏'), ('῝', '῟'), - ('῭', '`'), ('´', '῾'), ('\u{200b}', '\u{200f}'), ('‘', '’'), - ('․', '․'), ('‧', '‧'), ('\u{202a}', '\u{202e}'), - ('\u{2060}', '\u{2064}'), ('\u{2066}', '\u{206f}'), ('ⁱ', 'ⁱ'), - ('ⁿ', 'ⁿ'), ('ₐ', 'ₜ'), ('⃐', '⃰'), ('ⱼ', 'ⱽ'), - ('⳯', '⳱'), ('ⵯ', 'ⵯ'), ('⵿', '⵿'), ('ⷠ', 'ⷿ'), - ('ⸯ', 'ⸯ'), ('々', '々'), ('〪', '〭'), ('〱', '〵'), - ('〻', '〻'), ('゙', 'ゞ'), ('ー', 'ヾ'), ('ꀕ', 'ꀕ'), - ('ꓸ', 'ꓽ'), ('ꘌ', 'ꘌ'), ('꙯', '꙲'), ('ꙴ', '꙽'), - ('ꙿ', 'ꙿ'), ('ꚜ', 'ꚟ'), ('꛰', '꛱'), ('꜀', '꜡'), - ('ꝰ', 'ꝰ'), ('ꞈ', '꞊'), ('ꟸ', 'ꟹ'), ('ꠂ', 'ꠂ'), - ('꠆', '꠆'), ('ꠋ', 'ꠋ'), ('ꠥ', 'ꠦ'), ('꣄', 'ꣅ'), - ('꣠', '꣱'), ('\u{a8ff}', '\u{a8ff}'), ('ꤦ', '꤭'), ('ꥇ', 'ꥑ'), - ('ꦀ', 'ꦂ'), ('꦳', '꦳'), ('ꦶ', 'ꦹ'), ('ꦼ', 'ꦼ'), - ('ꧏ', 'ꧏ'), ('ꧥ', 'ꧦ'), ('ꨩ', 'ꨮ'), ('ꨱ', 'ꨲ'), - ('ꨵ', 'ꨶ'), ('ꩃ', 'ꩃ'), ('ꩌ', 'ꩌ'), ('ꩰ', 'ꩰ'), - ('ꩼ', 'ꩼ'), ('ꪰ', 'ꪰ'), ('ꪲ', 'ꪴ'), ('ꪷ', 'ꪸ'), - ('ꪾ', '꪿'), ('꫁', '꫁'), ('ꫝ', 'ꫝ'), ('ꫬ', 'ꫭ'), - ('ꫳ', 'ꫴ'), ('꫶', '꫶'), ('꭛', 'ꭟ'), ('ꯥ', 'ꯥ'), - ('ꯨ', 'ꯨ'), ('꯭', '꯭'), ('ﬞ', 'ﬞ'), ('﮲', '﯁'), - ('︀', '️'), ('︓', '︓'), ('︠', '︯'), ('﹒', '﹒'), - ('﹕', '﹕'), ('\u{feff}', '\u{feff}'), (''', '''), ('.', '.'), - (':', ':'), ('^', '^'), ('`', '`'), ('ー', 'ー'), - ('゙', '゚'), (' ̄', ' ̄'), ('\u{fff9}', '\u{fffb}'), ('𐇽', '𐇽'), - ('𐋠', '𐋠'), ('𐍶', '𐍺'), ('𐨁', '𐨃'), ('𐨅', '𐨆'), - ('𐨌', '𐨏'), ('𐨸', '𐨺'), ('𐨿', '𐨿'), ('𐫥', '𐫦'), - ('\u{10d24}', '\u{10d27}'), ('\u{10f46}', '\u{10f50}'), ('𑀁', '𑀁'), - ('𑀸', '𑁆'), ('𑁿', '𑂁'), ('𑂳', '𑂶'), ('𑂹', '𑂺'), - ('\u{110bd}', '\u{110bd}'), ('\u{110cd}', '\u{110cd}'), ('𑄀', '𑄂'), - ('𑄧', '𑄫'), ('𑄭', '𑄴'), ('𑅳', '𑅳'), ('𑆀', '𑆁'), - ('𑆶', '𑆾'), ('𑇉', '𑇌'), ('𑈯', '𑈱'), ('𑈴', '𑈴'), - ('𑈶', '𑈷'), ('𑈾', '𑈾'), ('𑋟', '𑋟'), ('𑋣', '𑋪'), - ('𑌀', '𑌁'), ('\u{1133b}', '𑌼'), ('𑍀', '𑍀'), ('𑍦', '𑍬'), - ('𑍰', '𑍴'), ('𑐸', '𑐿'), ('𑑂', '𑑄'), ('𑑆', '𑑆'), - ('\u{1145e}', '\u{1145e}'), ('𑒳', '𑒸'), ('𑒺', '𑒺'), - ('𑒿', '𑓀'), ('𑓂', '𑓃'), ('𑖲', '𑖵'), ('𑖼', '𑖽'), - ('𑖿', '𑗀'), ('𑗜', '𑗝'), ('𑘳', '𑘺'), ('𑘽', '𑘽'), - ('𑘿', '𑙀'), ('𑚫', '𑚫'), ('𑚭', '𑚭'), ('𑚰', '𑚵'), - ('𑚷', '𑚷'), ('𑜝', '𑜟'), ('𑜢', '𑜥'), ('𑜧', '𑜫'), - ('\u{1182f}', '\u{11837}'), ('\u{11839}', '\u{1183a}'), ('𑨁', '𑨊'), - ('𑨳', '𑨸'), ('𑨻', '𑨾'), ('𑩇', '𑩇'), ('𑩑', '𑩖'), - ('𑩙', '𑩛'), ('𑪊', '𑪖'), ('𑪘', '𑪙'), ('𑰰', '𑰶'), - ('𑰸', '𑰽'), ('𑰿', '𑰿'), ('𑲒', '𑲧'), ('𑲪', '𑲰'), - ('𑲲', '𑲳'), ('𑲵', '𑲶'), ('𑴱', '𑴶'), ('𑴺', '𑴺'), - ('𑴼', '𑴽'), ('𑴿', '𑵅'), ('𑵇', '𑵇'), - ('\u{11d90}', '\u{11d91}'), ('\u{11d95}', '\u{11d95}'), - ('\u{11d97}', '\u{11d97}'), ('\u{11ef3}', '\u{11ef4}'), ('𖫰', '𖫴'), - ('𖬰', '𖬶'), ('𖭀', '𖭃'), ('𖾏', '𖾟'), ('𖿠', '𖿡'), - ('𛲝', '𛲞'), ('\u{1bca0}', '\u{1bca3}'), ('𝅧', '𝅩'), - ('\u{1d173}', '𝆂'), ('𝆅', '𝆋'), ('𝆪', '𝆭'), ('𝉂', '𝉄'), - ('𝨀', '𝨶'), ('𝨻', '𝩬'), ('𝩵', '𝩵'), ('𝪄', '𝪄'), - ('𝪛', '𝪟'), ('𝪡', '𝪯'), ('𞀀', '𞀆'), ('𞀈', '𞀘'), - ('𞀛', '𞀡'), ('𞀣', '𞀤'), ('𞀦', '𞀪'), ('𞣐', '𞣖'), - ('𞥄', '𞥊'), ('🏻', '🏿'), ('\u{e0001}', '\u{e0001}'), - ('\u{e0020}', '\u{e007f}'), ('󠄀', '󠇯'), + ('ʰ', '\u{36f}'), ('ʹ', '͵'), ('ͺ', 'ͺ'), ('΄', '΅'), ('·', '·'), + ('\u{483}', '\u{489}'), ('ՙ', 'ՙ'), ('\u{591}', '\u{5bd}'), + ('\u{5bf}', '\u{5bf}'), ('\u{5c1}', '\u{5c2}'), ('\u{5c4}', '\u{5c5}'), + ('\u{5c7}', '\u{5c7}'), ('״', '״'), ('\u{600}', '\u{605}'), + ('\u{610}', '\u{61a}'), ('\u{61c}', '\u{61c}'), ('ـ', 'ـ'), + ('\u{64b}', '\u{65f}'), ('\u{670}', '\u{670}'), ('\u{6d6}', '\u{6dd}'), + ('\u{6df}', '\u{6e8}'), ('\u{6ea}', '\u{6ed}'), ('\u{70f}', '\u{70f}'), + ('\u{711}', '\u{711}'), ('\u{730}', '\u{74a}'), ('\u{7a6}', '\u{7b0}'), + ('\u{7eb}', 'ߵ'), ('ߺ', 'ߺ'), ('\u{7fd}', '\u{7fd}'), + ('\u{816}', '\u{82d}'), ('\u{859}', '\u{85b}'), ('\u{8d3}', '\u{902}'), + ('\u{93a}', '\u{93a}'), ('\u{93c}', '\u{93c}'), ('\u{941}', '\u{948}'), + ('\u{94d}', '\u{94d}'), ('\u{951}', '\u{957}'), ('\u{962}', '\u{963}'), + ('ॱ', 'ॱ'), ('\u{981}', '\u{981}'), ('\u{9bc}', '\u{9bc}'), + ('\u{9c1}', '\u{9c4}'), ('\u{9cd}', '\u{9cd}'), ('\u{9e2}', '\u{9e3}'), + ('\u{9fe}', '\u{9fe}'), ('\u{a01}', '\u{a02}'), ('\u{a3c}', '\u{a3c}'), + ('\u{a41}', '\u{a42}'), ('\u{a47}', '\u{a48}'), ('\u{a4b}', '\u{a4d}'), + ('\u{a51}', '\u{a51}'), ('\u{a70}', '\u{a71}'), ('\u{a75}', '\u{a75}'), + ('\u{a81}', '\u{a82}'), ('\u{abc}', '\u{abc}'), ('\u{ac1}', '\u{ac5}'), + ('\u{ac7}', '\u{ac8}'), ('\u{acd}', '\u{acd}'), ('\u{ae2}', '\u{ae3}'), + ('\u{afa}', '\u{aff}'), ('\u{b01}', '\u{b01}'), ('\u{b3c}', '\u{b3c}'), + ('\u{b3f}', '\u{b3f}'), ('\u{b41}', '\u{b44}'), ('\u{b4d}', '\u{b4d}'), + ('\u{b56}', '\u{b56}'), ('\u{b62}', '\u{b63}'), ('\u{b82}', '\u{b82}'), + ('\u{bc0}', '\u{bc0}'), ('\u{bcd}', '\u{bcd}'), ('\u{c00}', '\u{c00}'), + ('\u{c04}', '\u{c04}'), ('\u{c3e}', '\u{c40}'), ('\u{c46}', '\u{c48}'), + ('\u{c4a}', '\u{c4d}'), ('\u{c55}', '\u{c56}'), ('\u{c62}', '\u{c63}'), + ('\u{c81}', '\u{c81}'), ('\u{cbc}', '\u{cbc}'), ('\u{cbf}', '\u{cbf}'), + ('\u{cc6}', '\u{cc6}'), ('\u{ccc}', '\u{ccd}'), ('\u{ce2}', '\u{ce3}'), + ('\u{d00}', '\u{d01}'), ('\u{d3b}', '\u{d3c}'), ('\u{d41}', '\u{d44}'), + ('\u{d4d}', '\u{d4d}'), ('\u{d62}', '\u{d63}'), ('\u{dca}', '\u{dca}'), + ('\u{dd2}', '\u{dd4}'), ('\u{dd6}', '\u{dd6}'), ('\u{e31}', '\u{e31}'), + ('\u{e34}', '\u{e3a}'), ('ๆ', '\u{e4e}'), ('\u{eb1}', '\u{eb1}'), + ('\u{eb4}', '\u{eb9}'), ('\u{ebb}', '\u{ebc}'), ('ໆ', 'ໆ'), + ('\u{ec8}', '\u{ecd}'), ('\u{f18}', '\u{f19}'), ('\u{f35}', '\u{f35}'), + ('\u{f37}', '\u{f37}'), ('\u{f39}', '\u{f39}'), ('\u{f71}', '\u{f7e}'), + ('\u{f80}', '\u{f84}'), ('\u{f86}', '\u{f87}'), ('\u{f8d}', '\u{f97}'), + ('\u{f99}', '\u{fbc}'), ('\u{fc6}', '\u{fc6}'), ('\u{102d}', '\u{1030}'), + ('\u{1032}', '\u{1037}'), ('\u{1039}', '\u{103a}'), + ('\u{103d}', '\u{103e}'), ('\u{1058}', '\u{1059}'), + ('\u{105e}', '\u{1060}'), ('\u{1071}', '\u{1074}'), + ('\u{1082}', '\u{1082}'), ('\u{1085}', '\u{1086}'), + ('\u{108d}', '\u{108d}'), ('\u{109d}', '\u{109d}'), ('ჼ', 'ჼ'), + ('\u{135d}', '\u{135f}'), ('\u{1712}', '\u{1714}'), + ('\u{1732}', '\u{1734}'), ('\u{1752}', '\u{1753}'), + ('\u{1772}', '\u{1773}'), ('\u{17b4}', '\u{17b5}'), + ('\u{17b7}', '\u{17bd}'), ('\u{17c6}', '\u{17c6}'), + ('\u{17c9}', '\u{17d3}'), ('ៗ', 'ៗ'), ('\u{17dd}', '\u{17dd}'), + ('\u{180b}', '\u{180e}'), ('ᡃ', 'ᡃ'), ('\u{1885}', '\u{1886}'), + ('\u{18a9}', '\u{18a9}'), ('\u{1920}', '\u{1922}'), + ('\u{1927}', '\u{1928}'), ('\u{1932}', '\u{1932}'), + ('\u{1939}', '\u{193b}'), ('\u{1a17}', '\u{1a18}'), + ('\u{1a1b}', '\u{1a1b}'), ('\u{1a56}', '\u{1a56}'), + ('\u{1a58}', '\u{1a5e}'), ('\u{1a60}', '\u{1a60}'), + ('\u{1a62}', '\u{1a62}'), ('\u{1a65}', '\u{1a6c}'), + ('\u{1a73}', '\u{1a7c}'), ('\u{1a7f}', '\u{1a7f}'), ('ᪧ', 'ᪧ'), + ('\u{1ab0}', '\u{1abe}'), ('\u{1b00}', '\u{1b03}'), + ('\u{1b34}', '\u{1b34}'), ('\u{1b36}', '\u{1b3a}'), + ('\u{1b3c}', '\u{1b3c}'), ('\u{1b42}', '\u{1b42}'), + ('\u{1b6b}', '\u{1b73}'), ('\u{1b80}', '\u{1b81}'), + ('\u{1ba2}', '\u{1ba5}'), ('\u{1ba8}', '\u{1ba9}'), + ('\u{1bab}', '\u{1bad}'), ('\u{1be6}', '\u{1be6}'), + ('\u{1be8}', '\u{1be9}'), ('\u{1bed}', '\u{1bed}'), + ('\u{1bef}', '\u{1bf1}'), ('\u{1c2c}', '\u{1c33}'), + ('\u{1c36}', '\u{1c37}'), ('ᱸ', 'ᱽ'), ('\u{1cd0}', '\u{1cd2}'), + ('\u{1cd4}', '\u{1ce0}'), ('\u{1ce2}', '\u{1ce8}'), + ('\u{1ced}', '\u{1ced}'), ('\u{1cf4}', '\u{1cf4}'), + ('\u{1cf8}', '\u{1cf9}'), ('ᴬ', 'ᵪ'), ('ᵸ', 'ᵸ'), + ('ᶛ', '\u{1df9}'), ('\u{1dfb}', '\u{1dff}'), ('᾽', '᾽'), + ('᾿', '῁'), ('῍', '῏'), ('῝', '῟'), ('῭', '`'), + ('´', '῾'), ('\u{200b}', '\u{200f}'), ('‘', '’'), ('․', '․'), + ('‧', '‧'), ('\u{202a}', '\u{202e}'), ('\u{2060}', '\u{2064}'), + ('\u{2066}', '\u{206f}'), ('ⁱ', 'ⁱ'), ('ⁿ', 'ⁿ'), ('ₐ', 'ₜ'), + ('\u{20d0}', '\u{20f0}'), ('ⱼ', 'ⱽ'), ('\u{2cef}', '\u{2cf1}'), + ('ⵯ', 'ⵯ'), ('\u{2d7f}', '\u{2d7f}'), ('\u{2de0}', '\u{2dff}'), + ('ⸯ', 'ⸯ'), ('々', '々'), ('\u{302a}', '\u{302d}'), ('〱', '〵'), + ('〻', '〻'), ('\u{3099}', 'ゞ'), ('ー', 'ヾ'), ('ꀕ', 'ꀕ'), + ('ꓸ', 'ꓽ'), ('ꘌ', 'ꘌ'), ('\u{a66f}', '\u{a672}'), + ('\u{a674}', '\u{a67d}'), ('ꙿ', 'ꙿ'), ('ꚜ', '\u{a69f}'), + ('\u{a6f0}', '\u{a6f1}'), ('꜀', '꜡'), ('ꝰ', 'ꝰ'), ('ꞈ', '꞊'), + ('ꟸ', 'ꟹ'), ('\u{a802}', '\u{a802}'), ('\u{a806}', '\u{a806}'), + ('\u{a80b}', '\u{a80b}'), ('\u{a825}', '\u{a826}'), + ('\u{a8c4}', '\u{a8c5}'), ('\u{a8e0}', '\u{a8f1}'), + ('\u{a8ff}', '\u{a8ff}'), ('\u{a926}', '\u{a92d}'), + ('\u{a947}', '\u{a951}'), ('\u{a980}', '\u{a982}'), + ('\u{a9b3}', '\u{a9b3}'), ('\u{a9b6}', '\u{a9b9}'), + ('\u{a9bc}', '\u{a9bc}'), ('ꧏ', 'ꧏ'), ('\u{a9e5}', 'ꧦ'), + ('\u{aa29}', '\u{aa2e}'), ('\u{aa31}', '\u{aa32}'), + ('\u{aa35}', '\u{aa36}'), ('\u{aa43}', '\u{aa43}'), + ('\u{aa4c}', '\u{aa4c}'), ('ꩰ', 'ꩰ'), ('\u{aa7c}', '\u{aa7c}'), + ('\u{aab0}', '\u{aab0}'), ('\u{aab2}', '\u{aab4}'), + ('\u{aab7}', '\u{aab8}'), ('\u{aabe}', '\u{aabf}'), + ('\u{aac1}', '\u{aac1}'), ('ꫝ', 'ꫝ'), ('\u{aaec}', '\u{aaed}'), + ('ꫳ', 'ꫴ'), ('\u{aaf6}', '\u{aaf6}'), ('꭛', 'ꭟ'), + ('\u{abe5}', '\u{abe5}'), ('\u{abe8}', '\u{abe8}'), + ('\u{abed}', '\u{abed}'), ('\u{fb1e}', '\u{fb1e}'), ('﮲', '﯁'), + ('\u{fe00}', '\u{fe0f}'), ('︓', '︓'), ('\u{fe20}', '\u{fe2f}'), + ('﹒', '﹒'), ('﹕', '﹕'), ('\u{feff}', '\u{feff}'), (''', '''), + ('.', '.'), (':', ':'), ('^', '^'), ('`', '`'), + ('ー', 'ー'), ('\u{ff9e}', '\u{ff9f}'), (' ̄', ' ̄'), + ('\u{fff9}', '\u{fffb}'), ('\u{101fd}', '\u{101fd}'), + ('\u{102e0}', '\u{102e0}'), ('\u{10376}', '\u{1037a}'), + ('\u{10a01}', '\u{10a03}'), ('\u{10a05}', '\u{10a06}'), + ('\u{10a0c}', '\u{10a0f}'), ('\u{10a38}', '\u{10a3a}'), + ('\u{10a3f}', '\u{10a3f}'), ('\u{10ae5}', '\u{10ae6}'), + ('\u{10d24}', '\u{10d27}'), ('\u{10f46}', '\u{10f50}'), + ('\u{11001}', '\u{11001}'), ('\u{11038}', '\u{11046}'), + ('\u{1107f}', '\u{11081}'), ('\u{110b3}', '\u{110b6}'), + ('\u{110b9}', '\u{110ba}'), ('\u{110bd}', '\u{110bd}'), + ('\u{110cd}', '\u{110cd}'), ('\u{11100}', '\u{11102}'), + ('\u{11127}', '\u{1112b}'), ('\u{1112d}', '\u{11134}'), + ('\u{11173}', '\u{11173}'), ('\u{11180}', '\u{11181}'), + ('\u{111b6}', '\u{111be}'), ('\u{111c9}', '\u{111cc}'), + ('\u{1122f}', '\u{11231}'), ('\u{11234}', '\u{11234}'), + ('\u{11236}', '\u{11237}'), ('\u{1123e}', '\u{1123e}'), + ('\u{112df}', '\u{112df}'), ('\u{112e3}', '\u{112ea}'), + ('\u{11300}', '\u{11301}'), ('\u{1133b}', '\u{1133c}'), + ('\u{11340}', '\u{11340}'), ('\u{11366}', '\u{1136c}'), + ('\u{11370}', '\u{11374}'), ('\u{11438}', '\u{1143f}'), + ('\u{11442}', '\u{11444}'), ('\u{11446}', '\u{11446}'), + ('\u{1145e}', '\u{1145e}'), ('\u{114b3}', '\u{114b8}'), + ('\u{114ba}', '\u{114ba}'), ('\u{114bf}', '\u{114c0}'), + ('\u{114c2}', '\u{114c3}'), ('\u{115b2}', '\u{115b5}'), + ('\u{115bc}', '\u{115bd}'), ('\u{115bf}', '\u{115c0}'), + ('\u{115dc}', '\u{115dd}'), ('\u{11633}', '\u{1163a}'), + ('\u{1163d}', '\u{1163d}'), ('\u{1163f}', '\u{11640}'), + ('\u{116ab}', '\u{116ab}'), ('\u{116ad}', '\u{116ad}'), + ('\u{116b0}', '\u{116b5}'), ('\u{116b7}', '\u{116b7}'), + ('\u{1171d}', '\u{1171f}'), ('\u{11722}', '\u{11725}'), + ('\u{11727}', '\u{1172b}'), ('\u{1182f}', '\u{11837}'), + ('\u{11839}', '\u{1183a}'), ('\u{11a01}', '\u{11a0a}'), + ('\u{11a33}', '\u{11a38}'), ('\u{11a3b}', '\u{11a3e}'), + ('\u{11a47}', '\u{11a47}'), ('\u{11a51}', '\u{11a56}'), + ('\u{11a59}', '\u{11a5b}'), ('\u{11a8a}', '\u{11a96}'), + ('\u{11a98}', '\u{11a99}'), ('\u{11c30}', '\u{11c36}'), + ('\u{11c38}', '\u{11c3d}'), ('\u{11c3f}', '\u{11c3f}'), + ('\u{11c92}', '\u{11ca7}'), ('\u{11caa}', '\u{11cb0}'), + ('\u{11cb2}', '\u{11cb3}'), ('\u{11cb5}', '\u{11cb6}'), + ('\u{11d31}', '\u{11d36}'), ('\u{11d3a}', '\u{11d3a}'), + ('\u{11d3c}', '\u{11d3d}'), ('\u{11d3f}', '\u{11d45}'), + ('\u{11d47}', '\u{11d47}'), ('\u{11d90}', '\u{11d91}'), + ('\u{11d95}', '\u{11d95}'), ('\u{11d97}', '\u{11d97}'), + ('\u{11ef3}', '\u{11ef4}'), ('\u{16af0}', '\u{16af4}'), + ('\u{16b30}', '\u{16b36}'), ('𖭀', '𖭃'), ('\u{16f8f}', '𖾟'), + ('𖿠', '𖿡'), ('\u{1bc9d}', '\u{1bc9e}'), ('\u{1bca0}', '\u{1bca3}'), + ('\u{1d167}', '\u{1d169}'), ('\u{1d173}', '\u{1d182}'), + ('\u{1d185}', '\u{1d18b}'), ('\u{1d1aa}', '\u{1d1ad}'), + ('\u{1d242}', '\u{1d244}'), ('\u{1da00}', '\u{1da36}'), + ('\u{1da3b}', '\u{1da6c}'), ('\u{1da75}', '\u{1da75}'), + ('\u{1da84}', '\u{1da84}'), ('\u{1da9b}', '\u{1da9f}'), + ('\u{1daa1}', '\u{1daaf}'), ('\u{1e000}', '\u{1e006}'), + ('\u{1e008}', '\u{1e018}'), ('\u{1e01b}', '\u{1e021}'), + ('\u{1e023}', '\u{1e024}'), ('\u{1e026}', '\u{1e02a}'), + ('\u{1e8d0}', '\u{1e8d6}'), ('\u{1e944}', '\u{1e94a}'), ('🏻', '🏿'), + ('\u{e0001}', '\u{e0001}'), ('\u{e0020}', '\u{e007f}'), + ('\u{e0100}', '\u{e01ef}'), ]; pub const CASED: &'static [(char, char)] = &[ ('A', 'Z'), ('a', 'z'), ('ª', 'ª'), ('µ', 'µ'), ('º', 'º'), ('À', 'Ö'), ('Ø', 'ö'), ('ø', 'ƺ'), ('Ƽ', 'ƿ'), ('DŽ', 'ʓ'), - ('ʕ', 'ʸ'), ('ˀ', 'ˁ'), ('ˠ', 'ˤ'), ('ͅ', 'ͅ'), ('Ͱ', 'ͳ'), - ('Ͷ', 'ͷ'), ('ͺ', 'ͽ'), ('Ϳ', 'Ϳ'), ('Ά', 'Ά'), ('Έ', 'Ί'), - ('Ό', 'Ό'), ('Ύ', 'Ρ'), ('Σ', 'ϵ'), ('Ϸ', 'ҁ'), ('Ҋ', 'ԯ'), - ('Ա', 'Ֆ'), ('\u{560}', '\u{588}'), ('Ⴀ', 'Ⴥ'), ('Ⴧ', 'Ⴧ'), + ('ʕ', 'ʸ'), ('ˀ', 'ˁ'), ('ˠ', 'ˤ'), ('\u{345}', '\u{345}'), + ('Ͱ', 'ͳ'), ('Ͷ', 'ͷ'), ('ͺ', 'ͽ'), ('Ϳ', 'Ϳ'), ('Ά', 'Ά'), + ('Έ', 'Ί'), ('Ό', 'Ό'), ('Ύ', 'Ρ'), ('Σ', 'ϵ'), ('Ϸ', 'ҁ'), + ('Ҋ', 'ԯ'), ('Ա', 'Ֆ'), ('ՠ', 'ֈ'), ('Ⴀ', 'Ⴥ'), ('Ⴧ', 'Ⴧ'), ('Ⴭ', 'Ⴭ'), ('ა', 'ჺ'), ('ჽ', 'ჿ'), ('Ꭰ', 'Ᏽ'), - ('ᏸ', 'ᏽ'), ('ᲀ', 'ᲈ'), ('\u{1c90}', '\u{1cba}'), - ('\u{1cbd}', '\u{1cbf}'), ('ᴀ', 'ᶿ'), ('Ḁ', 'ἕ'), ('Ἐ', 'Ἕ'), - ('ἠ', 'ὅ'), ('Ὀ', 'Ὅ'), ('ὐ', 'ὗ'), ('Ὑ', 'Ὑ'), - ('Ὓ', 'Ὓ'), ('Ὕ', 'Ὕ'), ('Ὗ', 'ώ'), ('ᾀ', 'ᾴ'), - ('ᾶ', 'ᾼ'), ('ι', 'ι'), ('ῂ', 'ῄ'), ('ῆ', 'ῌ'), - ('ῐ', 'ΐ'), ('ῖ', 'Ί'), ('ῠ', 'Ῥ'), ('ῲ', 'ῴ'), - ('ῶ', 'ῼ'), ('ⁱ', 'ⁱ'), ('ⁿ', 'ⁿ'), ('ₐ', 'ₜ'), - ('ℂ', 'ℂ'), ('ℇ', 'ℇ'), ('ℊ', 'ℓ'), ('ℕ', 'ℕ'), - ('ℙ', 'ℝ'), ('ℤ', 'ℤ'), ('Ω', 'Ω'), ('ℨ', 'ℨ'), - ('K', 'ℭ'), ('ℯ', 'ℴ'), ('ℹ', 'ℹ'), ('ℼ', 'ℿ'), - ('ⅅ', 'ⅉ'), ('ⅎ', 'ⅎ'), ('Ⅰ', 'ⅿ'), ('Ↄ', 'ↄ'), - ('Ⓐ', 'ⓩ'), ('Ⰰ', 'Ⱞ'), ('ⰰ', 'ⱞ'), ('Ⱡ', 'ⳤ'), - ('Ⳬ', 'ⳮ'), ('Ⳳ', 'ⳳ'), ('ⴀ', 'ⴥ'), ('ⴧ', 'ⴧ'), - ('ⴭ', 'ⴭ'), ('Ꙁ', 'ꙭ'), ('Ꚁ', 'ꚝ'), ('Ꜣ', 'ꞇ'), - ('Ꞌ', 'ꞎ'), ('Ꞑ', '\u{a7b9}'), ('ꟸ', 'ꟺ'), ('ꬰ', 'ꭚ'), - ('ꭜ', 'ꭥ'), ('ꭰ', 'ꮿ'), ('ff', 'st'), ('ﬓ', 'ﬗ'), - ('A', 'Z'), ('a', 'z'), ('𐐀', '𐑏'), ('𐒰', '𐓓'), - ('𐓘', '𐓻'), ('𐲀', '𐲲'), ('𐳀', '𐳲'), ('𑢠', '𑣟'), - ('\u{16e40}', '\u{16e7f}'), ('𝐀', '𝑔'), ('𝑖', '𝒜'), - ('𝒞', '𝒟'), ('𝒢', '𝒢'), ('𝒥', '𝒦'), ('𝒩', '𝒬'), - ('𝒮', '𝒹'), ('𝒻', '𝒻'), ('𝒽', '𝓃'), ('𝓅', '𝔅'), - ('𝔇', '𝔊'), ('𝔍', '𝔔'), ('𝔖', '𝔜'), ('𝔞', '𝔹'), - ('𝔻', '𝔾'), ('𝕀', '𝕄'), ('𝕆', '𝕆'), ('𝕊', '𝕐'), - ('𝕒', '𝚥'), ('𝚨', '𝛀'), ('𝛂', '𝛚'), ('𝛜', '𝛺'), - ('𝛼', '𝜔'), ('𝜖', '𝜴'), ('𝜶', '𝝎'), ('𝝐', '𝝮'), - ('𝝰', '𝞈'), ('𝞊', '𝞨'), ('𝞪', '𝟂'), ('𝟄', '𝟋'), - ('𞤀', '𞥃'), ('🄰', '🅉'), ('🅐', '🅩'), ('🅰', '🆉'), + ('ᏸ', 'ᏽ'), ('ᲀ', 'ᲈ'), ('Ა', 'Ჺ'), ('Ჽ', 'Ჿ'), + ('ᴀ', 'ᶿ'), ('Ḁ', 'ἕ'), ('Ἐ', 'Ἕ'), ('ἠ', 'ὅ'), + ('Ὀ', 'Ὅ'), ('ὐ', 'ὗ'), ('Ὑ', 'Ὑ'), ('Ὓ', 'Ὓ'), + ('Ὕ', 'Ὕ'), ('Ὗ', 'ώ'), ('ᾀ', 'ᾴ'), ('ᾶ', 'ᾼ'), + ('ι', 'ι'), ('ῂ', 'ῄ'), ('ῆ', 'ῌ'), ('ῐ', 'ΐ'), + ('ῖ', 'Ί'), ('ῠ', 'Ῥ'), ('ῲ', 'ῴ'), ('ῶ', 'ῼ'), + ('ⁱ', 'ⁱ'), ('ⁿ', 'ⁿ'), ('ₐ', 'ₜ'), ('ℂ', 'ℂ'), + ('ℇ', 'ℇ'), ('ℊ', 'ℓ'), ('ℕ', 'ℕ'), ('ℙ', 'ℝ'), + ('ℤ', 'ℤ'), ('Ω', 'Ω'), ('ℨ', 'ℨ'), ('K', 'ℭ'), + ('ℯ', 'ℴ'), ('ℹ', 'ℹ'), ('ℼ', 'ℿ'), ('ⅅ', 'ⅉ'), + ('ⅎ', 'ⅎ'), ('Ⅰ', 'ⅿ'), ('Ↄ', 'ↄ'), ('Ⓐ', 'ⓩ'), + ('Ⰰ', 'Ⱞ'), ('ⰰ', 'ⱞ'), ('Ⱡ', 'ⳤ'), ('Ⳬ', 'ⳮ'), + ('Ⳳ', 'ⳳ'), ('ⴀ', 'ⴥ'), ('ⴧ', 'ⴧ'), ('ⴭ', 'ⴭ'), + ('Ꙁ', 'ꙭ'), ('Ꚁ', 'ꚝ'), ('Ꜣ', 'ꞇ'), ('Ꞌ', 'ꞎ'), + ('Ꞑ', 'ꞹ'), ('ꟸ', 'ꟺ'), ('ꬰ', 'ꭚ'), ('ꭜ', 'ꭥ'), + ('ꭰ', 'ꮿ'), ('ff', 'st'), ('ﬓ', 'ﬗ'), ('A', 'Z'), + ('a', 'z'), ('𐐀', '𐑏'), ('𐒰', '𐓓'), ('𐓘', '𐓻'), + ('𐲀', '𐲲'), ('𐳀', '𐳲'), ('𑢠', '𑣟'), ('𖹀', '𖹿'), + ('𝐀', '𝑔'), ('𝑖', '𝒜'), ('𝒞', '𝒟'), ('𝒢', '𝒢'), + ('𝒥', '𝒦'), ('𝒩', '𝒬'), ('𝒮', '𝒹'), ('𝒻', '𝒻'), + ('𝒽', '𝓃'), ('𝓅', '𝔅'), ('𝔇', '𝔊'), ('𝔍', '𝔔'), + ('𝔖', '𝔜'), ('𝔞', '𝔹'), ('𝔻', '𝔾'), ('𝕀', '𝕄'), + ('𝕆', '𝕆'), ('𝕊', '𝕐'), ('𝕒', '𝚥'), ('𝚨', '𝛀'), + ('𝛂', '𝛚'), ('𝛜', '𝛺'), ('𝛼', '𝜔'), ('𝜖', '𝜴'), + ('𝜶', '𝝎'), ('𝝐', '𝝮'), ('𝝰', '𝞈'), ('𝞊', '𝞨'), + ('𝞪', '𝟂'), ('𝟄', '𝟋'), ('𞤀', '𞥃'), ('🄰', '🅉'), + ('🅐', '🅩'), ('🅰', '🆉'), ]; pub const CHANGES_WHEN_CASEFOLDED: &'static [(char, char)] = &[ @@ -396,115 +461,115 @@ ('Ȥ', 'Ȥ'), ('Ȧ', 'Ȧ'), ('Ȩ', 'Ȩ'), ('Ȫ', 'Ȫ'), ('Ȭ', 'Ȭ'), ('Ȯ', 'Ȯ'), ('Ȱ', 'Ȱ'), ('Ȳ', 'Ȳ'), ('Ⱥ', 'Ȼ'), ('Ƚ', 'Ⱦ'), ('Ɂ', 'Ɂ'), ('Ƀ', 'Ɇ'), ('Ɉ', 'Ɉ'), ('Ɋ', 'Ɋ'), ('Ɍ', 'Ɍ'), - ('Ɏ', 'Ɏ'), ('ͅ', 'ͅ'), ('Ͱ', 'Ͱ'), ('Ͳ', 'Ͳ'), ('Ͷ', 'Ͷ'), - ('Ϳ', 'Ϳ'), ('Ά', 'Ά'), ('Έ', 'Ί'), ('Ό', 'Ό'), ('Ύ', 'Ώ'), - ('Α', 'Ρ'), ('Σ', 'Ϋ'), ('ς', 'ς'), ('Ϗ', 'ϑ'), ('ϕ', 'ϖ'), - ('Ϙ', 'Ϙ'), ('Ϛ', 'Ϛ'), ('Ϝ', 'Ϝ'), ('Ϟ', 'Ϟ'), ('Ϡ', 'Ϡ'), - ('Ϣ', 'Ϣ'), ('Ϥ', 'Ϥ'), ('Ϧ', 'Ϧ'), ('Ϩ', 'Ϩ'), ('Ϫ', 'Ϫ'), - ('Ϭ', 'Ϭ'), ('Ϯ', 'Ϯ'), ('ϰ', 'ϱ'), ('ϴ', 'ϵ'), ('Ϸ', 'Ϸ'), - ('Ϲ', 'Ϻ'), ('Ͻ', 'Я'), ('Ѡ', 'Ѡ'), ('Ѣ', 'Ѣ'), ('Ѥ', 'Ѥ'), - ('Ѧ', 'Ѧ'), ('Ѩ', 'Ѩ'), ('Ѫ', 'Ѫ'), ('Ѭ', 'Ѭ'), ('Ѯ', 'Ѯ'), - ('Ѱ', 'Ѱ'), ('Ѳ', 'Ѳ'), ('Ѵ', 'Ѵ'), ('Ѷ', 'Ѷ'), ('Ѹ', 'Ѹ'), - ('Ѻ', 'Ѻ'), ('Ѽ', 'Ѽ'), ('Ѿ', 'Ѿ'), ('Ҁ', 'Ҁ'), ('Ҋ', 'Ҋ'), - ('Ҍ', 'Ҍ'), ('Ҏ', 'Ҏ'), ('Ґ', 'Ґ'), ('Ғ', 'Ғ'), ('Ҕ', 'Ҕ'), - ('Җ', 'Җ'), ('Ҙ', 'Ҙ'), ('Қ', 'Қ'), ('Ҝ', 'Ҝ'), ('Ҟ', 'Ҟ'), - ('Ҡ', 'Ҡ'), ('Ң', 'Ң'), ('Ҥ', 'Ҥ'), ('Ҧ', 'Ҧ'), ('Ҩ', 'Ҩ'), - ('Ҫ', 'Ҫ'), ('Ҭ', 'Ҭ'), ('Ү', 'Ү'), ('Ұ', 'Ұ'), ('Ҳ', 'Ҳ'), - ('Ҵ', 'Ҵ'), ('Ҷ', 'Ҷ'), ('Ҹ', 'Ҹ'), ('Һ', 'Һ'), ('Ҽ', 'Ҽ'), - ('Ҿ', 'Ҿ'), ('Ӏ', 'Ӂ'), ('Ӄ', 'Ӄ'), ('Ӆ', 'Ӆ'), ('Ӈ', 'Ӈ'), - ('Ӊ', 'Ӊ'), ('Ӌ', 'Ӌ'), ('Ӎ', 'Ӎ'), ('Ӑ', 'Ӑ'), ('Ӓ', 'Ӓ'), - ('Ӕ', 'Ӕ'), ('Ӗ', 'Ӗ'), ('Ә', 'Ә'), ('Ӛ', 'Ӛ'), ('Ӝ', 'Ӝ'), - ('Ӟ', 'Ӟ'), ('Ӡ', 'Ӡ'), ('Ӣ', 'Ӣ'), ('Ӥ', 'Ӥ'), ('Ӧ', 'Ӧ'), - ('Ө', 'Ө'), ('Ӫ', 'Ӫ'), ('Ӭ', 'Ӭ'), ('Ӯ', 'Ӯ'), ('Ӱ', 'Ӱ'), - ('Ӳ', 'Ӳ'), ('Ӵ', 'Ӵ'), ('Ӷ', 'Ӷ'), ('Ӹ', 'Ӹ'), ('Ӻ', 'Ӻ'), - ('Ӽ', 'Ӽ'), ('Ӿ', 'Ӿ'), ('Ԁ', 'Ԁ'), ('Ԃ', 'Ԃ'), ('Ԅ', 'Ԅ'), - ('Ԇ', 'Ԇ'), ('Ԉ', 'Ԉ'), ('Ԋ', 'Ԋ'), ('Ԍ', 'Ԍ'), ('Ԏ', 'Ԏ'), - ('Ԑ', 'Ԑ'), ('Ԓ', 'Ԓ'), ('Ԕ', 'Ԕ'), ('Ԗ', 'Ԗ'), ('Ԙ', 'Ԙ'), - ('Ԛ', 'Ԛ'), ('Ԝ', 'Ԝ'), ('Ԟ', 'Ԟ'), ('Ԡ', 'Ԡ'), ('Ԣ', 'Ԣ'), - ('Ԥ', 'Ԥ'), ('Ԧ', 'Ԧ'), ('Ԩ', 'Ԩ'), ('Ԫ', 'Ԫ'), ('Ԭ', 'Ԭ'), - ('Ԯ', 'Ԯ'), ('Ա', 'Ֆ'), ('և', 'և'), ('Ⴀ', 'Ⴥ'), ('Ⴧ', 'Ⴧ'), - ('Ⴭ', 'Ⴭ'), ('ᏸ', 'ᏽ'), ('ᲀ', 'ᲈ'), ('\u{1c90}', '\u{1cba}'), - ('\u{1cbd}', '\u{1cbf}'), ('Ḁ', 'Ḁ'), ('Ḃ', 'Ḃ'), ('Ḅ', 'Ḅ'), - ('Ḇ', 'Ḇ'), ('Ḉ', 'Ḉ'), ('Ḋ', 'Ḋ'), ('Ḍ', 'Ḍ'), - ('Ḏ', 'Ḏ'), ('Ḑ', 'Ḑ'), ('Ḓ', 'Ḓ'), ('Ḕ', 'Ḕ'), - ('Ḗ', 'Ḗ'), ('Ḙ', 'Ḙ'), ('Ḛ', 'Ḛ'), ('Ḝ', 'Ḝ'), - ('Ḟ', 'Ḟ'), ('Ḡ', 'Ḡ'), ('Ḣ', 'Ḣ'), ('Ḥ', 'Ḥ'), - ('Ḧ', 'Ḧ'), ('Ḩ', 'Ḩ'), ('Ḫ', 'Ḫ'), ('Ḭ', 'Ḭ'), - ('Ḯ', 'Ḯ'), ('Ḱ', 'Ḱ'), ('Ḳ', 'Ḳ'), ('Ḵ', 'Ḵ'), - ('Ḷ', 'Ḷ'), ('Ḹ', 'Ḹ'), ('Ḻ', 'Ḻ'), ('Ḽ', 'Ḽ'), - ('Ḿ', 'Ḿ'), ('Ṁ', 'Ṁ'), ('Ṃ', 'Ṃ'), ('Ṅ', 'Ṅ'), - ('Ṇ', 'Ṇ'), ('Ṉ', 'Ṉ'), ('Ṋ', 'Ṋ'), ('Ṍ', 'Ṍ'), - ('Ṏ', 'Ṏ'), ('Ṑ', 'Ṑ'), ('Ṓ', 'Ṓ'), ('Ṕ', 'Ṕ'), - ('Ṗ', 'Ṗ'), ('Ṙ', 'Ṙ'), ('Ṛ', 'Ṛ'), ('Ṝ', 'Ṝ'), - ('Ṟ', 'Ṟ'), ('Ṡ', 'Ṡ'), ('Ṣ', 'Ṣ'), ('Ṥ', 'Ṥ'), - ('Ṧ', 'Ṧ'), ('Ṩ', 'Ṩ'), ('Ṫ', 'Ṫ'), ('Ṭ', 'Ṭ'), - ('Ṯ', 'Ṯ'), ('Ṱ', 'Ṱ'), ('Ṳ', 'Ṳ'), ('Ṵ', 'Ṵ'), - ('Ṷ', 'Ṷ'), ('Ṹ', 'Ṹ'), ('Ṻ', 'Ṻ'), ('Ṽ', 'Ṽ'), - ('Ṿ', 'Ṿ'), ('Ẁ', 'Ẁ'), ('Ẃ', 'Ẃ'), ('Ẅ', 'Ẅ'), - ('Ẇ', 'Ẇ'), ('Ẉ', 'Ẉ'), ('Ẋ', 'Ẋ'), ('Ẍ', 'Ẍ'), - ('Ẏ', 'Ẏ'), ('Ẑ', 'Ẑ'), ('Ẓ', 'Ẓ'), ('Ẕ', 'Ẕ'), - ('ẚ', 'ẛ'), ('ẞ', 'ẞ'), ('Ạ', 'Ạ'), ('Ả', 'Ả'), - ('Ấ', 'Ấ'), ('Ầ', 'Ầ'), ('Ẩ', 'Ẩ'), ('Ẫ', 'Ẫ'), - ('Ậ', 'Ậ'), ('Ắ', 'Ắ'), ('Ằ', 'Ằ'), ('Ẳ', 'Ẳ'), - ('Ẵ', 'Ẵ'), ('Ặ', 'Ặ'), ('Ẹ', 'Ẹ'), ('Ẻ', 'Ẻ'), - ('Ẽ', 'Ẽ'), ('Ế', 'Ế'), ('Ề', 'Ề'), ('Ể', 'Ể'), - ('Ễ', 'Ễ'), ('Ệ', 'Ệ'), ('Ỉ', 'Ỉ'), ('Ị', 'Ị'), - ('Ọ', 'Ọ'), ('Ỏ', 'Ỏ'), ('Ố', 'Ố'), ('Ồ', 'Ồ'), - ('Ổ', 'Ổ'), ('Ỗ', 'Ỗ'), ('Ộ', 'Ộ'), ('Ớ', 'Ớ'), - ('Ờ', 'Ờ'), ('Ở', 'Ở'), ('Ỡ', 'Ỡ'), ('Ợ', 'Ợ'), - ('Ụ', 'Ụ'), ('Ủ', 'Ủ'), ('Ứ', 'Ứ'), ('Ừ', 'Ừ'), - ('Ử', 'Ử'), ('Ữ', 'Ữ'), ('Ự', 'Ự'), ('Ỳ', 'Ỳ'), - ('Ỵ', 'Ỵ'), ('Ỷ', 'Ỷ'), ('Ỹ', 'Ỹ'), ('Ỻ', 'Ỻ'), - ('Ỽ', 'Ỽ'), ('Ỿ', 'Ỿ'), ('Ἀ', 'Ἇ'), ('Ἐ', 'Ἕ'), - ('Ἠ', 'Ἧ'), ('Ἰ', 'Ἷ'), ('Ὀ', 'Ὅ'), ('Ὑ', 'Ὑ'), - ('Ὓ', 'Ὓ'), ('Ὕ', 'Ὕ'), ('Ὗ', 'Ὗ'), ('Ὠ', 'Ὧ'), - ('ᾀ', 'ᾯ'), ('ᾲ', 'ᾴ'), ('ᾷ', 'ᾼ'), ('ῂ', 'ῄ'), - ('ῇ', 'ῌ'), ('Ῐ', 'Ί'), ('Ῠ', 'Ῥ'), ('ῲ', 'ῴ'), - ('ῷ', 'ῼ'), ('Ω', 'Ω'), ('K', 'Å'), ('Ⅎ', 'Ⅎ'), - ('Ⅰ', 'Ⅿ'), ('Ↄ', 'Ↄ'), ('Ⓐ', 'Ⓩ'), ('Ⰰ', 'Ⱞ'), - ('Ⱡ', 'Ⱡ'), ('Ɫ', 'Ɽ'), ('Ⱨ', 'Ⱨ'), ('Ⱪ', 'Ⱪ'), - ('Ⱬ', 'Ⱬ'), ('Ɑ', 'Ɒ'), ('Ⱳ', 'Ⱳ'), ('Ⱶ', 'Ⱶ'), - ('Ȿ', 'Ⲁ'), ('Ⲃ', 'Ⲃ'), ('Ⲅ', 'Ⲅ'), ('Ⲇ', 'Ⲇ'), - ('Ⲉ', 'Ⲉ'), ('Ⲋ', 'Ⲋ'), ('Ⲍ', 'Ⲍ'), ('Ⲏ', 'Ⲏ'), - ('Ⲑ', 'Ⲑ'), ('Ⲓ', 'Ⲓ'), ('Ⲕ', 'Ⲕ'), ('Ⲗ', 'Ⲗ'), - ('Ⲙ', 'Ⲙ'), ('Ⲛ', 'Ⲛ'), ('Ⲝ', 'Ⲝ'), ('Ⲟ', 'Ⲟ'), - ('Ⲡ', 'Ⲡ'), ('Ⲣ', 'Ⲣ'), ('Ⲥ', 'Ⲥ'), ('Ⲧ', 'Ⲧ'), - ('Ⲩ', 'Ⲩ'), ('Ⲫ', 'Ⲫ'), ('Ⲭ', 'Ⲭ'), ('Ⲯ', 'Ⲯ'), - ('Ⲱ', 'Ⲱ'), ('Ⲳ', 'Ⲳ'), ('Ⲵ', 'Ⲵ'), ('Ⲷ', 'Ⲷ'), - ('Ⲹ', 'Ⲹ'), ('Ⲻ', 'Ⲻ'), ('Ⲽ', 'Ⲽ'), ('Ⲿ', 'Ⲿ'), - ('Ⳁ', 'Ⳁ'), ('Ⳃ', 'Ⳃ'), ('Ⳅ', 'Ⳅ'), ('Ⳇ', 'Ⳇ'), - ('Ⳉ', 'Ⳉ'), ('Ⳋ', 'Ⳋ'), ('Ⳍ', 'Ⳍ'), ('Ⳏ', 'Ⳏ'), - ('Ⳑ', 'Ⳑ'), ('Ⳓ', 'Ⳓ'), ('Ⳕ', 'Ⳕ'), ('Ⳗ', 'Ⳗ'), - ('Ⳙ', 'Ⳙ'), ('Ⳛ', 'Ⳛ'), ('Ⳝ', 'Ⳝ'), ('Ⳟ', 'Ⳟ'), - ('Ⳡ', 'Ⳡ'), ('Ⳣ', 'Ⳣ'), ('Ⳬ', 'Ⳬ'), ('Ⳮ', 'Ⳮ'), - ('Ⳳ', 'Ⳳ'), ('Ꙁ', 'Ꙁ'), ('Ꙃ', 'Ꙃ'), ('Ꙅ', 'Ꙅ'), - ('Ꙇ', 'Ꙇ'), ('Ꙉ', 'Ꙉ'), ('Ꙋ', 'Ꙋ'), ('Ꙍ', 'Ꙍ'), - ('Ꙏ', 'Ꙏ'), ('Ꙑ', 'Ꙑ'), ('Ꙓ', 'Ꙓ'), ('Ꙕ', 'Ꙕ'), - ('Ꙗ', 'Ꙗ'), ('Ꙙ', 'Ꙙ'), ('Ꙛ', 'Ꙛ'), ('Ꙝ', 'Ꙝ'), - ('Ꙟ', 'Ꙟ'), ('Ꙡ', 'Ꙡ'), ('Ꙣ', 'Ꙣ'), ('Ꙥ', 'Ꙥ'), - ('Ꙧ', 'Ꙧ'), ('Ꙩ', 'Ꙩ'), ('Ꙫ', 'Ꙫ'), ('Ꙭ', 'Ꙭ'), - ('Ꚁ', 'Ꚁ'), ('Ꚃ', 'Ꚃ'), ('Ꚅ', 'Ꚅ'), ('Ꚇ', 'Ꚇ'), - ('Ꚉ', 'Ꚉ'), ('Ꚋ', 'Ꚋ'), ('Ꚍ', 'Ꚍ'), ('Ꚏ', 'Ꚏ'), - ('Ꚑ', 'Ꚑ'), ('Ꚓ', 'Ꚓ'), ('Ꚕ', 'Ꚕ'), ('Ꚗ', 'Ꚗ'), - ('Ꚙ', 'Ꚙ'), ('Ꚛ', 'Ꚛ'), ('Ꜣ', 'Ꜣ'), ('Ꜥ', 'Ꜥ'), - ('Ꜧ', 'Ꜧ'), ('Ꜩ', 'Ꜩ'), ('Ꜫ', 'Ꜫ'), ('Ꜭ', 'Ꜭ'), - ('Ꜯ', 'Ꜯ'), ('Ꜳ', 'Ꜳ'), ('Ꜵ', 'Ꜵ'), ('Ꜷ', 'Ꜷ'), - ('Ꜹ', 'Ꜹ'), ('Ꜻ', 'Ꜻ'), ('Ꜽ', 'Ꜽ'), ('Ꜿ', 'Ꜿ'), - ('Ꝁ', 'Ꝁ'), ('Ꝃ', 'Ꝃ'), ('Ꝅ', 'Ꝅ'), ('Ꝇ', 'Ꝇ'), - ('Ꝉ', 'Ꝉ'), ('Ꝋ', 'Ꝋ'), ('Ꝍ', 'Ꝍ'), ('Ꝏ', 'Ꝏ'), - ('Ꝑ', 'Ꝑ'), ('Ꝓ', 'Ꝓ'), ('Ꝕ', 'Ꝕ'), ('Ꝗ', 'Ꝗ'), - ('Ꝙ', 'Ꝙ'), ('Ꝛ', 'Ꝛ'), ('Ꝝ', 'Ꝝ'), ('Ꝟ', 'Ꝟ'), - ('Ꝡ', 'Ꝡ'), ('Ꝣ', 'Ꝣ'), ('Ꝥ', 'Ꝥ'), ('Ꝧ', 'Ꝧ'), - ('Ꝩ', 'Ꝩ'), ('Ꝫ', 'Ꝫ'), ('Ꝭ', 'Ꝭ'), ('Ꝯ', 'Ꝯ'), - ('Ꝺ', 'Ꝺ'), ('Ꝼ', 'Ꝼ'), ('Ᵹ', 'Ꝿ'), ('Ꞁ', 'Ꞁ'), - ('Ꞃ', 'Ꞃ'), ('Ꞅ', 'Ꞅ'), ('Ꞇ', 'Ꞇ'), ('Ꞌ', 'Ꞌ'), - ('Ɥ', 'Ɥ'), ('Ꞑ', 'Ꞑ'), ('Ꞓ', 'Ꞓ'), ('Ꞗ', 'Ꞗ'), - ('Ꞙ', 'Ꞙ'), ('Ꞛ', 'Ꞛ'), ('Ꞝ', 'Ꞝ'), ('Ꞟ', 'Ꞟ'), - ('Ꞡ', 'Ꞡ'), ('Ꞣ', 'Ꞣ'), ('Ꞥ', 'Ꞥ'), ('Ꞧ', 'Ꞧ'), - ('Ꞩ', 'Ꞩ'), ('Ɦ', 'Ɪ'), ('Ʞ', 'Ꞵ'), ('Ꞷ', 'Ꞷ'), - ('\u{a7b8}', '\u{a7b8}'), ('ꭰ', 'ꮿ'), ('ff', 'st'), ('ﬓ', 'ﬗ'), - ('A', 'Z'), ('𐐀', '𐐧'), ('𐒰', '𐓓'), ('𐲀', '𐲲'), - ('𑢠', '𑢿'), ('\u{16e40}', '\u{16e5f}'), ('𞤀', '𞤡'), + ('Ɏ', 'Ɏ'), ('\u{345}', '\u{345}'), ('Ͱ', 'Ͱ'), ('Ͳ', 'Ͳ'), + ('Ͷ', 'Ͷ'), ('Ϳ', 'Ϳ'), ('Ά', 'Ά'), ('Έ', 'Ί'), ('Ό', 'Ό'), + ('Ύ', 'Ώ'), ('Α', 'Ρ'), ('Σ', 'Ϋ'), ('ς', 'ς'), ('Ϗ', 'ϑ'), + ('ϕ', 'ϖ'), ('Ϙ', 'Ϙ'), ('Ϛ', 'Ϛ'), ('Ϝ', 'Ϝ'), ('Ϟ', 'Ϟ'), + ('Ϡ', 'Ϡ'), ('Ϣ', 'Ϣ'), ('Ϥ', 'Ϥ'), ('Ϧ', 'Ϧ'), ('Ϩ', 'Ϩ'), + ('Ϫ', 'Ϫ'), ('Ϭ', 'Ϭ'), ('Ϯ', 'Ϯ'), ('ϰ', 'ϱ'), ('ϴ', 'ϵ'), + ('Ϸ', 'Ϸ'), ('Ϲ', 'Ϻ'), ('Ͻ', 'Я'), ('Ѡ', 'Ѡ'), ('Ѣ', 'Ѣ'), + ('Ѥ', 'Ѥ'), ('Ѧ', 'Ѧ'), ('Ѩ', 'Ѩ'), ('Ѫ', 'Ѫ'), ('Ѭ', 'Ѭ'), + ('Ѯ', 'Ѯ'), ('Ѱ', 'Ѱ'), ('Ѳ', 'Ѳ'), ('Ѵ', 'Ѵ'), ('Ѷ', 'Ѷ'), + ('Ѹ', 'Ѹ'), ('Ѻ', 'Ѻ'), ('Ѽ', 'Ѽ'), ('Ѿ', 'Ѿ'), ('Ҁ', 'Ҁ'), + ('Ҋ', 'Ҋ'), ('Ҍ', 'Ҍ'), ('Ҏ', 'Ҏ'), ('Ґ', 'Ґ'), ('Ғ', 'Ғ'), + ('Ҕ', 'Ҕ'), ('Җ', 'Җ'), ('Ҙ', 'Ҙ'), ('Қ', 'Қ'), ('Ҝ', 'Ҝ'), + ('Ҟ', 'Ҟ'), ('Ҡ', 'Ҡ'), ('Ң', 'Ң'), ('Ҥ', 'Ҥ'), ('Ҧ', 'Ҧ'), + ('Ҩ', 'Ҩ'), ('Ҫ', 'Ҫ'), ('Ҭ', 'Ҭ'), ('Ү', 'Ү'), ('Ұ', 'Ұ'), + ('Ҳ', 'Ҳ'), ('Ҵ', 'Ҵ'), ('Ҷ', 'Ҷ'), ('Ҹ', 'Ҹ'), ('Һ', 'Һ'), + ('Ҽ', 'Ҽ'), ('Ҿ', 'Ҿ'), ('Ӏ', 'Ӂ'), ('Ӄ', 'Ӄ'), ('Ӆ', 'Ӆ'), + ('Ӈ', 'Ӈ'), ('Ӊ', 'Ӊ'), ('Ӌ', 'Ӌ'), ('Ӎ', 'Ӎ'), ('Ӑ', 'Ӑ'), + ('Ӓ', 'Ӓ'), ('Ӕ', 'Ӕ'), ('Ӗ', 'Ӗ'), ('Ә', 'Ә'), ('Ӛ', 'Ӛ'), + ('Ӝ', 'Ӝ'), ('Ӟ', 'Ӟ'), ('Ӡ', 'Ӡ'), ('Ӣ', 'Ӣ'), ('Ӥ', 'Ӥ'), + ('Ӧ', 'Ӧ'), ('Ө', 'Ө'), ('Ӫ', 'Ӫ'), ('Ӭ', 'Ӭ'), ('Ӯ', 'Ӯ'), + ('Ӱ', 'Ӱ'), ('Ӳ', 'Ӳ'), ('Ӵ', 'Ӵ'), ('Ӷ', 'Ӷ'), ('Ӹ', 'Ӹ'), + ('Ӻ', 'Ӻ'), ('Ӽ', 'Ӽ'), ('Ӿ', 'Ӿ'), ('Ԁ', 'Ԁ'), ('Ԃ', 'Ԃ'), + ('Ԅ', 'Ԅ'), ('Ԇ', 'Ԇ'), ('Ԉ', 'Ԉ'), ('Ԋ', 'Ԋ'), ('Ԍ', 'Ԍ'), + ('Ԏ', 'Ԏ'), ('Ԑ', 'Ԑ'), ('Ԓ', 'Ԓ'), ('Ԕ', 'Ԕ'), ('Ԗ', 'Ԗ'), + ('Ԙ', 'Ԙ'), ('Ԛ', 'Ԛ'), ('Ԝ', 'Ԝ'), ('Ԟ', 'Ԟ'), ('Ԡ', 'Ԡ'), + ('Ԣ', 'Ԣ'), ('Ԥ', 'Ԥ'), ('Ԧ', 'Ԧ'), ('Ԩ', 'Ԩ'), ('Ԫ', 'Ԫ'), + ('Ԭ', 'Ԭ'), ('Ԯ', 'Ԯ'), ('Ա', 'Ֆ'), ('և', 'և'), ('Ⴀ', 'Ⴥ'), + ('Ⴧ', 'Ⴧ'), ('Ⴭ', 'Ⴭ'), ('ᏸ', 'ᏽ'), ('ᲀ', 'ᲈ'), + ('Ა', 'Ჺ'), ('Ჽ', 'Ჿ'), ('Ḁ', 'Ḁ'), ('Ḃ', 'Ḃ'), + ('Ḅ', 'Ḅ'), ('Ḇ', 'Ḇ'), ('Ḉ', 'Ḉ'), ('Ḋ', 'Ḋ'), + ('Ḍ', 'Ḍ'), ('Ḏ', 'Ḏ'), ('Ḑ', 'Ḑ'), ('Ḓ', 'Ḓ'), + ('Ḕ', 'Ḕ'), ('Ḗ', 'Ḗ'), ('Ḙ', 'Ḙ'), ('Ḛ', 'Ḛ'), + ('Ḝ', 'Ḝ'), ('Ḟ', 'Ḟ'), ('Ḡ', 'Ḡ'), ('Ḣ', 'Ḣ'), + ('Ḥ', 'Ḥ'), ('Ḧ', 'Ḧ'), ('Ḩ', 'Ḩ'), ('Ḫ', 'Ḫ'), + ('Ḭ', 'Ḭ'), ('Ḯ', 'Ḯ'), ('Ḱ', 'Ḱ'), ('Ḳ', 'Ḳ'), + ('Ḵ', 'Ḵ'), ('Ḷ', 'Ḷ'), ('Ḹ', 'Ḹ'), ('Ḻ', 'Ḻ'), + ('Ḽ', 'Ḽ'), ('Ḿ', 'Ḿ'), ('Ṁ', 'Ṁ'), ('Ṃ', 'Ṃ'), + ('Ṅ', 'Ṅ'), ('Ṇ', 'Ṇ'), ('Ṉ', 'Ṉ'), ('Ṋ', 'Ṋ'), + ('Ṍ', 'Ṍ'), ('Ṏ', 'Ṏ'), ('Ṑ', 'Ṑ'), ('Ṓ', 'Ṓ'), + ('Ṕ', 'Ṕ'), ('Ṗ', 'Ṗ'), ('Ṙ', 'Ṙ'), ('Ṛ', 'Ṛ'), + ('Ṝ', 'Ṝ'), ('Ṟ', 'Ṟ'), ('Ṡ', 'Ṡ'), ('Ṣ', 'Ṣ'), + ('Ṥ', 'Ṥ'), ('Ṧ', 'Ṧ'), ('Ṩ', 'Ṩ'), ('Ṫ', 'Ṫ'), + ('Ṭ', 'Ṭ'), ('Ṯ', 'Ṯ'), ('Ṱ', 'Ṱ'), ('Ṳ', 'Ṳ'), + ('Ṵ', 'Ṵ'), ('Ṷ', 'Ṷ'), ('Ṹ', 'Ṹ'), ('Ṻ', 'Ṻ'), + ('Ṽ', 'Ṽ'), ('Ṿ', 'Ṿ'), ('Ẁ', 'Ẁ'), ('Ẃ', 'Ẃ'), + ('Ẅ', 'Ẅ'), ('Ẇ', 'Ẇ'), ('Ẉ', 'Ẉ'), ('Ẋ', 'Ẋ'), + ('Ẍ', 'Ẍ'), ('Ẏ', 'Ẏ'), ('Ẑ', 'Ẑ'), ('Ẓ', 'Ẓ'), + ('Ẕ', 'Ẕ'), ('ẚ', 'ẛ'), ('ẞ', 'ẞ'), ('Ạ', 'Ạ'), + ('Ả', 'Ả'), ('Ấ', 'Ấ'), ('Ầ', 'Ầ'), ('Ẩ', 'Ẩ'), + ('Ẫ', 'Ẫ'), ('Ậ', 'Ậ'), ('Ắ', 'Ắ'), ('Ằ', 'Ằ'), + ('Ẳ', 'Ẳ'), ('Ẵ', 'Ẵ'), ('Ặ', 'Ặ'), ('Ẹ', 'Ẹ'), + ('Ẻ', 'Ẻ'), ('Ẽ', 'Ẽ'), ('Ế', 'Ế'), ('Ề', 'Ề'), + ('Ể', 'Ể'), ('Ễ', 'Ễ'), ('Ệ', 'Ệ'), ('Ỉ', 'Ỉ'), + ('Ị', 'Ị'), ('Ọ', 'Ọ'), ('Ỏ', 'Ỏ'), ('Ố', 'Ố'), + ('Ồ', 'Ồ'), ('Ổ', 'Ổ'), ('Ỗ', 'Ỗ'), ('Ộ', 'Ộ'), + ('Ớ', 'Ớ'), ('Ờ', 'Ờ'), ('Ở', 'Ở'), ('Ỡ', 'Ỡ'), + ('Ợ', 'Ợ'), ('Ụ', 'Ụ'), ('Ủ', 'Ủ'), ('Ứ', 'Ứ'), + ('Ừ', 'Ừ'), ('Ử', 'Ử'), ('Ữ', 'Ữ'), ('Ự', 'Ự'), + ('Ỳ', 'Ỳ'), ('Ỵ', 'Ỵ'), ('Ỷ', 'Ỷ'), ('Ỹ', 'Ỹ'), + ('Ỻ', 'Ỻ'), ('Ỽ', 'Ỽ'), ('Ỿ', 'Ỿ'), ('Ἀ', 'Ἇ'), + ('Ἐ', 'Ἕ'), ('Ἠ', 'Ἧ'), ('Ἰ', 'Ἷ'), ('Ὀ', 'Ὅ'), + ('Ὑ', 'Ὑ'), ('Ὓ', 'Ὓ'), ('Ὕ', 'Ὕ'), ('Ὗ', 'Ὗ'), + ('Ὠ', 'Ὧ'), ('ᾀ', 'ᾯ'), ('ᾲ', 'ᾴ'), ('ᾷ', 'ᾼ'), + ('ῂ', 'ῄ'), ('ῇ', 'ῌ'), ('Ῐ', 'Ί'), ('Ῠ', 'Ῥ'), + ('ῲ', 'ῴ'), ('ῷ', 'ῼ'), ('Ω', 'Ω'), ('K', 'Å'), + ('Ⅎ', 'Ⅎ'), ('Ⅰ', 'Ⅿ'), ('Ↄ', 'Ↄ'), ('Ⓐ', 'Ⓩ'), + ('Ⰰ', 'Ⱞ'), ('Ⱡ', 'Ⱡ'), ('Ɫ', 'Ɽ'), ('Ⱨ', 'Ⱨ'), + ('Ⱪ', 'Ⱪ'), ('Ⱬ', 'Ⱬ'), ('Ɑ', 'Ɒ'), ('Ⱳ', 'Ⱳ'), + ('Ⱶ', 'Ⱶ'), ('Ȿ', 'Ⲁ'), ('Ⲃ', 'Ⲃ'), ('Ⲅ', 'Ⲅ'), + ('Ⲇ', 'Ⲇ'), ('Ⲉ', 'Ⲉ'), ('Ⲋ', 'Ⲋ'), ('Ⲍ', 'Ⲍ'), + ('Ⲏ', 'Ⲏ'), ('Ⲑ', 'Ⲑ'), ('Ⲓ', 'Ⲓ'), ('Ⲕ', 'Ⲕ'), + ('Ⲗ', 'Ⲗ'), ('Ⲙ', 'Ⲙ'), ('Ⲛ', 'Ⲛ'), ('Ⲝ', 'Ⲝ'), + ('Ⲟ', 'Ⲟ'), ('Ⲡ', 'Ⲡ'), ('Ⲣ', 'Ⲣ'), ('Ⲥ', 'Ⲥ'), + ('Ⲧ', 'Ⲧ'), ('Ⲩ', 'Ⲩ'), ('Ⲫ', 'Ⲫ'), ('Ⲭ', 'Ⲭ'), + ('Ⲯ', 'Ⲯ'), ('Ⲱ', 'Ⲱ'), ('Ⲳ', 'Ⲳ'), ('Ⲵ', 'Ⲵ'), + ('Ⲷ', 'Ⲷ'), ('Ⲹ', 'Ⲹ'), ('Ⲻ', 'Ⲻ'), ('Ⲽ', 'Ⲽ'), + ('Ⲿ', 'Ⲿ'), ('Ⳁ', 'Ⳁ'), ('Ⳃ', 'Ⳃ'), ('Ⳅ', 'Ⳅ'), + ('Ⳇ', 'Ⳇ'), ('Ⳉ', 'Ⳉ'), ('Ⳋ', 'Ⳋ'), ('Ⳍ', 'Ⳍ'), + ('Ⳏ', 'Ⳏ'), ('Ⳑ', 'Ⳑ'), ('Ⳓ', 'Ⳓ'), ('Ⳕ', 'Ⳕ'), + ('Ⳗ', 'Ⳗ'), ('Ⳙ', 'Ⳙ'), ('Ⳛ', 'Ⳛ'), ('Ⳝ', 'Ⳝ'), + ('Ⳟ', 'Ⳟ'), ('Ⳡ', 'Ⳡ'), ('Ⳣ', 'Ⳣ'), ('Ⳬ', 'Ⳬ'), + ('Ⳮ', 'Ⳮ'), ('Ⳳ', 'Ⳳ'), ('Ꙁ', 'Ꙁ'), ('Ꙃ', 'Ꙃ'), + ('Ꙅ', 'Ꙅ'), ('Ꙇ', 'Ꙇ'), ('Ꙉ', 'Ꙉ'), ('Ꙋ', 'Ꙋ'), + ('Ꙍ', 'Ꙍ'), ('Ꙏ', 'Ꙏ'), ('Ꙑ', 'Ꙑ'), ('Ꙓ', 'Ꙓ'), + ('Ꙕ', 'Ꙕ'), ('Ꙗ', 'Ꙗ'), ('Ꙙ', 'Ꙙ'), ('Ꙛ', 'Ꙛ'), + ('Ꙝ', 'Ꙝ'), ('Ꙟ', 'Ꙟ'), ('Ꙡ', 'Ꙡ'), ('Ꙣ', 'Ꙣ'), + ('Ꙥ', 'Ꙥ'), ('Ꙧ', 'Ꙧ'), ('Ꙩ', 'Ꙩ'), ('Ꙫ', 'Ꙫ'), + ('Ꙭ', 'Ꙭ'), ('Ꚁ', 'Ꚁ'), ('Ꚃ', 'Ꚃ'), ('Ꚅ', 'Ꚅ'), + ('Ꚇ', 'Ꚇ'), ('Ꚉ', 'Ꚉ'), ('Ꚋ', 'Ꚋ'), ('Ꚍ', 'Ꚍ'), + ('Ꚏ', 'Ꚏ'), ('Ꚑ', 'Ꚑ'), ('Ꚓ', 'Ꚓ'), ('Ꚕ', 'Ꚕ'), + ('Ꚗ', 'Ꚗ'), ('Ꚙ', 'Ꚙ'), ('Ꚛ', 'Ꚛ'), ('Ꜣ', 'Ꜣ'), + ('Ꜥ', 'Ꜥ'), ('Ꜧ', 'Ꜧ'), ('Ꜩ', 'Ꜩ'), ('Ꜫ', 'Ꜫ'), + ('Ꜭ', 'Ꜭ'), ('Ꜯ', 'Ꜯ'), ('Ꜳ', 'Ꜳ'), ('Ꜵ', 'Ꜵ'), + ('Ꜷ', 'Ꜷ'), ('Ꜹ', 'Ꜹ'), ('Ꜻ', 'Ꜻ'), ('Ꜽ', 'Ꜽ'), + ('Ꜿ', 'Ꜿ'), ('Ꝁ', 'Ꝁ'), ('Ꝃ', 'Ꝃ'), ('Ꝅ', 'Ꝅ'), + ('Ꝇ', 'Ꝇ'), ('Ꝉ', 'Ꝉ'), ('Ꝋ', 'Ꝋ'), ('Ꝍ', 'Ꝍ'), + ('Ꝏ', 'Ꝏ'), ('Ꝑ', 'Ꝑ'), ('Ꝓ', 'Ꝓ'), ('Ꝕ', 'Ꝕ'), + ('Ꝗ', 'Ꝗ'), ('Ꝙ', 'Ꝙ'), ('Ꝛ', 'Ꝛ'), ('Ꝝ', 'Ꝝ'), + ('Ꝟ', 'Ꝟ'), ('Ꝡ', 'Ꝡ'), ('Ꝣ', 'Ꝣ'), ('Ꝥ', 'Ꝥ'), + ('Ꝧ', 'Ꝧ'), ('Ꝩ', 'Ꝩ'), ('Ꝫ', 'Ꝫ'), ('Ꝭ', 'Ꝭ'), + ('Ꝯ', 'Ꝯ'), ('Ꝺ', 'Ꝺ'), ('Ꝼ', 'Ꝼ'), ('Ᵹ', 'Ꝿ'), + ('Ꞁ', 'Ꞁ'), ('Ꞃ', 'Ꞃ'), ('Ꞅ', 'Ꞅ'), ('Ꞇ', 'Ꞇ'), + ('Ꞌ', 'Ꞌ'), ('Ɥ', 'Ɥ'), ('Ꞑ', 'Ꞑ'), ('Ꞓ', 'Ꞓ'), + ('Ꞗ', 'Ꞗ'), ('Ꞙ', 'Ꞙ'), ('Ꞛ', 'Ꞛ'), ('Ꞝ', 'Ꞝ'), + ('Ꞟ', 'Ꞟ'), ('Ꞡ', 'Ꞡ'), ('Ꞣ', 'Ꞣ'), ('Ꞥ', 'Ꞥ'), + ('Ꞧ', 'Ꞧ'), ('Ꞩ', 'Ꞩ'), ('Ɦ', 'Ɪ'), ('Ʞ', 'Ꞵ'), + ('Ꞷ', 'Ꞷ'), ('Ꞹ', 'Ꞹ'), ('ꭰ', 'ꮿ'), ('ff', 'st'), + ('ﬓ', 'ﬗ'), ('A', 'Z'), ('𐐀', '𐐧'), ('𐒰', '𐓓'), + ('𐲀', '𐲲'), ('𑢠', '𑢿'), ('𖹀', '𖹟'), ('𞤀', '𞤡'), ]; pub const CHANGES_WHEN_CASEMAPPED: &'static [(char, char)] = &[ @@ -514,12 +579,12 @@ ('ɖ', 'ɗ'), ('ə', 'ə'), ('ɛ', 'ɜ'), ('ɠ', 'ɡ'), ('ɣ', 'ɣ'), ('ɥ', 'ɦ'), ('ɨ', 'ɬ'), ('ɯ', 'ɯ'), ('ɱ', 'ɲ'), ('ɵ', 'ɵ'), ('ɽ', 'ɽ'), ('ʀ', 'ʀ'), ('ʃ', 'ʃ'), ('ʇ', 'ʌ'), ('ʒ', 'ʒ'), - ('ʝ', 'ʞ'), ('ͅ', 'ͅ'), ('Ͱ', 'ͳ'), ('Ͷ', 'ͷ'), ('ͻ', 'ͽ'), - ('Ϳ', 'Ϳ'), ('Ά', 'Ά'), ('Έ', 'Ί'), ('Ό', 'Ό'), ('Ύ', 'Ρ'), - ('Σ', 'ϑ'), ('ϕ', 'ϵ'), ('Ϸ', 'ϻ'), ('Ͻ', 'ҁ'), ('Ҋ', 'ԯ'), - ('Ա', 'Ֆ'), ('ա', 'և'), ('Ⴀ', 'Ⴥ'), ('Ⴧ', 'Ⴧ'), ('Ⴭ', 'Ⴭ'), - ('ა', 'ჺ'), ('ჽ', 'ჿ'), ('Ꭰ', 'Ᏽ'), ('ᏸ', 'ᏽ'), - ('ᲀ', 'ᲈ'), ('\u{1c90}', '\u{1cba}'), ('\u{1cbd}', '\u{1cbf}'), + ('ʝ', 'ʞ'), ('\u{345}', '\u{345}'), ('Ͱ', 'ͳ'), ('Ͷ', 'ͷ'), + ('ͻ', 'ͽ'), ('Ϳ', 'Ϳ'), ('Ά', 'Ά'), ('Έ', 'Ί'), ('Ό', 'Ό'), + ('Ύ', 'Ρ'), ('Σ', 'ϑ'), ('ϕ', 'ϵ'), ('Ϸ', 'ϻ'), ('Ͻ', 'ҁ'), + ('Ҋ', 'ԯ'), ('Ա', 'Ֆ'), ('ա', 'և'), ('Ⴀ', 'Ⴥ'), ('Ⴧ', 'Ⴧ'), + ('Ⴭ', 'Ⴭ'), ('ა', 'ჺ'), ('ჽ', 'ჿ'), ('Ꭰ', 'Ᏽ'), + ('ᏸ', 'ᏽ'), ('ᲀ', 'ᲈ'), ('Ა', 'Ჺ'), ('Ჽ', 'Ჿ'), ('ᵹ', 'ᵹ'), ('ᵽ', 'ᵽ'), ('Ḁ', 'ẛ'), ('ẞ', 'ẞ'), ('Ạ', 'ἕ'), ('Ἐ', 'Ἕ'), ('ἠ', 'ὅ'), ('Ὀ', 'Ὅ'), ('ὐ', 'ὗ'), ('Ὑ', 'Ὑ'), ('Ὓ', 'Ὓ'), ('Ὕ', 'Ὕ'), @@ -532,11 +597,10 @@ ('Ⳬ', 'ⳮ'), ('Ⳳ', 'ⳳ'), ('ⴀ', 'ⴥ'), ('ⴧ', 'ⴧ'), ('ⴭ', 'ⴭ'), ('Ꙁ', 'ꙭ'), ('Ꚁ', 'ꚛ'), ('Ꜣ', 'ꜯ'), ('Ꜳ', 'ꝯ'), ('Ꝺ', 'ꞇ'), ('Ꞌ', 'Ɥ'), ('Ꞑ', 'ꞓ'), - ('Ꞗ', 'Ɪ'), ('Ʞ', '\u{a7b9}'), ('ꭓ', 'ꭓ'), ('ꭰ', 'ꮿ'), + ('Ꞗ', 'Ɪ'), ('Ʞ', 'ꞹ'), ('ꭓ', 'ꭓ'), ('ꭰ', 'ꮿ'), ('ff', 'st'), ('ﬓ', 'ﬗ'), ('A', 'Z'), ('a', 'z'), ('𐐀', '𐑏'), ('𐒰', '𐓓'), ('𐓘', '𐓻'), ('𐲀', '𐲲'), - ('𐳀', '𐳲'), ('𑢠', '𑣟'), ('\u{16e40}', '\u{16e7f}'), - ('𞤀', '𞥃'), + ('𐳀', '𐳲'), ('𑢠', '𑣟'), ('𖹀', '𖹿'), ('𞤀', '𞥃'), ]; pub const CHANGES_WHEN_LOWERCASED: &'static [(char, char)] = &[ @@ -595,87 +659,86 @@ ('Ԝ', 'Ԝ'), ('Ԟ', 'Ԟ'), ('Ԡ', 'Ԡ'), ('Ԣ', 'Ԣ'), ('Ԥ', 'Ԥ'), ('Ԧ', 'Ԧ'), ('Ԩ', 'Ԩ'), ('Ԫ', 'Ԫ'), ('Ԭ', 'Ԭ'), ('Ԯ', 'Ԯ'), ('Ա', 'Ֆ'), ('Ⴀ', 'Ⴥ'), ('Ⴧ', 'Ⴧ'), ('Ⴭ', 'Ⴭ'), - ('Ꭰ', 'Ᏽ'), ('\u{1c90}', '\u{1cba}'), ('\u{1cbd}', '\u{1cbf}'), - ('Ḁ', 'Ḁ'), ('Ḃ', 'Ḃ'), ('Ḅ', 'Ḅ'), ('Ḇ', 'Ḇ'), - ('Ḉ', 'Ḉ'), ('Ḋ', 'Ḋ'), ('Ḍ', 'Ḍ'), ('Ḏ', 'Ḏ'), - ('Ḑ', 'Ḑ'), ('Ḓ', 'Ḓ'), ('Ḕ', 'Ḕ'), ('Ḗ', 'Ḗ'), - ('Ḙ', 'Ḙ'), ('Ḛ', 'Ḛ'), ('Ḝ', 'Ḝ'), ('Ḟ', 'Ḟ'), - ('Ḡ', 'Ḡ'), ('Ḣ', 'Ḣ'), ('Ḥ', 'Ḥ'), ('Ḧ', 'Ḧ'), - ('Ḩ', 'Ḩ'), ('Ḫ', 'Ḫ'), ('Ḭ', 'Ḭ'), ('Ḯ', 'Ḯ'), - ('Ḱ', 'Ḱ'), ('Ḳ', 'Ḳ'), ('Ḵ', 'Ḵ'), ('Ḷ', 'Ḷ'), - ('Ḹ', 'Ḹ'), ('Ḻ', 'Ḻ'), ('Ḽ', 'Ḽ'), ('Ḿ', 'Ḿ'), - ('Ṁ', 'Ṁ'), ('Ṃ', 'Ṃ'), ('Ṅ', 'Ṅ'), ('Ṇ', 'Ṇ'), - ('Ṉ', 'Ṉ'), ('Ṋ', 'Ṋ'), ('Ṍ', 'Ṍ'), ('Ṏ', 'Ṏ'), - ('Ṑ', 'Ṑ'), ('Ṓ', 'Ṓ'), ('Ṕ', 'Ṕ'), ('Ṗ', 'Ṗ'), - ('Ṙ', 'Ṙ'), ('Ṛ', 'Ṛ'), ('Ṝ', 'Ṝ'), ('Ṟ', 'Ṟ'), - ('Ṡ', 'Ṡ'), ('Ṣ', 'Ṣ'), ('Ṥ', 'Ṥ'), ('Ṧ', 'Ṧ'), - ('Ṩ', 'Ṩ'), ('Ṫ', 'Ṫ'), ('Ṭ', 'Ṭ'), ('Ṯ', 'Ṯ'), - ('Ṱ', 'Ṱ'), ('Ṳ', 'Ṳ'), ('Ṵ', 'Ṵ'), ('Ṷ', 'Ṷ'), - ('Ṹ', 'Ṹ'), ('Ṻ', 'Ṻ'), ('Ṽ', 'Ṽ'), ('Ṿ', 'Ṿ'), - ('Ẁ', 'Ẁ'), ('Ẃ', 'Ẃ'), ('Ẅ', 'Ẅ'), ('Ẇ', 'Ẇ'), - ('Ẉ', 'Ẉ'), ('Ẋ', 'Ẋ'), ('Ẍ', 'Ẍ'), ('Ẏ', 'Ẏ'), - ('Ẑ', 'Ẑ'), ('Ẓ', 'Ẓ'), ('Ẕ', 'Ẕ'), ('ẞ', 'ẞ'), - ('Ạ', 'Ạ'), ('Ả', 'Ả'), ('Ấ', 'Ấ'), ('Ầ', 'Ầ'), - ('Ẩ', 'Ẩ'), ('Ẫ', 'Ẫ'), ('Ậ', 'Ậ'), ('Ắ', 'Ắ'), - ('Ằ', 'Ằ'), ('Ẳ', 'Ẳ'), ('Ẵ', 'Ẵ'), ('Ặ', 'Ặ'), - ('Ẹ', 'Ẹ'), ('Ẻ', 'Ẻ'), ('Ẽ', 'Ẽ'), ('Ế', 'Ế'), - ('Ề', 'Ề'), ('Ể', 'Ể'), ('Ễ', 'Ễ'), ('Ệ', 'Ệ'), - ('Ỉ', 'Ỉ'), ('Ị', 'Ị'), ('Ọ', 'Ọ'), ('Ỏ', 'Ỏ'), - ('Ố', 'Ố'), ('Ồ', 'Ồ'), ('Ổ', 'Ổ'), ('Ỗ', 'Ỗ'), - ('Ộ', 'Ộ'), ('Ớ', 'Ớ'), ('Ờ', 'Ờ'), ('Ở', 'Ở'), - ('Ỡ', 'Ỡ'), ('Ợ', 'Ợ'), ('Ụ', 'Ụ'), ('Ủ', 'Ủ'), - ('Ứ', 'Ứ'), ('Ừ', 'Ừ'), ('Ử', 'Ử'), ('Ữ', 'Ữ'), - ('Ự', 'Ự'), ('Ỳ', 'Ỳ'), ('Ỵ', 'Ỵ'), ('Ỷ', 'Ỷ'), - ('Ỹ', 'Ỹ'), ('Ỻ', 'Ỻ'), ('Ỽ', 'Ỽ'), ('Ỿ', 'Ỿ'), - ('Ἀ', 'Ἇ'), ('Ἐ', 'Ἕ'), ('Ἠ', 'Ἧ'), ('Ἰ', 'Ἷ'), - ('Ὀ', 'Ὅ'), ('Ὑ', 'Ὑ'), ('Ὓ', 'Ὓ'), ('Ὕ', 'Ὕ'), - ('Ὗ', 'Ὗ'), ('Ὠ', 'Ὧ'), ('ᾈ', 'ᾏ'), ('ᾘ', 'ᾟ'), - ('ᾨ', 'ᾯ'), ('Ᾰ', 'ᾼ'), ('Ὲ', 'ῌ'), ('Ῐ', 'Ί'), - ('Ῠ', 'Ῥ'), ('Ὸ', 'ῼ'), ('Ω', 'Ω'), ('K', 'Å'), - ('Ⅎ', 'Ⅎ'), ('Ⅰ', 'Ⅿ'), ('Ↄ', 'Ↄ'), ('Ⓐ', 'Ⓩ'), - ('Ⰰ', 'Ⱞ'), ('Ⱡ', 'Ⱡ'), ('Ɫ', 'Ɽ'), ('Ⱨ', 'Ⱨ'), - ('Ⱪ', 'Ⱪ'), ('Ⱬ', 'Ⱬ'), ('Ɑ', 'Ɒ'), ('Ⱳ', 'Ⱳ'), - ('Ⱶ', 'Ⱶ'), ('Ȿ', 'Ⲁ'), ('Ⲃ', 'Ⲃ'), ('Ⲅ', 'Ⲅ'), - ('Ⲇ', 'Ⲇ'), ('Ⲉ', 'Ⲉ'), ('Ⲋ', 'Ⲋ'), ('Ⲍ', 'Ⲍ'), - ('Ⲏ', 'Ⲏ'), ('Ⲑ', 'Ⲑ'), ('Ⲓ', 'Ⲓ'), ('Ⲕ', 'Ⲕ'), - ('Ⲗ', 'Ⲗ'), ('Ⲙ', 'Ⲙ'), ('Ⲛ', 'Ⲛ'), ('Ⲝ', 'Ⲝ'), - ('Ⲟ', 'Ⲟ'), ('Ⲡ', 'Ⲡ'), ('Ⲣ', 'Ⲣ'), ('Ⲥ', 'Ⲥ'), - ('Ⲧ', 'Ⲧ'), ('Ⲩ', 'Ⲩ'), ('Ⲫ', 'Ⲫ'), ('Ⲭ', 'Ⲭ'), - ('Ⲯ', 'Ⲯ'), ('Ⲱ', 'Ⲱ'), ('Ⲳ', 'Ⲳ'), ('Ⲵ', 'Ⲵ'), - ('Ⲷ', 'Ⲷ'), ('Ⲹ', 'Ⲹ'), ('Ⲻ', 'Ⲻ'), ('Ⲽ', 'Ⲽ'), - ('Ⲿ', 'Ⲿ'), ('Ⳁ', 'Ⳁ'), ('Ⳃ', 'Ⳃ'), ('Ⳅ', 'Ⳅ'), - ('Ⳇ', 'Ⳇ'), ('Ⳉ', 'Ⳉ'), ('Ⳋ', 'Ⳋ'), ('Ⳍ', 'Ⳍ'), - ('Ⳏ', 'Ⳏ'), ('Ⳑ', 'Ⳑ'), ('Ⳓ', 'Ⳓ'), ('Ⳕ', 'Ⳕ'), - ('Ⳗ', 'Ⳗ'), ('Ⳙ', 'Ⳙ'), ('Ⳛ', 'Ⳛ'), ('Ⳝ', 'Ⳝ'), - ('Ⳟ', 'Ⳟ'), ('Ⳡ', 'Ⳡ'), ('Ⳣ', 'Ⳣ'), ('Ⳬ', 'Ⳬ'), - ('Ⳮ', 'Ⳮ'), ('Ⳳ', 'Ⳳ'), ('Ꙁ', 'Ꙁ'), ('Ꙃ', 'Ꙃ'), - ('Ꙅ', 'Ꙅ'), ('Ꙇ', 'Ꙇ'), ('Ꙉ', 'Ꙉ'), ('Ꙋ', 'Ꙋ'), - ('Ꙍ', 'Ꙍ'), ('Ꙏ', 'Ꙏ'), ('Ꙑ', 'Ꙑ'), ('Ꙓ', 'Ꙓ'), - ('Ꙕ', 'Ꙕ'), ('Ꙗ', 'Ꙗ'), ('Ꙙ', 'Ꙙ'), ('Ꙛ', 'Ꙛ'), - ('Ꙝ', 'Ꙝ'), ('Ꙟ', 'Ꙟ'), ('Ꙡ', 'Ꙡ'), ('Ꙣ', 'Ꙣ'), - ('Ꙥ', 'Ꙥ'), ('Ꙧ', 'Ꙧ'), ('Ꙩ', 'Ꙩ'), ('Ꙫ', 'Ꙫ'), - ('Ꙭ', 'Ꙭ'), ('Ꚁ', 'Ꚁ'), ('Ꚃ', 'Ꚃ'), ('Ꚅ', 'Ꚅ'), - ('Ꚇ', 'Ꚇ'), ('Ꚉ', 'Ꚉ'), ('Ꚋ', 'Ꚋ'), ('Ꚍ', 'Ꚍ'), - ('Ꚏ', 'Ꚏ'), ('Ꚑ', 'Ꚑ'), ('Ꚓ', 'Ꚓ'), ('Ꚕ', 'Ꚕ'), - ('Ꚗ', 'Ꚗ'), ('Ꚙ', 'Ꚙ'), ('Ꚛ', 'Ꚛ'), ('Ꜣ', 'Ꜣ'), - ('Ꜥ', 'Ꜥ'), ('Ꜧ', 'Ꜧ'), ('Ꜩ', 'Ꜩ'), ('Ꜫ', 'Ꜫ'), - ('Ꜭ', 'Ꜭ'), ('Ꜯ', 'Ꜯ'), ('Ꜳ', 'Ꜳ'), ('Ꜵ', 'Ꜵ'), - ('Ꜷ', 'Ꜷ'), ('Ꜹ', 'Ꜹ'), ('Ꜻ', 'Ꜻ'), ('Ꜽ', 'Ꜽ'), - ('Ꜿ', 'Ꜿ'), ('Ꝁ', 'Ꝁ'), ('Ꝃ', 'Ꝃ'), ('Ꝅ', 'Ꝅ'), - ('Ꝇ', 'Ꝇ'), ('Ꝉ', 'Ꝉ'), ('Ꝋ', 'Ꝋ'), ('Ꝍ', 'Ꝍ'), - ('Ꝏ', 'Ꝏ'), ('Ꝑ', 'Ꝑ'), ('Ꝓ', 'Ꝓ'), ('Ꝕ', 'Ꝕ'), - ('Ꝗ', 'Ꝗ'), ('Ꝙ', 'Ꝙ'), ('Ꝛ', 'Ꝛ'), ('Ꝝ', 'Ꝝ'), - ('Ꝟ', 'Ꝟ'), ('Ꝡ', 'Ꝡ'), ('Ꝣ', 'Ꝣ'), ('Ꝥ', 'Ꝥ'), - ('Ꝧ', 'Ꝧ'), ('Ꝩ', 'Ꝩ'), ('Ꝫ', 'Ꝫ'), ('Ꝭ', 'Ꝭ'), - ('Ꝯ', 'Ꝯ'), ('Ꝺ', 'Ꝺ'), ('Ꝼ', 'Ꝼ'), ('Ᵹ', 'Ꝿ'), - ('Ꞁ', 'Ꞁ'), ('Ꞃ', 'Ꞃ'), ('Ꞅ', 'Ꞅ'), ('Ꞇ', 'Ꞇ'), - ('Ꞌ', 'Ꞌ'), ('Ɥ', 'Ɥ'), ('Ꞑ', 'Ꞑ'), ('Ꞓ', 'Ꞓ'), - ('Ꞗ', 'Ꞗ'), ('Ꞙ', 'Ꞙ'), ('Ꞛ', 'Ꞛ'), ('Ꞝ', 'Ꞝ'), - ('Ꞟ', 'Ꞟ'), ('Ꞡ', 'Ꞡ'), ('Ꞣ', 'Ꞣ'), ('Ꞥ', 'Ꞥ'), - ('Ꞧ', 'Ꞧ'), ('Ꞩ', 'Ꞩ'), ('Ɦ', 'Ɪ'), ('Ʞ', 'Ꞵ'), - ('Ꞷ', 'Ꞷ'), ('\u{a7b8}', '\u{a7b8}'), ('A', 'Z'), ('𐐀', '𐐧'), - ('𐒰', '𐓓'), ('𐲀', '𐲲'), ('𑢠', '𑢿'), - ('\u{16e40}', '\u{16e5f}'), ('𞤀', '𞤡'), + ('Ꭰ', 'Ᏽ'), ('Ა', 'Ჺ'), ('Ჽ', 'Ჿ'), ('Ḁ', 'Ḁ'), + ('Ḃ', 'Ḃ'), ('Ḅ', 'Ḅ'), ('Ḇ', 'Ḇ'), ('Ḉ', 'Ḉ'), + ('Ḋ', 'Ḋ'), ('Ḍ', 'Ḍ'), ('Ḏ', 'Ḏ'), ('Ḑ', 'Ḑ'), + ('Ḓ', 'Ḓ'), ('Ḕ', 'Ḕ'), ('Ḗ', 'Ḗ'), ('Ḙ', 'Ḙ'), + ('Ḛ', 'Ḛ'), ('Ḝ', 'Ḝ'), ('Ḟ', 'Ḟ'), ('Ḡ', 'Ḡ'), + ('Ḣ', 'Ḣ'), ('Ḥ', 'Ḥ'), ('Ḧ', 'Ḧ'), ('Ḩ', 'Ḩ'), + ('Ḫ', 'Ḫ'), ('Ḭ', 'Ḭ'), ('Ḯ', 'Ḯ'), ('Ḱ', 'Ḱ'), + ('Ḳ', 'Ḳ'), ('Ḵ', 'Ḵ'), ('Ḷ', 'Ḷ'), ('Ḹ', 'Ḹ'), + ('Ḻ', 'Ḻ'), ('Ḽ', 'Ḽ'), ('Ḿ', 'Ḿ'), ('Ṁ', 'Ṁ'), + ('Ṃ', 'Ṃ'), ('Ṅ', 'Ṅ'), ('Ṇ', 'Ṇ'), ('Ṉ', 'Ṉ'), + ('Ṋ', 'Ṋ'), ('Ṍ', 'Ṍ'), ('Ṏ', 'Ṏ'), ('Ṑ', 'Ṑ'), + ('Ṓ', 'Ṓ'), ('Ṕ', 'Ṕ'), ('Ṗ', 'Ṗ'), ('Ṙ', 'Ṙ'), + ('Ṛ', 'Ṛ'), ('Ṝ', 'Ṝ'), ('Ṟ', 'Ṟ'), ('Ṡ', 'Ṡ'), + ('Ṣ', 'Ṣ'), ('Ṥ', 'Ṥ'), ('Ṧ', 'Ṧ'), ('Ṩ', 'Ṩ'), + ('Ṫ', 'Ṫ'), ('Ṭ', 'Ṭ'), ('Ṯ', 'Ṯ'), ('Ṱ', 'Ṱ'), + ('Ṳ', 'Ṳ'), ('Ṵ', 'Ṵ'), ('Ṷ', 'Ṷ'), ('Ṹ', 'Ṹ'), + ('Ṻ', 'Ṻ'), ('Ṽ', 'Ṽ'), ('Ṿ', 'Ṿ'), ('Ẁ', 'Ẁ'), + ('Ẃ', 'Ẃ'), ('Ẅ', 'Ẅ'), ('Ẇ', 'Ẇ'), ('Ẉ', 'Ẉ'), + ('Ẋ', 'Ẋ'), ('Ẍ', 'Ẍ'), ('Ẏ', 'Ẏ'), ('Ẑ', 'Ẑ'), + ('Ẓ', 'Ẓ'), ('Ẕ', 'Ẕ'), ('ẞ', 'ẞ'), ('Ạ', 'Ạ'), + ('Ả', 'Ả'), ('Ấ', 'Ấ'), ('Ầ', 'Ầ'), ('Ẩ', 'Ẩ'), + ('Ẫ', 'Ẫ'), ('Ậ', 'Ậ'), ('Ắ', 'Ắ'), ('Ằ', 'Ằ'), + ('Ẳ', 'Ẳ'), ('Ẵ', 'Ẵ'), ('Ặ', 'Ặ'), ('Ẹ', 'Ẹ'), + ('Ẻ', 'Ẻ'), ('Ẽ', 'Ẽ'), ('Ế', 'Ế'), ('Ề', 'Ề'), + ('Ể', 'Ể'), ('Ễ', 'Ễ'), ('Ệ', 'Ệ'), ('Ỉ', 'Ỉ'), + ('Ị', 'Ị'), ('Ọ', 'Ọ'), ('Ỏ', 'Ỏ'), ('Ố', 'Ố'), + ('Ồ', 'Ồ'), ('Ổ', 'Ổ'), ('Ỗ', 'Ỗ'), ('Ộ', 'Ộ'), + ('Ớ', 'Ớ'), ('Ờ', 'Ờ'), ('Ở', 'Ở'), ('Ỡ', 'Ỡ'), + ('Ợ', 'Ợ'), ('Ụ', 'Ụ'), ('Ủ', 'Ủ'), ('Ứ', 'Ứ'), + ('Ừ', 'Ừ'), ('Ử', 'Ử'), ('Ữ', 'Ữ'), ('Ự', 'Ự'), + ('Ỳ', 'Ỳ'), ('Ỵ', 'Ỵ'), ('Ỷ', 'Ỷ'), ('Ỹ', 'Ỹ'), + ('Ỻ', 'Ỻ'), ('Ỽ', 'Ỽ'), ('Ỿ', 'Ỿ'), ('Ἀ', 'Ἇ'), + ('Ἐ', 'Ἕ'), ('Ἠ', 'Ἧ'), ('Ἰ', 'Ἷ'), ('Ὀ', 'Ὅ'), + ('Ὑ', 'Ὑ'), ('Ὓ', 'Ὓ'), ('Ὕ', 'Ὕ'), ('Ὗ', 'Ὗ'), + ('Ὠ', 'Ὧ'), ('ᾈ', 'ᾏ'), ('ᾘ', 'ᾟ'), ('ᾨ', 'ᾯ'), + ('Ᾰ', 'ᾼ'), ('Ὲ', 'ῌ'), ('Ῐ', 'Ί'), ('Ῠ', 'Ῥ'), + ('Ὸ', 'ῼ'), ('Ω', 'Ω'), ('K', 'Å'), ('Ⅎ', 'Ⅎ'), + ('Ⅰ', 'Ⅿ'), ('Ↄ', 'Ↄ'), ('Ⓐ', 'Ⓩ'), ('Ⰰ', 'Ⱞ'), + ('Ⱡ', 'Ⱡ'), ('Ɫ', 'Ɽ'), ('Ⱨ', 'Ⱨ'), ('Ⱪ', 'Ⱪ'), + ('Ⱬ', 'Ⱬ'), ('Ɑ', 'Ɒ'), ('Ⱳ', 'Ⱳ'), ('Ⱶ', 'Ⱶ'), + ('Ȿ', 'Ⲁ'), ('Ⲃ', 'Ⲃ'), ('Ⲅ', 'Ⲅ'), ('Ⲇ', 'Ⲇ'), + ('Ⲉ', 'Ⲉ'), ('Ⲋ', 'Ⲋ'), ('Ⲍ', 'Ⲍ'), ('Ⲏ', 'Ⲏ'), + ('Ⲑ', 'Ⲑ'), ('Ⲓ', 'Ⲓ'), ('Ⲕ', 'Ⲕ'), ('Ⲗ', 'Ⲗ'), + ('Ⲙ', 'Ⲙ'), ('Ⲛ', 'Ⲛ'), ('Ⲝ', 'Ⲝ'), ('Ⲟ', 'Ⲟ'), + ('Ⲡ', 'Ⲡ'), ('Ⲣ', 'Ⲣ'), ('Ⲥ', 'Ⲥ'), ('Ⲧ', 'Ⲧ'), + ('Ⲩ', 'Ⲩ'), ('Ⲫ', 'Ⲫ'), ('Ⲭ', 'Ⲭ'), ('Ⲯ', 'Ⲯ'), + ('Ⲱ', 'Ⲱ'), ('Ⲳ', 'Ⲳ'), ('Ⲵ', 'Ⲵ'), ('Ⲷ', 'Ⲷ'), + ('Ⲹ', 'Ⲹ'), ('Ⲻ', 'Ⲻ'), ('Ⲽ', 'Ⲽ'), ('Ⲿ', 'Ⲿ'), + ('Ⳁ', 'Ⳁ'), ('Ⳃ', 'Ⳃ'), ('Ⳅ', 'Ⳅ'), ('Ⳇ', 'Ⳇ'), + ('Ⳉ', 'Ⳉ'), ('Ⳋ', 'Ⳋ'), ('Ⳍ', 'Ⳍ'), ('Ⳏ', 'Ⳏ'), + ('Ⳑ', 'Ⳑ'), ('Ⳓ', 'Ⳓ'), ('Ⳕ', 'Ⳕ'), ('Ⳗ', 'Ⳗ'), + ('Ⳙ', 'Ⳙ'), ('Ⳛ', 'Ⳛ'), ('Ⳝ', 'Ⳝ'), ('Ⳟ', 'Ⳟ'), + ('Ⳡ', 'Ⳡ'), ('Ⳣ', 'Ⳣ'), ('Ⳬ', 'Ⳬ'), ('Ⳮ', 'Ⳮ'), + ('Ⳳ', 'Ⳳ'), ('Ꙁ', 'Ꙁ'), ('Ꙃ', 'Ꙃ'), ('Ꙅ', 'Ꙅ'), + ('Ꙇ', 'Ꙇ'), ('Ꙉ', 'Ꙉ'), ('Ꙋ', 'Ꙋ'), ('Ꙍ', 'Ꙍ'), + ('Ꙏ', 'Ꙏ'), ('Ꙑ', 'Ꙑ'), ('Ꙓ', 'Ꙓ'), ('Ꙕ', 'Ꙕ'), + ('Ꙗ', 'Ꙗ'), ('Ꙙ', 'Ꙙ'), ('Ꙛ', 'Ꙛ'), ('Ꙝ', 'Ꙝ'), + ('Ꙟ', 'Ꙟ'), ('Ꙡ', 'Ꙡ'), ('Ꙣ', 'Ꙣ'), ('Ꙥ', 'Ꙥ'), + ('Ꙧ', 'Ꙧ'), ('Ꙩ', 'Ꙩ'), ('Ꙫ', 'Ꙫ'), ('Ꙭ', 'Ꙭ'), + ('Ꚁ', 'Ꚁ'), ('Ꚃ', 'Ꚃ'), ('Ꚅ', 'Ꚅ'), ('Ꚇ', 'Ꚇ'), + ('Ꚉ', 'Ꚉ'), ('Ꚋ', 'Ꚋ'), ('Ꚍ', 'Ꚍ'), ('Ꚏ', 'Ꚏ'), + ('Ꚑ', 'Ꚑ'), ('Ꚓ', 'Ꚓ'), ('Ꚕ', 'Ꚕ'), ('Ꚗ', 'Ꚗ'), + ('Ꚙ', 'Ꚙ'), ('Ꚛ', 'Ꚛ'), ('Ꜣ', 'Ꜣ'), ('Ꜥ', 'Ꜥ'), + ('Ꜧ', 'Ꜧ'), ('Ꜩ', 'Ꜩ'), ('Ꜫ', 'Ꜫ'), ('Ꜭ', 'Ꜭ'), + ('Ꜯ', 'Ꜯ'), ('Ꜳ', 'Ꜳ'), ('Ꜵ', 'Ꜵ'), ('Ꜷ', 'Ꜷ'), + ('Ꜹ', 'Ꜹ'), ('Ꜻ', 'Ꜻ'), ('Ꜽ', 'Ꜽ'), ('Ꜿ', 'Ꜿ'), + ('Ꝁ', 'Ꝁ'), ('Ꝃ', 'Ꝃ'), ('Ꝅ', 'Ꝅ'), ('Ꝇ', 'Ꝇ'), + ('Ꝉ', 'Ꝉ'), ('Ꝋ', 'Ꝋ'), ('Ꝍ', 'Ꝍ'), ('Ꝏ', 'Ꝏ'), + ('Ꝑ', 'Ꝑ'), ('Ꝓ', 'Ꝓ'), ('Ꝕ', 'Ꝕ'), ('Ꝗ', 'Ꝗ'), + ('Ꝙ', 'Ꝙ'), ('Ꝛ', 'Ꝛ'), ('Ꝝ', 'Ꝝ'), ('Ꝟ', 'Ꝟ'), + ('Ꝡ', 'Ꝡ'), ('Ꝣ', 'Ꝣ'), ('Ꝥ', 'Ꝥ'), ('Ꝧ', 'Ꝧ'), + ('Ꝩ', 'Ꝩ'), ('Ꝫ', 'Ꝫ'), ('Ꝭ', 'Ꝭ'), ('Ꝯ', 'Ꝯ'), + ('Ꝺ', 'Ꝺ'), ('Ꝼ', 'Ꝼ'), ('Ᵹ', 'Ꝿ'), ('Ꞁ', 'Ꞁ'), + ('Ꞃ', 'Ꞃ'), ('Ꞅ', 'Ꞅ'), ('Ꞇ', 'Ꞇ'), ('Ꞌ', 'Ꞌ'), + ('Ɥ', 'Ɥ'), ('Ꞑ', 'Ꞑ'), ('Ꞓ', 'Ꞓ'), ('Ꞗ', 'Ꞗ'), + ('Ꞙ', 'Ꞙ'), ('Ꞛ', 'Ꞛ'), ('Ꞝ', 'Ꞝ'), ('Ꞟ', 'Ꞟ'), + ('Ꞡ', 'Ꞡ'), ('Ꞣ', 'Ꞣ'), ('Ꞥ', 'Ꞥ'), ('Ꞧ', 'Ꞧ'), + ('Ꞩ', 'Ꞩ'), ('Ɦ', 'Ɪ'), ('Ʞ', 'Ꞵ'), ('Ꞷ', 'Ꞷ'), + ('Ꞹ', 'Ꞹ'), ('A', 'Z'), ('𐐀', '𐐧'), ('𐒰', '𐓓'), + ('𐲀', '𐲲'), ('𑢠', '𑢿'), ('𖹀', '𖹟'), ('𞤀', '𞤡'), ]; pub const CHANGES_WHEN_TITLECASED: &'static [(char, char)] = &[ @@ -711,32 +774,32 @@ ('ɖ', 'ɗ'), ('ə', 'ə'), ('ɛ', 'ɜ'), ('ɠ', 'ɡ'), ('ɣ', 'ɣ'), ('ɥ', 'ɦ'), ('ɨ', 'ɬ'), ('ɯ', 'ɯ'), ('ɱ', 'ɲ'), ('ɵ', 'ɵ'), ('ɽ', 'ɽ'), ('ʀ', 'ʀ'), ('ʃ', 'ʃ'), ('ʇ', 'ʌ'), ('ʒ', 'ʒ'), - ('ʝ', 'ʞ'), ('ͅ', 'ͅ'), ('ͱ', 'ͱ'), ('ͳ', 'ͳ'), ('ͷ', 'ͷ'), - ('ͻ', 'ͽ'), ('ΐ', 'ΐ'), ('ά', 'ώ'), ('ϐ', 'ϑ'), ('ϕ', 'ϗ'), - ('ϙ', 'ϙ'), ('ϛ', 'ϛ'), ('ϝ', 'ϝ'), ('ϟ', 'ϟ'), ('ϡ', 'ϡ'), - ('ϣ', 'ϣ'), ('ϥ', 'ϥ'), ('ϧ', 'ϧ'), ('ϩ', 'ϩ'), ('ϫ', 'ϫ'), - ('ϭ', 'ϭ'), ('ϯ', 'ϳ'), ('ϵ', 'ϵ'), ('ϸ', 'ϸ'), ('ϻ', 'ϻ'), - ('а', 'џ'), ('ѡ', 'ѡ'), ('ѣ', 'ѣ'), ('ѥ', 'ѥ'), ('ѧ', 'ѧ'), - ('ѩ', 'ѩ'), ('ѫ', 'ѫ'), ('ѭ', 'ѭ'), ('ѯ', 'ѯ'), ('ѱ', 'ѱ'), - ('ѳ', 'ѳ'), ('ѵ', 'ѵ'), ('ѷ', 'ѷ'), ('ѹ', 'ѹ'), ('ѻ', 'ѻ'), - ('ѽ', 'ѽ'), ('ѿ', 'ѿ'), ('ҁ', 'ҁ'), ('ҋ', 'ҋ'), ('ҍ', 'ҍ'), - ('ҏ', 'ҏ'), ('ґ', 'ґ'), ('ғ', 'ғ'), ('ҕ', 'ҕ'), ('җ', 'җ'), - ('ҙ', 'ҙ'), ('қ', 'қ'), ('ҝ', 'ҝ'), ('ҟ', 'ҟ'), ('ҡ', 'ҡ'), - ('ң', 'ң'), ('ҥ', 'ҥ'), ('ҧ', 'ҧ'), ('ҩ', 'ҩ'), ('ҫ', 'ҫ'), - ('ҭ', 'ҭ'), ('ү', 'ү'), ('ұ', 'ұ'), ('ҳ', 'ҳ'), ('ҵ', 'ҵ'), - ('ҷ', 'ҷ'), ('ҹ', 'ҹ'), ('һ', 'һ'), ('ҽ', 'ҽ'), ('ҿ', 'ҿ'), - ('ӂ', 'ӂ'), ('ӄ', 'ӄ'), ('ӆ', 'ӆ'), ('ӈ', 'ӈ'), ('ӊ', 'ӊ'), - ('ӌ', 'ӌ'), ('ӎ', 'ӏ'), ('ӑ', 'ӑ'), ('ӓ', 'ӓ'), ('ӕ', 'ӕ'), - ('ӗ', 'ӗ'), ('ә', 'ә'), ('ӛ', 'ӛ'), ('ӝ', 'ӝ'), ('ӟ', 'ӟ'), - ('ӡ', 'ӡ'), ('ӣ', 'ӣ'), ('ӥ', 'ӥ'), ('ӧ', 'ӧ'), ('ө', 'ө'), - ('ӫ', 'ӫ'), ('ӭ', 'ӭ'), ('ӯ', 'ӯ'), ('ӱ', 'ӱ'), ('ӳ', 'ӳ'), - ('ӵ', 'ӵ'), ('ӷ', 'ӷ'), ('ӹ', 'ӹ'), ('ӻ', 'ӻ'), ('ӽ', 'ӽ'), - ('ӿ', 'ӿ'), ('ԁ', 'ԁ'), ('ԃ', 'ԃ'), ('ԅ', 'ԅ'), ('ԇ', 'ԇ'), - ('ԉ', 'ԉ'), ('ԋ', 'ԋ'), ('ԍ', 'ԍ'), ('ԏ', 'ԏ'), ('ԑ', 'ԑ'), - ('ԓ', 'ԓ'), ('ԕ', 'ԕ'), ('ԗ', 'ԗ'), ('ԙ', 'ԙ'), ('ԛ', 'ԛ'), - ('ԝ', 'ԝ'), ('ԟ', 'ԟ'), ('ԡ', 'ԡ'), ('ԣ', 'ԣ'), ('ԥ', 'ԥ'), - ('ԧ', 'ԧ'), ('ԩ', 'ԩ'), ('ԫ', 'ԫ'), ('ԭ', 'ԭ'), ('ԯ', 'ԯ'), - ('ա', 'և'), ('ᏸ', 'ᏽ'), ('ᲀ', 'ᲈ'), ('ᵹ', 'ᵹ'), + ('ʝ', 'ʞ'), ('\u{345}', '\u{345}'), ('ͱ', 'ͱ'), ('ͳ', 'ͳ'), + ('ͷ', 'ͷ'), ('ͻ', 'ͽ'), ('ΐ', 'ΐ'), ('ά', 'ώ'), ('ϐ', 'ϑ'), + ('ϕ', 'ϗ'), ('ϙ', 'ϙ'), ('ϛ', 'ϛ'), ('ϝ', 'ϝ'), ('ϟ', 'ϟ'), + ('ϡ', 'ϡ'), ('ϣ', 'ϣ'), ('ϥ', 'ϥ'), ('ϧ', 'ϧ'), ('ϩ', 'ϩ'), + ('ϫ', 'ϫ'), ('ϭ', 'ϭ'), ('ϯ', 'ϳ'), ('ϵ', 'ϵ'), ('ϸ', 'ϸ'), + ('ϻ', 'ϻ'), ('а', 'џ'), ('ѡ', 'ѡ'), ('ѣ', 'ѣ'), ('ѥ', 'ѥ'), + ('ѧ', 'ѧ'), ('ѩ', 'ѩ'), ('ѫ', 'ѫ'), ('ѭ', 'ѭ'), ('ѯ', 'ѯ'), + ('ѱ', 'ѱ'), ('ѳ', 'ѳ'), ('ѵ', 'ѵ'), ('ѷ', 'ѷ'), ('ѹ', 'ѹ'), + ('ѻ', 'ѻ'), ('ѽ', 'ѽ'), ('ѿ', 'ѿ'), ('ҁ', 'ҁ'), ('ҋ', 'ҋ'), + ('ҍ', 'ҍ'), ('ҏ', 'ҏ'), ('ґ', 'ґ'), ('ғ', 'ғ'), ('ҕ', 'ҕ'), + ('җ', 'җ'), ('ҙ', 'ҙ'), ('қ', 'қ'), ('ҝ', 'ҝ'), ('ҟ', 'ҟ'), + ('ҡ', 'ҡ'), ('ң', 'ң'), ('ҥ', 'ҥ'), ('ҧ', 'ҧ'), ('ҩ', 'ҩ'), + ('ҫ', 'ҫ'), ('ҭ', 'ҭ'), ('ү', 'ү'), ('ұ', 'ұ'), ('ҳ', 'ҳ'), + ('ҵ', 'ҵ'), ('ҷ', 'ҷ'), ('ҹ', 'ҹ'), ('һ', 'һ'), ('ҽ', 'ҽ'), + ('ҿ', 'ҿ'), ('ӂ', 'ӂ'), ('ӄ', 'ӄ'), ('ӆ', 'ӆ'), ('ӈ', 'ӈ'), + ('ӊ', 'ӊ'), ('ӌ', 'ӌ'), ('ӎ', 'ӏ'), ('ӑ', 'ӑ'), ('ӓ', 'ӓ'), + ('ӕ', 'ӕ'), ('ӗ', 'ӗ'), ('ә', 'ә'), ('ӛ', 'ӛ'), ('ӝ', 'ӝ'), + ('ӟ', 'ӟ'), ('ӡ', 'ӡ'), ('ӣ', 'ӣ'), ('ӥ', 'ӥ'), ('ӧ', 'ӧ'), + ('ө', 'ө'), ('ӫ', 'ӫ'), ('ӭ', 'ӭ'), ('ӯ', 'ӯ'), ('ӱ', 'ӱ'), + ('ӳ', 'ӳ'), ('ӵ', 'ӵ'), ('ӷ', 'ӷ'), ('ӹ', 'ӹ'), ('ӻ', 'ӻ'), + ('ӽ', 'ӽ'), ('ӿ', 'ӿ'), ('ԁ', 'ԁ'), ('ԃ', 'ԃ'), ('ԅ', 'ԅ'), + ('ԇ', 'ԇ'), ('ԉ', 'ԉ'), ('ԋ', 'ԋ'), ('ԍ', 'ԍ'), ('ԏ', 'ԏ'), + ('ԑ', 'ԑ'), ('ԓ', 'ԓ'), ('ԕ', 'ԕ'), ('ԗ', 'ԗ'), ('ԙ', 'ԙ'), + ('ԛ', 'ԛ'), ('ԝ', 'ԝ'), ('ԟ', 'ԟ'), ('ԡ', 'ԡ'), ('ԣ', 'ԣ'), + ('ԥ', 'ԥ'), ('ԧ', 'ԧ'), ('ԩ', 'ԩ'), ('ԫ', 'ԫ'), ('ԭ', 'ԭ'), + ('ԯ', 'ԯ'), ('ա', 'և'), ('ᏸ', 'ᏽ'), ('ᲀ', 'ᲈ'), ('ᵹ', 'ᵹ'), ('ᵽ', 'ᵽ'), ('ḁ', 'ḁ'), ('ḃ', 'ḃ'), ('ḅ', 'ḅ'), ('ḇ', 'ḇ'), ('ḉ', 'ḉ'), ('ḋ', 'ḋ'), ('ḍ', 'ḍ'), ('ḏ', 'ḏ'), ('ḑ', 'ḑ'), ('ḓ', 'ḓ'), ('ḕ', 'ḕ'), @@ -814,10 +877,10 @@ ('ꞓ', 'ꞓ'), ('ꞗ', 'ꞗ'), ('ꞙ', 'ꞙ'), ('ꞛ', 'ꞛ'), ('ꞝ', 'ꞝ'), ('ꞟ', 'ꞟ'), ('ꞡ', 'ꞡ'), ('ꞣ', 'ꞣ'), ('ꞥ', 'ꞥ'), ('ꞧ', 'ꞧ'), ('ꞩ', 'ꞩ'), ('ꞵ', 'ꞵ'), - ('ꞷ', 'ꞷ'), ('\u{a7b9}', '\u{a7b9}'), ('ꭓ', 'ꭓ'), ('ꭰ', 'ꮿ'), + ('ꞷ', 'ꞷ'), ('ꞹ', 'ꞹ'), ('ꭓ', 'ꭓ'), ('ꭰ', 'ꮿ'), ('ff', 'st'), ('ﬓ', 'ﬗ'), ('a', 'z'), ('𐐨', '𐑏'), - ('𐓘', '𐓻'), ('𐳀', '𐳲'), ('𑣀', '𑣟'), - ('\u{16e60}', '\u{16e7f}'), ('𞤢', '𞥃'), + ('𐓘', '𐓻'), ('𐳀', '𐳲'), ('𑣀', '𑣟'), ('𖹠', '𖹿'), + ('𞤢', '𞥃'), ]; pub const CHANGES_WHEN_UPPERCASED: &'static [(char, char)] = &[ @@ -853,113 +916,113 @@ ('ə', 'ə'), ('ɛ', 'ɜ'), ('ɠ', 'ɡ'), ('ɣ', 'ɣ'), ('ɥ', 'ɦ'), ('ɨ', 'ɬ'), ('ɯ', 'ɯ'), ('ɱ', 'ɲ'), ('ɵ', 'ɵ'), ('ɽ', 'ɽ'), ('ʀ', 'ʀ'), ('ʃ', 'ʃ'), ('ʇ', 'ʌ'), ('ʒ', 'ʒ'), ('ʝ', 'ʞ'), - ('ͅ', 'ͅ'), ('ͱ', 'ͱ'), ('ͳ', 'ͳ'), ('ͷ', 'ͷ'), ('ͻ', 'ͽ'), - ('ΐ', 'ΐ'), ('ά', 'ώ'), ('ϐ', 'ϑ'), ('ϕ', 'ϗ'), ('ϙ', 'ϙ'), - ('ϛ', 'ϛ'), ('ϝ', 'ϝ'), ('ϟ', 'ϟ'), ('ϡ', 'ϡ'), ('ϣ', 'ϣ'), - ('ϥ', 'ϥ'), ('ϧ', 'ϧ'), ('ϩ', 'ϩ'), ('ϫ', 'ϫ'), ('ϭ', 'ϭ'), - ('ϯ', 'ϳ'), ('ϵ', 'ϵ'), ('ϸ', 'ϸ'), ('ϻ', 'ϻ'), ('а', 'џ'), - ('ѡ', 'ѡ'), ('ѣ', 'ѣ'), ('ѥ', 'ѥ'), ('ѧ', 'ѧ'), ('ѩ', 'ѩ'), - ('ѫ', 'ѫ'), ('ѭ', 'ѭ'), ('ѯ', 'ѯ'), ('ѱ', 'ѱ'), ('ѳ', 'ѳ'), - ('ѵ', 'ѵ'), ('ѷ', 'ѷ'), ('ѹ', 'ѹ'), ('ѻ', 'ѻ'), ('ѽ', 'ѽ'), - ('ѿ', 'ѿ'), ('ҁ', 'ҁ'), ('ҋ', 'ҋ'), ('ҍ', 'ҍ'), ('ҏ', 'ҏ'), - ('ґ', 'ґ'), ('ғ', 'ғ'), ('ҕ', 'ҕ'), ('җ', 'җ'), ('ҙ', 'ҙ'), - ('қ', 'қ'), ('ҝ', 'ҝ'), ('ҟ', 'ҟ'), ('ҡ', 'ҡ'), ('ң', 'ң'), - ('ҥ', 'ҥ'), ('ҧ', 'ҧ'), ('ҩ', 'ҩ'), ('ҫ', 'ҫ'), ('ҭ', 'ҭ'), - ('ү', 'ү'), ('ұ', 'ұ'), ('ҳ', 'ҳ'), ('ҵ', 'ҵ'), ('ҷ', 'ҷ'), - ('ҹ', 'ҹ'), ('һ', 'һ'), ('ҽ', 'ҽ'), ('ҿ', 'ҿ'), ('ӂ', 'ӂ'), - ('ӄ', 'ӄ'), ('ӆ', 'ӆ'), ('ӈ', 'ӈ'), ('ӊ', 'ӊ'), ('ӌ', 'ӌ'), - ('ӎ', 'ӏ'), ('ӑ', 'ӑ'), ('ӓ', 'ӓ'), ('ӕ', 'ӕ'), ('ӗ', 'ӗ'), - ('ә', 'ә'), ('ӛ', 'ӛ'), ('ӝ', 'ӝ'), ('ӟ', 'ӟ'), ('ӡ', 'ӡ'), - ('ӣ', 'ӣ'), ('ӥ', 'ӥ'), ('ӧ', 'ӧ'), ('ө', 'ө'), ('ӫ', 'ӫ'), - ('ӭ', 'ӭ'), ('ӯ', 'ӯ'), ('ӱ', 'ӱ'), ('ӳ', 'ӳ'), ('ӵ', 'ӵ'), - ('ӷ', 'ӷ'), ('ӹ', 'ӹ'), ('ӻ', 'ӻ'), ('ӽ', 'ӽ'), ('ӿ', 'ӿ'), - ('ԁ', 'ԁ'), ('ԃ', 'ԃ'), ('ԅ', 'ԅ'), ('ԇ', 'ԇ'), ('ԉ', 'ԉ'), - ('ԋ', 'ԋ'), ('ԍ', 'ԍ'), ('ԏ', 'ԏ'), ('ԑ', 'ԑ'), ('ԓ', 'ԓ'), - ('ԕ', 'ԕ'), ('ԗ', 'ԗ'), ('ԙ', 'ԙ'), ('ԛ', 'ԛ'), ('ԝ', 'ԝ'), - ('ԟ', 'ԟ'), ('ԡ', 'ԡ'), ('ԣ', 'ԣ'), ('ԥ', 'ԥ'), ('ԧ', 'ԧ'), - ('ԩ', 'ԩ'), ('ԫ', 'ԫ'), ('ԭ', 'ԭ'), ('ԯ', 'ԯ'), ('ա', 'և'), - ('ა', 'ჺ'), ('ჽ', 'ჿ'), ('ᏸ', 'ᏽ'), ('ᲀ', 'ᲈ'), - ('ᵹ', 'ᵹ'), ('ᵽ', 'ᵽ'), ('ḁ', 'ḁ'), ('ḃ', 'ḃ'), - ('ḅ', 'ḅ'), ('ḇ', 'ḇ'), ('ḉ', 'ḉ'), ('ḋ', 'ḋ'), - ('ḍ', 'ḍ'), ('ḏ', 'ḏ'), ('ḑ', 'ḑ'), ('ḓ', 'ḓ'), - ('ḕ', 'ḕ'), ('ḗ', 'ḗ'), ('ḙ', 'ḙ'), ('ḛ', 'ḛ'), - ('ḝ', 'ḝ'), ('ḟ', 'ḟ'), ('ḡ', 'ḡ'), ('ḣ', 'ḣ'), - ('ḥ', 'ḥ'), ('ḧ', 'ḧ'), ('ḩ', 'ḩ'), ('ḫ', 'ḫ'), - ('ḭ', 'ḭ'), ('ḯ', 'ḯ'), ('ḱ', 'ḱ'), ('ḳ', 'ḳ'), - ('ḵ', 'ḵ'), ('ḷ', 'ḷ'), ('ḹ', 'ḹ'), ('ḻ', 'ḻ'), - ('ḽ', 'ḽ'), ('ḿ', 'ḿ'), ('ṁ', 'ṁ'), ('ṃ', 'ṃ'), - ('ṅ', 'ṅ'), ('ṇ', 'ṇ'), ('ṉ', 'ṉ'), ('ṋ', 'ṋ'), - ('ṍ', 'ṍ'), ('ṏ', 'ṏ'), ('ṑ', 'ṑ'), ('ṓ', 'ṓ'), - ('ṕ', 'ṕ'), ('ṗ', 'ṗ'), ('ṙ', 'ṙ'), ('ṛ', 'ṛ'), - ('ṝ', 'ṝ'), ('ṟ', 'ṟ'), ('ṡ', 'ṡ'), ('ṣ', 'ṣ'), - ('ṥ', 'ṥ'), ('ṧ', 'ṧ'), ('ṩ', 'ṩ'), ('ṫ', 'ṫ'), - ('ṭ', 'ṭ'), ('ṯ', 'ṯ'), ('ṱ', 'ṱ'), ('ṳ', 'ṳ'), - ('ṵ', 'ṵ'), ('ṷ', 'ṷ'), ('ṹ', 'ṹ'), ('ṻ', 'ṻ'), - ('ṽ', 'ṽ'), ('ṿ', 'ṿ'), ('ẁ', 'ẁ'), ('ẃ', 'ẃ'), - ('ẅ', 'ẅ'), ('ẇ', 'ẇ'), ('ẉ', 'ẉ'), ('ẋ', 'ẋ'), - ('ẍ', 'ẍ'), ('ẏ', 'ẏ'), ('ẑ', 'ẑ'), ('ẓ', 'ẓ'), - ('ẕ', 'ẛ'), ('ạ', 'ạ'), ('ả', 'ả'), ('ấ', 'ấ'), - ('ầ', 'ầ'), ('ẩ', 'ẩ'), ('ẫ', 'ẫ'), ('ậ', 'ậ'), - ('ắ', 'ắ'), ('ằ', 'ằ'), ('ẳ', 'ẳ'), ('ẵ', 'ẵ'), - ('ặ', 'ặ'), ('ẹ', 'ẹ'), ('ẻ', 'ẻ'), ('ẽ', 'ẽ'), - ('ế', 'ế'), ('ề', 'ề'), ('ể', 'ể'), ('ễ', 'ễ'), - ('ệ', 'ệ'), ('ỉ', 'ỉ'), ('ị', 'ị'), ('ọ', 'ọ'), - ('ỏ', 'ỏ'), ('ố', 'ố'), ('ồ', 'ồ'), ('ổ', 'ổ'), - ('ỗ', 'ỗ'), ('ộ', 'ộ'), ('ớ', 'ớ'), ('ờ', 'ờ'), - ('ở', 'ở'), ('ỡ', 'ỡ'), ('ợ', 'ợ'), ('ụ', 'ụ'), - ('ủ', 'ủ'), ('ứ', 'ứ'), ('ừ', 'ừ'), ('ử', 'ử'), - ('ữ', 'ữ'), ('ự', 'ự'), ('ỳ', 'ỳ'), ('ỵ', 'ỵ'), - ('ỷ', 'ỷ'), ('ỹ', 'ỹ'), ('ỻ', 'ỻ'), ('ỽ', 'ỽ'), - ('ỿ', 'ἇ'), ('ἐ', 'ἕ'), ('ἠ', 'ἧ'), ('ἰ', 'ἷ'), - ('ὀ', 'ὅ'), ('ὐ', 'ὗ'), ('ὠ', 'ὧ'), ('ὰ', 'ώ'), - ('ᾀ', 'ᾴ'), ('ᾶ', 'ᾷ'), ('ᾼ', 'ᾼ'), ('ι', 'ι'), - ('ῂ', 'ῄ'), ('ῆ', 'ῇ'), ('ῌ', 'ῌ'), ('ῐ', 'ΐ'), - ('ῖ', 'ῗ'), ('ῠ', 'ῧ'), ('ῲ', 'ῴ'), ('ῶ', 'ῷ'), - ('ῼ', 'ῼ'), ('ⅎ', 'ⅎ'), ('ⅰ', 'ⅿ'), ('ↄ', 'ↄ'), - ('ⓐ', 'ⓩ'), ('ⰰ', 'ⱞ'), ('ⱡ', 'ⱡ'), ('ⱥ', 'ⱦ'), - ('ⱨ', 'ⱨ'), ('ⱪ', 'ⱪ'), ('ⱬ', 'ⱬ'), ('ⱳ', 'ⱳ'), - ('ⱶ', 'ⱶ'), ('ⲁ', 'ⲁ'), ('ⲃ', 'ⲃ'), ('ⲅ', 'ⲅ'), - ('ⲇ', 'ⲇ'), ('ⲉ', 'ⲉ'), ('ⲋ', 'ⲋ'), ('ⲍ', 'ⲍ'), - ('ⲏ', 'ⲏ'), ('ⲑ', 'ⲑ'), ('ⲓ', 'ⲓ'), ('ⲕ', 'ⲕ'), - ('ⲗ', 'ⲗ'), ('ⲙ', 'ⲙ'), ('ⲛ', 'ⲛ'), ('ⲝ', 'ⲝ'), - ('ⲟ', 'ⲟ'), ('ⲡ', 'ⲡ'), ('ⲣ', 'ⲣ'), ('ⲥ', 'ⲥ'), - ('ⲧ', 'ⲧ'), ('ⲩ', 'ⲩ'), ('ⲫ', 'ⲫ'), ('ⲭ', 'ⲭ'), - ('ⲯ', 'ⲯ'), ('ⲱ', 'ⲱ'), ('ⲳ', 'ⲳ'), ('ⲵ', 'ⲵ'), - ('ⲷ', 'ⲷ'), ('ⲹ', 'ⲹ'), ('ⲻ', 'ⲻ'), ('ⲽ', 'ⲽ'), - ('ⲿ', 'ⲿ'), ('ⳁ', 'ⳁ'), ('ⳃ', 'ⳃ'), ('ⳅ', 'ⳅ'), - ('ⳇ', 'ⳇ'), ('ⳉ', 'ⳉ'), ('ⳋ', 'ⳋ'), ('ⳍ', 'ⳍ'), - ('ⳏ', 'ⳏ'), ('ⳑ', 'ⳑ'), ('ⳓ', 'ⳓ'), ('ⳕ', 'ⳕ'), - ('ⳗ', 'ⳗ'), ('ⳙ', 'ⳙ'), ('ⳛ', 'ⳛ'), ('ⳝ', 'ⳝ'), - ('ⳟ', 'ⳟ'), ('ⳡ', 'ⳡ'), ('ⳣ', 'ⳣ'), ('ⳬ', 'ⳬ'), - ('ⳮ', 'ⳮ'), ('ⳳ', 'ⳳ'), ('ⴀ', 'ⴥ'), ('ⴧ', 'ⴧ'), - ('ⴭ', 'ⴭ'), ('ꙁ', 'ꙁ'), ('ꙃ', 'ꙃ'), ('ꙅ', 'ꙅ'), - ('ꙇ', 'ꙇ'), ('ꙉ', 'ꙉ'), ('ꙋ', 'ꙋ'), ('ꙍ', 'ꙍ'), - ('ꙏ', 'ꙏ'), ('ꙑ', 'ꙑ'), ('ꙓ', 'ꙓ'), ('ꙕ', 'ꙕ'), - ('ꙗ', 'ꙗ'), ('ꙙ', 'ꙙ'), ('ꙛ', 'ꙛ'), ('ꙝ', 'ꙝ'), - ('ꙟ', 'ꙟ'), ('ꙡ', 'ꙡ'), ('ꙣ', 'ꙣ'), ('ꙥ', 'ꙥ'), - ('ꙧ', 'ꙧ'), ('ꙩ', 'ꙩ'), ('ꙫ', 'ꙫ'), ('ꙭ', 'ꙭ'), - ('ꚁ', 'ꚁ'), ('ꚃ', 'ꚃ'), ('ꚅ', 'ꚅ'), ('ꚇ', 'ꚇ'), - ('ꚉ', 'ꚉ'), ('ꚋ', 'ꚋ'), ('ꚍ', 'ꚍ'), ('ꚏ', 'ꚏ'), - ('ꚑ', 'ꚑ'), ('ꚓ', 'ꚓ'), ('ꚕ', 'ꚕ'), ('ꚗ', 'ꚗ'), - ('ꚙ', 'ꚙ'), ('ꚛ', 'ꚛ'), ('ꜣ', 'ꜣ'), ('ꜥ', 'ꜥ'), - ('ꜧ', 'ꜧ'), ('ꜩ', 'ꜩ'), ('ꜫ', 'ꜫ'), ('ꜭ', 'ꜭ'), - ('ꜯ', 'ꜯ'), ('ꜳ', 'ꜳ'), ('ꜵ', 'ꜵ'), ('ꜷ', 'ꜷ'), - ('ꜹ', 'ꜹ'), ('ꜻ', 'ꜻ'), ('ꜽ', 'ꜽ'), ('ꜿ', 'ꜿ'), - ('ꝁ', 'ꝁ'), ('ꝃ', 'ꝃ'), ('ꝅ', 'ꝅ'), ('ꝇ', 'ꝇ'), - ('ꝉ', 'ꝉ'), ('ꝋ', 'ꝋ'), ('ꝍ', 'ꝍ'), ('ꝏ', 'ꝏ'), - ('ꝑ', 'ꝑ'), ('ꝓ', 'ꝓ'), ('ꝕ', 'ꝕ'), ('ꝗ', 'ꝗ'), - ('ꝙ', 'ꝙ'), ('ꝛ', 'ꝛ'), ('ꝝ', 'ꝝ'), ('ꝟ', 'ꝟ'), - ('ꝡ', 'ꝡ'), ('ꝣ', 'ꝣ'), ('ꝥ', 'ꝥ'), ('ꝧ', 'ꝧ'), - ('ꝩ', 'ꝩ'), ('ꝫ', 'ꝫ'), ('ꝭ', 'ꝭ'), ('ꝯ', 'ꝯ'), - ('ꝺ', 'ꝺ'), ('ꝼ', 'ꝼ'), ('ꝿ', 'ꝿ'), ('ꞁ', 'ꞁ'), - ('ꞃ', 'ꞃ'), ('ꞅ', 'ꞅ'), ('ꞇ', 'ꞇ'), ('ꞌ', 'ꞌ'), - ('ꞑ', 'ꞑ'), ('ꞓ', 'ꞓ'), ('ꞗ', 'ꞗ'), ('ꞙ', 'ꞙ'), - ('ꞛ', 'ꞛ'), ('ꞝ', 'ꞝ'), ('ꞟ', 'ꞟ'), ('ꞡ', 'ꞡ'), - ('ꞣ', 'ꞣ'), ('ꞥ', 'ꞥ'), ('ꞧ', 'ꞧ'), ('ꞩ', 'ꞩ'), - ('ꞵ', 'ꞵ'), ('ꞷ', 'ꞷ'), ('\u{a7b9}', '\u{a7b9}'), ('ꭓ', 'ꭓ'), - ('ꭰ', 'ꮿ'), ('ff', 'st'), ('ﬓ', 'ﬗ'), ('a', 'z'), - ('𐐨', '𐑏'), ('𐓘', '𐓻'), ('𐳀', '𐳲'), ('𑣀', '𑣟'), - ('\u{16e60}', '\u{16e7f}'), ('𞤢', '𞥃'), + ('\u{345}', '\u{345}'), ('ͱ', 'ͱ'), ('ͳ', 'ͳ'), ('ͷ', 'ͷ'), + ('ͻ', 'ͽ'), ('ΐ', 'ΐ'), ('ά', 'ώ'), ('ϐ', 'ϑ'), ('ϕ', 'ϗ'), + ('ϙ', 'ϙ'), ('ϛ', 'ϛ'), ('ϝ', 'ϝ'), ('ϟ', 'ϟ'), ('ϡ', 'ϡ'), + ('ϣ', 'ϣ'), ('ϥ', 'ϥ'), ('ϧ', 'ϧ'), ('ϩ', 'ϩ'), ('ϫ', 'ϫ'), + ('ϭ', 'ϭ'), ('ϯ', 'ϳ'), ('ϵ', 'ϵ'), ('ϸ', 'ϸ'), ('ϻ', 'ϻ'), + ('а', 'џ'), ('ѡ', 'ѡ'), ('ѣ', 'ѣ'), ('ѥ', 'ѥ'), ('ѧ', 'ѧ'), + ('ѩ', 'ѩ'), ('ѫ', 'ѫ'), ('ѭ', 'ѭ'), ('ѯ', 'ѯ'), ('ѱ', 'ѱ'), + ('ѳ', 'ѳ'), ('ѵ', 'ѵ'), ('ѷ', 'ѷ'), ('ѹ', 'ѹ'), ('ѻ', 'ѻ'), + ('ѽ', 'ѽ'), ('ѿ', 'ѿ'), ('ҁ', 'ҁ'), ('ҋ', 'ҋ'), ('ҍ', 'ҍ'), + ('ҏ', 'ҏ'), ('ґ', 'ґ'), ('ғ', 'ғ'), ('ҕ', 'ҕ'), ('җ', 'җ'), + ('ҙ', 'ҙ'), ('қ', 'қ'), ('ҝ', 'ҝ'), ('ҟ', 'ҟ'), ('ҡ', 'ҡ'), + ('ң', 'ң'), ('ҥ', 'ҥ'), ('ҧ', 'ҧ'), ('ҩ', 'ҩ'), ('ҫ', 'ҫ'), + ('ҭ', 'ҭ'), ('ү', 'ү'), ('ұ', 'ұ'), ('ҳ', 'ҳ'), ('ҵ', 'ҵ'), + ('ҷ', 'ҷ'), ('ҹ', 'ҹ'), ('һ', 'һ'), ('ҽ', 'ҽ'), ('ҿ', 'ҿ'), + ('ӂ', 'ӂ'), ('ӄ', 'ӄ'), ('ӆ', 'ӆ'), ('ӈ', 'ӈ'), ('ӊ', 'ӊ'), + ('ӌ', 'ӌ'), ('ӎ', 'ӏ'), ('ӑ', 'ӑ'), ('ӓ', 'ӓ'), ('ӕ', 'ӕ'), + ('ӗ', 'ӗ'), ('ә', 'ә'), ('ӛ', 'ӛ'), ('ӝ', 'ӝ'), ('ӟ', 'ӟ'), + ('ӡ', 'ӡ'), ('ӣ', 'ӣ'), ('ӥ', 'ӥ'), ('ӧ', 'ӧ'), ('ө', 'ө'), + ('ӫ', 'ӫ'), ('ӭ', 'ӭ'), ('ӯ', 'ӯ'), ('ӱ', 'ӱ'), ('ӳ', 'ӳ'), + ('ӵ', 'ӵ'), ('ӷ', 'ӷ'), ('ӹ', 'ӹ'), ('ӻ', 'ӻ'), ('ӽ', 'ӽ'), + ('ӿ', 'ӿ'), ('ԁ', 'ԁ'), ('ԃ', 'ԃ'), ('ԅ', 'ԅ'), ('ԇ', 'ԇ'), + ('ԉ', 'ԉ'), ('ԋ', 'ԋ'), ('ԍ', 'ԍ'), ('ԏ', 'ԏ'), ('ԑ', 'ԑ'), + ('ԓ', 'ԓ'), ('ԕ', 'ԕ'), ('ԗ', 'ԗ'), ('ԙ', 'ԙ'), ('ԛ', 'ԛ'), + ('ԝ', 'ԝ'), ('ԟ', 'ԟ'), ('ԡ', 'ԡ'), ('ԣ', 'ԣ'), ('ԥ', 'ԥ'), + ('ԧ', 'ԧ'), ('ԩ', 'ԩ'), ('ԫ', 'ԫ'), ('ԭ', 'ԭ'), ('ԯ', 'ԯ'), + ('ա', 'և'), ('ა', 'ჺ'), ('ჽ', 'ჿ'), ('ᏸ', 'ᏽ'), + ('ᲀ', 'ᲈ'), ('ᵹ', 'ᵹ'), ('ᵽ', 'ᵽ'), ('ḁ', 'ḁ'), + ('ḃ', 'ḃ'), ('ḅ', 'ḅ'), ('ḇ', 'ḇ'), ('ḉ', 'ḉ'), + ('ḋ', 'ḋ'), ('ḍ', 'ḍ'), ('ḏ', 'ḏ'), ('ḑ', 'ḑ'), + ('ḓ', 'ḓ'), ('ḕ', 'ḕ'), ('ḗ', 'ḗ'), ('ḙ', 'ḙ'), + ('ḛ', 'ḛ'), ('ḝ', 'ḝ'), ('ḟ', 'ḟ'), ('ḡ', 'ḡ'), + ('ḣ', 'ḣ'), ('ḥ', 'ḥ'), ('ḧ', 'ḧ'), ('ḩ', 'ḩ'), + ('ḫ', 'ḫ'), ('ḭ', 'ḭ'), ('ḯ', 'ḯ'), ('ḱ', 'ḱ'), + ('ḳ', 'ḳ'), ('ḵ', 'ḵ'), ('ḷ', 'ḷ'), ('ḹ', 'ḹ'), + ('ḻ', 'ḻ'), ('ḽ', 'ḽ'), ('ḿ', 'ḿ'), ('ṁ', 'ṁ'), + ('ṃ', 'ṃ'), ('ṅ', 'ṅ'), ('ṇ', 'ṇ'), ('ṉ', 'ṉ'), + ('ṋ', 'ṋ'), ('ṍ', 'ṍ'), ('ṏ', 'ṏ'), ('ṑ', 'ṑ'), + ('ṓ', 'ṓ'), ('ṕ', 'ṕ'), ('ṗ', 'ṗ'), ('ṙ', 'ṙ'), + ('ṛ', 'ṛ'), ('ṝ', 'ṝ'), ('ṟ', 'ṟ'), ('ṡ', 'ṡ'), + ('ṣ', 'ṣ'), ('ṥ', 'ṥ'), ('ṧ', 'ṧ'), ('ṩ', 'ṩ'), + ('ṫ', 'ṫ'), ('ṭ', 'ṭ'), ('ṯ', 'ṯ'), ('ṱ', 'ṱ'), + ('ṳ', 'ṳ'), ('ṵ', 'ṵ'), ('ṷ', 'ṷ'), ('ṹ', 'ṹ'), + ('ṻ', 'ṻ'), ('ṽ', 'ṽ'), ('ṿ', 'ṿ'), ('ẁ', 'ẁ'), + ('ẃ', 'ẃ'), ('ẅ', 'ẅ'), ('ẇ', 'ẇ'), ('ẉ', 'ẉ'), + ('ẋ', 'ẋ'), ('ẍ', 'ẍ'), ('ẏ', 'ẏ'), ('ẑ', 'ẑ'), + ('ẓ', 'ẓ'), ('ẕ', 'ẛ'), ('ạ', 'ạ'), ('ả', 'ả'), + ('ấ', 'ấ'), ('ầ', 'ầ'), ('ẩ', 'ẩ'), ('ẫ', 'ẫ'), + ('ậ', 'ậ'), ('ắ', 'ắ'), ('ằ', 'ằ'), ('ẳ', 'ẳ'), + ('ẵ', 'ẵ'), ('ặ', 'ặ'), ('ẹ', 'ẹ'), ('ẻ', 'ẻ'), + ('ẽ', 'ẽ'), ('ế', 'ế'), ('ề', 'ề'), ('ể', 'ể'), + ('ễ', 'ễ'), ('ệ', 'ệ'), ('ỉ', 'ỉ'), ('ị', 'ị'), + ('ọ', 'ọ'), ('ỏ', 'ỏ'), ('ố', 'ố'), ('ồ', 'ồ'), + ('ổ', 'ổ'), ('ỗ', 'ỗ'), ('ộ', 'ộ'), ('ớ', 'ớ'), + ('ờ', 'ờ'), ('ở', 'ở'), ('ỡ', 'ỡ'), ('ợ', 'ợ'), + ('ụ', 'ụ'), ('ủ', 'ủ'), ('ứ', 'ứ'), ('ừ', 'ừ'), + ('ử', 'ử'), ('ữ', 'ữ'), ('ự', 'ự'), ('ỳ', 'ỳ'), + ('ỵ', 'ỵ'), ('ỷ', 'ỷ'), ('ỹ', 'ỹ'), ('ỻ', 'ỻ'), + ('ỽ', 'ỽ'), ('ỿ', 'ἇ'), ('ἐ', 'ἕ'), ('ἠ', 'ἧ'), + ('ἰ', 'ἷ'), ('ὀ', 'ὅ'), ('ὐ', 'ὗ'), ('ὠ', 'ὧ'), + ('ὰ', 'ώ'), ('ᾀ', 'ᾴ'), ('ᾶ', 'ᾷ'), ('ᾼ', 'ᾼ'), + ('ι', 'ι'), ('ῂ', 'ῄ'), ('ῆ', 'ῇ'), ('ῌ', 'ῌ'), + ('ῐ', 'ΐ'), ('ῖ', 'ῗ'), ('ῠ', 'ῧ'), ('ῲ', 'ῴ'), + ('ῶ', 'ῷ'), ('ῼ', 'ῼ'), ('ⅎ', 'ⅎ'), ('ⅰ', 'ⅿ'), + ('ↄ', 'ↄ'), ('ⓐ', 'ⓩ'), ('ⰰ', 'ⱞ'), ('ⱡ', 'ⱡ'), + ('ⱥ', 'ⱦ'), ('ⱨ', 'ⱨ'), ('ⱪ', 'ⱪ'), ('ⱬ', 'ⱬ'), + ('ⱳ', 'ⱳ'), ('ⱶ', 'ⱶ'), ('ⲁ', 'ⲁ'), ('ⲃ', 'ⲃ'), + ('ⲅ', 'ⲅ'), ('ⲇ', 'ⲇ'), ('ⲉ', 'ⲉ'), ('ⲋ', 'ⲋ'), + ('ⲍ', 'ⲍ'), ('ⲏ', 'ⲏ'), ('ⲑ', 'ⲑ'), ('ⲓ', 'ⲓ'), + ('ⲕ', 'ⲕ'), ('ⲗ', 'ⲗ'), ('ⲙ', 'ⲙ'), ('ⲛ', 'ⲛ'), + ('ⲝ', 'ⲝ'), ('ⲟ', 'ⲟ'), ('ⲡ', 'ⲡ'), ('ⲣ', 'ⲣ'), + ('ⲥ', 'ⲥ'), ('ⲧ', 'ⲧ'), ('ⲩ', 'ⲩ'), ('ⲫ', 'ⲫ'), + ('ⲭ', 'ⲭ'), ('ⲯ', 'ⲯ'), ('ⲱ', 'ⲱ'), ('ⲳ', 'ⲳ'), + ('ⲵ', 'ⲵ'), ('ⲷ', 'ⲷ'), ('ⲹ', 'ⲹ'), ('ⲻ', 'ⲻ'), + ('ⲽ', 'ⲽ'), ('ⲿ', 'ⲿ'), ('ⳁ', 'ⳁ'), ('ⳃ', 'ⳃ'), + ('ⳅ', 'ⳅ'), ('ⳇ', 'ⳇ'), ('ⳉ', 'ⳉ'), ('ⳋ', 'ⳋ'), + ('ⳍ', 'ⳍ'), ('ⳏ', 'ⳏ'), ('ⳑ', 'ⳑ'), ('ⳓ', 'ⳓ'), + ('ⳕ', 'ⳕ'), ('ⳗ', 'ⳗ'), ('ⳙ', 'ⳙ'), ('ⳛ', 'ⳛ'), + ('ⳝ', 'ⳝ'), ('ⳟ', 'ⳟ'), ('ⳡ', 'ⳡ'), ('ⳣ', 'ⳣ'), + ('ⳬ', 'ⳬ'), ('ⳮ', 'ⳮ'), ('ⳳ', 'ⳳ'), ('ⴀ', 'ⴥ'), + ('ⴧ', 'ⴧ'), ('ⴭ', 'ⴭ'), ('ꙁ', 'ꙁ'), ('ꙃ', 'ꙃ'), + ('ꙅ', 'ꙅ'), ('ꙇ', 'ꙇ'), ('ꙉ', 'ꙉ'), ('ꙋ', 'ꙋ'), + ('ꙍ', 'ꙍ'), ('ꙏ', 'ꙏ'), ('ꙑ', 'ꙑ'), ('ꙓ', 'ꙓ'), + ('ꙕ', 'ꙕ'), ('ꙗ', 'ꙗ'), ('ꙙ', 'ꙙ'), ('ꙛ', 'ꙛ'), + ('ꙝ', 'ꙝ'), ('ꙟ', 'ꙟ'), ('ꙡ', 'ꙡ'), ('ꙣ', 'ꙣ'), + ('ꙥ', 'ꙥ'), ('ꙧ', 'ꙧ'), ('ꙩ', 'ꙩ'), ('ꙫ', 'ꙫ'), + ('ꙭ', 'ꙭ'), ('ꚁ', 'ꚁ'), ('ꚃ', 'ꚃ'), ('ꚅ', 'ꚅ'), + ('ꚇ', 'ꚇ'), ('ꚉ', 'ꚉ'), ('ꚋ', 'ꚋ'), ('ꚍ', 'ꚍ'), + ('ꚏ', 'ꚏ'), ('ꚑ', 'ꚑ'), ('ꚓ', 'ꚓ'), ('ꚕ', 'ꚕ'), + ('ꚗ', 'ꚗ'), ('ꚙ', 'ꚙ'), ('ꚛ', 'ꚛ'), ('ꜣ', 'ꜣ'), + ('ꜥ', 'ꜥ'), ('ꜧ', 'ꜧ'), ('ꜩ', 'ꜩ'), ('ꜫ', 'ꜫ'), + ('ꜭ', 'ꜭ'), ('ꜯ', 'ꜯ'), ('ꜳ', 'ꜳ'), ('ꜵ', 'ꜵ'), + ('ꜷ', 'ꜷ'), ('ꜹ', 'ꜹ'), ('ꜻ', 'ꜻ'), ('ꜽ', 'ꜽ'), + ('ꜿ', 'ꜿ'), ('ꝁ', 'ꝁ'), ('ꝃ', 'ꝃ'), ('ꝅ', 'ꝅ'), + ('ꝇ', 'ꝇ'), ('ꝉ', 'ꝉ'), ('ꝋ', 'ꝋ'), ('ꝍ', 'ꝍ'), + ('ꝏ', 'ꝏ'), ('ꝑ', 'ꝑ'), ('ꝓ', 'ꝓ'), ('ꝕ', 'ꝕ'), + ('ꝗ', 'ꝗ'), ('ꝙ', 'ꝙ'), ('ꝛ', 'ꝛ'), ('ꝝ', 'ꝝ'), + ('ꝟ', 'ꝟ'), ('ꝡ', 'ꝡ'), ('ꝣ', 'ꝣ'), ('ꝥ', 'ꝥ'), + ('ꝧ', 'ꝧ'), ('ꝩ', 'ꝩ'), ('ꝫ', 'ꝫ'), ('ꝭ', 'ꝭ'), + ('ꝯ', 'ꝯ'), ('ꝺ', 'ꝺ'), ('ꝼ', 'ꝼ'), ('ꝿ', 'ꝿ'), + ('ꞁ', 'ꞁ'), ('ꞃ', 'ꞃ'), ('ꞅ', 'ꞅ'), ('ꞇ', 'ꞇ'), + ('ꞌ', 'ꞌ'), ('ꞑ', 'ꞑ'), ('ꞓ', 'ꞓ'), ('ꞗ', 'ꞗ'), + ('ꞙ', 'ꞙ'), ('ꞛ', 'ꞛ'), ('ꞝ', 'ꞝ'), ('ꞟ', 'ꞟ'), + ('ꞡ', 'ꞡ'), ('ꞣ', 'ꞣ'), ('ꞥ', 'ꞥ'), ('ꞧ', 'ꞧ'), + ('ꞩ', 'ꞩ'), ('ꞵ', 'ꞵ'), ('ꞷ', 'ꞷ'), ('ꞹ', 'ꞹ'), + ('ꭓ', 'ꭓ'), ('ꭰ', 'ꮿ'), ('ff', 'st'), ('ﬓ', 'ﬗ'), + ('a', 'z'), ('𐐨', '𐑏'), ('𐓘', '𐓻'), ('𐳀', '𐳲'), + ('𑣀', '𑣟'), ('𖹠', '𖹿'), ('𞤢', '𞥃'), ]; pub const DASH: &'static [(char, char)] = &[ @@ -971,81 +1034,211 @@ ]; pub const DEFAULT_IGNORABLE_CODE_POINT: &'static [(char, char)] = &[ - ('\u{ad}', '\u{ad}'), ('͏', '͏'), ('\u{61c}', '\u{61c}'), ('ᅟ', 'ᅠ'), - ('឴', '឵'), ('᠋', '\u{180e}'), ('\u{200b}', '\u{200f}'), - ('\u{202a}', '\u{202e}'), ('\u{2060}', '\u{206f}'), ('ㅤ', 'ㅤ'), - ('︀', '️'), ('\u{feff}', '\u{feff}'), ('ᅠ', 'ᅠ'), - ('\u{fff0}', '\u{fff8}'), ('\u{1bca0}', '\u{1bca3}'), - ('\u{1d173}', '\u{1d17a}'), ('\u{e0000}', '\u{e0fff}'), + ('\u{ad}', '\u{ad}'), ('\u{34f}', '\u{34f}'), ('\u{61c}', '\u{61c}'), + ('ᅟ', 'ᅠ'), ('\u{17b4}', '\u{17b5}'), ('\u{180b}', '\u{180e}'), + ('\u{200b}', '\u{200f}'), ('\u{202a}', '\u{202e}'), + ('\u{2060}', '\u{206f}'), ('ㅤ', 'ㅤ'), ('\u{fe00}', '\u{fe0f}'), + ('\u{feff}', '\u{feff}'), ('ᅠ', 'ᅠ'), ('\u{fff0}', '\u{fff8}'), + ('\u{1bca0}', '\u{1bca3}'), ('\u{1d173}', '\u{1d17a}'), + ('\u{e0000}', '\u{e0fff}'), ]; pub const DEPRECATED: &'static [(char, char)] = &[ - ('ʼn', 'ʼn'), ('ٳ', 'ٳ'), ('ཷ', 'ཷ'), ('ཹ', 'ཹ'), ('ឣ', 'ឤ'), - ('\u{206a}', '\u{206f}'), ('〈', '〉'), ('\u{e0001}', '\u{e0001}'), + ('ʼn', 'ʼn'), ('ٳ', 'ٳ'), ('\u{f77}', '\u{f77}'), ('\u{f79}', '\u{f79}'), + ('ឣ', 'ឤ'), ('\u{206a}', '\u{206f}'), ('〈', '〉'), + ('\u{e0001}', '\u{e0001}'), ]; pub const DIACRITIC: &'static [(char, char)] = &[ ('^', '^'), ('`', '`'), ('¨', '¨'), ('¯', '¯'), ('´', '´'), - ('·', '¸'), ('ʰ', '͎'), ('͐', '͗'), ('͝', '͢'), ('ʹ', '͵'), - ('ͺ', 'ͺ'), ('΄', '΅'), ('҃', '҇'), ('ՙ', 'ՙ'), ('֑', '֡'), - ('֣', 'ֽ'), ('ֿ', 'ֿ'), ('ׁ', 'ׂ'), ('ׄ', 'ׄ'), ('ً', 'ْ'), - ('ٗ', '٘'), ('۟', '۠'), ('ۥ', 'ۦ'), ('۪', '۬'), ('ܰ', '݊'), - ('ަ', 'ް'), ('߫', 'ߵ'), ('࠘', '࠙'), ('ࣣ', 'ࣾ'), ('़', '़'), - ('्', '्'), ('॑', '॔'), ('ॱ', 'ॱ'), ('়', '়'), - ('্', '্'), ('਼', '਼'), ('੍', '੍'), ('઼', '઼'), - ('્', '્'), ('૽', '૿'), ('଼', '଼'), ('୍', '୍'), - ('்', '்'), ('్', '్'), ('಼', '಼'), ('್', '್'), - ('഻', '഼'), ('്', '്'), ('්', '්'), ('็', '์'), - ('๎', '๎'), ('່', '໌'), ('༘', '༙'), ('༵', '༵'), - ('༷', '༷'), ('༹', '༹'), ('༾', '༿'), ('ྂ', '྄'), - ('྆', '྇'), ('࿆', '࿆'), ('့', '့'), ('္', '်'), - ('ႇ', 'ႍ'), ('ႏ', 'ႏ'), ('ႚ', 'ႛ'), ('៉', '៓'), - ('៝', '៝'), ('᤹', '᤻'), ('᩵', '᩼'), ('᩿', '᩿'), - ('᪰', '᪽'), ('᬴', '᬴'), ('᭄', '᭄'), ('᭫', '᭳'), - ('᮪', '᮫'), ('ᰶ', '᰷'), ('ᱸ', 'ᱽ'), ('᳐', '᳨'), - ('᳭', '᳭'), ('᳴', '᳴'), ('᳷', '᳹'), ('ᴬ', 'ᵪ'), - ('᷄', '᷏'), ('᷵', '᷹'), ('᷽', '᷿'), ('᾽', '᾽'), - ('᾿', '῁'), ('῍', '῏'), ('῝', '῟'), ('῭', '`'), - ('´', '῾'), ('⳯', '⳱'), ('ⸯ', 'ⸯ'), ('〪', '〯'), - ('゙', '゜'), ('ー', 'ー'), ('꙯', '꙯'), ('꙼', '꙽'), - ('ꙿ', 'ꙿ'), ('ꚜ', 'ꚝ'), ('꛰', '꛱'), ('ꜗ', '꜡'), - ('ꞈ', 'ꞈ'), ('ꟸ', 'ꟹ'), ('꣄', '꣄'), ('꣠', '꣱'), - ('꤫', '꤮'), ('꥓', '꥓'), ('꦳', '꦳'), ('꧀', '꧀'), - ('ꧥ', 'ꧥ'), ('ꩻ', 'ꩽ'), ('꪿', 'ꫂ'), ('꫶', '꫶'), - ('꭛', 'ꭟ'), ('꯬', '꯭'), ('ﬞ', 'ﬞ'), ('︠', '︯'), - ('^', '^'), ('`', '`'), ('ー', 'ー'), ('゙', '゚'), - (' ̄', ' ̄'), ('𐋠', '𐋠'), ('𐫥', '𐫦'), - ('\u{10d22}', '\u{10d27}'), ('\u{10f46}', '\u{10f50}'), ('𑂹', '𑂺'), - ('𑄳', '𑄴'), ('𑅳', '𑅳'), ('𑇀', '𑇀'), ('𑇊', '𑇌'), - ('𑈵', '𑈶'), ('𑋩', '𑋪'), ('𑌼', '𑌼'), ('𑍍', '𑍍'), - ('𑍦', '𑍬'), ('𑍰', '𑍴'), ('𑑂', '𑑂'), ('𑑆', '𑑆'), - ('𑓂', '𑓃'), ('𑖿', '𑗀'), ('𑘿', '𑘿'), ('𑚶', '𑚷'), - ('𑜫', '𑜫'), ('\u{11839}', '\u{1183a}'), ('𑨴', '𑨴'), - ('𑩇', '𑩇'), ('𑪙', '𑪙'), ('𑰿', '𑰿'), ('𑵂', '𑵂'), - ('𑵄', '𑵅'), ('\u{11d97}', '\u{11d97}'), ('𖫰', '𖫴'), - ('𖾏', '𖾟'), ('𝅧', '𝅩'), ('𝅭', '𝅲'), ('𝅻', '𝆂'), - ('𝆅', '𝆋'), ('𝆪', '𝆭'), ('𞣐', '𞣖'), ('𞥄', '𞥆'), - ('𞥈', '𞥊'), + ('·', '¸'), ('ʰ', '\u{34e}'), ('\u{350}', '\u{357}'), + ('\u{35d}', '\u{362}'), ('ʹ', '͵'), ('ͺ', 'ͺ'), ('΄', '΅'), + ('\u{483}', '\u{487}'), ('ՙ', 'ՙ'), ('\u{591}', '\u{5a1}'), + ('\u{5a3}', '\u{5bd}'), ('\u{5bf}', '\u{5bf}'), ('\u{5c1}', '\u{5c2}'), + ('\u{5c4}', '\u{5c4}'), ('\u{64b}', '\u{652}'), ('\u{657}', '\u{658}'), + ('\u{6df}', '\u{6e0}'), ('ۥ', 'ۦ'), ('\u{6ea}', '\u{6ec}'), + ('\u{730}', '\u{74a}'), ('\u{7a6}', '\u{7b0}'), ('\u{7eb}', 'ߵ'), + ('\u{818}', '\u{819}'), ('\u{8e3}', '\u{8fe}'), ('\u{93c}', '\u{93c}'), + ('\u{94d}', '\u{94d}'), ('\u{951}', '\u{954}'), ('ॱ', 'ॱ'), + ('\u{9bc}', '\u{9bc}'), ('\u{9cd}', '\u{9cd}'), ('\u{a3c}', '\u{a3c}'), + ('\u{a4d}', '\u{a4d}'), ('\u{abc}', '\u{abc}'), ('\u{acd}', '\u{acd}'), + ('\u{afd}', '\u{aff}'), ('\u{b3c}', '\u{b3c}'), ('\u{b4d}', '\u{b4d}'), + ('\u{bcd}', '\u{bcd}'), ('\u{c4d}', '\u{c4d}'), ('\u{cbc}', '\u{cbc}'), + ('\u{ccd}', '\u{ccd}'), ('\u{d3b}', '\u{d3c}'), ('\u{d4d}', '\u{d4d}'), + ('\u{dca}', '\u{dca}'), ('\u{e47}', '\u{e4c}'), ('\u{e4e}', '\u{e4e}'), + ('\u{ec8}', '\u{ecc}'), ('\u{f18}', '\u{f19}'), ('\u{f35}', '\u{f35}'), + ('\u{f37}', '\u{f37}'), ('\u{f39}', '\u{f39}'), ('༾', '༿'), + ('\u{f82}', '\u{f84}'), ('\u{f86}', '\u{f87}'), ('\u{fc6}', '\u{fc6}'), + ('\u{1037}', '\u{1037}'), ('\u{1039}', '\u{103a}'), ('ႇ', '\u{108d}'), + ('ႏ', 'ႏ'), ('ႚ', 'ႛ'), ('\u{17c9}', '\u{17d3}'), + ('\u{17dd}', '\u{17dd}'), ('\u{1939}', '\u{193b}'), + ('\u{1a75}', '\u{1a7c}'), ('\u{1a7f}', '\u{1a7f}'), + ('\u{1ab0}', '\u{1abd}'), ('\u{1b34}', '\u{1b34}'), ('᭄', '᭄'), + ('\u{1b6b}', '\u{1b73}'), ('᮪', '\u{1bab}'), ('\u{1c36}', '\u{1c37}'), + ('ᱸ', 'ᱽ'), ('\u{1cd0}', '\u{1ce8}'), ('\u{1ced}', '\u{1ced}'), + ('\u{1cf4}', '\u{1cf4}'), ('᳷', '\u{1cf9}'), ('ᴬ', 'ᵪ'), + ('\u{1dc4}', '\u{1dcf}'), ('\u{1df5}', '\u{1df9}'), + ('\u{1dfd}', '\u{1dff}'), ('᾽', '᾽'), ('᾿', '῁'), ('῍', '῏'), + ('῝', '῟'), ('῭', '`'), ('´', '῾'), ('\u{2cef}', '\u{2cf1}'), + ('ⸯ', 'ⸯ'), ('\u{302a}', '\u{302f}'), ('\u{3099}', '゜'), + ('ー', 'ー'), ('\u{a66f}', '\u{a66f}'), ('\u{a67c}', '\u{a67d}'), + ('ꙿ', 'ꙿ'), ('ꚜ', 'ꚝ'), ('\u{a6f0}', '\u{a6f1}'), ('ꜗ', '꜡'), + ('ꞈ', 'ꞈ'), ('ꟸ', 'ꟹ'), ('\u{a8c4}', '\u{a8c4}'), + ('\u{a8e0}', '\u{a8f1}'), ('\u{a92b}', '꤮'), ('꥓', '꥓'), + ('\u{a9b3}', '\u{a9b3}'), ('꧀', '꧀'), ('\u{a9e5}', '\u{a9e5}'), + ('ꩻ', 'ꩽ'), ('\u{aabf}', 'ꫂ'), ('\u{aaf6}', '\u{aaf6}'), + ('꭛', 'ꭟ'), ('꯬', '\u{abed}'), ('\u{fb1e}', '\u{fb1e}'), + ('\u{fe20}', '\u{fe2f}'), ('^', '^'), ('`', '`'), ('ー', 'ー'), + ('\u{ff9e}', '\u{ff9f}'), (' ̄', ' ̄'), ('\u{102e0}', '\u{102e0}'), + ('\u{10ae5}', '\u{10ae6}'), ('𐴢', '\u{10d27}'), + ('\u{10f46}', '\u{10f50}'), ('\u{110b9}', '\u{110ba}'), + ('\u{11133}', '\u{11134}'), ('\u{11173}', '\u{11173}'), ('𑇀', '𑇀'), + ('\u{111ca}', '\u{111cc}'), ('𑈵', '\u{11236}'), + ('\u{112e9}', '\u{112ea}'), ('\u{1133c}', '\u{1133c}'), ('𑍍', '𑍍'), + ('\u{11366}', '\u{1136c}'), ('\u{11370}', '\u{11374}'), + ('\u{11442}', '\u{11442}'), ('\u{11446}', '\u{11446}'), + ('\u{114c2}', '\u{114c3}'), ('\u{115bf}', '\u{115c0}'), + ('\u{1163f}', '\u{1163f}'), ('𑚶', '\u{116b7}'), + ('\u{1172b}', '\u{1172b}'), ('\u{11839}', '\u{1183a}'), + ('\u{11a34}', '\u{11a34}'), ('\u{11a47}', '\u{11a47}'), + ('\u{11a99}', '\u{11a99}'), ('\u{11c3f}', '\u{11c3f}'), + ('\u{11d42}', '\u{11d42}'), ('\u{11d44}', '\u{11d45}'), + ('\u{11d97}', '\u{11d97}'), ('\u{16af0}', '\u{16af4}'), + ('\u{16f8f}', '𖾟'), ('\u{1d167}', '\u{1d169}'), ('𝅭', '\u{1d172}'), + ('\u{1d17b}', '\u{1d182}'), ('\u{1d185}', '\u{1d18b}'), + ('\u{1d1aa}', '\u{1d1ad}'), ('\u{1e8d0}', '\u{1e8d6}'), + ('\u{1e944}', '\u{1e946}'), ('\u{1e948}', '\u{1e94a}'), +]; + +pub const EMOJI: &'static [(char, char)] = &[ + ('#', '#'), ('*', '*'), ('0', '9'), ('©', '©'), ('®', '®'), + ('‼', '‼'), ('⁉', '⁉'), ('™', '™'), ('ℹ', 'ℹ'), + ('↔', '↙'), ('↩', '↪'), ('⌚', '⌛'), ('⌨', '⌨'), + ('⏏', '⏏'), ('⏩', '⏳'), ('⏸', '⏺'), ('Ⓜ', 'Ⓜ'), + ('▪', '▫'), ('▶', '▶'), ('◀', '◀'), ('◻', '◾'), + ('☀', '☄'), ('☎', '☎'), ('☑', '☑'), ('☔', '☕'), + ('☘', '☘'), ('☝', '☝'), ('☠', '☠'), ('☢', '☣'), + ('☦', '☦'), ('☪', '☪'), ('☮', '☯'), ('☸', '☺'), + ('♀', '♀'), ('♂', '♂'), ('♈', '♓'), ('♟', '♠'), + ('♣', '♣'), ('♥', '♦'), ('♨', '♨'), ('♻', '♻'), + ('♾', '♿'), ('⚒', '⚗'), ('⚙', '⚙'), ('⚛', '⚜'), + ('⚠', '⚡'), ('⚪', '⚫'), ('⚰', '⚱'), ('⚽', '⚾'), + ('⛄', '⛅'), ('⛈', '⛈'), ('⛎', '⛏'), ('⛑', '⛑'), + ('⛓', '⛔'), ('⛩', '⛪'), ('⛰', '⛵'), ('⛷', '⛺'), + ('⛽', '⛽'), ('✂', '✂'), ('✅', '✅'), ('✈', '✍'), + ('✏', '✏'), ('✒', '✒'), ('✔', '✔'), ('✖', '✖'), + ('✝', '✝'), ('✡', '✡'), ('✨', '✨'), ('✳', '✴'), + ('❄', '❄'), ('❇', '❇'), ('❌', '❌'), ('❎', '❎'), + ('❓', '❕'), ('❗', '❗'), ('❣', '❤'), ('➕', '➗'), + ('➡', '➡'), ('➰', '➰'), ('➿', '➿'), ('⤴', '⤵'), + ('⬅', '⬇'), ('⬛', '⬜'), ('⭐', '⭐'), ('⭕', '⭕'), + ('〰', '〰'), ('〽', '〽'), ('㊗', '㊗'), ('㊙', '㊙'), + ('🀄', '🀄'), ('🃏', '🃏'), ('🅰', '🅱'), ('🅾', '🅿'), + ('🆎', '🆎'), ('🆑', '🆚'), ('🇦', '🇿'), ('🈁', '🈂'), + ('🈚', '🈚'), ('🈯', '🈯'), ('🈲', '🈺'), ('🉐', '🉑'), + ('🌀', '🌡'), ('🌤', '🎓'), ('🎖', '🎗'), ('🎙', '🎛'), + ('🎞', '🏰'), ('🏳', '🏵'), ('🏷', '📽'), ('📿', '🔽'), + ('🕉', '🕎'), ('🕐', '🕧'), ('🕯', '🕰'), ('🕳', '🕺'), + ('🖇', '🖇'), ('🖊', '🖍'), ('🖐', '🖐'), ('🖕', '🖖'), + ('🖤', '🖥'), ('🖨', '🖨'), ('🖱', '🖲'), ('🖼', '🖼'), + ('🗂', '🗄'), ('🗑', '🗓'), ('🗜', '🗞'), ('🗡', '🗡'), + ('🗣', '🗣'), ('🗨', '🗨'), ('🗯', '🗯'), ('🗳', '🗳'), + ('🗺', '🙏'), ('🚀', '🛅'), ('🛋', '🛒'), ('🛠', '🛥'), + ('🛩', '🛩'), ('🛫', '🛬'), ('🛰', '🛰'), ('🛳', '🛹'), + ('🤐', '🤺'), ('🤼', '🤾'), ('🥀', '🥅'), ('🥇', '🥰'), + ('🥳', '🥶'), ('🥺', '🥺'), ('🥼', '🦢'), ('🦰', '🦹'), + ('🧀', '🧂'), ('🧐', '🧿'), +]; + +pub const EMOJI_COMPONENT: &'static [(char, char)] = &[ + ('#', '#'), ('*', '*'), ('0', '9'), ('\u{200d}', '\u{200d}'), + ('\u{20e3}', '\u{20e3}'), ('\u{fe0f}', '\u{fe0f}'), ('🇦', '🇿'), + ('🏻', '🏿'), ('🦰', '🦳'), ('\u{e0020}', '\u{e007f}'), +]; + +pub const EMOJI_MODIFIER: &'static [(char, char)] = &[ + ('🏻', '🏿'), +]; + +pub const EMOJI_MODIFIER_BASE: &'static [(char, char)] = &[ + ('☝', '☝'), ('⛹', '⛹'), ('✊', '✍'), ('🎅', '🎅'), + ('🏂', '🏄'), ('🏇', '🏇'), ('🏊', '🏌'), ('👂', '👃'), + ('👆', '👐'), ('👦', '👩'), ('👮', '👮'), ('👰', '👸'), + ('👼', '👼'), ('💁', '💃'), ('💅', '💇'), ('💪', '💪'), + ('🕴', '🕵'), ('🕺', '🕺'), ('🖐', '🖐'), ('🖕', '🖖'), + ('🙅', '🙇'), ('🙋', '🙏'), ('🚣', '🚣'), ('🚴', '🚶'), + ('🛀', '🛀'), ('🛌', '🛌'), ('🤘', '🤜'), ('🤞', '🤟'), + ('🤦', '🤦'), ('🤰', '🤹'), ('🤽', '🤾'), ('🦵', '🦶'), + ('🦸', '🦹'), ('🧑', '🧝'), +]; + +pub const EMOJI_PRESENTATION: &'static [(char, char)] = &[ + ('⌚', '⌛'), ('⏩', '⏬'), ('⏰', '⏰'), ('⏳', '⏳'), + ('◽', '◾'), ('☔', '☕'), ('♈', '♓'), ('♿', '♿'), + ('⚓', '⚓'), ('⚡', '⚡'), ('⚪', '⚫'), ('⚽', '⚾'), + ('⛄', '⛅'), ('⛎', '⛎'), ('⛔', '⛔'), ('⛪', '⛪'), + ('⛲', '⛳'), ('⛵', '⛵'), ('⛺', '⛺'), ('⛽', '⛽'), + ('✅', '✅'), ('✊', '✋'), ('✨', '✨'), ('❌', '❌'), + ('❎', '❎'), ('❓', '❕'), ('❗', '❗'), ('➕', '➗'), + ('➰', '➰'), ('➿', '➿'), ('⬛', '⬜'), ('⭐', '⭐'), + ('⭕', '⭕'), ('🀄', '🀄'), ('🃏', '🃏'), ('🆎', '🆎'), + ('🆑', '🆚'), ('🇦', '🇿'), ('🈁', '🈁'), ('🈚', '🈚'), + ('🈯', '🈯'), ('🈲', '🈶'), ('🈸', '🈺'), ('🉐', '🉑'), + ('🌀', '🌠'), ('🌭', '🌵'), ('🌷', '🍼'), ('🍾', '🎓'), + ('🎠', '🏊'), ('🏏', '🏓'), ('🏠', '🏰'), ('🏴', '🏴'), + ('🏸', '🐾'), ('👀', '👀'), ('👂', '📼'), ('📿', '🔽'), + ('🕋', '🕎'), ('🕐', '🕧'), ('🕺', '🕺'), ('🖕', '🖖'), + ('🖤', '🖤'), ('🗻', '🙏'), ('🚀', '🛅'), ('🛌', '🛌'), + ('🛐', '🛒'), ('🛫', '🛬'), ('🛴', '🛹'), ('🤐', '🤺'), + ('🤼', '🤾'), ('🥀', '🥅'), ('🥇', '🥰'), ('🥳', '🥶'), + ('🥺', '🥺'), ('🥼', '🦢'), ('🦰', '🦹'), ('🧀', '🧂'), + ('🧐', '🧿'), +]; + +pub const EXTENDED_PICTOGRAPHIC: &'static [(char, char)] = &[ + ('©', '©'), ('®', '®'), ('‼', '‼'), ('⁉', '⁉'), ('™', '™'), + ('ℹ', 'ℹ'), ('↔', '↙'), ('↩', '↪'), ('⌚', '⌛'), + ('⌨', '⌨'), ('⎈', '⎈'), ('⏏', '⏏'), ('⏩', '⏳'), + ('⏸', '⏺'), ('Ⓜ', 'Ⓜ'), ('▪', '▫'), ('▶', '▶'), + ('◀', '◀'), ('◻', '◾'), ('☀', '★'), ('☇', '☒'), + ('☔', '⚅'), ('⚐', '✅'), ('✈', '✒'), ('✔', '✔'), + ('✖', '✖'), ('✝', '✝'), ('✡', '✡'), ('✨', '✨'), + ('✳', '✴'), ('❄', '❄'), ('❇', '❇'), ('❌', '❌'), + ('❎', '❎'), ('❓', '❕'), ('❗', '❗'), ('❣', '❧'), + ('➕', '➗'), ('➡', '➡'), ('➰', '➰'), ('➿', '➿'), + ('⤴', '⤵'), ('⬅', '⬇'), ('⬛', '⬜'), ('⭐', '⭐'), + ('⭕', '⭕'), ('〰', '〰'), ('〽', '〽'), ('㊗', '㊗'), + ('㊙', '㊙'), ('🀀', '\u{1f0ff}'), ('\u{1f10d}', '\u{1f10f}'), + ('🄯', '🄯'), ('\u{1f16c}', '🅱'), ('🅾', '🅿'), ('🆎', '🆎'), + ('🆑', '🆚'), ('\u{1f1ad}', '\u{1f1e5}'), ('🈁', '\u{1f20f}'), + ('🈚', '🈚'), ('🈯', '🈯'), ('🈲', '🈺'), + ('\u{1f23c}', '\u{1f23f}'), ('\u{1f249}', '🏺'), ('🐀', '🔽'), + ('🕆', '🙏'), ('🚀', '\u{1f6ff}'), ('\u{1f774}', '\u{1f77f}'), + ('🟕', '\u{1f7ff}'), ('\u{1f80c}', '\u{1f80f}'), + ('\u{1f848}', '\u{1f84f}'), ('\u{1f85a}', '\u{1f85f}'), + ('\u{1f888}', '\u{1f88f}'), ('\u{1f8ae}', '\u{1f8ff}'), + ('\u{1f90c}', '🤺'), ('🤼', '🥅'), ('🥇', '\u{1fffd}'), ]; pub const EXTENDER: &'static [(char, char)] = &[ ('·', '·'), ('ː', 'ˑ'), ('ـ', 'ـ'), ('ߺ', 'ߺ'), ('ๆ', 'ๆ'), ('ໆ', 'ໆ'), ('᠊', '᠊'), ('ᡃ', 'ᡃ'), ('ᪧ', 'ᪧ'), - ('ᰶ', 'ᰶ'), ('ᱻ', 'ᱻ'), ('々', '々'), ('〱', '〵'), + ('\u{1c36}', '\u{1c36}'), ('ᱻ', 'ᱻ'), ('々', '々'), ('〱', '〵'), ('ゝ', 'ゞ'), ('ー', 'ヾ'), ('ꀕ', 'ꀕ'), ('ꘌ', 'ꘌ'), ('ꧏ', 'ꧏ'), ('ꧦ', 'ꧦ'), ('ꩰ', 'ꩰ'), ('ꫝ', 'ꫝ'), ('ꫳ', 'ꫴ'), ('ー', 'ー'), ('𑍝', '𑍝'), ('𑗆', '𑗈'), - ('𑪘', '𑪘'), ('𖭂', '𖭃'), ('𖿠', '𖿡'), ('𞥄', '𞥆'), + ('\u{11a98}', '\u{11a98}'), ('𖭂', '𖭃'), ('𖿠', '𖿡'), + ('\u{1e944}', '\u{1e946}'), ]; pub const GRAPHEME_BASE: &'static [(char, char)] = &[ (' ', '~'), ('\u{a0}', '¬'), ('®', '˿'), ('Ͱ', 'ͷ'), ('ͺ', 'Ϳ'), ('΄', 'Ί'), ('Ό', 'Ό'), ('Ύ', 'Ρ'), ('Σ', '҂'), ('Ҋ', 'ԯ'), ('Ա', 'Ֆ'), ('ՙ', '֊'), ('֍', '֏'), ('־', '־'), ('׀', '׀'), - ('׃', '׃'), ('׆', '׆'), ('א', 'ת'), ('\u{5ef}', '״'), ('؆', '؏'), + ('׃', '׃'), ('׆', '׆'), ('א', 'ת'), ('ׯ', '״'), ('؆', '؏'), ('؛', '؛'), ('؞', 'ي'), ('٠', 'ٯ'), ('ٱ', 'ە'), ('۞', '۞'), ('ۥ', 'ۦ'), ('۩', '۩'), ('ۮ', '܍'), ('ܐ', 'ܐ'), ('ܒ', 'ܯ'), - ('ݍ', 'ޥ'), ('ޱ', 'ޱ'), ('߀', 'ߪ'), ('ߴ', 'ߺ'), ('\u{7fe}', 'ࠕ'), + ('ݍ', 'ޥ'), ('ޱ', 'ޱ'), ('߀', 'ߪ'), ('ߴ', 'ߺ'), ('߾', 'ࠕ'), ('ࠚ', 'ࠚ'), ('ࠤ', 'ࠤ'), ('ࠨ', 'ࠨ'), ('࠰', '࠾'), ('ࡀ', 'ࡘ'), ('࡞', '࡞'), ('ࡠ', 'ࡪ'), ('ࢠ', 'ࢴ'), ('ࢶ', 'ࢽ'), ('ः', 'ह'), ('ऻ', 'ऻ'), ('ऽ', 'ी'), @@ -1057,7 +1250,7 @@ ('ਅ', 'ਊ'), ('ਏ', 'ਐ'), ('ਓ', 'ਨ'), ('ਪ', 'ਰ'), ('ਲ', 'ਲ਼'), ('ਵ', 'ਸ਼'), ('ਸ', 'ਹ'), ('ਾ', 'ੀ'), ('ਖ਼', 'ੜ'), ('ਫ਼', 'ਫ਼'), ('੦', '੯'), ('ੲ', 'ੴ'), - ('\u{a76}', '\u{a76}'), ('ઃ', 'ઃ'), ('અ', 'ઍ'), ('એ', 'ઑ'), + ('੶', '੶'), ('ઃ', 'ઃ'), ('અ', 'ઍ'), ('એ', 'ઑ'), ('ઓ', 'ન'), ('પ', 'ર'), ('લ', 'ળ'), ('વ', 'હ'), ('ઽ', 'ી'), ('ૉ', 'ૉ'), ('ો', 'ૌ'), ('ૐ', 'ૐ'), ('ૠ', 'ૡ'), ('૦', '૱'), ('ૹ', 'ૹ'), ('ଂ', 'ଃ'), @@ -1101,7 +1294,7 @@ ('ᜠ', 'ᜱ'), ('᜵', '᜶'), ('ᝀ', 'ᝑ'), ('ᝠ', 'ᝬ'), ('ᝮ', 'ᝰ'), ('ក', 'ឳ'), ('ា', 'ា'), ('ើ', 'ៅ'), ('ះ', 'ៈ'), ('។', 'ៜ'), ('០', '៩'), ('៰', '៹'), - ('᠀', '᠊'), ('᠐', '᠙'), ('ᠠ', '\u{1878}'), ('ᢀ', 'ᢄ'), + ('᠀', '᠊'), ('᠐', '᠙'), ('ᠠ', 'ᡸ'), ('ᢀ', 'ᢄ'), ('ᢇ', 'ᢨ'), ('ᢪ', 'ᢪ'), ('ᢰ', 'ᣵ'), ('ᤀ', 'ᤞ'), ('ᤣ', 'ᤦ'), ('ᤩ', 'ᤫ'), ('ᤰ', 'ᤱ'), ('ᤳ', 'ᤸ'), ('᥀', '᥀'), ('᥄', 'ᥭ'), ('ᥰ', 'ᥴ'), ('ᦀ', 'ᦫ'), @@ -1112,8 +1305,8 @@ ('ᭃ', 'ᭋ'), ('᭐', '᭪'), ('᭴', '᭼'), ('ᮂ', 'ᮡ'), ('ᮦ', 'ᮧ'), ('᮪', '᮪'), ('ᮮ', 'ᯥ'), ('ᯧ', 'ᯧ'), ('ᯪ', 'ᯬ'), ('ᯮ', 'ᯮ'), ('᯲', '᯳'), ('᯼', 'ᰫ'), - ('ᰴ', 'ᰵ'), ('᰻', '᱉'), ('ᱍ', 'ᲈ'), ('\u{1c90}', '\u{1cba}'), - ('\u{1cbd}', '᳇'), ('᳓', '᳓'), ('᳡', '᳡'), ('ᳩ', 'ᳬ'), + ('ᰴ', 'ᰵ'), ('᰻', '᱉'), ('ᱍ', 'ᲈ'), ('Ა', 'Ჺ'), + ('Ჽ', '᳇'), ('᳓', '᳓'), ('᳡', '᳡'), ('ᳩ', 'ᳬ'), ('ᳮ', 'ᳳ'), ('ᳵ', '᳷'), ('ᴀ', 'ᶿ'), ('Ḁ', 'ἕ'), ('Ἐ', 'Ἕ'), ('ἠ', 'ὅ'), ('Ὀ', 'Ὅ'), ('ὐ', 'ὗ'), ('Ὑ', 'Ὑ'), ('Ὓ', 'Ὓ'), ('Ὕ', 'Ὕ'), ('Ὗ', 'ώ'), @@ -1122,20 +1315,20 @@ ('‐', '‧'), ('\u{202f}', '\u{205f}'), ('⁰', 'ⁱ'), ('⁴', '₎'), ('ₐ', 'ₜ'), ('₠', '₿'), ('℀', '↋'), ('←', '␦'), ('⑀', '⑊'), ('①', '⭳'), ('⭶', '⮕'), ('⮘', '⯈'), - ('⯊', '\u{2bfe}'), ('Ⰰ', 'Ⱞ'), ('ⰰ', 'ⱞ'), ('Ⱡ', 'ⳮ'), + ('⯊', '⯾'), ('Ⰰ', 'Ⱞ'), ('ⰰ', 'ⱞ'), ('Ⱡ', 'ⳮ'), ('Ⳳ', 'ⳳ'), ('⳹', 'ⴥ'), ('ⴧ', 'ⴧ'), ('ⴭ', 'ⴭ'), ('ⴰ', 'ⵧ'), ('ⵯ', '⵰'), ('ⶀ', 'ⶖ'), ('ⶠ', 'ⶦ'), ('ⶨ', 'ⶮ'), ('ⶰ', 'ⶶ'), ('ⶸ', 'ⶾ'), ('ⷀ', 'ⷆ'), - ('ⷈ', 'ⷎ'), ('ⷐ', 'ⷖ'), ('ⷘ', 'ⷞ'), ('⸀', '\u{2e4e}'), + ('ⷈ', 'ⷎ'), ('ⷐ', 'ⷖ'), ('ⷘ', 'ⷞ'), ('⸀', '⹎'), ('⺀', '⺙'), ('⺛', '⻳'), ('⼀', '⿕'), ('⿰', '⿻'), ('\u{3000}', '〩'), ('〰', '〿'), ('ぁ', 'ゖ'), ('゛', 'ヿ'), - ('ㄅ', '\u{312f}'), ('ㄱ', 'ㆎ'), ('㆐', 'ㆺ'), ('㇀', '㇣'), - ('ㇰ', '㈞'), ('㈠', '㋾'), ('㌀', '䶵'), ('䷀', '\u{9fef}'), + ('ㄅ', 'ㄯ'), ('ㄱ', 'ㆎ'), ('㆐', 'ㆺ'), ('㇀', '㇣'), + ('ㇰ', '㈞'), ('㈠', '㋾'), ('㌀', '䶵'), ('䷀', '鿯'), ('ꀀ', 'ꒌ'), ('꒐', '꓆'), ('ꓐ', 'ꘫ'), ('Ꙁ', 'ꙮ'), ('꙳', '꙳'), ('꙾', 'ꚝ'), ('ꚠ', 'ꛯ'), ('꛲', '꛷'), - ('꜀', '\u{a7b9}'), ('ꟷ', 'ꠁ'), ('ꠃ', 'ꠅ'), ('ꠇ', 'ꠊ'), + ('꜀', 'ꞹ'), ('ꟷ', 'ꠁ'), ('ꠃ', 'ꠅ'), ('ꠇ', 'ꠊ'), ('ꠌ', 'ꠤ'), ('ꠧ', '꠫'), ('꠰', '꠹'), ('ꡀ', '꡷'), - ('ꢀ', 'ꣃ'), ('꣎', '꣙'), ('ꣲ', '\u{a8fe}'), ('꤀', 'ꤥ'), + ('ꢀ', 'ꣃ'), ('꣎', '꣙'), ('ꣲ', 'ꣾ'), ('꤀', 'ꤥ'), ('꤮', 'ꥆ'), ('ꥒ', '꥓'), ('꥟', 'ꥼ'), ('ꦃ', 'ꦲ'), ('ꦴ', 'ꦵ'), ('ꦺ', 'ꦻ'), ('ꦽ', '꧍'), ('ꧏ', '꧙'), ('꧞', 'ꧤ'), ('ꧦ', 'ꧾ'), ('ꨀ', 'ꨨ'), ('ꨯ', 'ꨰ'), @@ -1165,58 +1358,54 @@ ('𐠷', '𐠸'), ('𐠼', '𐠼'), ('𐠿', '𐡕'), ('𐡗', '𐢞'), ('𐢧', '𐢯'), ('𐣠', '𐣲'), ('𐣴', '𐣵'), ('𐣻', '𐤛'), ('𐤟', '𐤹'), ('𐤿', '𐤿'), ('𐦀', '𐦷'), ('𐦼', '𐧏'), - ('𐧒', '𐨀'), ('𐨐', '𐨓'), ('𐨕', '𐨗'), ('𐨙', '\u{10a35}'), - ('𐩀', '\u{10a48}'), ('𐩐', '𐩘'), ('𐩠', '𐪟'), ('𐫀', '𐫤'), + ('𐧒', '𐨀'), ('𐨐', '𐨓'), ('𐨕', '𐨗'), ('𐨙', '𐨵'), + ('𐩀', '𐩈'), ('𐩐', '𐩘'), ('𐩠', '𐪟'), ('𐫀', '𐫤'), ('𐫫', '𐫶'), ('𐬀', '𐬵'), ('𐬹', '𐭕'), ('𐭘', '𐭲'), ('𐭸', '𐮑'), ('𐮙', '𐮜'), ('𐮩', '𐮯'), ('𐰀', '𐱈'), - ('𐲀', '𐲲'), ('𐳀', '𐳲'), ('𐳺', '\u{10d23}'), - ('\u{10d30}', '\u{10d39}'), ('𐹠', '𐹾'), ('\u{10f00}', '\u{10f27}'), - ('\u{10f30}', '\u{10f45}'), ('\u{10f51}', '\u{10f59}'), ('𑀀', '𑀀'), - ('𑀂', '𑀷'), ('𑁇', '𑁍'), ('𑁒', '𑁯'), ('𑂂', '𑂲'), - ('𑂷', '𑂸'), ('𑂻', '𑂼'), ('𑂾', '𑃁'), ('𑃐', '𑃨'), - ('𑃰', '𑃹'), ('𑄃', '𑄦'), ('𑄬', '𑄬'), ('𑄶', '\u{11146}'), - ('𑅐', '𑅲'), ('𑅴', '𑅶'), ('𑆂', '𑆵'), ('𑆿', '𑇈'), - ('𑇍', '𑇍'), ('𑇐', '𑇟'), ('𑇡', '𑇴'), ('𑈀', '𑈑'), - ('𑈓', '𑈮'), ('𑈲', '𑈳'), ('𑈵', '𑈵'), ('𑈸', '𑈽'), - ('𑊀', '𑊆'), ('𑊈', '𑊈'), ('𑊊', '𑊍'), ('𑊏', '𑊝'), - ('𑊟', '𑊩'), ('𑊰', '𑋞'), ('𑋠', '𑋢'), ('𑋰', '𑋹'), - ('𑌂', '𑌃'), ('𑌅', '𑌌'), ('𑌏', '𑌐'), ('𑌓', '𑌨'), - ('𑌪', '𑌰'), ('𑌲', '𑌳'), ('𑌵', '𑌹'), ('𑌽', '𑌽'), - ('𑌿', '𑌿'), ('𑍁', '𑍄'), ('𑍇', '𑍈'), ('𑍋', '𑍍'), - ('𑍐', '𑍐'), ('𑍝', '𑍣'), ('𑐀', '𑐷'), ('𑑀', '𑑁'), - ('𑑅', '𑑅'), ('𑑇', '𑑙'), ('𑑛', '𑑛'), ('𑑝', '𑑝'), - ('𑒀', '𑒯'), ('𑒱', '𑒲'), ('𑒹', '𑒹'), ('𑒻', '𑒼'), - ('𑒾', '𑒾'), ('𑓁', '𑓁'), ('𑓄', '𑓇'), ('𑓐', '𑓙'), - ('𑖀', '𑖮'), ('𑖰', '𑖱'), ('𑖸', '𑖻'), ('𑖾', '𑖾'), - ('𑗁', '𑗛'), ('𑘀', '𑘲'), ('𑘻', '𑘼'), ('𑘾', '𑘾'), - ('𑙁', '𑙄'), ('𑙐', '𑙙'), ('𑙠', '𑙬'), ('𑚀', '𑚪'), - ('𑚬', '𑚬'), ('𑚮', '𑚯'), ('𑚶', '𑚶'), ('𑛀', '𑛉'), - ('𑜀', '\u{1171a}'), ('𑜠', '𑜡'), ('𑜦', '𑜦'), ('𑜰', '𑜿'), - ('\u{11800}', '\u{1182e}'), ('\u{11838}', '\u{11838}'), - ('\u{1183b}', '\u{1183b}'), ('𑢠', '𑣲'), ('𑣿', '𑣿'), - ('𑨀', '𑨀'), ('𑨋', '𑨲'), ('𑨹', '𑨺'), ('𑨿', '𑩆'), - ('𑩐', '𑩐'), ('𑩗', '𑩘'), ('𑩜', '𑪃'), ('𑪆', '𑪉'), - ('𑪗', '𑪗'), ('𑪚', '𑪢'), ('𑫀', '𑫸'), ('𑰀', '𑰈'), - ('𑰊', '𑰯'), ('𑰾', '𑰾'), ('𑱀', '𑱅'), ('𑱐', '𑱬'), - ('𑱰', '𑲏'), ('𑲩', '𑲩'), ('𑲱', '𑲱'), ('𑲴', '𑲴'), - ('𑴀', '𑴆'), ('𑴈', '𑴉'), ('𑴋', '𑴰'), ('𑵆', '𑵆'), - ('𑵐', '𑵙'), ('\u{11d60}', '\u{11d65}'), ('\u{11d67}', '\u{11d68}'), - ('\u{11d6a}', '\u{11d8e}'), ('\u{11d93}', '\u{11d94}'), - ('\u{11d96}', '\u{11d96}'), ('\u{11d98}', '\u{11d98}'), - ('\u{11da0}', '\u{11da9}'), ('\u{11ee0}', '\u{11ef2}'), - ('\u{11ef5}', '\u{11ef8}'), ('𒀀', '𒎙'), ('𒐀', '𒑮'), - ('𒑰', '𒑴'), ('𒒀', '𒕃'), ('𓀀', '𓐮'), ('𔐀', '𔙆'), - ('𖠀', '𖨸'), ('𖩀', '𖩞'), ('𖩠', '𖩩'), ('𖩮', '𖩯'), - ('𖫐', '𖫭'), ('𖫵', '𖫵'), ('𖬀', '𖬯'), ('𖬷', '𖭅'), - ('𖭐', '𖭙'), ('𖭛', '𖭡'), ('𖭣', '𖭷'), ('𖭽', '𖮏'), - ('\u{16e40}', '\u{16e9a}'), ('𖼀', '𖽄'), ('𖽐', '𖽾'), - ('𖾓', '𖾟'), ('𖿠', '𖿡'), ('𗀀', '\u{187f1}'), ('𘠀', '𘫲'), - ('𛀀', '𛄞'), ('𛅰', '𛋻'), ('𛰀', '𛱪'), ('𛱰', '𛱼'), - ('𛲀', '𛲈'), ('𛲐', '𛲙'), ('𛲜', '𛲜'), ('𛲟', '𛲟'), - ('𝀀', '𝃵'), ('𝄀', '𝄦'), ('𝄩', '𝅘𝅥𝅲'), ('𝅦', '𝅦'), - ('𝅪', '𝅭'), ('𝆃', '𝆄'), ('𝆌', '𝆩'), ('𝆮', '𝇨'), - ('𝈀', '𝉁'), ('𝉅', '𝉅'), ('\u{1d2e0}', '\u{1d2f3}'), - ('𝌀', '𝍖'), ('𝍠', '\u{1d378}'), ('𝐀', '𝑔'), ('𝑖', '𝒜'), + ('𐲀', '𐲲'), ('𐳀', '𐳲'), ('𐳺', '𐴣'), ('𐴰', '𐴹'), + ('𐹠', '𐹾'), ('𐼀', '𐼧'), ('𐼰', '𐽅'), ('𐽑', '𐽙'), + ('𑀀', '𑀀'), ('𑀂', '𑀷'), ('𑁇', '𑁍'), ('𑁒', '𑁯'), + ('𑂂', '𑂲'), ('𑂷', '𑂸'), ('𑂻', '𑂼'), ('𑂾', '𑃁'), + ('𑃐', '𑃨'), ('𑃰', '𑃹'), ('𑄃', '𑄦'), ('𑄬', '𑄬'), + ('𑄶', '𑅆'), ('𑅐', '𑅲'), ('𑅴', '𑅶'), ('𑆂', '𑆵'), + ('𑆿', '𑇈'), ('𑇍', '𑇍'), ('𑇐', '𑇟'), ('𑇡', '𑇴'), + ('𑈀', '𑈑'), ('𑈓', '𑈮'), ('𑈲', '𑈳'), ('𑈵', '𑈵'), + ('𑈸', '𑈽'), ('𑊀', '𑊆'), ('𑊈', '𑊈'), ('𑊊', '𑊍'), + ('𑊏', '𑊝'), ('𑊟', '𑊩'), ('𑊰', '𑋞'), ('𑋠', '𑋢'), + ('𑋰', '𑋹'), ('𑌂', '𑌃'), ('𑌅', '𑌌'), ('𑌏', '𑌐'), + ('𑌓', '𑌨'), ('𑌪', '𑌰'), ('𑌲', '𑌳'), ('𑌵', '𑌹'), + ('𑌽', '𑌽'), ('𑌿', '𑌿'), ('𑍁', '𑍄'), ('𑍇', '𑍈'), + ('𑍋', '𑍍'), ('𑍐', '𑍐'), ('𑍝', '𑍣'), ('𑐀', '𑐷'), + ('𑑀', '𑑁'), ('𑑅', '𑑅'), ('𑑇', '𑑙'), ('𑑛', '𑑛'), + ('𑑝', '𑑝'), ('𑒀', '𑒯'), ('𑒱', '𑒲'), ('𑒹', '𑒹'), + ('𑒻', '𑒼'), ('𑒾', '𑒾'), ('𑓁', '𑓁'), ('𑓄', '𑓇'), + ('𑓐', '𑓙'), ('𑖀', '𑖮'), ('𑖰', '𑖱'), ('𑖸', '𑖻'), + ('𑖾', '𑖾'), ('𑗁', '𑗛'), ('𑘀', '𑘲'), ('𑘻', '𑘼'), + ('𑘾', '𑘾'), ('𑙁', '𑙄'), ('𑙐', '𑙙'), ('𑙠', '𑙬'), + ('𑚀', '𑚪'), ('𑚬', '𑚬'), ('𑚮', '𑚯'), ('𑚶', '𑚶'), + ('𑛀', '𑛉'), ('𑜀', '𑜚'), ('𑜠', '𑜡'), ('𑜦', '𑜦'), + ('𑜰', '𑜿'), ('𑠀', '𑠮'), ('𑠸', '𑠸'), ('𑠻', '𑠻'), + ('𑢠', '𑣲'), ('𑣿', '𑣿'), ('𑨀', '𑨀'), ('𑨋', '𑨲'), + ('𑨹', '𑨺'), ('𑨿', '𑩆'), ('𑩐', '𑩐'), ('𑩗', '𑩘'), + ('𑩜', '𑪃'), ('𑪆', '𑪉'), ('𑪗', '𑪗'), ('𑪚', '𑪢'), + ('𑫀', '𑫸'), ('𑰀', '𑰈'), ('𑰊', '𑰯'), ('𑰾', '𑰾'), + ('𑱀', '𑱅'), ('𑱐', '𑱬'), ('𑱰', '𑲏'), ('𑲩', '𑲩'), + ('𑲱', '𑲱'), ('𑲴', '𑲴'), ('𑴀', '𑴆'), ('𑴈', '𑴉'), + ('𑴋', '𑴰'), ('𑵆', '𑵆'), ('𑵐', '𑵙'), ('𑵠', '𑵥'), + ('𑵧', '𑵨'), ('𑵪', '𑶎'), ('𑶓', '𑶔'), ('𑶖', '𑶖'), + ('𑶘', '𑶘'), ('𑶠', '𑶩'), ('𑻠', '𑻲'), ('𑻵', '𑻸'), + ('𒀀', '𒎙'), ('𒐀', '𒑮'), ('𒑰', '𒑴'), ('𒒀', '𒕃'), + ('𓀀', '𓐮'), ('𔐀', '𔙆'), ('𖠀', '𖨸'), ('𖩀', '𖩞'), + ('𖩠', '𖩩'), ('𖩮', '𖩯'), ('𖫐', '𖫭'), ('𖫵', '𖫵'), + ('𖬀', '𖬯'), ('𖬷', '𖭅'), ('𖭐', '𖭙'), ('𖭛', '𖭡'), + ('𖭣', '𖭷'), ('𖭽', '𖮏'), ('𖹀', '𖺚'), ('𖼀', '𖽄'), + ('𖽐', '𖽾'), ('𖾓', '𖾟'), ('𖿠', '𖿡'), ('𗀀', '𘟱'), + ('𘠀', '𘫲'), ('𛀀', '𛄞'), ('𛅰', '𛋻'), ('𛰀', '𛱪'), + ('𛱰', '𛱼'), ('𛲀', '𛲈'), ('𛲐', '𛲙'), ('𛲜', '𛲜'), + ('𛲟', '𛲟'), ('𝀀', '𝃵'), ('𝄀', '𝄦'), ('𝄩', '𝅘𝅥𝅲'), + ('𝅦', '𝅦'), ('𝅪', '𝅭'), ('𝆃', '𝆄'), ('𝆌', '𝆩'), + ('𝆮', '𝇨'), ('𝈀', '𝉁'), ('𝉅', '𝉅'), ('𝋠', '𝋳'), + ('𝌀', '𝍖'), ('𝍠', '𝍸'), ('𝐀', '𝑔'), ('𝑖', '𝒜'), ('𝒞', '𝒟'), ('𝒢', '𝒢'), ('𝒥', '𝒦'), ('𝒩', '𝒬'), ('𝒮', '𝒹'), ('𝒻', '𝒻'), ('𝒽', '𝓃'), ('𝓅', '𝔅'), ('𝔇', '𝔊'), ('𝔍', '𝔔'), ('𝔖', '𝔜'), ('𝔞', '𝔹'), @@ -1224,131 +1413,197 @@ ('𝕒', '𝚥'), ('𝚨', '𝟋'), ('𝟎', '𝧿'), ('𝨷', '𝨺'), ('𝩭', '𝩴'), ('𝩶', '𝪃'), ('𝪅', '𝪋'), ('𞠀', '𞣄'), ('𞣇', '𞣏'), ('𞤀', '𞥃'), ('𞥐', '𞥙'), ('𞥞', '𞥟'), - ('\u{1ec71}', '\u{1ecb4}'), ('𞸀', '𞸃'), ('𞸅', '𞸟'), - ('𞸡', '𞸢'), ('𞸤', '𞸤'), ('𞸧', '𞸧'), ('𞸩', '𞸲'), - ('𞸴', '𞸷'), ('𞸹', '𞸹'), ('𞸻', '𞸻'), ('𞹂', '𞹂'), - ('𞹇', '𞹇'), ('𞹉', '𞹉'), ('𞹋', '𞹋'), ('𞹍', '𞹏'), - ('𞹑', '𞹒'), ('𞹔', '𞹔'), ('𞹗', '𞹗'), ('𞹙', '𞹙'), - ('𞹛', '𞹛'), ('𞹝', '𞹝'), ('𞹟', '𞹟'), ('𞹡', '𞹢'), - ('𞹤', '𞹤'), ('𞹧', '𞹪'), ('𞹬', '𞹲'), ('𞹴', '𞹷'), - ('𞹹', '𞹼'), ('𞹾', '𞹾'), ('𞺀', '𞺉'), ('𞺋', '𞺛'), - ('𞺡', '𞺣'), ('𞺥', '𞺩'), ('𞺫', '𞺻'), ('𞻰', '𞻱'), - ('🀀', '🀫'), ('🀰', '🂓'), ('🂠', '🂮'), ('🂱', '🂿'), - ('🃁', '🃏'), ('🃑', '🃵'), ('🄀', '🄌'), ('🄐', '🅫'), - ('🅰', '🆬'), ('🇦', '🈂'), ('🈐', '🈻'), ('🉀', '🉈'), - ('🉐', '🉑'), ('🉠', '🉥'), ('🌀', '🛔'), ('🛠', '🛬'), - ('🛰', '\u{1f6f9}'), ('🜀', '🝳'), ('🞀', '\u{1f7d8}'), - ('🠀', '🠋'), ('🠐', '🡇'), ('🡐', '🡙'), ('🡠', '🢇'), - ('🢐', '🢭'), ('🤀', '🤋'), ('🤐', '🤾'), ('🥀', '\u{1f970}'), - ('\u{1f973}', '\u{1f976}'), ('\u{1f97a}', '\u{1f97a}'), - ('\u{1f97c}', '\u{1f9a2}'), ('\u{1f9b0}', '\u{1f9b9}'), - ('🧀', '\u{1f9c2}'), ('🧐', '\u{1f9ff}'), ('\u{1fa60}', '\u{1fa6d}'), - ('𠀀', '𪛖'), ('𪜀', '𫜴'), ('𫝀', '𫠝'), ('𫠠', '𬺡'), - ('𬺰', '𮯠'), ('丽', '𪘀'), + ('𞱱', '𞲴'), ('𞸀', '𞸃'), ('𞸅', '𞸟'), ('𞸡', '𞸢'), + ('𞸤', '𞸤'), ('𞸧', '𞸧'), ('𞸩', '𞸲'), ('𞸴', '𞸷'), + ('𞸹', '𞸹'), ('𞸻', '𞸻'), ('𞹂', '𞹂'), ('𞹇', '𞹇'), + ('𞹉', '𞹉'), ('𞹋', '𞹋'), ('𞹍', '𞹏'), ('𞹑', '𞹒'), + ('𞹔', '𞹔'), ('𞹗', '𞹗'), ('𞹙', '𞹙'), ('𞹛', '𞹛'), + ('𞹝', '𞹝'), ('𞹟', '𞹟'), ('𞹡', '𞹢'), ('𞹤', '𞹤'), + ('𞹧', '𞹪'), ('𞹬', '𞹲'), ('𞹴', '𞹷'), ('𞹹', '𞹼'), + ('𞹾', '𞹾'), ('𞺀', '𞺉'), ('𞺋', '𞺛'), ('𞺡', '𞺣'), + ('𞺥', '𞺩'), ('𞺫', '𞺻'), ('𞻰', '𞻱'), ('🀀', '🀫'), + ('🀰', '🂓'), ('🂠', '🂮'), ('🂱', '🂿'), ('🃁', '🃏'), + ('🃑', '🃵'), ('🄀', '🄌'), ('🄐', '🅫'), ('🅰', '🆬'), + ('🇦', '🈂'), ('🈐', '🈻'), ('🉀', '🉈'), ('🉐', '🉑'), + ('🉠', '🉥'), ('🌀', '🛔'), ('🛠', '🛬'), ('🛰', '🛹'), + ('🜀', '🝳'), ('🞀', '🟘'), ('🠀', '🠋'), ('🠐', '🡇'), + ('🡐', '🡙'), ('🡠', '🢇'), ('🢐', '🢭'), ('🤀', '🤋'), + ('🤐', '🤾'), ('🥀', '🥰'), ('🥳', '🥶'), ('🥺', '🥺'), + ('🥼', '🦢'), ('🦰', '🦹'), ('🧀', '🧂'), ('🧐', '🧿'), + ('🩠', '🩭'), ('𠀀', '𪛖'), ('𪜀', '𫜴'), ('𫝀', '𫠝'), + ('𫠠', '𬺡'), ('𬺰', '𮯠'), ('丽', '𪘀'), ]; pub const GRAPHEME_EXTEND: &'static [(char, char)] = &[ - ('̀', 'ͯ'), ('҃', '҉'), ('֑', 'ֽ'), ('ֿ', 'ֿ'), ('ׁ', 'ׂ'), - ('ׄ', 'ׅ'), ('ׇ', 'ׇ'), ('ؐ', 'ؚ'), ('ً', 'ٟ'), ('ٰ', 'ٰ'), - ('ۖ', 'ۜ'), ('۟', 'ۤ'), ('ۧ', 'ۨ'), ('۪', 'ۭ'), ('ܑ', 'ܑ'), - ('ܰ', '݊'), ('ަ', 'ް'), ('߫', '߳'), ('\u{7fd}', '\u{7fd}'), - ('ࠖ', '࠙'), ('ࠛ', 'ࠣ'), ('ࠥ', 'ࠧ'), ('ࠩ', '࠭'), - ('࡙', '࡛'), ('\u{8d3}', '࣡'), ('ࣣ', 'ं'), ('ऺ', 'ऺ'), - ('़', '़'), ('ु', 'ै'), ('्', '्'), ('॑', 'ॗ'), - ('ॢ', 'ॣ'), ('ঁ', 'ঁ'), ('়', '়'), ('া', 'া'), - ('ু', 'ৄ'), ('্', '্'), ('ৗ', 'ৗ'), ('ৢ', 'ৣ'), - ('\u{9fe}', '\u{9fe}'), ('ਁ', 'ਂ'), ('਼', '਼'), ('ੁ', 'ੂ'), - ('ੇ', 'ੈ'), ('ੋ', '੍'), ('ੑ', 'ੑ'), ('ੰ', 'ੱ'), - ('ੵ', 'ੵ'), ('ઁ', 'ં'), ('઼', '઼'), ('ુ', 'ૅ'), - ('ે', 'ૈ'), ('્', '્'), ('ૢ', 'ૣ'), ('ૺ', '૿'), - ('ଁ', 'ଁ'), ('଼', '଼'), ('ା', 'ି'), ('ୁ', 'ୄ'), - ('୍', '୍'), ('ୖ', 'ୗ'), ('ୢ', 'ୣ'), ('ஂ', 'ஂ'), - ('ா', 'ா'), ('ீ', 'ீ'), ('்', '்'), ('ௗ', 'ௗ'), - ('ఀ', 'ఀ'), ('\u{c04}', '\u{c04}'), ('ా', 'ీ'), ('ె', 'ై'), - ('ొ', '్'), ('ౕ', 'ౖ'), ('ౢ', 'ౣ'), ('ಁ', 'ಁ'), - ('಼', '಼'), ('ಿ', 'ಿ'), ('ೂ', 'ೂ'), ('ೆ', 'ೆ'), - ('ೌ', '್'), ('ೕ', 'ೖ'), ('ೢ', 'ೣ'), ('ഀ', 'ഁ'), - ('഻', '഼'), ('ാ', 'ാ'), ('ു', 'ൄ'), ('്', '്'), - ('ൗ', 'ൗ'), ('ൢ', 'ൣ'), ('්', '්'), ('ා', 'ා'), - ('ි', 'ු'), ('ූ', 'ූ'), ('ෟ', 'ෟ'), ('ั', 'ั'), - ('ิ', 'ฺ'), ('็', '๎'), ('ັ', 'ັ'), ('ິ', 'ູ'), - ('ົ', 'ຼ'), ('່', 'ໍ'), ('༘', '༙'), ('༵', '༵'), - ('༷', '༷'), ('༹', '༹'), ('ཱ', 'ཾ'), ('ྀ', '྄'), - ('྆', '྇'), ('ྍ', 'ྗ'), ('ྙ', 'ྼ'), ('࿆', '࿆'), - ('ိ', 'ူ'), ('ဲ', '့'), ('္', '်'), ('ွ', 'ှ'), - ('ၘ', 'ၙ'), ('ၞ', 'ၠ'), ('ၱ', 'ၴ'), ('ႂ', 'ႂ'), - ('ႅ', 'ႆ'), ('ႍ', 'ႍ'), ('ႝ', 'ႝ'), ('፝', '፟'), - ('ᜒ', '᜔'), ('ᜲ', '᜴'), ('ᝒ', 'ᝓ'), ('ᝲ', 'ᝳ'), - ('឴', '឵'), ('ិ', 'ួ'), ('ំ', 'ំ'), ('៉', '៓'), - ('៝', '៝'), ('᠋', '᠍'), ('ᢅ', 'ᢆ'), ('ᢩ', 'ᢩ'), - ('ᤠ', 'ᤢ'), ('ᤧ', 'ᤨ'), ('ᤲ', 'ᤲ'), ('᤹', '᤻'), - ('ᨗ', 'ᨘ'), ('ᨛ', 'ᨛ'), ('ᩖ', 'ᩖ'), ('ᩘ', 'ᩞ'), - ('᩠', '᩠'), ('ᩢ', 'ᩢ'), ('ᩥ', 'ᩬ'), ('ᩳ', '᩼'), - ('᩿', '᩿'), ('᪰', '᪾'), ('ᬀ', 'ᬃ'), ('᬴', '᬴'), - ('ᬶ', 'ᬺ'), ('ᬼ', 'ᬼ'), ('ᭂ', 'ᭂ'), ('᭫', '᭳'), - ('ᮀ', 'ᮁ'), ('ᮢ', 'ᮥ'), ('ᮨ', 'ᮩ'), ('᮫', 'ᮭ'), - ('᯦', '᯦'), ('ᯨ', 'ᯩ'), ('ᯭ', 'ᯭ'), ('ᯯ', 'ᯱ'), - ('ᰬ', 'ᰳ'), ('ᰶ', '᰷'), ('᳐', '᳒'), ('᳔', '᳠'), - ('᳢', '᳨'), ('᳭', '᳭'), ('᳴', '᳴'), ('᳸', '᳹'), - ('᷀', '᷹'), ('᷻', '᷿'), ('\u{200c}', '\u{200c}'), ('⃐', '⃰'), - ('⳯', '⳱'), ('⵿', '⵿'), ('ⷠ', 'ⷿ'), ('〪', '〯'), - ('゙', '゚'), ('꙯', '꙲'), ('ꙴ', '꙽'), ('ꚞ', 'ꚟ'), - ('꛰', '꛱'), ('ꠂ', 'ꠂ'), ('꠆', '꠆'), ('ꠋ', 'ꠋ'), - ('ꠥ', 'ꠦ'), ('꣄', 'ꣅ'), ('꣠', '꣱'), ('\u{a8ff}', '\u{a8ff}'), - ('ꤦ', '꤭'), ('ꥇ', 'ꥑ'), ('ꦀ', 'ꦂ'), ('꦳', '꦳'), - ('ꦶ', 'ꦹ'), ('ꦼ', 'ꦼ'), ('ꧥ', 'ꧥ'), ('ꨩ', 'ꨮ'), - ('ꨱ', 'ꨲ'), ('ꨵ', 'ꨶ'), ('ꩃ', 'ꩃ'), ('ꩌ', 'ꩌ'), - ('ꩼ', 'ꩼ'), ('ꪰ', 'ꪰ'), ('ꪲ', 'ꪴ'), ('ꪷ', 'ꪸ'), - ('ꪾ', '꪿'), ('꫁', '꫁'), ('ꫬ', 'ꫭ'), ('꫶', '꫶'), - ('ꯥ', 'ꯥ'), ('ꯨ', 'ꯨ'), ('꯭', '꯭'), ('ﬞ', 'ﬞ'), - ('︀', '️'), ('︠', '︯'), ('゙', '゚'), ('𐇽', '𐇽'), - ('𐋠', '𐋠'), ('𐍶', '𐍺'), ('𐨁', '𐨃'), ('𐨅', '𐨆'), - ('𐨌', '𐨏'), ('𐨸', '𐨺'), ('𐨿', '𐨿'), ('𐫥', '𐫦'), - ('\u{10d24}', '\u{10d27}'), ('\u{10f46}', '\u{10f50}'), ('𑀁', '𑀁'), - ('𑀸', '𑁆'), ('𑁿', '𑂁'), ('𑂳', '𑂶'), ('𑂹', '𑂺'), - ('𑄀', '𑄂'), ('𑄧', '𑄫'), ('𑄭', '𑄴'), ('𑅳', '𑅳'), - ('𑆀', '𑆁'), ('𑆶', '𑆾'), ('𑇉', '𑇌'), ('𑈯', '𑈱'), - ('𑈴', '𑈴'), ('𑈶', '𑈷'), ('𑈾', '𑈾'), ('𑋟', '𑋟'), - ('𑋣', '𑋪'), ('𑌀', '𑌁'), ('\u{1133b}', '𑌼'), ('𑌾', '𑌾'), - ('𑍀', '𑍀'), ('𑍗', '𑍗'), ('𑍦', '𑍬'), ('𑍰', '𑍴'), - ('𑐸', '𑐿'), ('𑑂', '𑑄'), ('𑑆', '𑑆'), - ('\u{1145e}', '\u{1145e}'), ('𑒰', '𑒰'), ('𑒳', '𑒸'), - ('𑒺', '𑒺'), ('𑒽', '𑒽'), ('𑒿', '𑓀'), ('𑓂', '𑓃'), - ('𑖯', '𑖯'), ('𑖲', '𑖵'), ('𑖼', '𑖽'), ('𑖿', '𑗀'), - ('𑗜', '𑗝'), ('𑘳', '𑘺'), ('𑘽', '𑘽'), ('𑘿', '𑙀'), - ('𑚫', '𑚫'), ('𑚭', '𑚭'), ('𑚰', '𑚵'), ('𑚷', '𑚷'), - ('𑜝', '𑜟'), ('𑜢', '𑜥'), ('𑜧', '𑜫'), - ('\u{1182f}', '\u{11837}'), ('\u{11839}', '\u{1183a}'), ('𑨁', '𑨊'), - ('𑨳', '𑨸'), ('𑨻', '𑨾'), ('𑩇', '𑩇'), ('𑩑', '𑩖'), - ('𑩙', '𑩛'), ('𑪊', '𑪖'), ('𑪘', '𑪙'), ('𑰰', '𑰶'), - ('𑰸', '𑰽'), ('𑰿', '𑰿'), ('𑲒', '𑲧'), ('𑲪', '𑲰'), - ('𑲲', '𑲳'), ('𑲵', '𑲶'), ('𑴱', '𑴶'), ('𑴺', '𑴺'), - ('𑴼', '𑴽'), ('𑴿', '𑵅'), ('𑵇', '𑵇'), + ('\u{300}', '\u{36f}'), ('\u{483}', '\u{489}'), ('\u{591}', '\u{5bd}'), + ('\u{5bf}', '\u{5bf}'), ('\u{5c1}', '\u{5c2}'), ('\u{5c4}', '\u{5c5}'), + ('\u{5c7}', '\u{5c7}'), ('\u{610}', '\u{61a}'), ('\u{64b}', '\u{65f}'), + ('\u{670}', '\u{670}'), ('\u{6d6}', '\u{6dc}'), ('\u{6df}', '\u{6e4}'), + ('\u{6e7}', '\u{6e8}'), ('\u{6ea}', '\u{6ed}'), ('\u{711}', '\u{711}'), + ('\u{730}', '\u{74a}'), ('\u{7a6}', '\u{7b0}'), ('\u{7eb}', '\u{7f3}'), + ('\u{7fd}', '\u{7fd}'), ('\u{816}', '\u{819}'), ('\u{81b}', '\u{823}'), + ('\u{825}', '\u{827}'), ('\u{829}', '\u{82d}'), ('\u{859}', '\u{85b}'), + ('\u{8d3}', '\u{8e1}'), ('\u{8e3}', '\u{902}'), ('\u{93a}', '\u{93a}'), + ('\u{93c}', '\u{93c}'), ('\u{941}', '\u{948}'), ('\u{94d}', '\u{94d}'), + ('\u{951}', '\u{957}'), ('\u{962}', '\u{963}'), ('\u{981}', '\u{981}'), + ('\u{9bc}', '\u{9bc}'), ('\u{9be}', '\u{9be}'), ('\u{9c1}', '\u{9c4}'), + ('\u{9cd}', '\u{9cd}'), ('\u{9d7}', '\u{9d7}'), ('\u{9e2}', '\u{9e3}'), + ('\u{9fe}', '\u{9fe}'), ('\u{a01}', '\u{a02}'), ('\u{a3c}', '\u{a3c}'), + ('\u{a41}', '\u{a42}'), ('\u{a47}', '\u{a48}'), ('\u{a4b}', '\u{a4d}'), + ('\u{a51}', '\u{a51}'), ('\u{a70}', '\u{a71}'), ('\u{a75}', '\u{a75}'), + ('\u{a81}', '\u{a82}'), ('\u{abc}', '\u{abc}'), ('\u{ac1}', '\u{ac5}'), + ('\u{ac7}', '\u{ac8}'), ('\u{acd}', '\u{acd}'), ('\u{ae2}', '\u{ae3}'), + ('\u{afa}', '\u{aff}'), ('\u{b01}', '\u{b01}'), ('\u{b3c}', '\u{b3c}'), + ('\u{b3e}', '\u{b3f}'), ('\u{b41}', '\u{b44}'), ('\u{b4d}', '\u{b4d}'), + ('\u{b56}', '\u{b57}'), ('\u{b62}', '\u{b63}'), ('\u{b82}', '\u{b82}'), + ('\u{bbe}', '\u{bbe}'), ('\u{bc0}', '\u{bc0}'), ('\u{bcd}', '\u{bcd}'), + ('\u{bd7}', '\u{bd7}'), ('\u{c00}', '\u{c00}'), ('\u{c04}', '\u{c04}'), + ('\u{c3e}', '\u{c40}'), ('\u{c46}', '\u{c48}'), ('\u{c4a}', '\u{c4d}'), + ('\u{c55}', '\u{c56}'), ('\u{c62}', '\u{c63}'), ('\u{c81}', '\u{c81}'), + ('\u{cbc}', '\u{cbc}'), ('\u{cbf}', '\u{cbf}'), ('\u{cc2}', '\u{cc2}'), + ('\u{cc6}', '\u{cc6}'), ('\u{ccc}', '\u{ccd}'), ('\u{cd5}', '\u{cd6}'), + ('\u{ce2}', '\u{ce3}'), ('\u{d00}', '\u{d01}'), ('\u{d3b}', '\u{d3c}'), + ('\u{d3e}', '\u{d3e}'), ('\u{d41}', '\u{d44}'), ('\u{d4d}', '\u{d4d}'), + ('\u{d57}', '\u{d57}'), ('\u{d62}', '\u{d63}'), ('\u{dca}', '\u{dca}'), + ('\u{dcf}', '\u{dcf}'), ('\u{dd2}', '\u{dd4}'), ('\u{dd6}', '\u{dd6}'), + ('\u{ddf}', '\u{ddf}'), ('\u{e31}', '\u{e31}'), ('\u{e34}', '\u{e3a}'), + ('\u{e47}', '\u{e4e}'), ('\u{eb1}', '\u{eb1}'), ('\u{eb4}', '\u{eb9}'), + ('\u{ebb}', '\u{ebc}'), ('\u{ec8}', '\u{ecd}'), ('\u{f18}', '\u{f19}'), + ('\u{f35}', '\u{f35}'), ('\u{f37}', '\u{f37}'), ('\u{f39}', '\u{f39}'), + ('\u{f71}', '\u{f7e}'), ('\u{f80}', '\u{f84}'), ('\u{f86}', '\u{f87}'), + ('\u{f8d}', '\u{f97}'), ('\u{f99}', '\u{fbc}'), ('\u{fc6}', '\u{fc6}'), + ('\u{102d}', '\u{1030}'), ('\u{1032}', '\u{1037}'), + ('\u{1039}', '\u{103a}'), ('\u{103d}', '\u{103e}'), + ('\u{1058}', '\u{1059}'), ('\u{105e}', '\u{1060}'), + ('\u{1071}', '\u{1074}'), ('\u{1082}', '\u{1082}'), + ('\u{1085}', '\u{1086}'), ('\u{108d}', '\u{108d}'), + ('\u{109d}', '\u{109d}'), ('\u{135d}', '\u{135f}'), + ('\u{1712}', '\u{1714}'), ('\u{1732}', '\u{1734}'), + ('\u{1752}', '\u{1753}'), ('\u{1772}', '\u{1773}'), + ('\u{17b4}', '\u{17b5}'), ('\u{17b7}', '\u{17bd}'), + ('\u{17c6}', '\u{17c6}'), ('\u{17c9}', '\u{17d3}'), + ('\u{17dd}', '\u{17dd}'), ('\u{180b}', '\u{180d}'), + ('\u{1885}', '\u{1886}'), ('\u{18a9}', '\u{18a9}'), + ('\u{1920}', '\u{1922}'), ('\u{1927}', '\u{1928}'), + ('\u{1932}', '\u{1932}'), ('\u{1939}', '\u{193b}'), + ('\u{1a17}', '\u{1a18}'), ('\u{1a1b}', '\u{1a1b}'), + ('\u{1a56}', '\u{1a56}'), ('\u{1a58}', '\u{1a5e}'), + ('\u{1a60}', '\u{1a60}'), ('\u{1a62}', '\u{1a62}'), + ('\u{1a65}', '\u{1a6c}'), ('\u{1a73}', '\u{1a7c}'), + ('\u{1a7f}', '\u{1a7f}'), ('\u{1ab0}', '\u{1abe}'), + ('\u{1b00}', '\u{1b03}'), ('\u{1b34}', '\u{1b34}'), + ('\u{1b36}', '\u{1b3a}'), ('\u{1b3c}', '\u{1b3c}'), + ('\u{1b42}', '\u{1b42}'), ('\u{1b6b}', '\u{1b73}'), + ('\u{1b80}', '\u{1b81}'), ('\u{1ba2}', '\u{1ba5}'), + ('\u{1ba8}', '\u{1ba9}'), ('\u{1bab}', '\u{1bad}'), + ('\u{1be6}', '\u{1be6}'), ('\u{1be8}', '\u{1be9}'), + ('\u{1bed}', '\u{1bed}'), ('\u{1bef}', '\u{1bf1}'), + ('\u{1c2c}', '\u{1c33}'), ('\u{1c36}', '\u{1c37}'), + ('\u{1cd0}', '\u{1cd2}'), ('\u{1cd4}', '\u{1ce0}'), + ('\u{1ce2}', '\u{1ce8}'), ('\u{1ced}', '\u{1ced}'), + ('\u{1cf4}', '\u{1cf4}'), ('\u{1cf8}', '\u{1cf9}'), + ('\u{1dc0}', '\u{1df9}'), ('\u{1dfb}', '\u{1dff}'), + ('\u{200c}', '\u{200c}'), ('\u{20d0}', '\u{20f0}'), + ('\u{2cef}', '\u{2cf1}'), ('\u{2d7f}', '\u{2d7f}'), + ('\u{2de0}', '\u{2dff}'), ('\u{302a}', '\u{302f}'), + ('\u{3099}', '\u{309a}'), ('\u{a66f}', '\u{a672}'), + ('\u{a674}', '\u{a67d}'), ('\u{a69e}', '\u{a69f}'), + ('\u{a6f0}', '\u{a6f1}'), ('\u{a802}', '\u{a802}'), + ('\u{a806}', '\u{a806}'), ('\u{a80b}', '\u{a80b}'), + ('\u{a825}', '\u{a826}'), ('\u{a8c4}', '\u{a8c5}'), + ('\u{a8e0}', '\u{a8f1}'), ('\u{a8ff}', '\u{a8ff}'), + ('\u{a926}', '\u{a92d}'), ('\u{a947}', '\u{a951}'), + ('\u{a980}', '\u{a982}'), ('\u{a9b3}', '\u{a9b3}'), + ('\u{a9b6}', '\u{a9b9}'), ('\u{a9bc}', '\u{a9bc}'), + ('\u{a9e5}', '\u{a9e5}'), ('\u{aa29}', '\u{aa2e}'), + ('\u{aa31}', '\u{aa32}'), ('\u{aa35}', '\u{aa36}'), + ('\u{aa43}', '\u{aa43}'), ('\u{aa4c}', '\u{aa4c}'), + ('\u{aa7c}', '\u{aa7c}'), ('\u{aab0}', '\u{aab0}'), + ('\u{aab2}', '\u{aab4}'), ('\u{aab7}', '\u{aab8}'), + ('\u{aabe}', '\u{aabf}'), ('\u{aac1}', '\u{aac1}'), + ('\u{aaec}', '\u{aaed}'), ('\u{aaf6}', '\u{aaf6}'), + ('\u{abe5}', '\u{abe5}'), ('\u{abe8}', '\u{abe8}'), + ('\u{abed}', '\u{abed}'), ('\u{fb1e}', '\u{fb1e}'), + ('\u{fe00}', '\u{fe0f}'), ('\u{fe20}', '\u{fe2f}'), + ('\u{ff9e}', '\u{ff9f}'), ('\u{101fd}', '\u{101fd}'), + ('\u{102e0}', '\u{102e0}'), ('\u{10376}', '\u{1037a}'), + ('\u{10a01}', '\u{10a03}'), ('\u{10a05}', '\u{10a06}'), + ('\u{10a0c}', '\u{10a0f}'), ('\u{10a38}', '\u{10a3a}'), + ('\u{10a3f}', '\u{10a3f}'), ('\u{10ae5}', '\u{10ae6}'), + ('\u{10d24}', '\u{10d27}'), ('\u{10f46}', '\u{10f50}'), + ('\u{11001}', '\u{11001}'), ('\u{11038}', '\u{11046}'), + ('\u{1107f}', '\u{11081}'), ('\u{110b3}', '\u{110b6}'), + ('\u{110b9}', '\u{110ba}'), ('\u{11100}', '\u{11102}'), + ('\u{11127}', '\u{1112b}'), ('\u{1112d}', '\u{11134}'), + ('\u{11173}', '\u{11173}'), ('\u{11180}', '\u{11181}'), + ('\u{111b6}', '\u{111be}'), ('\u{111c9}', '\u{111cc}'), + ('\u{1122f}', '\u{11231}'), ('\u{11234}', '\u{11234}'), + ('\u{11236}', '\u{11237}'), ('\u{1123e}', '\u{1123e}'), + ('\u{112df}', '\u{112df}'), ('\u{112e3}', '\u{112ea}'), + ('\u{11300}', '\u{11301}'), ('\u{1133b}', '\u{1133c}'), + ('\u{1133e}', '\u{1133e}'), ('\u{11340}', '\u{11340}'), + ('\u{11357}', '\u{11357}'), ('\u{11366}', '\u{1136c}'), + ('\u{11370}', '\u{11374}'), ('\u{11438}', '\u{1143f}'), + ('\u{11442}', '\u{11444}'), ('\u{11446}', '\u{11446}'), + ('\u{1145e}', '\u{1145e}'), ('\u{114b0}', '\u{114b0}'), + ('\u{114b3}', '\u{114b8}'), ('\u{114ba}', '\u{114ba}'), + ('\u{114bd}', '\u{114bd}'), ('\u{114bf}', '\u{114c0}'), + ('\u{114c2}', '\u{114c3}'), ('\u{115af}', '\u{115af}'), + ('\u{115b2}', '\u{115b5}'), ('\u{115bc}', '\u{115bd}'), + ('\u{115bf}', '\u{115c0}'), ('\u{115dc}', '\u{115dd}'), + ('\u{11633}', '\u{1163a}'), ('\u{1163d}', '\u{1163d}'), + ('\u{1163f}', '\u{11640}'), ('\u{116ab}', '\u{116ab}'), + ('\u{116ad}', '\u{116ad}'), ('\u{116b0}', '\u{116b5}'), + ('\u{116b7}', '\u{116b7}'), ('\u{1171d}', '\u{1171f}'), + ('\u{11722}', '\u{11725}'), ('\u{11727}', '\u{1172b}'), + ('\u{1182f}', '\u{11837}'), ('\u{11839}', '\u{1183a}'), + ('\u{11a01}', '\u{11a0a}'), ('\u{11a33}', '\u{11a38}'), + ('\u{11a3b}', '\u{11a3e}'), ('\u{11a47}', '\u{11a47}'), + ('\u{11a51}', '\u{11a56}'), ('\u{11a59}', '\u{11a5b}'), + ('\u{11a8a}', '\u{11a96}'), ('\u{11a98}', '\u{11a99}'), + ('\u{11c30}', '\u{11c36}'), ('\u{11c38}', '\u{11c3d}'), + ('\u{11c3f}', '\u{11c3f}'), ('\u{11c92}', '\u{11ca7}'), + ('\u{11caa}', '\u{11cb0}'), ('\u{11cb2}', '\u{11cb3}'), + ('\u{11cb5}', '\u{11cb6}'), ('\u{11d31}', '\u{11d36}'), + ('\u{11d3a}', '\u{11d3a}'), ('\u{11d3c}', '\u{11d3d}'), + ('\u{11d3f}', '\u{11d45}'), ('\u{11d47}', '\u{11d47}'), ('\u{11d90}', '\u{11d91}'), ('\u{11d95}', '\u{11d95}'), - ('\u{11d97}', '\u{11d97}'), ('\u{11ef3}', '\u{11ef4}'), ('𖫰', '𖫴'), - ('𖬰', '𖬶'), ('𖾏', '𖾒'), ('𛲝', '𛲞'), ('𝅥', '𝅥'), - ('𝅧', '𝅩'), ('𝅮', '𝅲'), ('𝅻', '𝆂'), ('𝆅', '𝆋'), - ('𝆪', '𝆭'), ('𝉂', '𝉄'), ('𝨀', '𝨶'), ('𝨻', '𝩬'), - ('𝩵', '𝩵'), ('𝪄', '𝪄'), ('𝪛', '𝪟'), ('𝪡', '𝪯'), - ('𞀀', '𞀆'), ('𞀈', '𞀘'), ('𞀛', '𞀡'), ('𞀣', '𞀤'), - ('𞀦', '𞀪'), ('𞣐', '𞣖'), ('𞥄', '𞥊'), - ('\u{e0020}', '\u{e007f}'), ('󠄀', '󠇯'), + ('\u{11d97}', '\u{11d97}'), ('\u{11ef3}', '\u{11ef4}'), + ('\u{16af0}', '\u{16af4}'), ('\u{16b30}', '\u{16b36}'), + ('\u{16f8f}', '\u{16f92}'), ('\u{1bc9d}', '\u{1bc9e}'), + ('\u{1d165}', '\u{1d165}'), ('\u{1d167}', '\u{1d169}'), + ('\u{1d16e}', '\u{1d172}'), ('\u{1d17b}', '\u{1d182}'), + ('\u{1d185}', '\u{1d18b}'), ('\u{1d1aa}', '\u{1d1ad}'), + ('\u{1d242}', '\u{1d244}'), ('\u{1da00}', '\u{1da36}'), + ('\u{1da3b}', '\u{1da6c}'), ('\u{1da75}', '\u{1da75}'), + ('\u{1da84}', '\u{1da84}'), ('\u{1da9b}', '\u{1da9f}'), + ('\u{1daa1}', '\u{1daaf}'), ('\u{1e000}', '\u{1e006}'), + ('\u{1e008}', '\u{1e018}'), ('\u{1e01b}', '\u{1e021}'), + ('\u{1e023}', '\u{1e024}'), ('\u{1e026}', '\u{1e02a}'), + ('\u{1e8d0}', '\u{1e8d6}'), ('\u{1e944}', '\u{1e94a}'), + ('\u{e0020}', '\u{e007f}'), ('\u{e0100}', '\u{e01ef}'), ]; pub const GRAPHEME_LINK: &'static [(char, char)] = &[ - ('्', '्'), ('্', '্'), ('੍', '੍'), ('્', '્'), - ('୍', '୍'), ('்', '்'), ('్', '్'), ('್', '್'), - ('഻', '഼'), ('്', '്'), ('්', '්'), ('ฺ', 'ฺ'), - ('྄', '྄'), ('္', '်'), ('᜔', '᜔'), ('᜴', '᜴'), - ('្', '្'), ('᩠', '᩠'), ('᭄', '᭄'), ('᮪', '᮫'), - ('᯲', '᯳'), ('⵿', '⵿'), ('꠆', '꠆'), ('꣄', '꣄'), - ('꥓', '꥓'), ('꧀', '꧀'), ('꫶', '꫶'), ('꯭', '꯭'), - ('𐨿', '𐨿'), ('𑁆', '𑁆'), ('𑁿', '𑁿'), ('𑂹', '𑂹'), - ('𑄳', '𑄴'), ('𑇀', '𑇀'), ('𑈵', '𑈵'), ('𑋪', '𑋪'), - ('𑍍', '𑍍'), ('𑑂', '𑑂'), ('𑓂', '𑓂'), ('𑖿', '𑖿'), - ('𑘿', '𑘿'), ('𑚶', '𑚶'), ('𑜫', '𑜫'), - ('\u{11839}', '\u{11839}'), ('𑨴', '𑨴'), ('𑩇', '𑩇'), - ('𑪙', '𑪙'), ('𑰿', '𑰿'), ('𑵄', '𑵅'), + ('\u{94d}', '\u{94d}'), ('\u{9cd}', '\u{9cd}'), ('\u{a4d}', '\u{a4d}'), + ('\u{acd}', '\u{acd}'), ('\u{b4d}', '\u{b4d}'), ('\u{bcd}', '\u{bcd}'), + ('\u{c4d}', '\u{c4d}'), ('\u{ccd}', '\u{ccd}'), ('\u{d3b}', '\u{d3c}'), + ('\u{d4d}', '\u{d4d}'), ('\u{dca}', '\u{dca}'), ('\u{e3a}', '\u{e3a}'), + ('\u{f84}', '\u{f84}'), ('\u{1039}', '\u{103a}'), ('\u{1714}', '\u{1714}'), + ('\u{1734}', '\u{1734}'), ('\u{17d2}', '\u{17d2}'), + ('\u{1a60}', '\u{1a60}'), ('᭄', '᭄'), ('᮪', '\u{1bab}'), + ('᯲', '᯳'), ('\u{2d7f}', '\u{2d7f}'), ('\u{a806}', '\u{a806}'), + ('\u{a8c4}', '\u{a8c4}'), ('꥓', '꥓'), ('꧀', '꧀'), + ('\u{aaf6}', '\u{aaf6}'), ('\u{abed}', '\u{abed}'), + ('\u{10a3f}', '\u{10a3f}'), ('\u{11046}', '\u{11046}'), + ('\u{1107f}', '\u{1107f}'), ('\u{110b9}', '\u{110b9}'), + ('\u{11133}', '\u{11134}'), ('𑇀', '𑇀'), ('𑈵', '𑈵'), + ('\u{112ea}', '\u{112ea}'), ('𑍍', '𑍍'), ('\u{11442}', '\u{11442}'), + ('\u{114c2}', '\u{114c2}'), ('\u{115bf}', '\u{115bf}'), + ('\u{1163f}', '\u{1163f}'), ('𑚶', '𑚶'), ('\u{1172b}', '\u{1172b}'), + ('\u{11839}', '\u{11839}'), ('\u{11a34}', '\u{11a34}'), + ('\u{11a47}', '\u{11a47}'), ('\u{11a99}', '\u{11a99}'), + ('\u{11c3f}', '\u{11c3f}'), ('\u{11d44}', '\u{11d45}'), ('\u{11d97}', '\u{11d97}'), ]; @@ -1374,161 +1629,172 @@ pub const ID_CONTINUE: &'static [(char, char)] = &[ ('0', '9'), ('A', 'Z'), ('_', '_'), ('a', 'z'), ('ª', 'ª'), ('µ', 'µ'), ('·', '·'), ('º', 'º'), ('À', 'Ö'), ('Ø', 'ö'), ('ø', 'ˁ'), - ('ˆ', 'ˑ'), ('ˠ', 'ˤ'), ('ˬ', 'ˬ'), ('ˮ', 'ˮ'), ('̀', 'ʹ'), + ('ˆ', 'ˑ'), ('ˠ', 'ˤ'), ('ˬ', 'ˬ'), ('ˮ', 'ˮ'), ('\u{300}', 'ʹ'), ('Ͷ', 'ͷ'), ('ͺ', 'ͽ'), ('Ϳ', 'Ϳ'), ('Ά', 'Ί'), ('Ό', 'Ό'), - ('Ύ', 'Ρ'), ('Σ', 'ϵ'), ('Ϸ', 'ҁ'), ('҃', '҇'), ('Ҋ', 'ԯ'), - ('Ա', 'Ֆ'), ('ՙ', 'ՙ'), ('\u{560}', '\u{588}'), ('֑', 'ֽ'), - ('ֿ', 'ֿ'), ('ׁ', 'ׂ'), ('ׄ', 'ׅ'), ('ׇ', 'ׇ'), ('א', 'ת'), - ('\u{5ef}', 'ײ'), ('ؐ', 'ؚ'), ('ؠ', '٩'), ('ٮ', 'ۓ'), ('ە', 'ۜ'), - ('۟', 'ۨ'), ('۪', 'ۼ'), ('ۿ', 'ۿ'), ('ܐ', '݊'), ('ݍ', 'ޱ'), - ('߀', 'ߵ'), ('ߺ', 'ߺ'), ('\u{7fd}', '\u{7fd}'), ('ࠀ', '࠭'), - ('ࡀ', '࡛'), ('ࡠ', 'ࡪ'), ('ࢠ', 'ࢴ'), ('ࢶ', 'ࢽ'), - ('\u{8d3}', '࣡'), ('ࣣ', 'ॣ'), ('०', '९'), ('ॱ', 'ঃ'), - ('অ', 'ঌ'), ('এ', 'ঐ'), ('ও', 'ন'), ('প', 'র'), - ('ল', 'ল'), ('শ', 'হ'), ('়', 'ৄ'), ('ে', 'ৈ'), - ('ো', 'ৎ'), ('ৗ', 'ৗ'), ('ড়', 'ঢ়'), ('য়', 'ৣ'), - ('০', 'ৱ'), ('ৼ', 'ৼ'), ('\u{9fe}', '\u{9fe}'), ('ਁ', 'ਃ'), - ('ਅ', 'ਊ'), ('ਏ', 'ਐ'), ('ਓ', 'ਨ'), ('ਪ', 'ਰ'), - ('ਲ', 'ਲ਼'), ('ਵ', 'ਸ਼'), ('ਸ', 'ਹ'), ('਼', '਼'), - ('ਾ', 'ੂ'), ('ੇ', 'ੈ'), ('ੋ', '੍'), ('ੑ', 'ੑ'), - ('ਖ਼', 'ੜ'), ('ਫ਼', 'ਫ਼'), ('੦', 'ੵ'), ('ઁ', 'ઃ'), + ('Ύ', 'Ρ'), ('Σ', 'ϵ'), ('Ϸ', 'ҁ'), ('\u{483}', '\u{487}'), + ('Ҋ', 'ԯ'), ('Ա', 'Ֆ'), ('ՙ', 'ՙ'), ('ՠ', 'ֈ'), + ('\u{591}', '\u{5bd}'), ('\u{5bf}', '\u{5bf}'), ('\u{5c1}', '\u{5c2}'), + ('\u{5c4}', '\u{5c5}'), ('\u{5c7}', '\u{5c7}'), ('א', 'ת'), ('ׯ', 'ײ'), + ('\u{610}', '\u{61a}'), ('ؠ', '٩'), ('ٮ', 'ۓ'), ('ە', '\u{6dc}'), + ('\u{6df}', '\u{6e8}'), ('\u{6ea}', 'ۼ'), ('ۿ', 'ۿ'), ('ܐ', '\u{74a}'), + ('ݍ', 'ޱ'), ('߀', 'ߵ'), ('ߺ', 'ߺ'), ('\u{7fd}', '\u{7fd}'), + ('ࠀ', '\u{82d}'), ('ࡀ', '\u{85b}'), ('ࡠ', 'ࡪ'), ('ࢠ', 'ࢴ'), + ('ࢶ', 'ࢽ'), ('\u{8d3}', '\u{8e1}'), ('\u{8e3}', '\u{963}'), + ('०', '९'), ('ॱ', 'ঃ'), ('অ', 'ঌ'), ('এ', 'ঐ'), + ('ও', 'ন'), ('প', 'র'), ('ল', 'ল'), ('শ', 'হ'), + ('\u{9bc}', '\u{9c4}'), ('ে', 'ৈ'), ('ো', 'ৎ'), + ('\u{9d7}', '\u{9d7}'), ('ড়', 'ঢ়'), ('য়', '\u{9e3}'), ('০', 'ৱ'), + ('ৼ', 'ৼ'), ('\u{9fe}', '\u{9fe}'), ('\u{a01}', 'ਃ'), ('ਅ', 'ਊ'), + ('ਏ', 'ਐ'), ('ਓ', 'ਨ'), ('ਪ', 'ਰ'), ('ਲ', 'ਲ਼'), + ('ਵ', 'ਸ਼'), ('ਸ', 'ਹ'), ('\u{a3c}', '\u{a3c}'), ('ਾ', '\u{a42}'), + ('\u{a47}', '\u{a48}'), ('\u{a4b}', '\u{a4d}'), ('\u{a51}', '\u{a51}'), + ('ਖ਼', 'ੜ'), ('ਫ਼', 'ਫ਼'), ('੦', '\u{a75}'), ('\u{a81}', 'ઃ'), ('અ', 'ઍ'), ('એ', 'ઑ'), ('ઓ', 'ન'), ('પ', 'ર'), - ('લ', 'ળ'), ('વ', 'હ'), ('઼', 'ૅ'), ('ે', 'ૉ'), - ('ો', '્'), ('ૐ', 'ૐ'), ('ૠ', 'ૣ'), ('૦', '૯'), - ('ૹ', '૿'), ('ଁ', 'ଃ'), ('ଅ', 'ଌ'), ('ଏ', 'ଐ'), + ('લ', 'ળ'), ('વ', 'હ'), ('\u{abc}', '\u{ac5}'), ('\u{ac7}', 'ૉ'), + ('ો', '\u{acd}'), ('ૐ', 'ૐ'), ('ૠ', '\u{ae3}'), ('૦', '૯'), + ('ૹ', '\u{aff}'), ('\u{b01}', 'ଃ'), ('ଅ', 'ଌ'), ('ଏ', 'ଐ'), ('ଓ', 'ନ'), ('ପ', 'ର'), ('ଲ', 'ଳ'), ('ଵ', 'ହ'), - ('଼', 'ୄ'), ('େ', 'ୈ'), ('ୋ', '୍'), ('ୖ', 'ୗ'), - ('ଡ଼', 'ଢ଼'), ('ୟ', 'ୣ'), ('୦', '୯'), ('ୱ', 'ୱ'), - ('ஂ', 'ஃ'), ('அ', 'ஊ'), ('எ', 'ஐ'), ('ஒ', 'க'), - ('ங', 'ச'), ('ஜ', 'ஜ'), ('ஞ', 'ட'), ('ண', 'த'), - ('ந', 'ப'), ('ம', 'ஹ'), ('ா', 'ூ'), ('ெ', 'ை'), - ('ொ', '்'), ('ௐ', 'ௐ'), ('ௗ', 'ௗ'), ('௦', '௯'), - ('ఀ', 'ఌ'), ('ఎ', 'ఐ'), ('ఒ', 'న'), ('ప', 'హ'), - ('ఽ', 'ౄ'), ('ె', 'ై'), ('ొ', '్'), ('ౕ', 'ౖ'), - ('ౘ', 'ౚ'), ('ౠ', 'ౣ'), ('౦', '౯'), ('ಀ', 'ಃ'), - ('ಅ', 'ಌ'), ('ಎ', 'ಐ'), ('ಒ', 'ನ'), ('ಪ', 'ಳ'), - ('ವ', 'ಹ'), ('಼', 'ೄ'), ('ೆ', 'ೈ'), ('ೊ', '್'), - ('ೕ', 'ೖ'), ('ೞ', 'ೞ'), ('ೠ', 'ೣ'), ('೦', '೯'), - ('ೱ', 'ೲ'), ('ഀ', 'ഃ'), ('അ', 'ഌ'), ('എ', 'ഐ'), - ('ഒ', 'ൄ'), ('െ', 'ൈ'), ('ൊ', 'ൎ'), ('ൔ', 'ൗ'), - ('ൟ', 'ൣ'), ('൦', '൯'), ('ൺ', 'ൿ'), ('ං', 'ඃ'), + ('\u{b3c}', '\u{b44}'), ('େ', 'ୈ'), ('ୋ', '\u{b4d}'), + ('\u{b56}', '\u{b57}'), ('ଡ଼', 'ଢ଼'), ('ୟ', '\u{b63}'), ('୦', '୯'), + ('ୱ', 'ୱ'), ('\u{b82}', 'ஃ'), ('அ', 'ஊ'), ('எ', 'ஐ'), + ('ஒ', 'க'), ('ங', 'ச'), ('ஜ', 'ஜ'), ('ஞ', 'ட'), + ('ண', 'த'), ('ந', 'ப'), ('ம', 'ஹ'), ('\u{bbe}', 'ூ'), + ('ெ', 'ை'), ('ொ', '\u{bcd}'), ('ௐ', 'ௐ'), ('\u{bd7}', '\u{bd7}'), + ('௦', '௯'), ('\u{c00}', 'ఌ'), ('ఎ', 'ఐ'), ('ఒ', 'న'), + ('ప', 'హ'), ('ఽ', 'ౄ'), ('\u{c46}', '\u{c48}'), + ('\u{c4a}', '\u{c4d}'), ('\u{c55}', '\u{c56}'), ('ౘ', 'ౚ'), + ('ౠ', '\u{c63}'), ('౦', '౯'), ('ಀ', 'ಃ'), ('ಅ', 'ಌ'), + ('ಎ', 'ಐ'), ('ಒ', 'ನ'), ('ಪ', 'ಳ'), ('ವ', 'ಹ'), + ('\u{cbc}', 'ೄ'), ('\u{cc6}', 'ೈ'), ('ೊ', '\u{ccd}'), + ('\u{cd5}', '\u{cd6}'), ('ೞ', 'ೞ'), ('ೠ', '\u{ce3}'), ('೦', '೯'), + ('ೱ', 'ೲ'), ('\u{d00}', 'ഃ'), ('അ', 'ഌ'), ('എ', 'ഐ'), + ('ഒ', '\u{d44}'), ('െ', 'ൈ'), ('ൊ', 'ൎ'), ('ൔ', '\u{d57}'), + ('ൟ', '\u{d63}'), ('൦', '൯'), ('ൺ', 'ൿ'), ('ං', 'ඃ'), ('අ', 'ඖ'), ('ක', 'න'), ('ඳ', 'ර'), ('ල', 'ල'), - ('ව', 'ෆ'), ('්', '්'), ('ා', 'ු'), ('ූ', 'ූ'), - ('ෘ', 'ෟ'), ('෦', '෯'), ('ෲ', 'ෳ'), ('ก', 'ฺ'), - ('เ', '๎'), ('๐', '๙'), ('ກ', 'ຂ'), ('ຄ', 'ຄ'), - ('ງ', 'ຈ'), ('ຊ', 'ຊ'), ('ຍ', 'ຍ'), ('ດ', 'ທ'), - ('ນ', 'ຟ'), ('ມ', 'ຣ'), ('ລ', 'ລ'), ('ວ', 'ວ'), - ('ສ', 'ຫ'), ('ອ', 'ູ'), ('ົ', 'ຽ'), ('ເ', 'ໄ'), - ('ໆ', 'ໆ'), ('່', 'ໍ'), ('໐', '໙'), ('ໜ', 'ໟ'), - ('ༀ', 'ༀ'), ('༘', '༙'), ('༠', '༩'), ('༵', '༵'), - ('༷', '༷'), ('༹', '༹'), ('༾', 'ཇ'), ('ཉ', 'ཬ'), - ('ཱ', '྄'), ('྆', 'ྗ'), ('ྙ', 'ྼ'), ('࿆', '࿆'), - ('က', '၉'), ('ၐ', 'ႝ'), ('Ⴀ', 'Ⴥ'), ('Ⴧ', 'Ⴧ'), + ('ව', 'ෆ'), ('\u{dca}', '\u{dca}'), ('\u{dcf}', '\u{dd4}'), + ('\u{dd6}', '\u{dd6}'), ('ෘ', '\u{ddf}'), ('෦', '෯'), ('ෲ', 'ෳ'), + ('ก', '\u{e3a}'), ('เ', '\u{e4e}'), ('๐', '๙'), ('ກ', 'ຂ'), + ('ຄ', 'ຄ'), ('ງ', 'ຈ'), ('ຊ', 'ຊ'), ('ຍ', 'ຍ'), + ('ດ', 'ທ'), ('ນ', 'ຟ'), ('ມ', 'ຣ'), ('ລ', 'ລ'), + ('ວ', 'ວ'), ('ສ', 'ຫ'), ('ອ', '\u{eb9}'), ('\u{ebb}', 'ຽ'), + ('ເ', 'ໄ'), ('ໆ', 'ໆ'), ('\u{ec8}', '\u{ecd}'), ('໐', '໙'), + ('ໜ', 'ໟ'), ('ༀ', 'ༀ'), ('\u{f18}', '\u{f19}'), ('༠', '༩'), + ('\u{f35}', '\u{f35}'), ('\u{f37}', '\u{f37}'), ('\u{f39}', '\u{f39}'), + ('༾', 'ཇ'), ('ཉ', 'ཬ'), ('\u{f71}', '\u{f84}'), + ('\u{f86}', '\u{f97}'), ('\u{f99}', '\u{fbc}'), ('\u{fc6}', '\u{fc6}'), + ('က', '၉'), ('ၐ', '\u{109d}'), ('Ⴀ', 'Ⴥ'), ('Ⴧ', 'Ⴧ'), ('Ⴭ', 'Ⴭ'), ('ა', 'ჺ'), ('ჼ', 'ቈ'), ('ቊ', 'ቍ'), ('ቐ', 'ቖ'), ('ቘ', 'ቘ'), ('ቚ', 'ቝ'), ('በ', 'ኈ'), ('ኊ', 'ኍ'), ('ነ', 'ኰ'), ('ኲ', 'ኵ'), ('ኸ', 'ኾ'), ('ዀ', 'ዀ'), ('ዂ', 'ዅ'), ('ወ', 'ዖ'), ('ዘ', 'ጐ'), - ('ጒ', 'ጕ'), ('ጘ', 'ፚ'), ('፝', '፟'), ('፩', '፱'), + ('ጒ', 'ጕ'), ('ጘ', 'ፚ'), ('\u{135d}', '\u{135f}'), ('፩', '፱'), ('ᎀ', 'ᎏ'), ('Ꭰ', 'Ᏽ'), ('ᏸ', 'ᏽ'), ('ᐁ', 'ᙬ'), ('ᙯ', 'ᙿ'), ('ᚁ', 'ᚚ'), ('ᚠ', 'ᛪ'), ('ᛮ', 'ᛸ'), - ('ᜀ', 'ᜌ'), ('ᜎ', '᜔'), ('ᜠ', '᜴'), ('ᝀ', 'ᝓ'), - ('ᝠ', 'ᝬ'), ('ᝮ', 'ᝰ'), ('ᝲ', 'ᝳ'), ('ក', '៓'), - ('ៗ', 'ៗ'), ('ៜ', '៝'), ('០', '៩'), ('᠋', '᠍'), - ('᠐', '᠙'), ('ᠠ', '\u{1878}'), ('ᢀ', 'ᢪ'), ('ᢰ', 'ᣵ'), - ('ᤀ', 'ᤞ'), ('ᤠ', 'ᤫ'), ('ᤰ', '᤻'), ('᥆', 'ᥭ'), + ('ᜀ', 'ᜌ'), ('ᜎ', '\u{1714}'), ('ᜠ', '\u{1734}'), + ('ᝀ', '\u{1753}'), ('ᝠ', 'ᝬ'), ('ᝮ', 'ᝰ'), + ('\u{1772}', '\u{1773}'), ('ក', '\u{17d3}'), ('ៗ', 'ៗ'), + ('ៜ', '\u{17dd}'), ('០', '៩'), ('\u{180b}', '\u{180d}'), + ('᠐', '᠙'), ('ᠠ', 'ᡸ'), ('ᢀ', 'ᢪ'), ('ᢰ', 'ᣵ'), + ('ᤀ', 'ᤞ'), ('\u{1920}', 'ᤫ'), ('ᤰ', '\u{193b}'), ('᥆', 'ᥭ'), ('ᥰ', 'ᥴ'), ('ᦀ', 'ᦫ'), ('ᦰ', 'ᧉ'), ('᧐', '᧚'), - ('ᨀ', 'ᨛ'), ('ᨠ', 'ᩞ'), ('᩠', '᩼'), ('᩿', '᪉'), - ('᪐', '᪙'), ('ᪧ', 'ᪧ'), ('᪰', '᪽'), ('ᬀ', 'ᭋ'), - ('᭐', '᭙'), ('᭫', '᭳'), ('ᮀ', '᯳'), ('ᰀ', '᰷'), - ('᱀', '᱉'), ('ᱍ', 'ᱽ'), ('ᲀ', 'ᲈ'), ('\u{1c90}', '\u{1cba}'), - ('\u{1cbd}', '\u{1cbf}'), ('᳐', '᳒'), ('᳔', '᳹'), ('ᴀ', '᷹'), - ('᷻', 'ἕ'), ('Ἐ', 'Ἕ'), ('ἠ', 'ὅ'), ('Ὀ', 'Ὅ'), - ('ὐ', 'ὗ'), ('Ὑ', 'Ὑ'), ('Ὓ', 'Ὓ'), ('Ὕ', 'Ὕ'), - ('Ὗ', 'ώ'), ('ᾀ', 'ᾴ'), ('ᾶ', 'ᾼ'), ('ι', 'ι'), - ('ῂ', 'ῄ'), ('ῆ', 'ῌ'), ('ῐ', 'ΐ'), ('ῖ', 'Ί'), - ('ῠ', 'Ῥ'), ('ῲ', 'ῴ'), ('ῶ', 'ῼ'), ('‿', '⁀'), - ('⁔', '⁔'), ('ⁱ', 'ⁱ'), ('ⁿ', 'ⁿ'), ('ₐ', 'ₜ'), - ('⃐', '⃜'), ('⃡', '⃡'), ('⃥', '⃰'), ('ℂ', 'ℂ'), - ('ℇ', 'ℇ'), ('ℊ', 'ℓ'), ('ℕ', 'ℕ'), ('℘', 'ℝ'), - ('ℤ', 'ℤ'), ('Ω', 'Ω'), ('ℨ', 'ℨ'), ('K', 'ℹ'), - ('ℼ', 'ℿ'), ('ⅅ', 'ⅉ'), ('ⅎ', 'ⅎ'), ('Ⅰ', 'ↈ'), - ('Ⰰ', 'Ⱞ'), ('ⰰ', 'ⱞ'), ('Ⱡ', 'ⳤ'), ('Ⳬ', 'ⳳ'), - ('ⴀ', 'ⴥ'), ('ⴧ', 'ⴧ'), ('ⴭ', 'ⴭ'), ('ⴰ', 'ⵧ'), - ('ⵯ', 'ⵯ'), ('⵿', 'ⶖ'), ('ⶠ', 'ⶦ'), ('ⶨ', 'ⶮ'), - ('ⶰ', 'ⶶ'), ('ⶸ', 'ⶾ'), ('ⷀ', 'ⷆ'), ('ⷈ', 'ⷎ'), - ('ⷐ', 'ⷖ'), ('ⷘ', 'ⷞ'), ('ⷠ', 'ⷿ'), ('々', '〇'), - ('〡', '〯'), ('〱', '〵'), ('〸', '〼'), ('ぁ', 'ゖ'), - ('゙', 'ゟ'), ('ァ', 'ヺ'), ('ー', 'ヿ'), ('ㄅ', '\u{312f}'), - ('ㄱ', 'ㆎ'), ('ㆠ', 'ㆺ'), ('ㇰ', 'ㇿ'), ('㐀', '䶵'), - ('一', '\u{9fef}'), ('ꀀ', 'ꒌ'), ('ꓐ', 'ꓽ'), ('ꔀ', 'ꘌ'), - ('ꘐ', 'ꘫ'), ('Ꙁ', '꙯'), ('ꙴ', '꙽'), ('ꙿ', '꛱'), - ('ꜗ', 'ꜟ'), ('Ꜣ', 'ꞈ'), ('Ꞌ', '\u{a7b9}'), ('ꟷ', 'ꠧ'), - ('ꡀ', 'ꡳ'), ('ꢀ', 'ꣅ'), ('꣐', '꣙'), ('꣠', 'ꣷ'), - ('ꣻ', 'ꣻ'), ('ꣽ', '꤭'), ('ꤰ', '꥓'), ('ꥠ', 'ꥼ'), - ('ꦀ', '꧀'), ('ꧏ', '꧙'), ('ꧠ', 'ꧾ'), ('ꨀ', 'ꨶ'), + ('ᨀ', '\u{1a1b}'), ('ᨠ', '\u{1a5e}'), ('\u{1a60}', '\u{1a7c}'), + ('\u{1a7f}', '᪉'), ('᪐', '᪙'), ('ᪧ', 'ᪧ'), + ('\u{1ab0}', '\u{1abd}'), ('\u{1b00}', 'ᭋ'), ('᭐', '᭙'), + ('\u{1b6b}', '\u{1b73}'), ('\u{1b80}', '᯳'), ('ᰀ', '\u{1c37}'), + ('᱀', '᱉'), ('ᱍ', 'ᱽ'), ('ᲀ', 'ᲈ'), ('Ა', 'Ჺ'), + ('Ჽ', 'Ჿ'), ('\u{1cd0}', '\u{1cd2}'), ('\u{1cd4}', '\u{1cf9}'), + ('ᴀ', '\u{1df9}'), ('\u{1dfb}', 'ἕ'), ('Ἐ', 'Ἕ'), ('ἠ', 'ὅ'), + ('Ὀ', 'Ὅ'), ('ὐ', 'ὗ'), ('Ὑ', 'Ὑ'), ('Ὓ', 'Ὓ'), + ('Ὕ', 'Ὕ'), ('Ὗ', 'ώ'), ('ᾀ', 'ᾴ'), ('ᾶ', 'ᾼ'), + ('ι', 'ι'), ('ῂ', 'ῄ'), ('ῆ', 'ῌ'), ('ῐ', 'ΐ'), + ('ῖ', 'Ί'), ('ῠ', 'Ῥ'), ('ῲ', 'ῴ'), ('ῶ', 'ῼ'), + ('‿', '⁀'), ('⁔', '⁔'), ('ⁱ', 'ⁱ'), ('ⁿ', 'ⁿ'), + ('ₐ', 'ₜ'), ('\u{20d0}', '\u{20dc}'), ('\u{20e1}', '\u{20e1}'), + ('\u{20e5}', '\u{20f0}'), ('ℂ', 'ℂ'), ('ℇ', 'ℇ'), ('ℊ', 'ℓ'), + ('ℕ', 'ℕ'), ('℘', 'ℝ'), ('ℤ', 'ℤ'), ('Ω', 'Ω'), + ('ℨ', 'ℨ'), ('K', 'ℹ'), ('ℼ', 'ℿ'), ('ⅅ', 'ⅉ'), + ('ⅎ', 'ⅎ'), ('Ⅰ', 'ↈ'), ('Ⰰ', 'Ⱞ'), ('ⰰ', 'ⱞ'), + ('Ⱡ', 'ⳤ'), ('Ⳬ', 'ⳳ'), ('ⴀ', 'ⴥ'), ('ⴧ', 'ⴧ'), + ('ⴭ', 'ⴭ'), ('ⴰ', 'ⵧ'), ('ⵯ', 'ⵯ'), ('\u{2d7f}', 'ⶖ'), + ('ⶠ', 'ⶦ'), ('ⶨ', 'ⶮ'), ('ⶰ', 'ⶶ'), ('ⶸ', 'ⶾ'), + ('ⷀ', 'ⷆ'), ('ⷈ', 'ⷎ'), ('ⷐ', 'ⷖ'), ('ⷘ', 'ⷞ'), + ('\u{2de0}', '\u{2dff}'), ('々', '〇'), ('〡', '\u{302f}'), + ('〱', '〵'), ('〸', '〼'), ('ぁ', 'ゖ'), ('\u{3099}', 'ゟ'), + ('ァ', 'ヺ'), ('ー', 'ヿ'), ('ㄅ', 'ㄯ'), ('ㄱ', 'ㆎ'), + ('ㆠ', 'ㆺ'), ('ㇰ', 'ㇿ'), ('㐀', '䶵'), ('一', '鿯'), + ('ꀀ', 'ꒌ'), ('ꓐ', 'ꓽ'), ('ꔀ', 'ꘌ'), ('ꘐ', 'ꘫ'), + ('Ꙁ', '\u{a66f}'), ('\u{a674}', '\u{a67d}'), ('ꙿ', '\u{a6f1}'), + ('ꜗ', 'ꜟ'), ('Ꜣ', 'ꞈ'), ('Ꞌ', 'ꞹ'), ('ꟷ', 'ꠧ'), + ('ꡀ', 'ꡳ'), ('ꢀ', '\u{a8c5}'), ('꣐', '꣙'), ('\u{a8e0}', 'ꣷ'), + ('ꣻ', 'ꣻ'), ('ꣽ', '\u{a92d}'), ('ꤰ', '꥓'), ('ꥠ', 'ꥼ'), + ('\u{a980}', '꧀'), ('ꧏ', '꧙'), ('ꧠ', 'ꧾ'), ('ꨀ', '\u{aa36}'), ('ꩀ', 'ꩍ'), ('꩐', '꩙'), ('ꩠ', 'ꩶ'), ('ꩺ', 'ꫂ'), - ('ꫛ', 'ꫝ'), ('ꫠ', 'ꫯ'), ('ꫲ', '꫶'), ('ꬁ', 'ꬆ'), + ('ꫛ', 'ꫝ'), ('ꫠ', 'ꫯ'), ('ꫲ', '\u{aaf6}'), ('ꬁ', 'ꬆ'), ('ꬉ', 'ꬎ'), ('ꬑ', 'ꬖ'), ('ꬠ', 'ꬦ'), ('ꬨ', 'ꬮ'), - ('ꬰ', 'ꭚ'), ('ꭜ', 'ꭥ'), ('ꭰ', 'ꯪ'), ('꯬', '꯭'), + ('ꬰ', 'ꭚ'), ('ꭜ', 'ꭥ'), ('ꭰ', 'ꯪ'), ('꯬', '\u{abed}'), ('꯰', '꯹'), ('가', '힣'), ('ힰ', 'ퟆ'), ('ퟋ', 'ퟻ'), ('豈', '舘'), ('並', '龎'), ('ff', 'st'), ('ﬓ', 'ﬗ'), ('יִ', 'ﬨ'), ('שׁ', 'זּ'), ('טּ', 'לּ'), ('מּ', 'מּ'), ('נּ', 'סּ'), ('ףּ', 'פּ'), ('צּ', 'ﮱ'), ('ﯓ', 'ﴽ'), - ('ﵐ', 'ﶏ'), ('ﶒ', 'ﷇ'), ('ﷰ', 'ﷻ'), ('︀', '️'), - ('︠', '︯'), ('︳', '︴'), ('﹍', '﹏'), ('ﹰ', 'ﹴ'), + ('ﵐ', 'ﶏ'), ('ﶒ', 'ﷇ'), ('ﷰ', 'ﷻ'), ('\u{fe00}', '\u{fe0f}'), + ('\u{fe20}', '\u{fe2f}'), ('︳', '︴'), ('﹍', '﹏'), ('ﹰ', 'ﹴ'), ('ﹶ', 'ﻼ'), ('0', '9'), ('A', 'Z'), ('_', '_'), ('a', 'z'), ('ヲ', 'ᄒ'), ('ᅡ', 'ᅦ'), ('ᅧ', 'ᅬ'), ('ᅭ', 'ᅲ'), ('ᅳ', 'ᅵ'), ('𐀀', '𐀋'), ('𐀍', '𐀦'), ('𐀨', '𐀺'), ('𐀼', '𐀽'), ('𐀿', '𐁍'), ('𐁐', '𐁝'), - ('𐂀', '𐃺'), ('𐅀', '𐅴'), ('𐇽', '𐇽'), ('𐊀', '𐊜'), - ('𐊠', '𐋐'), ('𐋠', '𐋠'), ('𐌀', '𐌟'), ('𐌭', '𐍊'), - ('𐍐', '𐍺'), ('𐎀', '𐎝'), ('𐎠', '𐏃'), ('𐏈', '𐏏'), - ('𐏑', '𐏕'), ('𐐀', '𐒝'), ('𐒠', '𐒩'), ('𐒰', '𐓓'), - ('𐓘', '𐓻'), ('𐔀', '𐔧'), ('𐔰', '𐕣'), ('𐘀', '𐜶'), - ('𐝀', '𐝕'), ('𐝠', '𐝧'), ('𐠀', '𐠅'), ('𐠈', '𐠈'), - ('𐠊', '𐠵'), ('𐠷', '𐠸'), ('𐠼', '𐠼'), ('𐠿', '𐡕'), - ('𐡠', '𐡶'), ('𐢀', '𐢞'), ('𐣠', '𐣲'), ('𐣴', '𐣵'), - ('𐤀', '𐤕'), ('𐤠', '𐤹'), ('𐦀', '𐦷'), ('𐦾', '𐦿'), - ('𐨀', '𐨃'), ('𐨅', '𐨆'), ('𐨌', '𐨓'), ('𐨕', '𐨗'), - ('𐨙', '\u{10a35}'), ('𐨸', '𐨺'), ('𐨿', '𐨿'), ('𐩠', '𐩼'), - ('𐪀', '𐪜'), ('𐫀', '𐫇'), ('𐫉', '𐫦'), ('𐬀', '𐬵'), - ('𐭀', '𐭕'), ('𐭠', '𐭲'), ('𐮀', '𐮑'), ('𐰀', '𐱈'), - ('𐲀', '𐲲'), ('𐳀', '𐳲'), ('\u{10d00}', '\u{10d27}'), - ('\u{10d30}', '\u{10d39}'), ('\u{10f00}', '\u{10f1c}'), - ('\u{10f27}', '\u{10f27}'), ('\u{10f30}', '\u{10f50}'), ('𑀀', '𑁆'), - ('𑁦', '𑁯'), ('𑁿', '𑂺'), ('𑃐', '𑃨'), ('𑃰', '𑃹'), - ('𑄀', '𑄴'), ('𑄶', '𑄿'), ('\u{11144}', '\u{11146}'), - ('𑅐', '𑅳'), ('𑅶', '𑅶'), ('𑆀', '𑇄'), ('𑇉', '𑇌'), - ('𑇐', '𑇚'), ('𑇜', '𑇜'), ('𑈀', '𑈑'), ('𑈓', '𑈷'), - ('𑈾', '𑈾'), ('𑊀', '𑊆'), ('𑊈', '𑊈'), ('𑊊', '𑊍'), - ('𑊏', '𑊝'), ('𑊟', '𑊨'), ('𑊰', '𑋪'), ('𑋰', '𑋹'), - ('𑌀', '𑌃'), ('𑌅', '𑌌'), ('𑌏', '𑌐'), ('𑌓', '𑌨'), - ('𑌪', '𑌰'), ('𑌲', '𑌳'), ('𑌵', '𑌹'), ('\u{1133b}', '𑍄'), - ('𑍇', '𑍈'), ('𑍋', '𑍍'), ('𑍐', '𑍐'), ('𑍗', '𑍗'), - ('𑍝', '𑍣'), ('𑍦', '𑍬'), ('𑍰', '𑍴'), ('𑐀', '𑑊'), - ('𑑐', '𑑙'), ('\u{1145e}', '\u{1145e}'), ('𑒀', '𑓅'), - ('𑓇', '𑓇'), ('𑓐', '𑓙'), ('𑖀', '𑖵'), ('𑖸', '𑗀'), - ('𑗘', '𑗝'), ('𑘀', '𑙀'), ('𑙄', '𑙄'), ('𑙐', '𑙙'), - ('𑚀', '𑚷'), ('𑛀', '𑛉'), ('𑜀', '\u{1171a}'), ('𑜝', '𑜫'), - ('𑜰', '𑜹'), ('\u{11800}', '\u{1183a}'), ('𑢠', '𑣩'), - ('𑣿', '𑣿'), ('𑨀', '𑨾'), ('𑩇', '𑩇'), ('𑩐', '𑪃'), - ('𑪆', '𑪙'), ('\u{11a9d}', '\u{11a9d}'), ('𑫀', '𑫸'), - ('𑰀', '𑰈'), ('𑰊', '𑰶'), ('𑰸', '𑱀'), ('𑱐', '𑱙'), - ('𑱲', '𑲏'), ('𑲒', '𑲧'), ('𑲩', '𑲶'), ('𑴀', '𑴆'), - ('𑴈', '𑴉'), ('𑴋', '𑴶'), ('𑴺', '𑴺'), ('𑴼', '𑴽'), - ('𑴿', '𑵇'), ('𑵐', '𑵙'), ('\u{11d60}', '\u{11d65}'), - ('\u{11d67}', '\u{11d68}'), ('\u{11d6a}', '\u{11d8e}'), - ('\u{11d90}', '\u{11d91}'), ('\u{11d93}', '\u{11d98}'), - ('\u{11da0}', '\u{11da9}'), ('\u{11ee0}', '\u{11ef6}'), ('𒀀', '𒎙'), - ('𒐀', '𒑮'), ('𒒀', '𒕃'), ('𓀀', '𓐮'), ('𔐀', '𔙆'), - ('𖠀', '𖨸'), ('𖩀', '𖩞'), ('𖩠', '𖩩'), ('𖫐', '𖫭'), - ('𖫰', '𖫴'), ('𖬀', '𖬶'), ('𖭀', '𖭃'), ('𖭐', '𖭙'), - ('𖭣', '𖭷'), ('𖭽', '𖮏'), ('\u{16e40}', '\u{16e7f}'), - ('𖼀', '𖽄'), ('𖽐', '𖽾'), ('𖾏', '𖾟'), ('𖿠', '𖿡'), - ('𗀀', '\u{187f1}'), ('𘠀', '𘫲'), ('𛀀', '𛄞'), ('𛅰', '𛋻'), - ('𛰀', '𛱪'), ('𛱰', '𛱼'), ('𛲀', '𛲈'), ('𛲐', '𛲙'), - ('𛲝', '𛲞'), ('𝅥', '𝅩'), ('𝅭', '𝅲'), ('𝅻', '𝆂'), - ('𝆅', '𝆋'), ('𝆪', '𝆭'), ('𝉂', '𝉄'), ('𝐀', '𝑔'), + ('𐂀', '𐃺'), ('𐅀', '𐅴'), ('\u{101fd}', '\u{101fd}'), + ('𐊀', '𐊜'), ('𐊠', '𐋐'), ('\u{102e0}', '\u{102e0}'), + ('𐌀', '𐌟'), ('𐌭', '𐍊'), ('𐍐', '\u{1037a}'), ('𐎀', '𐎝'), + ('𐎠', '𐏃'), ('𐏈', '𐏏'), ('𐏑', '𐏕'), ('𐐀', '𐒝'), + ('𐒠', '𐒩'), ('𐒰', '𐓓'), ('𐓘', '𐓻'), ('𐔀', '𐔧'), + ('𐔰', '𐕣'), ('𐘀', '𐜶'), ('𐝀', '𐝕'), ('𐝠', '𐝧'), + ('𐠀', '𐠅'), ('𐠈', '𐠈'), ('𐠊', '𐠵'), ('𐠷', '𐠸'), + ('𐠼', '𐠼'), ('𐠿', '𐡕'), ('𐡠', '𐡶'), ('𐢀', '𐢞'), + ('𐣠', '𐣲'), ('𐣴', '𐣵'), ('𐤀', '𐤕'), ('𐤠', '𐤹'), + ('𐦀', '𐦷'), ('𐦾', '𐦿'), ('𐨀', '\u{10a03}'), + ('\u{10a05}', '\u{10a06}'), ('\u{10a0c}', '𐨓'), ('𐨕', '𐨗'), + ('𐨙', '𐨵'), ('\u{10a38}', '\u{10a3a}'), ('\u{10a3f}', '\u{10a3f}'), + ('𐩠', '𐩼'), ('𐪀', '𐪜'), ('𐫀', '𐫇'), ('𐫉', '\u{10ae6}'), + ('𐬀', '𐬵'), ('𐭀', '𐭕'), ('𐭠', '𐭲'), ('𐮀', '𐮑'), + ('𐰀', '𐱈'), ('𐲀', '𐲲'), ('𐳀', '𐳲'), ('𐴀', '\u{10d27}'), + ('𐴰', '𐴹'), ('𐼀', '𐼜'), ('𐼧', '𐼧'), ('𐼰', '\u{10f50}'), + ('𑀀', '\u{11046}'), ('𑁦', '𑁯'), ('\u{1107f}', '\u{110ba}'), + ('𑃐', '𑃨'), ('𑃰', '𑃹'), ('\u{11100}', '\u{11134}'), + ('𑄶', '𑄿'), ('𑅄', '𑅆'), ('𑅐', '\u{11173}'), ('𑅶', '𑅶'), + ('\u{11180}', '𑇄'), ('\u{111c9}', '\u{111cc}'), ('𑇐', '𑇚'), + ('𑇜', '𑇜'), ('𑈀', '𑈑'), ('𑈓', '\u{11237}'), + ('\u{1123e}', '\u{1123e}'), ('𑊀', '𑊆'), ('𑊈', '𑊈'), + ('𑊊', '𑊍'), ('𑊏', '𑊝'), ('𑊟', '𑊨'), ('𑊰', '\u{112ea}'), + ('𑋰', '𑋹'), ('\u{11300}', '𑌃'), ('𑌅', '𑌌'), ('𑌏', '𑌐'), + ('𑌓', '𑌨'), ('𑌪', '𑌰'), ('𑌲', '𑌳'), ('𑌵', '𑌹'), + ('\u{1133b}', '𑍄'), ('𑍇', '𑍈'), ('𑍋', '𑍍'), ('𑍐', '𑍐'), + ('\u{11357}', '\u{11357}'), ('𑍝', '𑍣'), ('\u{11366}', '\u{1136c}'), + ('\u{11370}', '\u{11374}'), ('𑐀', '𑑊'), ('𑑐', '𑑙'), + ('\u{1145e}', '\u{1145e}'), ('𑒀', '𑓅'), ('𑓇', '𑓇'), + ('𑓐', '𑓙'), ('𑖀', '\u{115b5}'), ('𑖸', '\u{115c0}'), + ('𑗘', '\u{115dd}'), ('𑘀', '\u{11640}'), ('𑙄', '𑙄'), + ('𑙐', '𑙙'), ('𑚀', '\u{116b7}'), ('𑛀', '𑛉'), ('𑜀', '𑜚'), + ('\u{1171d}', '\u{1172b}'), ('𑜰', '𑜹'), ('𑠀', '\u{1183a}'), + ('𑢠', '𑣩'), ('𑣿', '𑣿'), ('𑨀', '\u{11a3e}'), + ('\u{11a47}', '\u{11a47}'), ('𑩐', '𑪃'), ('𑪆', '\u{11a99}'), + ('𑪝', '𑪝'), ('𑫀', '𑫸'), ('𑰀', '𑰈'), ('𑰊', '\u{11c36}'), + ('\u{11c38}', '𑱀'), ('𑱐', '𑱙'), ('𑱲', '𑲏'), + ('\u{11c92}', '\u{11ca7}'), ('𑲩', '\u{11cb6}'), ('𑴀', '𑴆'), + ('𑴈', '𑴉'), ('𑴋', '\u{11d36}'), ('\u{11d3a}', '\u{11d3a}'), + ('\u{11d3c}', '\u{11d3d}'), ('\u{11d3f}', '\u{11d47}'), ('𑵐', '𑵙'), + ('𑵠', '𑵥'), ('𑵧', '𑵨'), ('𑵪', '𑶎'), + ('\u{11d90}', '\u{11d91}'), ('𑶓', '𑶘'), ('𑶠', '𑶩'), + ('𑻠', '𑻶'), ('𒀀', '𒎙'), ('𒐀', '𒑮'), ('𒒀', '𒕃'), + ('𓀀', '𓐮'), ('𔐀', '𔙆'), ('𖠀', '𖨸'), ('𖩀', '𖩞'), + ('𖩠', '𖩩'), ('𖫐', '𖫭'), ('\u{16af0}', '\u{16af4}'), + ('𖬀', '\u{16b36}'), ('𖭀', '𖭃'), ('𖭐', '𖭙'), ('𖭣', '𖭷'), + ('𖭽', '𖮏'), ('𖹀', '𖹿'), ('𖼀', '𖽄'), ('𖽐', '𖽾'), + ('\u{16f8f}', '𖾟'), ('𖿠', '𖿡'), ('𗀀', '𘟱'), ('𘠀', '𘫲'), + ('𛀀', '𛄞'), ('𛅰', '𛋻'), ('𛰀', '𛱪'), ('𛱰', '𛱼'), + ('𛲀', '𛲈'), ('𛲐', '𛲙'), ('\u{1bc9d}', '\u{1bc9e}'), + ('\u{1d165}', '\u{1d169}'), ('𝅭', '\u{1d172}'), + ('\u{1d17b}', '\u{1d182}'), ('\u{1d185}', '\u{1d18b}'), + ('\u{1d1aa}', '\u{1d1ad}'), ('\u{1d242}', '\u{1d244}'), ('𝐀', '𝑔'), ('𝑖', '𝒜'), ('𝒞', '𝒟'), ('𝒢', '𝒢'), ('𝒥', '𝒦'), ('𝒩', '𝒬'), ('𝒮', '𝒹'), ('𝒻', '𝒻'), ('𝒽', '𝓃'), ('𝓅', '𝔅'), ('𝔇', '𝔊'), ('𝔍', '𝔔'), ('𝔖', '𝔜'), @@ -1536,165 +1802,13 @@ ('𝕊', '𝕐'), ('𝕒', '𝚥'), ('𝚨', '𝛀'), ('𝛂', '𝛚'), ('𝛜', '𝛺'), ('𝛼', '𝜔'), ('𝜖', '𝜴'), ('𝜶', '𝝎'), ('𝝐', '𝝮'), ('𝝰', '𝞈'), ('𝞊', '𝞨'), ('𝞪', '𝟂'), - ('𝟄', '𝟋'), ('𝟎', '𝟿'), ('𝨀', '𝨶'), ('𝨻', '𝩬'), - ('𝩵', '𝩵'), ('𝪄', '𝪄'), ('𝪛', '𝪟'), ('𝪡', '𝪯'), - ('𞀀', '𞀆'), ('𞀈', '𞀘'), ('𞀛', '𞀡'), ('𞀣', '𞀤'), - ('𞀦', '𞀪'), ('𞠀', '𞣄'), ('𞣐', '𞣖'), ('𞤀', '𞥊'), - ('𞥐', '𞥙'), ('𞸀', '𞸃'), ('𞸅', '𞸟'), ('𞸡', '𞸢'), - ('𞸤', '𞸤'), ('𞸧', '𞸧'), ('𞸩', '𞸲'), ('𞸴', '𞸷'), - ('𞸹', '𞸹'), ('𞸻', '𞸻'), ('𞹂', '𞹂'), ('𞹇', '𞹇'), - ('𞹉', '𞹉'), ('𞹋', '𞹋'), ('𞹍', '𞹏'), ('𞹑', '𞹒'), - ('𞹔', '𞹔'), ('𞹗', '𞹗'), ('𞹙', '𞹙'), ('𞹛', '𞹛'), - ('𞹝', '𞹝'), ('𞹟', '𞹟'), ('𞹡', '𞹢'), ('𞹤', '𞹤'), - ('𞹧', '𞹪'), ('𞹬', '𞹲'), ('𞹴', '𞹷'), ('𞹹', '𞹼'), - ('𞹾', '𞹾'), ('𞺀', '𞺉'), ('𞺋', '𞺛'), ('𞺡', '𞺣'), - ('𞺥', '𞺩'), ('𞺫', '𞺻'), ('𠀀', '𪛖'), ('𪜀', '𫜴'), - ('𫝀', '𫠝'), ('𫠠', '𬺡'), ('𬺰', '𮯠'), ('丽', '𪘀'), - ('󠄀', '󠇯'), -]; - -pub const ID_START: &'static [(char, char)] = &[ - ('A', 'Z'), ('a', 'z'), ('ª', 'ª'), ('µ', 'µ'), ('º', 'º'), - ('À', 'Ö'), ('Ø', 'ö'), ('ø', 'ˁ'), ('ˆ', 'ˑ'), ('ˠ', 'ˤ'), - ('ˬ', 'ˬ'), ('ˮ', 'ˮ'), ('Ͱ', 'ʹ'), ('Ͷ', 'ͷ'), ('ͺ', 'ͽ'), - ('Ϳ', 'Ϳ'), ('Ά', 'Ά'), ('Έ', 'Ί'), ('Ό', 'Ό'), ('Ύ', 'Ρ'), - ('Σ', 'ϵ'), ('Ϸ', 'ҁ'), ('Ҋ', 'ԯ'), ('Ա', 'Ֆ'), ('ՙ', 'ՙ'), - ('\u{560}', '\u{588}'), ('א', 'ת'), ('\u{5ef}', 'ײ'), ('ؠ', 'ي'), - ('ٮ', 'ٯ'), ('ٱ', 'ۓ'), ('ە', 'ە'), ('ۥ', 'ۦ'), ('ۮ', 'ۯ'), - ('ۺ', 'ۼ'), ('ۿ', 'ۿ'), ('ܐ', 'ܐ'), ('ܒ', 'ܯ'), ('ݍ', 'ޥ'), - ('ޱ', 'ޱ'), ('ߊ', 'ߪ'), ('ߴ', 'ߵ'), ('ߺ', 'ߺ'), ('ࠀ', 'ࠕ'), - ('ࠚ', 'ࠚ'), ('ࠤ', 'ࠤ'), ('ࠨ', 'ࠨ'), ('ࡀ', 'ࡘ'), - ('ࡠ', 'ࡪ'), ('ࢠ', 'ࢴ'), ('ࢶ', 'ࢽ'), ('ऄ', 'ह'), - ('ऽ', 'ऽ'), ('ॐ', 'ॐ'), ('क़', 'ॡ'), ('ॱ', 'ঀ'), - ('অ', 'ঌ'), ('এ', 'ঐ'), ('ও', 'ন'), ('প', 'র'), - ('ল', 'ল'), ('শ', 'হ'), ('ঽ', 'ঽ'), ('ৎ', 'ৎ'), - ('ড়', 'ঢ়'), ('য়', 'ৡ'), ('ৰ', 'ৱ'), ('ৼ', 'ৼ'), - ('ਅ', 'ਊ'), ('ਏ', 'ਐ'), ('ਓ', 'ਨ'), ('ਪ', 'ਰ'), - ('ਲ', 'ਲ਼'), ('ਵ', 'ਸ਼'), ('ਸ', 'ਹ'), ('ਖ਼', 'ੜ'), - ('ਫ਼', 'ਫ਼'), ('ੲ', 'ੴ'), ('અ', 'ઍ'), ('એ', 'ઑ'), - ('ઓ', 'ન'), ('પ', 'ર'), ('લ', 'ળ'), ('વ', 'હ'), - ('ઽ', 'ઽ'), ('ૐ', 'ૐ'), ('ૠ', 'ૡ'), ('ૹ', 'ૹ'), - ('ଅ', 'ଌ'), ('ଏ', 'ଐ'), ('ଓ', 'ନ'), ('ପ', 'ର'), - ('ଲ', 'ଳ'), ('ଵ', 'ହ'), ('ଽ', 'ଽ'), ('ଡ଼', 'ଢ଼'), - ('ୟ', 'ୡ'), ('ୱ', 'ୱ'), ('ஃ', 'ஃ'), ('அ', 'ஊ'), - ('எ', 'ஐ'), ('ஒ', 'க'), ('ங', 'ச'), ('ஜ', 'ஜ'), - ('ஞ', 'ட'), ('ண', 'த'), ('ந', 'ப'), ('ம', 'ஹ'), - ('ௐ', 'ௐ'), ('అ', 'ఌ'), ('ఎ', 'ఐ'), ('ఒ', 'న'), - ('ప', 'హ'), ('ఽ', 'ఽ'), ('ౘ', 'ౚ'), ('ౠ', 'ౡ'), - ('ಀ', 'ಀ'), ('ಅ', 'ಌ'), ('ಎ', 'ಐ'), ('ಒ', 'ನ'), - ('ಪ', 'ಳ'), ('ವ', 'ಹ'), ('ಽ', 'ಽ'), ('ೞ', 'ೞ'), - ('ೠ', 'ೡ'), ('ೱ', 'ೲ'), ('അ', 'ഌ'), ('എ', 'ഐ'), - ('ഒ', 'ഺ'), ('ഽ', 'ഽ'), ('ൎ', 'ൎ'), ('ൔ', 'ൖ'), - ('ൟ', 'ൡ'), ('ൺ', 'ൿ'), ('අ', 'ඖ'), ('ක', 'න'), - ('ඳ', 'ර'), ('ල', 'ල'), ('ව', 'ෆ'), ('ก', 'ะ'), - ('า', 'ำ'), ('เ', 'ๆ'), ('ກ', 'ຂ'), ('ຄ', 'ຄ'), - ('ງ', 'ຈ'), ('ຊ', 'ຊ'), ('ຍ', 'ຍ'), ('ດ', 'ທ'), - ('ນ', 'ຟ'), ('ມ', 'ຣ'), ('ລ', 'ລ'), ('ວ', 'ວ'), - ('ສ', 'ຫ'), ('ອ', 'ະ'), ('າ', 'ຳ'), ('ຽ', 'ຽ'), - ('ເ', 'ໄ'), ('ໆ', 'ໆ'), ('ໜ', 'ໟ'), ('ༀ', 'ༀ'), - ('ཀ', 'ཇ'), ('ཉ', 'ཬ'), ('ྈ', 'ྌ'), ('က', 'ဪ'), - ('ဿ', 'ဿ'), ('ၐ', 'ၕ'), ('ၚ', 'ၝ'), ('ၡ', 'ၡ'), - ('ၥ', 'ၦ'), ('ၮ', 'ၰ'), ('ၵ', 'ႁ'), ('ႎ', 'ႎ'), - ('Ⴀ', 'Ⴥ'), ('Ⴧ', 'Ⴧ'), ('Ⴭ', 'Ⴭ'), ('ა', 'ჺ'), - ('ჼ', 'ቈ'), ('ቊ', 'ቍ'), ('ቐ', 'ቖ'), ('ቘ', 'ቘ'), - ('ቚ', 'ቝ'), ('በ', 'ኈ'), ('ኊ', 'ኍ'), ('ነ', 'ኰ'), - ('ኲ', 'ኵ'), ('ኸ', 'ኾ'), ('ዀ', 'ዀ'), ('ዂ', 'ዅ'), - ('ወ', 'ዖ'), ('ዘ', 'ጐ'), ('ጒ', 'ጕ'), ('ጘ', 'ፚ'), - ('ᎀ', 'ᎏ'), ('Ꭰ', 'Ᏽ'), ('ᏸ', 'ᏽ'), ('ᐁ', 'ᙬ'), - ('ᙯ', 'ᙿ'), ('ᚁ', 'ᚚ'), ('ᚠ', 'ᛪ'), ('ᛮ', 'ᛸ'), - ('ᜀ', 'ᜌ'), ('ᜎ', 'ᜑ'), ('ᜠ', 'ᜱ'), ('ᝀ', 'ᝑ'), - ('ᝠ', 'ᝬ'), ('ᝮ', 'ᝰ'), ('ក', 'ឳ'), ('ៗ', 'ៗ'), - ('ៜ', 'ៜ'), ('ᠠ', '\u{1878}'), ('ᢀ', 'ᢨ'), ('ᢪ', 'ᢪ'), - ('ᢰ', 'ᣵ'), ('ᤀ', 'ᤞ'), ('ᥐ', 'ᥭ'), ('ᥰ', 'ᥴ'), - ('ᦀ', 'ᦫ'), ('ᦰ', 'ᧉ'), ('ᨀ', 'ᨖ'), ('ᨠ', 'ᩔ'), - ('ᪧ', 'ᪧ'), ('ᬅ', 'ᬳ'), ('ᭅ', 'ᭋ'), ('ᮃ', 'ᮠ'), - ('ᮮ', 'ᮯ'), ('ᮺ', 'ᯥ'), ('ᰀ', 'ᰣ'), ('ᱍ', 'ᱏ'), - ('ᱚ', 'ᱽ'), ('ᲀ', 'ᲈ'), ('\u{1c90}', '\u{1cba}'), - ('\u{1cbd}', '\u{1cbf}'), ('ᳩ', 'ᳬ'), ('ᳮ', 'ᳱ'), ('ᳵ', 'ᳶ'), - ('ᴀ', 'ᶿ'), ('Ḁ', 'ἕ'), ('Ἐ', 'Ἕ'), ('ἠ', 'ὅ'), - ('Ὀ', 'Ὅ'), ('ὐ', 'ὗ'), ('Ὑ', 'Ὑ'), ('Ὓ', 'Ὓ'), - ('Ὕ', 'Ὕ'), ('Ὗ', 'ώ'), ('ᾀ', 'ᾴ'), ('ᾶ', 'ᾼ'), - ('ι', 'ι'), ('ῂ', 'ῄ'), ('ῆ', 'ῌ'), ('ῐ', 'ΐ'), - ('ῖ', 'Ί'), ('ῠ', 'Ῥ'), ('ῲ', 'ῴ'), ('ῶ', 'ῼ'), - ('ⁱ', 'ⁱ'), ('ⁿ', 'ⁿ'), ('ₐ', 'ₜ'), ('ℂ', 'ℂ'), - ('ℇ', 'ℇ'), ('ℊ', 'ℓ'), ('ℕ', 'ℕ'), ('℘', 'ℝ'), - ('ℤ', 'ℤ'), ('Ω', 'Ω'), ('ℨ', 'ℨ'), ('K', 'ℹ'), - ('ℼ', 'ℿ'), ('ⅅ', 'ⅉ'), ('ⅎ', 'ⅎ'), ('Ⅰ', 'ↈ'), - ('Ⰰ', 'Ⱞ'), ('ⰰ', 'ⱞ'), ('Ⱡ', 'ⳤ'), ('Ⳬ', 'ⳮ'), - ('Ⳳ', 'ⳳ'), ('ⴀ', 'ⴥ'), ('ⴧ', 'ⴧ'), ('ⴭ', 'ⴭ'), - ('ⴰ', 'ⵧ'), ('ⵯ', 'ⵯ'), ('ⶀ', 'ⶖ'), ('ⶠ', 'ⶦ'), - ('ⶨ', 'ⶮ'), ('ⶰ', 'ⶶ'), ('ⶸ', 'ⶾ'), ('ⷀ', 'ⷆ'), - ('ⷈ', 'ⷎ'), ('ⷐ', 'ⷖ'), ('ⷘ', 'ⷞ'), ('々', '〇'), - ('〡', '〩'), ('〱', '〵'), ('〸', '〼'), ('ぁ', 'ゖ'), - ('゛', 'ゟ'), ('ァ', 'ヺ'), ('ー', 'ヿ'), ('ㄅ', '\u{312f}'), - ('ㄱ', 'ㆎ'), ('ㆠ', 'ㆺ'), ('ㇰ', 'ㇿ'), ('㐀', '䶵'), - ('一', '\u{9fef}'), ('ꀀ', 'ꒌ'), ('ꓐ', 'ꓽ'), ('ꔀ', 'ꘌ'), - ('ꘐ', 'ꘟ'), ('ꘪ', 'ꘫ'), ('Ꙁ', 'ꙮ'), ('ꙿ', 'ꚝ'), - ('ꚠ', 'ꛯ'), ('ꜗ', 'ꜟ'), ('Ꜣ', 'ꞈ'), ('Ꞌ', '\u{a7b9}'), - ('ꟷ', 'ꠁ'), ('ꠃ', 'ꠅ'), ('ꠇ', 'ꠊ'), ('ꠌ', 'ꠢ'), - ('ꡀ', 'ꡳ'), ('ꢂ', 'ꢳ'), ('ꣲ', 'ꣷ'), ('ꣻ', 'ꣻ'), - ('ꣽ', '\u{a8fe}'), ('ꤊ', 'ꤥ'), ('ꤰ', 'ꥆ'), ('ꥠ', 'ꥼ'), - ('ꦄ', 'ꦲ'), ('ꧏ', 'ꧏ'), ('ꧠ', 'ꧤ'), ('ꧦ', 'ꧯ'), - ('ꧺ', 'ꧾ'), ('ꨀ', 'ꨨ'), ('ꩀ', 'ꩂ'), ('ꩄ', 'ꩋ'), - ('ꩠ', 'ꩶ'), ('ꩺ', 'ꩺ'), ('ꩾ', 'ꪯ'), ('ꪱ', 'ꪱ'), - ('ꪵ', 'ꪶ'), ('ꪹ', 'ꪽ'), ('ꫀ', 'ꫀ'), ('ꫂ', 'ꫂ'), - ('ꫛ', 'ꫝ'), ('ꫠ', 'ꫪ'), ('ꫲ', 'ꫴ'), ('ꬁ', 'ꬆ'), - ('ꬉ', 'ꬎ'), ('ꬑ', 'ꬖ'), ('ꬠ', 'ꬦ'), ('ꬨ', 'ꬮ'), - ('ꬰ', 'ꭚ'), ('ꭜ', 'ꭥ'), ('ꭰ', 'ꯢ'), ('가', '힣'), - ('ힰ', 'ퟆ'), ('ퟋ', 'ퟻ'), ('豈', '舘'), ('並', '龎'), - ('ff', 'st'), ('ﬓ', 'ﬗ'), ('יִ', 'יִ'), ('ײַ', 'ﬨ'), - ('שׁ', 'זּ'), ('טּ', 'לּ'), ('מּ', 'מּ'), ('נּ', 'סּ'), - ('ףּ', 'פּ'), ('צּ', 'ﮱ'), ('ﯓ', 'ﴽ'), ('ﵐ', 'ﶏ'), - ('ﶒ', 'ﷇ'), ('ﷰ', 'ﷻ'), ('ﹰ', 'ﹴ'), ('ﹶ', 'ﻼ'), - ('A', 'Z'), ('a', 'z'), ('ヲ', 'ᄒ'), ('ᅡ', 'ᅦ'), - ('ᅧ', 'ᅬ'), ('ᅭ', 'ᅲ'), ('ᅳ', 'ᅵ'), ('𐀀', '𐀋'), - ('𐀍', '𐀦'), ('𐀨', '𐀺'), ('𐀼', '𐀽'), ('𐀿', '𐁍'), - ('𐁐', '𐁝'), ('𐂀', '𐃺'), ('𐅀', '𐅴'), ('𐊀', '𐊜'), - ('𐊠', '𐋐'), ('𐌀', '𐌟'), ('𐌭', '𐍊'), ('𐍐', '𐍵'), - ('𐎀', '𐎝'), ('𐎠', '𐏃'), ('𐏈', '𐏏'), ('𐏑', '𐏕'), - ('𐐀', '𐒝'), ('𐒰', '𐓓'), ('𐓘', '𐓻'), ('𐔀', '𐔧'), - ('𐔰', '𐕣'), ('𐘀', '𐜶'), ('𐝀', '𐝕'), ('𐝠', '𐝧'), - ('𐠀', '𐠅'), ('𐠈', '𐠈'), ('𐠊', '𐠵'), ('𐠷', '𐠸'), - ('𐠼', '𐠼'), ('𐠿', '𐡕'), ('𐡠', '𐡶'), ('𐢀', '𐢞'), - ('𐣠', '𐣲'), ('𐣴', '𐣵'), ('𐤀', '𐤕'), ('𐤠', '𐤹'), - ('𐦀', '𐦷'), ('𐦾', '𐦿'), ('𐨀', '𐨀'), ('𐨐', '𐨓'), - ('𐨕', '𐨗'), ('𐨙', '\u{10a35}'), ('𐩠', '𐩼'), ('𐪀', '𐪜'), - ('𐫀', '𐫇'), ('𐫉', '𐫤'), ('𐬀', '𐬵'), ('𐭀', '𐭕'), - ('𐭠', '𐭲'), ('𐮀', '𐮑'), ('𐰀', '𐱈'), ('𐲀', '𐲲'), - ('𐳀', '𐳲'), ('\u{10d00}', '\u{10d23}'), ('\u{10f00}', '\u{10f1c}'), - ('\u{10f27}', '\u{10f27}'), ('\u{10f30}', '\u{10f45}'), ('𑀃', '𑀷'), - ('𑂃', '𑂯'), ('𑃐', '𑃨'), ('𑄃', '𑄦'), - ('\u{11144}', '\u{11144}'), ('𑅐', '𑅲'), ('𑅶', '𑅶'), - ('𑆃', '𑆲'), ('𑇁', '𑇄'), ('𑇚', '𑇚'), ('𑇜', '𑇜'), - ('𑈀', '𑈑'), ('𑈓', '𑈫'), ('𑊀', '𑊆'), ('𑊈', '𑊈'), - ('𑊊', '𑊍'), ('𑊏', '𑊝'), ('𑊟', '𑊨'), ('𑊰', '𑋞'), - ('𑌅', '𑌌'), ('𑌏', '𑌐'), ('𑌓', '𑌨'), ('𑌪', '𑌰'), - ('𑌲', '𑌳'), ('𑌵', '𑌹'), ('𑌽', '𑌽'), ('𑍐', '𑍐'), - ('𑍝', '𑍡'), ('𑐀', '𑐴'), ('𑑇', '𑑊'), ('𑒀', '𑒯'), - ('𑓄', '𑓅'), ('𑓇', '𑓇'), ('𑖀', '𑖮'), ('𑗘', '𑗛'), - ('𑘀', '𑘯'), ('𑙄', '𑙄'), ('𑚀', '𑚪'), ('𑜀', '\u{1171a}'), - ('\u{11800}', '\u{1182b}'), ('𑢠', '𑣟'), ('𑣿', '𑣿'), - ('𑨀', '𑨀'), ('𑨋', '𑨲'), ('𑨺', '𑨺'), ('𑩐', '𑩐'), - ('𑩜', '𑪃'), ('𑪆', '𑪉'), ('\u{11a9d}', '\u{11a9d}'), - ('𑫀', '𑫸'), ('𑰀', '𑰈'), ('𑰊', '𑰮'), ('𑱀', '𑱀'), - ('𑱲', '𑲏'), ('𑴀', '𑴆'), ('𑴈', '𑴉'), ('𑴋', '𑴰'), - ('𑵆', '𑵆'), ('\u{11d60}', '\u{11d65}'), ('\u{11d67}', '\u{11d68}'), - ('\u{11d6a}', '\u{11d89}'), ('\u{11d98}', '\u{11d98}'), - ('\u{11ee0}', '\u{11ef2}'), ('𒀀', '𒎙'), ('𒐀', '𒑮'), - ('𒒀', '𒕃'), ('𓀀', '𓐮'), ('𔐀', '𔙆'), ('𖠀', '𖨸'), - ('𖩀', '𖩞'), ('𖫐', '𖫭'), ('𖬀', '𖬯'), ('𖭀', '𖭃'), - ('𖭣', '𖭷'), ('𖭽', '𖮏'), ('\u{16e40}', '\u{16e7f}'), - ('𖼀', '𖽄'), ('𖽐', '𖽐'), ('𖾓', '𖾟'), ('𖿠', '𖿡'), - ('𗀀', '\u{187f1}'), ('𘠀', '𘫲'), ('𛀀', '𛄞'), ('𛅰', '𛋻'), - ('𛰀', '𛱪'), ('𛱰', '𛱼'), ('𛲀', '𛲈'), ('𛲐', '𛲙'), - ('𝐀', '𝑔'), ('𝑖', '𝒜'), ('𝒞', '𝒟'), ('𝒢', '𝒢'), - ('𝒥', '𝒦'), ('𝒩', '𝒬'), ('𝒮', '𝒹'), ('𝒻', '𝒻'), - ('𝒽', '𝓃'), ('𝓅', '𝔅'), ('𝔇', '𝔊'), ('𝔍', '𝔔'), - ('𝔖', '𝔜'), ('𝔞', '𝔹'), ('𝔻', '𝔾'), ('𝕀', '𝕄'), - ('𝕆', '𝕆'), ('𝕊', '𝕐'), ('𝕒', '𝚥'), ('𝚨', '𝛀'), - ('𝛂', '𝛚'), ('𝛜', '𝛺'), ('𝛼', '𝜔'), ('𝜖', '𝜴'), - ('𝜶', '𝝎'), ('𝝐', '𝝮'), ('𝝰', '𝞈'), ('𝞊', '𝞨'), - ('𝞪', '𝟂'), ('𝟄', '𝟋'), ('𞠀', '𞣄'), ('𞤀', '𞥃'), + ('𝟄', '𝟋'), ('𝟎', '𝟿'), ('\u{1da00}', '\u{1da36}'), + ('\u{1da3b}', '\u{1da6c}'), ('\u{1da75}', '\u{1da75}'), + ('\u{1da84}', '\u{1da84}'), ('\u{1da9b}', '\u{1da9f}'), + ('\u{1daa1}', '\u{1daaf}'), ('\u{1e000}', '\u{1e006}'), + ('\u{1e008}', '\u{1e018}'), ('\u{1e01b}', '\u{1e021}'), + ('\u{1e023}', '\u{1e024}'), ('\u{1e026}', '\u{1e02a}'), ('𞠀', '𞣄'), + ('\u{1e8d0}', '\u{1e8d6}'), ('𞤀', '\u{1e94a}'), ('𞥐', '𞥙'), ('𞸀', '𞸃'), ('𞸅', '𞸟'), ('𞸡', '𞸢'), ('𞸤', '𞸤'), ('𞸧', '𞸧'), ('𞸩', '𞸲'), ('𞸴', '𞸷'), ('𞸹', '𞸹'), ('𞸻', '𞸻'), ('𞹂', '𞹂'), ('𞹇', '𞹇'), ('𞹉', '𞹉'), @@ -1705,11 +1819,163 @@ ('𞺀', '𞺉'), ('𞺋', '𞺛'), ('𞺡', '𞺣'), ('𞺥', '𞺩'), ('𞺫', '𞺻'), ('𠀀', '𪛖'), ('𪜀', '𫜴'), ('𫝀', '𫠝'), ('𫠠', '𬺡'), ('𬺰', '𮯠'), ('丽', '𪘀'), + ('\u{e0100}', '\u{e01ef}'), +]; + +pub const ID_START: &'static [(char, char)] = &[ + ('A', 'Z'), ('a', 'z'), ('ª', 'ª'), ('µ', 'µ'), ('º', 'º'), + ('À', 'Ö'), ('Ø', 'ö'), ('ø', 'ˁ'), ('ˆ', 'ˑ'), ('ˠ', 'ˤ'), + ('ˬ', 'ˬ'), ('ˮ', 'ˮ'), ('Ͱ', 'ʹ'), ('Ͷ', 'ͷ'), ('ͺ', 'ͽ'), + ('Ϳ', 'Ϳ'), ('Ά', 'Ά'), ('Έ', 'Ί'), ('Ό', 'Ό'), ('Ύ', 'Ρ'), + ('Σ', 'ϵ'), ('Ϸ', 'ҁ'), ('Ҋ', 'ԯ'), ('Ա', 'Ֆ'), ('ՙ', 'ՙ'), + ('ՠ', 'ֈ'), ('א', 'ת'), ('ׯ', 'ײ'), ('ؠ', 'ي'), ('ٮ', 'ٯ'), + ('ٱ', 'ۓ'), ('ە', 'ە'), ('ۥ', 'ۦ'), ('ۮ', 'ۯ'), ('ۺ', 'ۼ'), + ('ۿ', 'ۿ'), ('ܐ', 'ܐ'), ('ܒ', 'ܯ'), ('ݍ', 'ޥ'), ('ޱ', 'ޱ'), + ('ߊ', 'ߪ'), ('ߴ', 'ߵ'), ('ߺ', 'ߺ'), ('ࠀ', 'ࠕ'), ('ࠚ', 'ࠚ'), + ('ࠤ', 'ࠤ'), ('ࠨ', 'ࠨ'), ('ࡀ', 'ࡘ'), ('ࡠ', 'ࡪ'), + ('ࢠ', 'ࢴ'), ('ࢶ', 'ࢽ'), ('ऄ', 'ह'), ('ऽ', 'ऽ'), + ('ॐ', 'ॐ'), ('क़', 'ॡ'), ('ॱ', 'ঀ'), ('অ', 'ঌ'), + ('এ', 'ঐ'), ('ও', 'ন'), ('প', 'র'), ('ল', 'ল'), + ('শ', 'হ'), ('ঽ', 'ঽ'), ('ৎ', 'ৎ'), ('ড়', 'ঢ়'), + ('য়', 'ৡ'), ('ৰ', 'ৱ'), ('ৼ', 'ৼ'), ('ਅ', 'ਊ'), + ('ਏ', 'ਐ'), ('ਓ', 'ਨ'), ('ਪ', 'ਰ'), ('ਲ', 'ਲ਼'), + ('ਵ', 'ਸ਼'), ('ਸ', 'ਹ'), ('ਖ਼', 'ੜ'), ('ਫ਼', 'ਫ਼'), + ('ੲ', 'ੴ'), ('અ', 'ઍ'), ('એ', 'ઑ'), ('ઓ', 'ન'), + ('પ', 'ર'), ('લ', 'ળ'), ('વ', 'હ'), ('ઽ', 'ઽ'), + ('ૐ', 'ૐ'), ('ૠ', 'ૡ'), ('ૹ', 'ૹ'), ('ଅ', 'ଌ'), + ('ଏ', 'ଐ'), ('ଓ', 'ନ'), ('ପ', 'ର'), ('ଲ', 'ଳ'), + ('ଵ', 'ହ'), ('ଽ', 'ଽ'), ('ଡ଼', 'ଢ଼'), ('ୟ', 'ୡ'), + ('ୱ', 'ୱ'), ('ஃ', 'ஃ'), ('அ', 'ஊ'), ('எ', 'ஐ'), + ('ஒ', 'க'), ('ங', 'ச'), ('ஜ', 'ஜ'), ('ஞ', 'ட'), + ('ண', 'த'), ('ந', 'ப'), ('ம', 'ஹ'), ('ௐ', 'ௐ'), + ('అ', 'ఌ'), ('ఎ', 'ఐ'), ('ఒ', 'న'), ('ప', 'హ'), + ('ఽ', 'ఽ'), ('ౘ', 'ౚ'), ('ౠ', 'ౡ'), ('ಀ', 'ಀ'), + ('ಅ', 'ಌ'), ('ಎ', 'ಐ'), ('ಒ', 'ನ'), ('ಪ', 'ಳ'), + ('ವ', 'ಹ'), ('ಽ', 'ಽ'), ('ೞ', 'ೞ'), ('ೠ', 'ೡ'), + ('ೱ', 'ೲ'), ('അ', 'ഌ'), ('എ', 'ഐ'), ('ഒ', 'ഺ'), + ('ഽ', 'ഽ'), ('ൎ', 'ൎ'), ('ൔ', 'ൖ'), ('ൟ', 'ൡ'), + ('ൺ', 'ൿ'), ('අ', 'ඖ'), ('ක', 'න'), ('ඳ', 'ර'), + ('ල', 'ල'), ('ව', 'ෆ'), ('ก', 'ะ'), ('า', 'ำ'), + ('เ', 'ๆ'), ('ກ', 'ຂ'), ('ຄ', 'ຄ'), ('ງ', 'ຈ'), + ('ຊ', 'ຊ'), ('ຍ', 'ຍ'), ('ດ', 'ທ'), ('ນ', 'ຟ'), + ('ມ', 'ຣ'), ('ລ', 'ລ'), ('ວ', 'ວ'), ('ສ', 'ຫ'), + ('ອ', 'ະ'), ('າ', 'ຳ'), ('ຽ', 'ຽ'), ('ເ', 'ໄ'), + ('ໆ', 'ໆ'), ('ໜ', 'ໟ'), ('ༀ', 'ༀ'), ('ཀ', 'ཇ'), + ('ཉ', 'ཬ'), ('ྈ', 'ྌ'), ('က', 'ဪ'), ('ဿ', 'ဿ'), + ('ၐ', 'ၕ'), ('ၚ', 'ၝ'), ('ၡ', 'ၡ'), ('ၥ', 'ၦ'), + ('ၮ', 'ၰ'), ('ၵ', 'ႁ'), ('ႎ', 'ႎ'), ('Ⴀ', 'Ⴥ'), + ('Ⴧ', 'Ⴧ'), ('Ⴭ', 'Ⴭ'), ('ა', 'ჺ'), ('ჼ', 'ቈ'), + ('ቊ', 'ቍ'), ('ቐ', 'ቖ'), ('ቘ', 'ቘ'), ('ቚ', 'ቝ'), + ('በ', 'ኈ'), ('ኊ', 'ኍ'), ('ነ', 'ኰ'), ('ኲ', 'ኵ'), + ('ኸ', 'ኾ'), ('ዀ', 'ዀ'), ('ዂ', 'ዅ'), ('ወ', 'ዖ'), + ('ዘ', 'ጐ'), ('ጒ', 'ጕ'), ('ጘ', 'ፚ'), ('ᎀ', 'ᎏ'), + ('Ꭰ', 'Ᏽ'), ('ᏸ', 'ᏽ'), ('ᐁ', 'ᙬ'), ('ᙯ', 'ᙿ'), + ('ᚁ', 'ᚚ'), ('ᚠ', 'ᛪ'), ('ᛮ', 'ᛸ'), ('ᜀ', 'ᜌ'), + ('ᜎ', 'ᜑ'), ('ᜠ', 'ᜱ'), ('ᝀ', 'ᝑ'), ('ᝠ', 'ᝬ'), + ('ᝮ', 'ᝰ'), ('ក', 'ឳ'), ('ៗ', 'ៗ'), ('ៜ', 'ៜ'), + ('ᠠ', 'ᡸ'), ('ᢀ', 'ᢨ'), ('ᢪ', 'ᢪ'), ('ᢰ', 'ᣵ'), + ('ᤀ', 'ᤞ'), ('ᥐ', 'ᥭ'), ('ᥰ', 'ᥴ'), ('ᦀ', 'ᦫ'), + ('ᦰ', 'ᧉ'), ('ᨀ', 'ᨖ'), ('ᨠ', 'ᩔ'), ('ᪧ', 'ᪧ'), + ('ᬅ', 'ᬳ'), ('ᭅ', 'ᭋ'), ('ᮃ', 'ᮠ'), ('ᮮ', 'ᮯ'), + ('ᮺ', 'ᯥ'), ('ᰀ', 'ᰣ'), ('ᱍ', 'ᱏ'), ('ᱚ', 'ᱽ'), + ('ᲀ', 'ᲈ'), ('Ა', 'Ჺ'), ('Ჽ', 'Ჿ'), ('ᳩ', 'ᳬ'), + ('ᳮ', 'ᳱ'), ('ᳵ', 'ᳶ'), ('ᴀ', 'ᶿ'), ('Ḁ', 'ἕ'), + ('Ἐ', 'Ἕ'), ('ἠ', 'ὅ'), ('Ὀ', 'Ὅ'), ('ὐ', 'ὗ'), + ('Ὑ', 'Ὑ'), ('Ὓ', 'Ὓ'), ('Ὕ', 'Ὕ'), ('Ὗ', 'ώ'), + ('ᾀ', 'ᾴ'), ('ᾶ', 'ᾼ'), ('ι', 'ι'), ('ῂ', 'ῄ'), + ('ῆ', 'ῌ'), ('ῐ', 'ΐ'), ('ῖ', 'Ί'), ('ῠ', 'Ῥ'), + ('ῲ', 'ῴ'), ('ῶ', 'ῼ'), ('ⁱ', 'ⁱ'), ('ⁿ', 'ⁿ'), + ('ₐ', 'ₜ'), ('ℂ', 'ℂ'), ('ℇ', 'ℇ'), ('ℊ', 'ℓ'), + ('ℕ', 'ℕ'), ('℘', 'ℝ'), ('ℤ', 'ℤ'), ('Ω', 'Ω'), + ('ℨ', 'ℨ'), ('K', 'ℹ'), ('ℼ', 'ℿ'), ('ⅅ', 'ⅉ'), + ('ⅎ', 'ⅎ'), ('Ⅰ', 'ↈ'), ('Ⰰ', 'Ⱞ'), ('ⰰ', 'ⱞ'), + ('Ⱡ', 'ⳤ'), ('Ⳬ', 'ⳮ'), ('Ⳳ', 'ⳳ'), ('ⴀ', 'ⴥ'), + ('ⴧ', 'ⴧ'), ('ⴭ', 'ⴭ'), ('ⴰ', 'ⵧ'), ('ⵯ', 'ⵯ'), + ('ⶀ', 'ⶖ'), ('ⶠ', 'ⶦ'), ('ⶨ', 'ⶮ'), ('ⶰ', 'ⶶ'), + ('ⶸ', 'ⶾ'), ('ⷀ', 'ⷆ'), ('ⷈ', 'ⷎ'), ('ⷐ', 'ⷖ'), + ('ⷘ', 'ⷞ'), ('々', '〇'), ('〡', '〩'), ('〱', '〵'), + ('〸', '〼'), ('ぁ', 'ゖ'), ('゛', 'ゟ'), ('ァ', 'ヺ'), + ('ー', 'ヿ'), ('ㄅ', 'ㄯ'), ('ㄱ', 'ㆎ'), ('ㆠ', 'ㆺ'), + ('ㇰ', 'ㇿ'), ('㐀', '䶵'), ('一', '鿯'), ('ꀀ', 'ꒌ'), + ('ꓐ', 'ꓽ'), ('ꔀ', 'ꘌ'), ('ꘐ', 'ꘟ'), ('ꘪ', 'ꘫ'), + ('Ꙁ', 'ꙮ'), ('ꙿ', 'ꚝ'), ('ꚠ', 'ꛯ'), ('ꜗ', 'ꜟ'), + ('Ꜣ', 'ꞈ'), ('Ꞌ', 'ꞹ'), ('ꟷ', 'ꠁ'), ('ꠃ', 'ꠅ'), + ('ꠇ', 'ꠊ'), ('ꠌ', 'ꠢ'), ('ꡀ', 'ꡳ'), ('ꢂ', 'ꢳ'), + ('ꣲ', 'ꣷ'), ('ꣻ', 'ꣻ'), ('ꣽ', 'ꣾ'), ('ꤊ', 'ꤥ'), + ('ꤰ', 'ꥆ'), ('ꥠ', 'ꥼ'), ('ꦄ', 'ꦲ'), ('ꧏ', 'ꧏ'), + ('ꧠ', 'ꧤ'), ('ꧦ', 'ꧯ'), ('ꧺ', 'ꧾ'), ('ꨀ', 'ꨨ'), + ('ꩀ', 'ꩂ'), ('ꩄ', 'ꩋ'), ('ꩠ', 'ꩶ'), ('ꩺ', 'ꩺ'), + ('ꩾ', 'ꪯ'), ('ꪱ', 'ꪱ'), ('ꪵ', 'ꪶ'), ('ꪹ', 'ꪽ'), + ('ꫀ', 'ꫀ'), ('ꫂ', 'ꫂ'), ('ꫛ', 'ꫝ'), ('ꫠ', 'ꫪ'), + ('ꫲ', 'ꫴ'), ('ꬁ', 'ꬆ'), ('ꬉ', 'ꬎ'), ('ꬑ', 'ꬖ'), + ('ꬠ', 'ꬦ'), ('ꬨ', 'ꬮ'), ('ꬰ', 'ꭚ'), ('ꭜ', 'ꭥ'), + ('ꭰ', 'ꯢ'), ('가', '힣'), ('ힰ', 'ퟆ'), ('ퟋ', 'ퟻ'), + ('豈', '舘'), ('並', '龎'), ('ff', 'st'), ('ﬓ', 'ﬗ'), + ('יִ', 'יִ'), ('ײַ', 'ﬨ'), ('שׁ', 'זּ'), ('טּ', 'לּ'), + ('מּ', 'מּ'), ('נּ', 'סּ'), ('ףּ', 'פּ'), ('צּ', 'ﮱ'), + ('ﯓ', 'ﴽ'), ('ﵐ', 'ﶏ'), ('ﶒ', 'ﷇ'), ('ﷰ', 'ﷻ'), + ('ﹰ', 'ﹴ'), ('ﹶ', 'ﻼ'), ('A', 'Z'), ('a', 'z'), + ('ヲ', 'ᄒ'), ('ᅡ', 'ᅦ'), ('ᅧ', 'ᅬ'), ('ᅭ', 'ᅲ'), + ('ᅳ', 'ᅵ'), ('𐀀', '𐀋'), ('𐀍', '𐀦'), ('𐀨', '𐀺'), + ('𐀼', '𐀽'), ('𐀿', '𐁍'), ('𐁐', '𐁝'), ('𐂀', '𐃺'), + ('𐅀', '𐅴'), ('𐊀', '𐊜'), ('𐊠', '𐋐'), ('𐌀', '𐌟'), + ('𐌭', '𐍊'), ('𐍐', '𐍵'), ('𐎀', '𐎝'), ('𐎠', '𐏃'), + ('𐏈', '𐏏'), ('𐏑', '𐏕'), ('𐐀', '𐒝'), ('𐒰', '𐓓'), + ('𐓘', '𐓻'), ('𐔀', '𐔧'), ('𐔰', '𐕣'), ('𐘀', '𐜶'), + ('𐝀', '𐝕'), ('𐝠', '𐝧'), ('𐠀', '𐠅'), ('𐠈', '𐠈'), + ('𐠊', '𐠵'), ('𐠷', '𐠸'), ('𐠼', '𐠼'), ('𐠿', '𐡕'), + ('𐡠', '𐡶'), ('𐢀', '𐢞'), ('𐣠', '𐣲'), ('𐣴', '𐣵'), + ('𐤀', '𐤕'), ('𐤠', '𐤹'), ('𐦀', '𐦷'), ('𐦾', '𐦿'), + ('𐨀', '𐨀'), ('𐨐', '𐨓'), ('𐨕', '𐨗'), ('𐨙', '𐨵'), + ('𐩠', '𐩼'), ('𐪀', '𐪜'), ('𐫀', '𐫇'), ('𐫉', '𐫤'), + ('𐬀', '𐬵'), ('𐭀', '𐭕'), ('𐭠', '𐭲'), ('𐮀', '𐮑'), + ('𐰀', '𐱈'), ('𐲀', '𐲲'), ('𐳀', '𐳲'), ('𐴀', '𐴣'), + ('𐼀', '𐼜'), ('𐼧', '𐼧'), ('𐼰', '𐽅'), ('𑀃', '𑀷'), + ('𑂃', '𑂯'), ('𑃐', '𑃨'), ('𑄃', '𑄦'), ('𑅄', '𑅄'), + ('𑅐', '𑅲'), ('𑅶', '𑅶'), ('𑆃', '𑆲'), ('𑇁', '𑇄'), + ('𑇚', '𑇚'), ('𑇜', '𑇜'), ('𑈀', '𑈑'), ('𑈓', '𑈫'), + ('𑊀', '𑊆'), ('𑊈', '𑊈'), ('𑊊', '𑊍'), ('𑊏', '𑊝'), + ('𑊟', '𑊨'), ('𑊰', '𑋞'), ('𑌅', '𑌌'), ('𑌏', '𑌐'), + ('𑌓', '𑌨'), ('𑌪', '𑌰'), ('𑌲', '𑌳'), ('𑌵', '𑌹'), + ('𑌽', '𑌽'), ('𑍐', '𑍐'), ('𑍝', '𑍡'), ('𑐀', '𑐴'), + ('𑑇', '𑑊'), ('𑒀', '𑒯'), ('𑓄', '𑓅'), ('𑓇', '𑓇'), + ('𑖀', '𑖮'), ('𑗘', '𑗛'), ('𑘀', '𑘯'), ('𑙄', '𑙄'), + ('𑚀', '𑚪'), ('𑜀', '𑜚'), ('𑠀', '𑠫'), ('𑢠', '𑣟'), + ('𑣿', '𑣿'), ('𑨀', '𑨀'), ('𑨋', '𑨲'), ('𑨺', '𑨺'), + ('𑩐', '𑩐'), ('𑩜', '𑪃'), ('𑪆', '𑪉'), ('𑪝', '𑪝'), + ('𑫀', '𑫸'), ('𑰀', '𑰈'), ('𑰊', '𑰮'), ('𑱀', '𑱀'), + ('𑱲', '𑲏'), ('𑴀', '𑴆'), ('𑴈', '𑴉'), ('𑴋', '𑴰'), + ('𑵆', '𑵆'), ('𑵠', '𑵥'), ('𑵧', '𑵨'), ('𑵪', '𑶉'), + ('𑶘', '𑶘'), ('𑻠', '𑻲'), ('𒀀', '𒎙'), ('𒐀', '𒑮'), + ('𒒀', '𒕃'), ('𓀀', '𓐮'), ('𔐀', '𔙆'), ('𖠀', '𖨸'), + ('𖩀', '𖩞'), ('𖫐', '𖫭'), ('𖬀', '𖬯'), ('𖭀', '𖭃'), + ('𖭣', '𖭷'), ('𖭽', '𖮏'), ('𖹀', '𖹿'), ('𖼀', '𖽄'), + ('𖽐', '𖽐'), ('𖾓', '𖾟'), ('𖿠', '𖿡'), ('𗀀', '𘟱'), + ('𘠀', '𘫲'), ('𛀀', '𛄞'), ('𛅰', '𛋻'), ('𛰀', '𛱪'), + ('𛱰', '𛱼'), ('𛲀', '𛲈'), ('𛲐', '𛲙'), ('𝐀', '𝑔'), + ('𝑖', '𝒜'), ('𝒞', '𝒟'), ('𝒢', '𝒢'), ('𝒥', '𝒦'), + ('𝒩', '𝒬'), ('𝒮', '𝒹'), ('𝒻', '𝒻'), ('𝒽', '𝓃'), + ('𝓅', '𝔅'), ('𝔇', '𝔊'), ('𝔍', '𝔔'), ('𝔖', '𝔜'), + ('𝔞', '𝔹'), ('𝔻', '𝔾'), ('𝕀', '𝕄'), ('𝕆', '𝕆'), + ('𝕊', '𝕐'), ('𝕒', '𝚥'), ('𝚨', '𝛀'), ('𝛂', '𝛚'), + ('𝛜', '𝛺'), ('𝛼', '𝜔'), ('𝜖', '𝜴'), ('𝜶', '𝝎'), + ('𝝐', '𝝮'), ('𝝰', '𝞈'), ('𝞊', '𝞨'), ('𝞪', '𝟂'), + ('𝟄', '𝟋'), ('𞠀', '𞣄'), ('𞤀', '𞥃'), ('𞸀', '𞸃'), + ('𞸅', '𞸟'), ('𞸡', '𞸢'), ('𞸤', '𞸤'), ('𞸧', '𞸧'), + ('𞸩', '𞸲'), ('𞸴', '𞸷'), ('𞸹', '𞸹'), ('𞸻', '𞸻'), + ('𞹂', '𞹂'), ('𞹇', '𞹇'), ('𞹉', '𞹉'), ('𞹋', '𞹋'), + ('𞹍', '𞹏'), ('𞹑', '𞹒'), ('𞹔', '𞹔'), ('𞹗', '𞹗'), + ('𞹙', '𞹙'), ('𞹛', '𞹛'), ('𞹝', '𞹝'), ('𞹟', '𞹟'), + ('𞹡', '𞹢'), ('𞹤', '𞹤'), ('𞹧', '𞹪'), ('𞹬', '𞹲'), + ('𞹴', '𞹷'), ('𞹹', '𞹼'), ('𞹾', '𞹾'), ('𞺀', '𞺉'), + ('𞺋', '𞺛'), ('𞺡', '𞺣'), ('𞺥', '𞺩'), ('𞺫', '𞺻'), + ('𠀀', '𪛖'), ('𪜀', '𫜴'), ('𫝀', '𫠝'), ('𫠠', '𬺡'), + ('𬺰', '𮯠'), ('丽', '𪘀'), ]; pub const IDEOGRAPHIC: &'static [(char, char)] = &[ ('〆', '〇'), ('〡', '〩'), ('〸', '〺'), ('㐀', '䶵'), - ('一', '\u{9fef}'), ('豈', '舘'), ('並', '龎'), ('𗀀', '\u{187f1}'), + ('一', '鿯'), ('豈', '舘'), ('並', '龎'), ('𗀀', '𘟱'), ('𘠀', '𘫲'), ('𛅰', '𛋻'), ('𠀀', '𪛖'), ('𪜀', '𫜴'), ('𫝀', '𫠝'), ('𫠠', '𬺡'), ('𬺰', '𮯠'), ('丽', '𪘀'), ]; @@ -1754,32 +2020,32 @@ ('ȭ', 'ȭ'), ('ȯ', 'ȯ'), ('ȱ', 'ȱ'), ('ȳ', 'ȹ'), ('ȼ', 'ȼ'), ('ȿ', 'ɀ'), ('ɂ', 'ɂ'), ('ɇ', 'ɇ'), ('ɉ', 'ɉ'), ('ɋ', 'ɋ'), ('ɍ', 'ɍ'), ('ɏ', 'ʓ'), ('ʕ', 'ʸ'), ('ˀ', 'ˁ'), ('ˠ', 'ˤ'), - ('ͅ', 'ͅ'), ('ͱ', 'ͱ'), ('ͳ', 'ͳ'), ('ͷ', 'ͷ'), ('ͺ', 'ͽ'), - ('ΐ', 'ΐ'), ('ά', 'ώ'), ('ϐ', 'ϑ'), ('ϕ', 'ϗ'), ('ϙ', 'ϙ'), - ('ϛ', 'ϛ'), ('ϝ', 'ϝ'), ('ϟ', 'ϟ'), ('ϡ', 'ϡ'), ('ϣ', 'ϣ'), - ('ϥ', 'ϥ'), ('ϧ', 'ϧ'), ('ϩ', 'ϩ'), ('ϫ', 'ϫ'), ('ϭ', 'ϭ'), - ('ϯ', 'ϳ'), ('ϵ', 'ϵ'), ('ϸ', 'ϸ'), ('ϻ', 'ϼ'), ('а', 'џ'), - ('ѡ', 'ѡ'), ('ѣ', 'ѣ'), ('ѥ', 'ѥ'), ('ѧ', 'ѧ'), ('ѩ', 'ѩ'), - ('ѫ', 'ѫ'), ('ѭ', 'ѭ'), ('ѯ', 'ѯ'), ('ѱ', 'ѱ'), ('ѳ', 'ѳ'), - ('ѵ', 'ѵ'), ('ѷ', 'ѷ'), ('ѹ', 'ѹ'), ('ѻ', 'ѻ'), ('ѽ', 'ѽ'), - ('ѿ', 'ѿ'), ('ҁ', 'ҁ'), ('ҋ', 'ҋ'), ('ҍ', 'ҍ'), ('ҏ', 'ҏ'), - ('ґ', 'ґ'), ('ғ', 'ғ'), ('ҕ', 'ҕ'), ('җ', 'җ'), ('ҙ', 'ҙ'), - ('қ', 'қ'), ('ҝ', 'ҝ'), ('ҟ', 'ҟ'), ('ҡ', 'ҡ'), ('ң', 'ң'), - ('ҥ', 'ҥ'), ('ҧ', 'ҧ'), ('ҩ', 'ҩ'), ('ҫ', 'ҫ'), ('ҭ', 'ҭ'), - ('ү', 'ү'), ('ұ', 'ұ'), ('ҳ', 'ҳ'), ('ҵ', 'ҵ'), ('ҷ', 'ҷ'), - ('ҹ', 'ҹ'), ('һ', 'һ'), ('ҽ', 'ҽ'), ('ҿ', 'ҿ'), ('ӂ', 'ӂ'), - ('ӄ', 'ӄ'), ('ӆ', 'ӆ'), ('ӈ', 'ӈ'), ('ӊ', 'ӊ'), ('ӌ', 'ӌ'), - ('ӎ', 'ӏ'), ('ӑ', 'ӑ'), ('ӓ', 'ӓ'), ('ӕ', 'ӕ'), ('ӗ', 'ӗ'), - ('ә', 'ә'), ('ӛ', 'ӛ'), ('ӝ', 'ӝ'), ('ӟ', 'ӟ'), ('ӡ', 'ӡ'), - ('ӣ', 'ӣ'), ('ӥ', 'ӥ'), ('ӧ', 'ӧ'), ('ө', 'ө'), ('ӫ', 'ӫ'), - ('ӭ', 'ӭ'), ('ӯ', 'ӯ'), ('ӱ', 'ӱ'), ('ӳ', 'ӳ'), ('ӵ', 'ӵ'), - ('ӷ', 'ӷ'), ('ӹ', 'ӹ'), ('ӻ', 'ӻ'), ('ӽ', 'ӽ'), ('ӿ', 'ӿ'), - ('ԁ', 'ԁ'), ('ԃ', 'ԃ'), ('ԅ', 'ԅ'), ('ԇ', 'ԇ'), ('ԉ', 'ԉ'), - ('ԋ', 'ԋ'), ('ԍ', 'ԍ'), ('ԏ', 'ԏ'), ('ԑ', 'ԑ'), ('ԓ', 'ԓ'), - ('ԕ', 'ԕ'), ('ԗ', 'ԗ'), ('ԙ', 'ԙ'), ('ԛ', 'ԛ'), ('ԝ', 'ԝ'), - ('ԟ', 'ԟ'), ('ԡ', 'ԡ'), ('ԣ', 'ԣ'), ('ԥ', 'ԥ'), ('ԧ', 'ԧ'), - ('ԩ', 'ԩ'), ('ԫ', 'ԫ'), ('ԭ', 'ԭ'), ('ԯ', 'ԯ'), - ('\u{560}', '\u{588}'), ('ა', 'ჺ'), ('ჽ', 'ჿ'), ('ᏸ', 'ᏽ'), + ('\u{345}', '\u{345}'), ('ͱ', 'ͱ'), ('ͳ', 'ͳ'), ('ͷ', 'ͷ'), + ('ͺ', 'ͽ'), ('ΐ', 'ΐ'), ('ά', 'ώ'), ('ϐ', 'ϑ'), ('ϕ', 'ϗ'), + ('ϙ', 'ϙ'), ('ϛ', 'ϛ'), ('ϝ', 'ϝ'), ('ϟ', 'ϟ'), ('ϡ', 'ϡ'), + ('ϣ', 'ϣ'), ('ϥ', 'ϥ'), ('ϧ', 'ϧ'), ('ϩ', 'ϩ'), ('ϫ', 'ϫ'), + ('ϭ', 'ϭ'), ('ϯ', 'ϳ'), ('ϵ', 'ϵ'), ('ϸ', 'ϸ'), ('ϻ', 'ϼ'), + ('а', 'џ'), ('ѡ', 'ѡ'), ('ѣ', 'ѣ'), ('ѥ', 'ѥ'), ('ѧ', 'ѧ'), + ('ѩ', 'ѩ'), ('ѫ', 'ѫ'), ('ѭ', 'ѭ'), ('ѯ', 'ѯ'), ('ѱ', 'ѱ'), + ('ѳ', 'ѳ'), ('ѵ', 'ѵ'), ('ѷ', 'ѷ'), ('ѹ', 'ѹ'), ('ѻ', 'ѻ'), + ('ѽ', 'ѽ'), ('ѿ', 'ѿ'), ('ҁ', 'ҁ'), ('ҋ', 'ҋ'), ('ҍ', 'ҍ'), + ('ҏ', 'ҏ'), ('ґ', 'ґ'), ('ғ', 'ғ'), ('ҕ', 'ҕ'), ('җ', 'җ'), + ('ҙ', 'ҙ'), ('қ', 'қ'), ('ҝ', 'ҝ'), ('ҟ', 'ҟ'), ('ҡ', 'ҡ'), + ('ң', 'ң'), ('ҥ', 'ҥ'), ('ҧ', 'ҧ'), ('ҩ', 'ҩ'), ('ҫ', 'ҫ'), + ('ҭ', 'ҭ'), ('ү', 'ү'), ('ұ', 'ұ'), ('ҳ', 'ҳ'), ('ҵ', 'ҵ'), + ('ҷ', 'ҷ'), ('ҹ', 'ҹ'), ('һ', 'һ'), ('ҽ', 'ҽ'), ('ҿ', 'ҿ'), + ('ӂ', 'ӂ'), ('ӄ', 'ӄ'), ('ӆ', 'ӆ'), ('ӈ', 'ӈ'), ('ӊ', 'ӊ'), + ('ӌ', 'ӌ'), ('ӎ', 'ӏ'), ('ӑ', 'ӑ'), ('ӓ', 'ӓ'), ('ӕ', 'ӕ'), + ('ӗ', 'ӗ'), ('ә', 'ә'), ('ӛ', 'ӛ'), ('ӝ', 'ӝ'), ('ӟ', 'ӟ'), + ('ӡ', 'ӡ'), ('ӣ', 'ӣ'), ('ӥ', 'ӥ'), ('ӧ', 'ӧ'), ('ө', 'ө'), + ('ӫ', 'ӫ'), ('ӭ', 'ӭ'), ('ӯ', 'ӯ'), ('ӱ', 'ӱ'), ('ӳ', 'ӳ'), + ('ӵ', 'ӵ'), ('ӷ', 'ӷ'), ('ӹ', 'ӹ'), ('ӻ', 'ӻ'), ('ӽ', 'ӽ'), + ('ӿ', 'ӿ'), ('ԁ', 'ԁ'), ('ԃ', 'ԃ'), ('ԅ', 'ԅ'), ('ԇ', 'ԇ'), + ('ԉ', 'ԉ'), ('ԋ', 'ԋ'), ('ԍ', 'ԍ'), ('ԏ', 'ԏ'), ('ԑ', 'ԑ'), + ('ԓ', 'ԓ'), ('ԕ', 'ԕ'), ('ԗ', 'ԗ'), ('ԙ', 'ԙ'), ('ԛ', 'ԛ'), + ('ԝ', 'ԝ'), ('ԟ', 'ԟ'), ('ԡ', 'ԡ'), ('ԣ', 'ԣ'), ('ԥ', 'ԥ'), + ('ԧ', 'ԧ'), ('ԩ', 'ԩ'), ('ԫ', 'ԫ'), ('ԭ', 'ԭ'), ('ԯ', 'ԯ'), + ('ՠ', 'ֈ'), ('ა', 'ჺ'), ('ჽ', 'ჿ'), ('ᏸ', 'ᏽ'), ('ᲀ', 'ᲈ'), ('ᴀ', 'ᶿ'), ('ḁ', 'ḁ'), ('ḃ', 'ḃ'), ('ḅ', 'ḅ'), ('ḇ', 'ḇ'), ('ḉ', 'ḉ'), ('ḋ', 'ḋ'), ('ḍ', 'ḍ'), ('ḏ', 'ḏ'), ('ḑ', 'ḑ'), ('ḓ', 'ḓ'), @@ -1860,18 +2126,18 @@ ('ꞌ', 'ꞌ'), ('ꞎ', 'ꞎ'), ('ꞑ', 'ꞑ'), ('ꞓ', 'ꞕ'), ('ꞗ', 'ꞗ'), ('ꞙ', 'ꞙ'), ('ꞛ', 'ꞛ'), ('ꞝ', 'ꞝ'), ('ꞟ', 'ꞟ'), ('ꞡ', 'ꞡ'), ('ꞣ', 'ꞣ'), ('ꞥ', 'ꞥ'), - ('ꞧ', 'ꞧ'), ('ꞩ', 'ꞩ'), ('\u{a7af}', '\u{a7af}'), ('ꞵ', 'ꞵ'), - ('ꞷ', 'ꞷ'), ('\u{a7b9}', '\u{a7b9}'), ('ꟸ', 'ꟺ'), ('ꬰ', 'ꭚ'), + ('ꞧ', 'ꞧ'), ('ꞩ', 'ꞩ'), ('ꞯ', 'ꞯ'), ('ꞵ', 'ꞵ'), + ('ꞷ', 'ꞷ'), ('ꞹ', 'ꞹ'), ('ꟸ', 'ꟺ'), ('ꬰ', 'ꭚ'), ('ꭜ', 'ꭥ'), ('ꭰ', 'ꮿ'), ('ff', 'st'), ('ﬓ', 'ﬗ'), ('a', 'z'), ('𐐨', '𐑏'), ('𐓘', '𐓻'), ('𐳀', '𐳲'), - ('𑣀', '𑣟'), ('\u{16e60}', '\u{16e7f}'), ('𝐚', '𝐳'), - ('𝑎', '𝑔'), ('𝑖', '𝑧'), ('𝒂', '𝒛'), ('𝒶', '𝒹'), - ('𝒻', '𝒻'), ('𝒽', '𝓃'), ('𝓅', '𝓏'), ('𝓪', '𝔃'), - ('𝔞', '𝔷'), ('𝕒', '𝕫'), ('𝖆', '𝖟'), ('𝖺', '𝗓'), - ('𝗮', '𝘇'), ('𝘢', '𝘻'), ('𝙖', '𝙯'), ('𝚊', '𝚥'), - ('𝛂', '𝛚'), ('𝛜', '𝛡'), ('𝛼', '𝜔'), ('𝜖', '𝜛'), - ('𝜶', '𝝎'), ('𝝐', '𝝕'), ('𝝰', '𝞈'), ('𝞊', '𝞏'), - ('𝞪', '𝟂'), ('𝟄', '𝟉'), ('𝟋', '𝟋'), ('𞤢', '𞥃'), + ('𑣀', '𑣟'), ('𖹠', '𖹿'), ('𝐚', '𝐳'), ('𝑎', '𝑔'), + ('𝑖', '𝑧'), ('𝒂', '𝒛'), ('𝒶', '𝒹'), ('𝒻', '𝒻'), + ('𝒽', '𝓃'), ('𝓅', '𝓏'), ('𝓪', '𝔃'), ('𝔞', '𝔷'), + ('𝕒', '𝕫'), ('𝖆', '𝖟'), ('𝖺', '𝗓'), ('𝗮', '𝘇'), + ('𝘢', '𝘻'), ('𝙖', '𝙯'), ('𝚊', '𝚥'), ('𝛂', '𝛚'), + ('𝛜', '𝛡'), ('𝛼', '𝜔'), ('𝜖', '𝜛'), ('𝜶', '𝝎'), + ('𝝐', '𝝕'), ('𝝰', '𝞈'), ('𝞊', '𝞏'), ('𝞪', '𝟂'), + ('𝟄', '𝟉'), ('𝟋', '𝟋'), ('𞤢', '𞥃'), ]; pub const MATH: &'static [(char, char)] = &[ @@ -1879,36 +2145,37 @@ ('±', '±'), ('×', '×'), ('÷', '÷'), ('ϐ', 'ϒ'), ('ϕ', 'ϕ'), ('ϰ', 'ϱ'), ('ϴ', '϶'), ('؆', '؈'), ('‖', '‖'), ('′', '‴'), ('⁀', '⁀'), ('⁄', '⁄'), ('⁒', '⁒'), ('\u{2061}', '\u{2064}'), - ('⁺', '⁾'), ('₊', '₎'), ('⃐', '⃜'), ('⃡', '⃡'), - ('⃥', '⃦'), ('⃫', '⃯'), ('ℂ', 'ℂ'), ('ℇ', 'ℇ'), - ('ℊ', 'ℓ'), ('ℕ', 'ℕ'), ('℘', 'ℝ'), ('ℤ', 'ℤ'), - ('ℨ', '℩'), ('ℬ', 'ℭ'), ('ℯ', 'ℱ'), ('ℳ', 'ℸ'), - ('ℼ', 'ⅉ'), ('⅋', '⅋'), ('←', '↧'), ('↩', '↮'), - ('↰', '↱'), ('↶', '↷'), ('↼', '⇛'), ('⇝', '⇝'), - ('⇤', '⇥'), ('⇴', '⋿'), ('⌈', '⌋'), ('⌠', '⌡'), - ('⍼', '⍼'), ('⎛', '⎵'), ('⎷', '⎷'), ('⏐', '⏐'), - ('⏜', '⏢'), ('■', '□'), ('▮', '▷'), ('▼', '◁'), - ('◆', '◇'), ('◊', '○'), ('●', '◓'), ('◢', '◢'), - ('◤', '◤'), ('◧', '◬'), ('◸', '◿'), ('★', '☆'), - ('♀', '♀'), ('♂', '♂'), ('♠', '♣'), ('♭', '♯'), - ('⟀', '⟿'), ('⤀', '⫿'), ('⬰', '⭄'), ('⭇', '⭌'), - ('﬩', '﬩'), ('﹡', '﹦'), ('﹨', '﹨'), ('+', '+'), - ('<', '>'), ('\', '\'), ('^', '^'), ('|', '|'), - ('~', '~'), ('¬', '¬'), ('←', '↓'), ('𝐀', '𝑔'), - ('𝑖', '𝒜'), ('𝒞', '𝒟'), ('𝒢', '𝒢'), ('𝒥', '𝒦'), - ('𝒩', '𝒬'), ('𝒮', '𝒹'), ('𝒻', '𝒻'), ('𝒽', '𝓃'), - ('𝓅', '𝔅'), ('𝔇', '𝔊'), ('𝔍', '𝔔'), ('𝔖', '𝔜'), - ('𝔞', '𝔹'), ('𝔻', '𝔾'), ('𝕀', '𝕄'), ('𝕆', '𝕆'), - ('𝕊', '𝕐'), ('𝕒', '𝚥'), ('𝚨', '𝟋'), ('𝟎', '𝟿'), - ('𞸀', '𞸃'), ('𞸅', '𞸟'), ('𞸡', '𞸢'), ('𞸤', '𞸤'), - ('𞸧', '𞸧'), ('𞸩', '𞸲'), ('𞸴', '𞸷'), ('𞸹', '𞸹'), - ('𞸻', '𞸻'), ('𞹂', '𞹂'), ('𞹇', '𞹇'), ('𞹉', '𞹉'), - ('𞹋', '𞹋'), ('𞹍', '𞹏'), ('𞹑', '𞹒'), ('𞹔', '𞹔'), - ('𞹗', '𞹗'), ('𞹙', '𞹙'), ('𞹛', '𞹛'), ('𞹝', '𞹝'), - ('𞹟', '𞹟'), ('𞹡', '𞹢'), ('𞹤', '𞹤'), ('𞹧', '𞹪'), - ('𞹬', '𞹲'), ('𞹴', '𞹷'), ('𞹹', '𞹼'), ('𞹾', '𞹾'), - ('𞺀', '𞺉'), ('𞺋', '𞺛'), ('𞺡', '𞺣'), ('𞺥', '𞺩'), - ('𞺫', '𞺻'), ('𞻰', '𞻱'), + ('⁺', '⁾'), ('₊', '₎'), ('\u{20d0}', '\u{20dc}'), + ('\u{20e1}', '\u{20e1}'), ('\u{20e5}', '\u{20e6}'), + ('\u{20eb}', '\u{20ef}'), ('ℂ', 'ℂ'), ('ℇ', 'ℇ'), ('ℊ', 'ℓ'), + ('ℕ', 'ℕ'), ('℘', 'ℝ'), ('ℤ', 'ℤ'), ('ℨ', '℩'), + ('ℬ', 'ℭ'), ('ℯ', 'ℱ'), ('ℳ', 'ℸ'), ('ℼ', 'ⅉ'), + ('⅋', '⅋'), ('←', '↧'), ('↩', '↮'), ('↰', '↱'), + ('↶', '↷'), ('↼', '⇛'), ('⇝', '⇝'), ('⇤', '⇥'), + ('⇴', '⋿'), ('⌈', '⌋'), ('⌠', '⌡'), ('⍼', '⍼'), + ('⎛', '⎵'), ('⎷', '⎷'), ('⏐', '⏐'), ('⏜', '⏢'), + ('■', '□'), ('▮', '▷'), ('▼', '◁'), ('◆', '◇'), + ('◊', '○'), ('●', '◓'), ('◢', '◢'), ('◤', '◤'), + ('◧', '◬'), ('◸', '◿'), ('★', '☆'), ('♀', '♀'), + ('♂', '♂'), ('♠', '♣'), ('♭', '♯'), ('⟀', '⟿'), + ('⤀', '⫿'), ('⬰', '⭄'), ('⭇', '⭌'), ('﬩', '﬩'), + ('﹡', '﹦'), ('﹨', '﹨'), ('+', '+'), ('<', '>'), + ('\', '\'), ('^', '^'), ('|', '|'), ('~', '~'), + ('¬', '¬'), ('←', '↓'), ('𝐀', '𝑔'), ('𝑖', '𝒜'), + ('𝒞', '𝒟'), ('𝒢', '𝒢'), ('𝒥', '𝒦'), ('𝒩', '𝒬'), + ('𝒮', '𝒹'), ('𝒻', '𝒻'), ('𝒽', '𝓃'), ('𝓅', '𝔅'), + ('𝔇', '𝔊'), ('𝔍', '𝔔'), ('𝔖', '𝔜'), ('𝔞', '𝔹'), + ('𝔻', '𝔾'), ('𝕀', '𝕄'), ('𝕆', '𝕆'), ('𝕊', '𝕐'), + ('𝕒', '𝚥'), ('𝚨', '𝟋'), ('𝟎', '𝟿'), ('𞸀', '𞸃'), + ('𞸅', '𞸟'), ('𞸡', '𞸢'), ('𞸤', '𞸤'), ('𞸧', '𞸧'), + ('𞸩', '𞸲'), ('𞸴', '𞸷'), ('𞸹', '𞸹'), ('𞸻', '𞸻'), + ('𞹂', '𞹂'), ('𞹇', '𞹇'), ('𞹉', '𞹉'), ('𞹋', '𞹋'), + ('𞹍', '𞹏'), ('𞹑', '𞹒'), ('𞹔', '𞹔'), ('𞹗', '𞹗'), + ('𞹙', '𞹙'), ('𞹛', '𞹛'), ('𞹝', '𞹝'), ('𞹟', '𞹟'), + ('𞹡', '𞹢'), ('𞹤', '𞹤'), ('𞹧', '𞹪'), ('𞹬', '𞹲'), + ('𞹴', '𞹷'), ('𞹹', '𞹼'), ('𞹾', '𞹾'), ('𞺀', '𞺉'), + ('𞺋', '𞺛'), ('𞺡', '𞺣'), ('𞺥', '𞺩'), ('𞺫', '𞺻'), + ('𞻰', '𞻱'), ]; pub const NONCHARACTER_CODE_POINT: &'static [(char, char)] = &[ @@ -1924,76 +2191,101 @@ ]; pub const OTHER_ALPHABETIC: &'static [(char, char)] = &[ - ('ͅ', 'ͅ'), ('ְ', 'ֽ'), ('ֿ', 'ֿ'), ('ׁ', 'ׂ'), ('ׄ', 'ׅ'), - ('ׇ', 'ׇ'), ('ؐ', 'ؚ'), ('ً', 'ٗ'), ('ٙ', 'ٟ'), ('ٰ', 'ٰ'), - ('ۖ', 'ۜ'), ('ۡ', 'ۤ'), ('ۧ', 'ۨ'), ('ۭ', 'ۭ'), ('ܑ', 'ܑ'), - ('ܰ', 'ܿ'), ('ަ', 'ް'), ('ࠖ', 'ࠗ'), ('ࠛ', 'ࠣ'), ('ࠥ', 'ࠧ'), - ('ࠩ', 'ࠬ'), ('ࣔ', 'ࣟ'), ('ࣣ', 'ࣩ'), ('ࣰ', 'ः'), - ('ऺ', 'ऻ'), ('ा', 'ौ'), ('ॎ', 'ॏ'), ('ॕ', 'ॗ'), - ('ॢ', 'ॣ'), ('ঁ', 'ঃ'), ('া', 'ৄ'), ('ে', 'ৈ'), - ('ো', 'ৌ'), ('ৗ', 'ৗ'), ('ৢ', 'ৣ'), ('ਁ', 'ਃ'), - ('ਾ', 'ੂ'), ('ੇ', 'ੈ'), ('ੋ', 'ੌ'), ('ੑ', 'ੑ'), - ('ੰ', 'ੱ'), ('ੵ', 'ੵ'), ('ઁ', 'ઃ'), ('ા', 'ૅ'), - ('ે', 'ૉ'), ('ો', 'ૌ'), ('ૢ', 'ૣ'), ('ૺ', 'ૼ'), - ('ଁ', 'ଃ'), ('ା', 'ୄ'), ('େ', 'ୈ'), ('ୋ', 'ୌ'), - ('ୖ', 'ୗ'), ('ୢ', 'ୣ'), ('ஂ', 'ஂ'), ('ா', 'ூ'), - ('ெ', 'ை'), ('ொ', 'ௌ'), ('ௗ', 'ௗ'), ('ఀ', 'ః'), - ('ా', 'ౄ'), ('ె', 'ై'), ('ొ', 'ౌ'), ('ౕ', 'ౖ'), - ('ౢ', 'ౣ'), ('ಁ', 'ಃ'), ('ಾ', 'ೄ'), ('ೆ', 'ೈ'), - ('ೊ', 'ೌ'), ('ೕ', 'ೖ'), ('ೢ', 'ೣ'), ('ഀ', 'ഃ'), - ('ാ', 'ൄ'), ('െ', 'ൈ'), ('ൊ', 'ൌ'), ('ൗ', 'ൗ'), - ('ൢ', 'ൣ'), ('ං', 'ඃ'), ('ා', 'ු'), ('ූ', 'ූ'), - ('ෘ', 'ෟ'), ('ෲ', 'ෳ'), ('ั', 'ั'), ('ิ', 'ฺ'), - ('ํ', 'ํ'), ('ັ', 'ັ'), ('ິ', 'ູ'), ('ົ', 'ຼ'), - ('ໍ', 'ໍ'), ('ཱ', 'ཱྀ'), ('ྍ', 'ྗ'), ('ྙ', 'ྼ'), - ('ါ', 'ံ'), ('း', 'း'), ('ျ', 'ှ'), ('ၖ', 'ၙ'), - ('ၞ', 'ၠ'), ('ၢ', 'ၢ'), ('ၧ', 'ၨ'), ('ၱ', 'ၴ'), - ('ႂ', 'ႆ'), ('ႜ', 'ႝ'), ('፟', '፟'), ('ᜒ', 'ᜓ'), - ('ᜲ', 'ᜳ'), ('ᝒ', 'ᝓ'), ('ᝲ', 'ᝳ'), ('ា', 'ៈ'), - ('ᢅ', 'ᢆ'), ('ᢩ', 'ᢩ'), ('ᤠ', 'ᤫ'), ('ᤰ', 'ᤸ'), - ('ᨗ', 'ᨛ'), ('ᩕ', 'ᩞ'), ('ᩡ', 'ᩴ'), ('ᬀ', 'ᬄ'), - ('ᬵ', 'ᭃ'), ('ᮀ', 'ᮂ'), ('ᮡ', 'ᮩ'), ('ᮬ', 'ᮭ'), - ('ᯧ', 'ᯱ'), ('ᰤ', 'ᰵ'), ('ᳲ', 'ᳳ'), ('ᷧ', 'ᷴ'), - ('Ⓐ', 'ⓩ'), ('ⷠ', 'ⷿ'), ('ꙴ', 'ꙻ'), ('ꚞ', 'ꚟ'), - ('ꠣ', 'ꠧ'), ('ꢀ', 'ꢁ'), ('ꢴ', 'ꣃ'), ('ꣅ', 'ꣅ'), - ('ꤦ', 'ꤪ'), ('ꥇ', 'ꥒ'), ('ꦀ', 'ꦃ'), ('ꦴ', 'ꦿ'), - ('ꨩ', 'ꨶ'), ('ꩃ', 'ꩃ'), ('ꩌ', 'ꩍ'), ('ꪰ', 'ꪰ'), - ('ꪲ', 'ꪴ'), ('ꪷ', 'ꪸ'), ('ꪾ', 'ꪾ'), ('ꫫ', 'ꫯ'), - ('ꫵ', 'ꫵ'), ('ꯣ', 'ꯪ'), ('ﬞ', 'ﬞ'), ('𐍶', '𐍺'), - ('𐨁', '𐨃'), ('𐨅', '𐨆'), ('𐨌', '𐨏'), - ('\u{10d24}', '\u{10d27}'), ('𑀀', '𑀂'), ('𑀸', '𑁅'), - ('𑂂', '𑂂'), ('𑂰', '𑂸'), ('𑄀', '𑄂'), ('𑄧', '𑄲'), - ('\u{11145}', '\u{11146}'), ('𑆀', '𑆂'), ('𑆳', '𑆿'), - ('𑈬', '𑈴'), ('𑈷', '𑈷'), ('𑈾', '𑈾'), ('𑋟', '𑋨'), - ('𑌀', '𑌃'), ('𑌾', '𑍄'), ('𑍇', '𑍈'), ('𑍋', '𑍌'), - ('𑍗', '𑍗'), ('𑍢', '𑍣'), ('𑐵', '𑑁'), ('𑑃', '𑑅'), - ('𑒰', '𑓁'), ('𑖯', '𑖵'), ('𑖸', '𑖾'), ('𑗜', '𑗝'), - ('𑘰', '𑘾'), ('𑙀', '𑙀'), ('𑚫', '𑚵'), ('𑜝', '𑜪'), - ('\u{1182c}', '\u{11838}'), ('𑨁', '𑨊'), ('𑨵', '𑨹'), - ('𑨻', '𑨾'), ('𑩑', '𑩛'), ('𑪊', '𑪗'), ('𑰯', '𑰶'), - ('𑰸', '𑰾'), ('𑲒', '𑲧'), ('𑲩', '𑲶'), ('𑴱', '𑴶'), - ('𑴺', '𑴺'), ('𑴼', '𑴽'), ('𑴿', '𑵁'), ('𑵃', '𑵃'), - ('𑵇', '𑵇'), ('\u{11d8a}', '\u{11d8e}'), ('\u{11d90}', '\u{11d91}'), - ('\u{11d93}', '\u{11d96}'), ('\u{11ef3}', '\u{11ef6}'), ('𖬰', '𖬶'), - ('𖽑', '𖽾'), ('𛲞', '𛲞'), ('𞀀', '𞀆'), ('𞀈', '𞀘'), - ('𞀛', '𞀡'), ('𞀣', '𞀤'), ('𞀦', '𞀪'), ('𞥇', '𞥇'), - ('🄰', '🅉'), ('🅐', '🅩'), ('🅰', '🆉'), + ('\u{345}', '\u{345}'), ('\u{5b0}', '\u{5bd}'), ('\u{5bf}', '\u{5bf}'), + ('\u{5c1}', '\u{5c2}'), ('\u{5c4}', '\u{5c5}'), ('\u{5c7}', '\u{5c7}'), + ('\u{610}', '\u{61a}'), ('\u{64b}', '\u{657}'), ('\u{659}', '\u{65f}'), + ('\u{670}', '\u{670}'), ('\u{6d6}', '\u{6dc}'), ('\u{6e1}', '\u{6e4}'), + ('\u{6e7}', '\u{6e8}'), ('\u{6ed}', '\u{6ed}'), ('\u{711}', '\u{711}'), + ('\u{730}', '\u{73f}'), ('\u{7a6}', '\u{7b0}'), ('\u{816}', '\u{817}'), + ('\u{81b}', '\u{823}'), ('\u{825}', '\u{827}'), ('\u{829}', '\u{82c}'), + ('\u{8d4}', '\u{8df}'), ('\u{8e3}', '\u{8e9}'), ('\u{8f0}', 'ः'), + ('\u{93a}', 'ऻ'), ('ा', 'ौ'), ('ॎ', 'ॏ'), ('\u{955}', '\u{957}'), + ('\u{962}', '\u{963}'), ('\u{981}', 'ঃ'), ('\u{9be}', '\u{9c4}'), + ('ে', 'ৈ'), ('ো', 'ৌ'), ('\u{9d7}', '\u{9d7}'), + ('\u{9e2}', '\u{9e3}'), ('\u{a01}', 'ਃ'), ('ਾ', '\u{a42}'), + ('\u{a47}', '\u{a48}'), ('\u{a4b}', '\u{a4c}'), ('\u{a51}', '\u{a51}'), + ('\u{a70}', '\u{a71}'), ('\u{a75}', '\u{a75}'), ('\u{a81}', 'ઃ'), + ('ા', '\u{ac5}'), ('\u{ac7}', 'ૉ'), ('ો', 'ૌ'), + ('\u{ae2}', '\u{ae3}'), ('\u{afa}', '\u{afc}'), ('\u{b01}', 'ଃ'), + ('\u{b3e}', '\u{b44}'), ('େ', 'ୈ'), ('ୋ', 'ୌ'), + ('\u{b56}', '\u{b57}'), ('\u{b62}', '\u{b63}'), ('\u{b82}', '\u{b82}'), + ('\u{bbe}', 'ூ'), ('ெ', 'ை'), ('ொ', 'ௌ'), ('\u{bd7}', '\u{bd7}'), + ('\u{c00}', 'ః'), ('\u{c3e}', 'ౄ'), ('\u{c46}', '\u{c48}'), + ('\u{c4a}', '\u{c4c}'), ('\u{c55}', '\u{c56}'), ('\u{c62}', '\u{c63}'), + ('\u{c81}', 'ಃ'), ('ಾ', 'ೄ'), ('\u{cc6}', 'ೈ'), ('ೊ', '\u{ccc}'), + ('\u{cd5}', '\u{cd6}'), ('\u{ce2}', '\u{ce3}'), ('\u{d00}', 'ഃ'), + ('\u{d3e}', '\u{d44}'), ('െ', 'ൈ'), ('ൊ', 'ൌ'), + ('\u{d57}', '\u{d57}'), ('\u{d62}', '\u{d63}'), ('ං', 'ඃ'), + ('\u{dcf}', '\u{dd4}'), ('\u{dd6}', '\u{dd6}'), ('ෘ', '\u{ddf}'), + ('ෲ', 'ෳ'), ('\u{e31}', '\u{e31}'), ('\u{e34}', '\u{e3a}'), + ('\u{e4d}', '\u{e4d}'), ('\u{eb1}', '\u{eb1}'), ('\u{eb4}', '\u{eb9}'), + ('\u{ebb}', '\u{ebc}'), ('\u{ecd}', '\u{ecd}'), ('\u{f71}', '\u{f81}'), + ('\u{f8d}', '\u{f97}'), ('\u{f99}', '\u{fbc}'), ('ါ', '\u{1036}'), + ('း', 'း'), ('ျ', '\u{103e}'), ('ၖ', '\u{1059}'), + ('\u{105e}', '\u{1060}'), ('ၢ', 'ၢ'), ('ၧ', 'ၨ'), + ('\u{1071}', '\u{1074}'), ('\u{1082}', '\u{1086}'), ('ႜ', '\u{109d}'), + ('\u{135f}', '\u{135f}'), ('\u{1712}', '\u{1713}'), + ('\u{1732}', '\u{1733}'), ('\u{1752}', '\u{1753}'), + ('\u{1772}', '\u{1773}'), ('ា', 'ៈ'), ('\u{1885}', '\u{1886}'), + ('\u{18a9}', '\u{18a9}'), ('\u{1920}', 'ᤫ'), ('ᤰ', 'ᤸ'), + ('\u{1a17}', '\u{1a1b}'), ('ᩕ', '\u{1a5e}'), ('ᩡ', '\u{1a74}'), + ('\u{1b00}', 'ᬄ'), ('ᬵ', 'ᭃ'), ('\u{1b80}', 'ᮂ'), + ('ᮡ', '\u{1ba9}'), ('\u{1bac}', '\u{1bad}'), ('ᯧ', '\u{1bf1}'), + ('ᰤ', 'ᰵ'), ('ᳲ', 'ᳳ'), ('\u{1de7}', '\u{1df4}'), ('Ⓐ', 'ⓩ'), + ('\u{2de0}', '\u{2dff}'), ('\u{a674}', '\u{a67b}'), + ('\u{a69e}', '\u{a69f}'), ('ꠣ', 'ꠧ'), ('ꢀ', 'ꢁ'), ('ꢴ', 'ꣃ'), + ('\u{a8c5}', '\u{a8c5}'), ('\u{a926}', '\u{a92a}'), ('\u{a947}', 'ꥒ'), + ('\u{a980}', 'ꦃ'), ('ꦴ', 'ꦿ'), ('\u{aa29}', '\u{aa36}'), + ('\u{aa43}', '\u{aa43}'), ('\u{aa4c}', 'ꩍ'), ('\u{aab0}', '\u{aab0}'), + ('\u{aab2}', '\u{aab4}'), ('\u{aab7}', '\u{aab8}'), + ('\u{aabe}', '\u{aabe}'), ('ꫫ', 'ꫯ'), ('ꫵ', 'ꫵ'), ('ꯣ', 'ꯪ'), + ('\u{fb1e}', '\u{fb1e}'), ('\u{10376}', '\u{1037a}'), + ('\u{10a01}', '\u{10a03}'), ('\u{10a05}', '\u{10a06}'), + ('\u{10a0c}', '\u{10a0f}'), ('\u{10d24}', '\u{10d27}'), ('𑀀', '𑀂'), + ('\u{11038}', '\u{11045}'), ('𑂂', '𑂂'), ('𑂰', '𑂸'), + ('\u{11100}', '\u{11102}'), ('\u{11127}', '\u{11132}'), ('𑅅', '𑅆'), + ('\u{11180}', '𑆂'), ('𑆳', '𑆿'), ('𑈬', '\u{11234}'), + ('\u{11237}', '\u{11237}'), ('\u{1123e}', '\u{1123e}'), + ('\u{112df}', '\u{112e8}'), ('\u{11300}', '𑌃'), ('\u{1133e}', '𑍄'), + ('𑍇', '𑍈'), ('𑍋', '𑍌'), ('\u{11357}', '\u{11357}'), + ('𑍢', '𑍣'), ('𑐵', '𑑁'), ('\u{11443}', '𑑅'), + ('\u{114b0}', '𑓁'), ('\u{115af}', '\u{115b5}'), ('𑖸', '𑖾'), + ('\u{115dc}', '\u{115dd}'), ('𑘰', '𑘾'), ('\u{11640}', '\u{11640}'), + ('\u{116ab}', '\u{116b5}'), ('\u{1171d}', '\u{1172a}'), ('𑠬', '𑠸'), + ('\u{11a01}', '\u{11a0a}'), ('\u{11a35}', '𑨹'), + ('\u{11a3b}', '\u{11a3e}'), ('\u{11a51}', '\u{11a5b}'), + ('\u{11a8a}', '𑪗'), ('𑰯', '\u{11c36}'), ('\u{11c38}', '𑰾'), + ('\u{11c92}', '\u{11ca7}'), ('𑲩', '\u{11cb6}'), + ('\u{11d31}', '\u{11d36}'), ('\u{11d3a}', '\u{11d3a}'), + ('\u{11d3c}', '\u{11d3d}'), ('\u{11d3f}', '\u{11d41}'), + ('\u{11d43}', '\u{11d43}'), ('\u{11d47}', '\u{11d47}'), ('𑶊', '𑶎'), + ('\u{11d90}', '\u{11d91}'), ('𑶓', '𑶖'), ('\u{11ef3}', '𑻶'), + ('\u{16b30}', '\u{16b36}'), ('𖽑', '𖽾'), ('\u{1bc9e}', '\u{1bc9e}'), + ('\u{1e000}', '\u{1e006}'), ('\u{1e008}', '\u{1e018}'), + ('\u{1e01b}', '\u{1e021}'), ('\u{1e023}', '\u{1e024}'), + ('\u{1e026}', '\u{1e02a}'), ('\u{1e947}', '\u{1e947}'), ('🄰', '🅉'), + ('🅐', '🅩'), ('🅰', '🆉'), ]; pub const OTHER_DEFAULT_IGNORABLE_CODE_POINT: &'static [(char, char)] = &[ - ('͏', '͏'), ('ᅟ', 'ᅠ'), ('឴', '឵'), ('\u{2065}', '\u{2065}'), - ('ㅤ', 'ㅤ'), ('ᅠ', 'ᅠ'), ('\u{fff0}', '\u{fff8}'), - ('\u{e0000}', '\u{e0000}'), ('\u{e0002}', '\u{e001f}'), - ('\u{e0080}', '\u{e00ff}'), ('\u{e01f0}', '\u{e0fff}'), + ('\u{34f}', '\u{34f}'), ('ᅟ', 'ᅠ'), ('\u{17b4}', '\u{17b5}'), + ('\u{2065}', '\u{2065}'), ('ㅤ', 'ㅤ'), ('ᅠ', 'ᅠ'), + ('\u{fff0}', '\u{fff8}'), ('\u{e0000}', '\u{e0000}'), + ('\u{e0002}', '\u{e001f}'), ('\u{e0080}', '\u{e00ff}'), + ('\u{e01f0}', '\u{e0fff}'), ]; pub const OTHER_GRAPHEME_EXTEND: &'static [(char, char)] = &[ - ('া', 'া'), ('ৗ', 'ৗ'), ('ା', 'ା'), ('ୗ', 'ୗ'), - ('ா', 'ா'), ('ௗ', 'ௗ'), ('ೂ', 'ೂ'), ('ೕ', 'ೖ'), - ('ാ', 'ാ'), ('ൗ', 'ൗ'), ('ා', 'ා'), ('ෟ', 'ෟ'), - ('\u{200c}', '\u{200c}'), ('〮', '〯'), ('゙', '゚'), ('𑌾', '𑌾'), - ('𑍗', '𑍗'), ('𑒰', '𑒰'), ('𑒽', '𑒽'), ('𑖯', '𑖯'), - ('𝅥', '𝅥'), ('𝅮', '𝅲'), ('\u{e0020}', '\u{e007f}'), + ('\u{9be}', '\u{9be}'), ('\u{9d7}', '\u{9d7}'), ('\u{b3e}', '\u{b3e}'), + ('\u{b57}', '\u{b57}'), ('\u{bbe}', '\u{bbe}'), ('\u{bd7}', '\u{bd7}'), + ('\u{cc2}', '\u{cc2}'), ('\u{cd5}', '\u{cd6}'), ('\u{d3e}', '\u{d3e}'), + ('\u{d57}', '\u{d57}'), ('\u{dcf}', '\u{dcf}'), ('\u{ddf}', '\u{ddf}'), + ('\u{200c}', '\u{200c}'), ('\u{302e}', '\u{302f}'), + ('\u{ff9e}', '\u{ff9f}'), ('\u{1133e}', '\u{1133e}'), + ('\u{11357}', '\u{11357}'), ('\u{114b0}', '\u{114b0}'), + ('\u{114bd}', '\u{114bd}'), ('\u{115af}', '\u{115af}'), + ('\u{1d165}', '\u{1d165}'), ('\u{1d16e}', '\u{1d172}'), + ('\u{e0020}', '\u{e007f}'), ]; pub const OTHER_ID_CONTINUE: &'static [(char, char)] = &[ @@ -2001,52 +2293,52 @@ ]; pub const OTHER_ID_START: &'static [(char, char)] = &[ - ('ᢅ', 'ᢆ'), ('℘', '℘'), ('℮', '℮'), ('゛', '゜'), + ('\u{1885}', '\u{1886}'), ('℘', '℘'), ('℮', '℮'), ('゛', '゜'), ]; pub const OTHER_LOWERCASE: &'static [(char, char)] = &[ ('ª', 'ª'), ('º', 'º'), ('ʰ', 'ʸ'), ('ˀ', 'ˁ'), ('ˠ', 'ˤ'), - ('ͅ', 'ͅ'), ('ͺ', 'ͺ'), ('ᴬ', 'ᵪ'), ('ᵸ', 'ᵸ'), ('ᶛ', 'ᶿ'), - ('ⁱ', 'ⁱ'), ('ⁿ', 'ⁿ'), ('ₐ', 'ₜ'), ('ⅰ', 'ⅿ'), - ('ⓐ', 'ⓩ'), ('ⱼ', 'ⱽ'), ('ꚜ', 'ꚝ'), ('ꝰ', 'ꝰ'), - ('ꟸ', 'ꟹ'), ('ꭜ', 'ꭟ'), + ('\u{345}', '\u{345}'), ('ͺ', 'ͺ'), ('ᴬ', 'ᵪ'), ('ᵸ', 'ᵸ'), + ('ᶛ', 'ᶿ'), ('ⁱ', 'ⁱ'), ('ⁿ', 'ⁿ'), ('ₐ', 'ₜ'), + ('ⅰ', 'ⅿ'), ('ⓐ', 'ⓩ'), ('ⱼ', 'ⱽ'), ('ꚜ', 'ꚝ'), + ('ꝰ', 'ꝰ'), ('ꟸ', 'ꟹ'), ('ꭜ', 'ꭟ'), ]; pub const OTHER_MATH: &'static [(char, char)] = &[ ('^', '^'), ('ϐ', 'ϒ'), ('ϕ', 'ϕ'), ('ϰ', 'ϱ'), ('ϴ', 'ϵ'), ('‖', '‖'), ('′', '‴'), ('⁀', '⁀'), ('\u{2061}', '\u{2064}'), - ('⁽', '⁾'), ('₍', '₎'), ('⃐', '⃜'), ('⃡', '⃡'), - ('⃥', '⃦'), ('⃫', '⃯'), ('ℂ', 'ℂ'), ('ℇ', 'ℇ'), - ('ℊ', 'ℓ'), ('ℕ', 'ℕ'), ('ℙ', 'ℝ'), ('ℤ', 'ℤ'), - ('ℨ', '℩'), ('ℬ', 'ℭ'), ('ℯ', 'ℱ'), ('ℳ', 'ℸ'), - ('ℼ', 'ℿ'), ('ⅅ', 'ⅉ'), ('↕', '↙'), ('↜', '↟'), - ('↡', '↢'), ('↤', '↥'), ('↧', '↧'), ('↩', '↭'), - ('↰', '↱'), ('↶', '↷'), ('↼', '⇍'), ('⇐', '⇑'), - ('⇓', '⇓'), ('⇕', '⇛'), ('⇝', '⇝'), ('⇤', '⇥'), - ('⌈', '⌋'), ('⎴', '⎵'), ('⎷', '⎷'), ('⏐', '⏐'), - ('⏢', '⏢'), ('■', '□'), ('▮', '▶'), ('▼', '◀'), - ('◆', '◇'), ('◊', '○'), ('●', '◓'), ('◢', '◢'), - ('◤', '◤'), ('◧', '◬'), ('★', '☆'), ('♀', '♀'), - ('♂', '♂'), ('♠', '♣'), ('♭', '♮'), ('⟅', '⟆'), - ('⟦', '⟯'), ('⦃', '⦘'), ('⧘', '⧛'), ('⧼', '⧽'), - ('﹡', '﹡'), ('﹣', '﹣'), ('﹨', '﹨'), ('\', '\'), - ('^', '^'), ('𝐀', '𝑔'), ('𝑖', '𝒜'), ('𝒞', '𝒟'), - ('𝒢', '𝒢'), ('𝒥', '𝒦'), ('𝒩', '𝒬'), ('𝒮', '𝒹'), - ('𝒻', '𝒻'), ('𝒽', '𝓃'), ('𝓅', '𝔅'), ('𝔇', '𝔊'), - ('𝔍', '𝔔'), ('𝔖', '𝔜'), ('𝔞', '𝔹'), ('𝔻', '𝔾'), - ('𝕀', '𝕄'), ('𝕆', '𝕆'), ('𝕊', '𝕐'), ('𝕒', '𝚥'), - ('𝚨', '𝛀'), ('𝛂', '𝛚'), ('𝛜', '𝛺'), ('𝛼', '𝜔'), - ('𝜖', '𝜴'), ('𝜶', '𝝎'), ('𝝐', '𝝮'), ('𝝰', '𝞈'), - ('𝞊', '𝞨'), ('𝞪', '𝟂'), ('𝟄', '𝟋'), ('𝟎', '𝟿'), - ('𞸀', '𞸃'), ('𞸅', '𞸟'), ('𞸡', '𞸢'), ('𞸤', '𞸤'), - ('𞸧', '𞸧'), ('𞸩', '𞸲'), ('𞸴', '𞸷'), ('𞸹', '𞸹'), - ('𞸻', '𞸻'), ('𞹂', '𞹂'), ('𞹇', '𞹇'), ('𞹉', '𞹉'), - ('𞹋', '𞹋'), ('𞹍', '𞹏'), ('𞹑', '𞹒'), ('𞹔', '𞹔'), - ('𞹗', '𞹗'), ('𞹙', '𞹙'), ('𞹛', '𞹛'), ('𞹝', '𞹝'), - ('𞹟', '𞹟'), ('𞹡', '𞹢'), ('𞹤', '𞹤'), ('𞹧', '𞹪'), - ('𞹬', '𞹲'), ('𞹴', '𞹷'), ('𞹹', '𞹼'), ('𞹾', '𞹾'), - ('𞺀', '𞺉'), ('𞺋', '𞺛'), ('𞺡', '𞺣'), ('𞺥', '𞺩'), - ('𞺫', '𞺻'), + ('⁽', '⁾'), ('₍', '₎'), ('\u{20d0}', '\u{20dc}'), + ('\u{20e1}', '\u{20e1}'), ('\u{20e5}', '\u{20e6}'), + ('\u{20eb}', '\u{20ef}'), ('ℂ', 'ℂ'), ('ℇ', 'ℇ'), ('ℊ', 'ℓ'), + ('ℕ', 'ℕ'), ('ℙ', 'ℝ'), ('ℤ', 'ℤ'), ('ℨ', '℩'), + ('ℬ', 'ℭ'), ('ℯ', 'ℱ'), ('ℳ', 'ℸ'), ('ℼ', 'ℿ'), + ('ⅅ', 'ⅉ'), ('↕', '↙'), ('↜', '↟'), ('↡', '↢'), + ('↤', '↥'), ('↧', '↧'), ('↩', '↭'), ('↰', '↱'), + ('↶', '↷'), ('↼', '⇍'), ('⇐', '⇑'), ('⇓', '⇓'), + ('⇕', '⇛'), ('⇝', '⇝'), ('⇤', '⇥'), ('⌈', '⌋'), + ('⎴', '⎵'), ('⎷', '⎷'), ('⏐', '⏐'), ('⏢', '⏢'), + ('■', '□'), ('▮', '▶'), ('▼', '◀'), ('◆', '◇'), + ('◊', '○'), ('●', '◓'), ('◢', '◢'), ('◤', '◤'), + ('◧', '◬'), ('★', '☆'), ('♀', '♀'), ('♂', '♂'), + ('♠', '♣'), ('♭', '♮'), ('⟅', '⟆'), ('⟦', '⟯'), + ('⦃', '⦘'), ('⧘', '⧛'), ('⧼', '⧽'), ('﹡', '﹡'), + ('﹣', '﹣'), ('﹨', '﹨'), ('\', '\'), ('^', '^'), + ('𝐀', '𝑔'), ('𝑖', '𝒜'), ('𝒞', '𝒟'), ('𝒢', '𝒢'), + ('𝒥', '𝒦'), ('𝒩', '𝒬'), ('𝒮', '𝒹'), ('𝒻', '𝒻'), + ('𝒽', '𝓃'), ('𝓅', '𝔅'), ('𝔇', '𝔊'), ('𝔍', '𝔔'), + ('𝔖', '𝔜'), ('𝔞', '𝔹'), ('𝔻', '𝔾'), ('𝕀', '𝕄'), + ('𝕆', '𝕆'), ('𝕊', '𝕐'), ('𝕒', '𝚥'), ('𝚨', '𝛀'), + ('𝛂', '𝛚'), ('𝛜', '𝛺'), ('𝛼', '𝜔'), ('𝜖', '𝜴'), + ('𝜶', '𝝎'), ('𝝐', '𝝮'), ('𝝰', '𝞈'), ('𝞊', '𝞨'), + ('𝞪', '𝟂'), ('𝟄', '𝟋'), ('𝟎', '𝟿'), ('𞸀', '𞸃'), + ('𞸅', '𞸟'), ('𞸡', '𞸢'), ('𞸤', '𞸤'), ('𞸧', '𞸧'), + ('𞸩', '𞸲'), ('𞸴', '𞸷'), ('𞸹', '𞸹'), ('𞸻', '𞸻'), + ('𞹂', '𞹂'), ('𞹇', '𞹇'), ('𞹉', '𞹉'), ('𞹋', '𞹋'), + ('𞹍', '𞹏'), ('𞹑', '𞹒'), ('𞹔', '𞹔'), ('𞹗', '𞹗'), + ('𞹙', '𞹙'), ('𞹛', '𞹛'), ('𞹝', '𞹝'), ('𞹟', '𞹟'), + ('𞹡', '𞹢'), ('𞹤', '𞹤'), ('𞹧', '𞹪'), ('𞹬', '𞹲'), + ('𞹴', '𞹷'), ('𞹹', '𞹼'), ('𞹾', '𞹾'), ('𞺀', '𞺉'), + ('𞺋', '𞺛'), ('𞺡', '𞺣'), ('𞺥', '𞺩'), ('𞺫', '𞺻'), ]; pub const OTHER_UPPERCASE: &'static [(char, char)] = &[ @@ -2100,14 +2392,13 @@ ('꡶', '꡷'), ('꣎', '꣏'), ('꤯', '꤯'), ('꧈', '꧉'), ('꩝', '꩟'), ('꫰', '꫱'), ('꯫', '꯫'), ('﹒', '﹒'), ('﹖', '﹗'), ('!', '!'), ('.', '.'), ('?', '?'), - ('。', '。'), ('𐩖', '𐩗'), ('\u{10f55}', '\u{10f59}'), - ('𑁇', '𑁈'), ('𑂾', '𑃁'), ('𑅁', '𑅃'), ('𑇅', '𑇆'), - ('𑇍', '𑇍'), ('𑇞', '𑇟'), ('𑈸', '𑈹'), ('𑈻', '𑈼'), - ('𑊩', '𑊩'), ('𑑋', '𑑌'), ('𑗂', '𑗃'), ('𑗉', '𑗗'), - ('𑙁', '𑙂'), ('𑜼', '𑜾'), ('𑩂', '𑩃'), ('𑪛', '𑪜'), - ('𑱁', '𑱂'), ('\u{11ef7}', '\u{11ef8}'), ('𖩮', '𖩯'), - ('𖫵', '𖫵'), ('𖬷', '𖬸'), ('𖭄', '𖭄'), - ('\u{16e98}', '\u{16e98}'), ('𛲟', '𛲟'), ('𝪈', '𝪈'), + ('。', '。'), ('𐩖', '𐩗'), ('𐽕', '𐽙'), ('𑁇', '𑁈'), + ('𑂾', '𑃁'), ('𑅁', '𑅃'), ('𑇅', '𑇆'), ('𑇍', '𑇍'), + ('𑇞', '𑇟'), ('𑈸', '𑈹'), ('𑈻', '𑈼'), ('𑊩', '𑊩'), + ('𑑋', '𑑌'), ('𑗂', '𑗃'), ('𑗉', '𑗗'), ('𑙁', '𑙂'), + ('𑜼', '𑜾'), ('𑩂', '𑩃'), ('𑪛', '𑪜'), ('𑱁', '𑱂'), + ('𑻷', '𑻸'), ('𖩮', '𖩯'), ('𖫵', '𖫵'), ('𖬷', '𖬸'), + ('𖭄', '𖭄'), ('𖺘', '𖺘'), ('𛲟', '𛲟'), ('𝪈', '𝪈'), ]; pub const SOFT_DOTTED: &'static [(char, char)] = &[ @@ -2131,27 +2422,26 @@ ('៚', '៚'), ('᠂', '᠅'), ('᠈', '᠉'), ('᥄', '᥅'), ('᪨', '᪫'), ('᭚', '᭛'), ('᭝', '᭟'), ('᰻', '᰿'), ('᱾', '᱿'), ('‼', '‽'), ('⁇', '⁉'), ('⸮', '⸮'), - ('⸼', '⸼'), ('⹁', '⹁'), ('\u{2e4c}', '\u{2e4c}'), - ('\u{2e4e}', '\u{2e4e}'), ('、', '。'), ('꓾', '꓿'), ('꘍', '꘏'), - ('꛳', '꛷'), ('꡶', '꡷'), ('꣎', '꣏'), ('꤯', '꤯'), - ('꧇', '꧉'), ('꩝', '꩟'), ('꫟', '꫟'), ('꫰', '꫱'), - ('꯫', '꯫'), ('﹐', '﹒'), ('﹔', '﹗'), ('!', '!'), - (',', ','), ('.', '.'), (':', ';'), ('?', '?'), - ('。', '。'), ('、', '、'), ('𐎟', '𐎟'), ('𐏐', '𐏐'), - ('𐡗', '𐡗'), ('𐤟', '𐤟'), ('𐩖', '𐩗'), ('𐫰', '𐫵'), - ('𐬺', '𐬿'), ('𐮙', '𐮜'), ('\u{10f55}', '\u{10f59}'), - ('𑁇', '𑁍'), ('𑂾', '𑃁'), ('𑅁', '𑅃'), ('𑇅', '𑇆'), - ('𑇍', '𑇍'), ('𑇞', '𑇟'), ('𑈸', '𑈼'), ('𑊩', '𑊩'), - ('𑑋', '𑑍'), ('𑑛', '𑑛'), ('𑗂', '𑗅'), ('𑗉', '𑗗'), - ('𑙁', '𑙂'), ('𑜼', '𑜾'), ('𑩂', '𑩃'), ('𑪛', '𑪜'), - ('𑪡', '𑪢'), ('𑱁', '𑱃'), ('𑱱', '𑱱'), - ('\u{11ef7}', '\u{11ef8}'), ('𒑰', '𒑴'), ('𖩮', '𖩯'), - ('𖫵', '𖫵'), ('𖬷', '𖬹'), ('𖭄', '𖭄'), - ('\u{16e97}', '\u{16e98}'), ('𛲟', '𛲟'), ('𝪇', '𝪊'), + ('⸼', '⸼'), ('⹁', '⹁'), ('⹌', '⹌'), ('⹎', '⹎'), + ('、', '。'), ('꓾', '꓿'), ('꘍', '꘏'), ('꛳', '꛷'), + ('꡶', '꡷'), ('꣎', '꣏'), ('꤯', '꤯'), ('꧇', '꧉'), + ('꩝', '꩟'), ('꫟', '꫟'), ('꫰', '꫱'), ('꯫', '꯫'), + ('﹐', '﹒'), ('﹔', '﹗'), ('!', '!'), (',', ','), + ('.', '.'), (':', ';'), ('?', '?'), ('。', '。'), + ('、', '、'), ('𐎟', '𐎟'), ('𐏐', '𐏐'), ('𐡗', '𐡗'), + ('𐤟', '𐤟'), ('𐩖', '𐩗'), ('𐫰', '𐫵'), ('𐬺', '𐬿'), + ('𐮙', '𐮜'), ('𐽕', '𐽙'), ('𑁇', '𑁍'), ('𑂾', '𑃁'), + ('𑅁', '𑅃'), ('𑇅', '𑇆'), ('𑇍', '𑇍'), ('𑇞', '𑇟'), + ('𑈸', '𑈼'), ('𑊩', '𑊩'), ('𑑋', '𑑍'), ('𑑛', '𑑛'), + ('𑗂', '𑗅'), ('𑗉', '𑗗'), ('𑙁', '𑙂'), ('𑜼', '𑜾'), + ('𑩂', '𑩃'), ('𑪛', '𑪜'), ('𑪡', '𑪢'), ('𑱁', '𑱃'), + ('𑱱', '𑱱'), ('𑻷', '𑻸'), ('𒑰', '𒑴'), ('𖩮', '𖩯'), + ('𖫵', '𖫵'), ('𖬷', '𖬹'), ('𖭄', '𖭄'), ('𖺗', '𖺘'), + ('𛲟', '𛲟'), ('𝪇', '𝪊'), ]; pub const UNIFIED_IDEOGRAPH: &'static [(char, char)] = &[ - ('㐀', '䶵'), ('一', '\u{9fef}'), ('﨎', '﨏'), ('﨑', '﨑'), + ('㐀', '䶵'), ('一', '鿯'), ('﨎', '﨏'), ('﨑', '﨑'), ('﨓', '﨔'), ('﨟', '﨟'), ('﨡', '﨡'), ('﨣', '﨤'), ('﨧', '﨩'), ('𠀀', '𪛖'), ('𪜀', '𫜴'), ('𫝀', '𫠝'), ('𫠠', '𬺡'), ('𬺰', '𮯠'), @@ -2213,89 +2503,88 @@ ('Ԛ', 'Ԛ'), ('Ԝ', 'Ԝ'), ('Ԟ', 'Ԟ'), ('Ԡ', 'Ԡ'), ('Ԣ', 'Ԣ'), ('Ԥ', 'Ԥ'), ('Ԧ', 'Ԧ'), ('Ԩ', 'Ԩ'), ('Ԫ', 'Ԫ'), ('Ԭ', 'Ԭ'), ('Ԯ', 'Ԯ'), ('Ա', 'Ֆ'), ('Ⴀ', 'Ⴥ'), ('Ⴧ', 'Ⴧ'), ('Ⴭ', 'Ⴭ'), - ('Ꭰ', 'Ᏽ'), ('\u{1c90}', '\u{1cba}'), ('\u{1cbd}', '\u{1cbf}'), - ('Ḁ', 'Ḁ'), ('Ḃ', 'Ḃ'), ('Ḅ', 'Ḅ'), ('Ḇ', 'Ḇ'), - ('Ḉ', 'Ḉ'), ('Ḋ', 'Ḋ'), ('Ḍ', 'Ḍ'), ('Ḏ', 'Ḏ'), - ('Ḑ', 'Ḑ'), ('Ḓ', 'Ḓ'), ('Ḕ', 'Ḕ'), ('Ḗ', 'Ḗ'), - ('Ḙ', 'Ḙ'), ('Ḛ', 'Ḛ'), ('Ḝ', 'Ḝ'), ('Ḟ', 'Ḟ'), - ('Ḡ', 'Ḡ'), ('Ḣ', 'Ḣ'), ('Ḥ', 'Ḥ'), ('Ḧ', 'Ḧ'), - ('Ḩ', 'Ḩ'), ('Ḫ', 'Ḫ'), ('Ḭ', 'Ḭ'), ('Ḯ', 'Ḯ'), - ('Ḱ', 'Ḱ'), ('Ḳ', 'Ḳ'), ('Ḵ', 'Ḵ'), ('Ḷ', 'Ḷ'), - ('Ḹ', 'Ḹ'), ('Ḻ', 'Ḻ'), ('Ḽ', 'Ḽ'), ('Ḿ', 'Ḿ'), - ('Ṁ', 'Ṁ'), ('Ṃ', 'Ṃ'), ('Ṅ', 'Ṅ'), ('Ṇ', 'Ṇ'), - ('Ṉ', 'Ṉ'), ('Ṋ', 'Ṋ'), ('Ṍ', 'Ṍ'), ('Ṏ', 'Ṏ'), - ('Ṑ', 'Ṑ'), ('Ṓ', 'Ṓ'), ('Ṕ', 'Ṕ'), ('Ṗ', 'Ṗ'), - ('Ṙ', 'Ṙ'), ('Ṛ', 'Ṛ'), ('Ṝ', 'Ṝ'), ('Ṟ', 'Ṟ'), - ('Ṡ', 'Ṡ'), ('Ṣ', 'Ṣ'), ('Ṥ', 'Ṥ'), ('Ṧ', 'Ṧ'), - ('Ṩ', 'Ṩ'), ('Ṫ', 'Ṫ'), ('Ṭ', 'Ṭ'), ('Ṯ', 'Ṯ'), - ('Ṱ', 'Ṱ'), ('Ṳ', 'Ṳ'), ('Ṵ', 'Ṵ'), ('Ṷ', 'Ṷ'), - ('Ṹ', 'Ṹ'), ('Ṻ', 'Ṻ'), ('Ṽ', 'Ṽ'), ('Ṿ', 'Ṿ'), - ('Ẁ', 'Ẁ'), ('Ẃ', 'Ẃ'), ('Ẅ', 'Ẅ'), ('Ẇ', 'Ẇ'), - ('Ẉ', 'Ẉ'), ('Ẋ', 'Ẋ'), ('Ẍ', 'Ẍ'), ('Ẏ', 'Ẏ'), - ('Ẑ', 'Ẑ'), ('Ẓ', 'Ẓ'), ('Ẕ', 'Ẕ'), ('ẞ', 'ẞ'), - ('Ạ', 'Ạ'), ('Ả', 'Ả'), ('Ấ', 'Ấ'), ('Ầ', 'Ầ'), - ('Ẩ', 'Ẩ'), ('Ẫ', 'Ẫ'), ('Ậ', 'Ậ'), ('Ắ', 'Ắ'), - ('Ằ', 'Ằ'), ('Ẳ', 'Ẳ'), ('Ẵ', 'Ẵ'), ('Ặ', 'Ặ'), - ('Ẹ', 'Ẹ'), ('Ẻ', 'Ẻ'), ('Ẽ', 'Ẽ'), ('Ế', 'Ế'), - ('Ề', 'Ề'), ('Ể', 'Ể'), ('Ễ', 'Ễ'), ('Ệ', 'Ệ'), - ('Ỉ', 'Ỉ'), ('Ị', 'Ị'), ('Ọ', 'Ọ'), ('Ỏ', 'Ỏ'), - ('Ố', 'Ố'), ('Ồ', 'Ồ'), ('Ổ', 'Ổ'), ('Ỗ', 'Ỗ'), - ('Ộ', 'Ộ'), ('Ớ', 'Ớ'), ('Ờ', 'Ờ'), ('Ở', 'Ở'), - ('Ỡ', 'Ỡ'), ('Ợ', 'Ợ'), ('Ụ', 'Ụ'), ('Ủ', 'Ủ'), - ('Ứ', 'Ứ'), ('Ừ', 'Ừ'), ('Ử', 'Ử'), ('Ữ', 'Ữ'), - ('Ự', 'Ự'), ('Ỳ', 'Ỳ'), ('Ỵ', 'Ỵ'), ('Ỷ', 'Ỷ'), - ('Ỹ', 'Ỹ'), ('Ỻ', 'Ỻ'), ('Ỽ', 'Ỽ'), ('Ỿ', 'Ỿ'), - ('Ἀ', 'Ἇ'), ('Ἐ', 'Ἕ'), ('Ἠ', 'Ἧ'), ('Ἰ', 'Ἷ'), - ('Ὀ', 'Ὅ'), ('Ὑ', 'Ὑ'), ('Ὓ', 'Ὓ'), ('Ὕ', 'Ὕ'), - ('Ὗ', 'Ὗ'), ('Ὠ', 'Ὧ'), ('Ᾰ', 'Ά'), ('Ὲ', 'Ή'), - ('Ῐ', 'Ί'), ('Ῠ', 'Ῥ'), ('Ὸ', 'Ώ'), ('ℂ', 'ℂ'), - ('ℇ', 'ℇ'), ('ℋ', 'ℍ'), ('ℐ', 'ℒ'), ('ℕ', 'ℕ'), - ('ℙ', 'ℝ'), ('ℤ', 'ℤ'), ('Ω', 'Ω'), ('ℨ', 'ℨ'), - ('K', 'ℭ'), ('ℰ', 'ℳ'), ('ℾ', 'ℿ'), ('ⅅ', 'ⅅ'), - ('Ⅰ', 'Ⅿ'), ('Ↄ', 'Ↄ'), ('Ⓐ', 'Ⓩ'), ('Ⰰ', 'Ⱞ'), - ('Ⱡ', 'Ⱡ'), ('Ɫ', 'Ɽ'), ('Ⱨ', 'Ⱨ'), ('Ⱪ', 'Ⱪ'), - ('Ⱬ', 'Ⱬ'), ('Ɑ', 'Ɒ'), ('Ⱳ', 'Ⱳ'), ('Ⱶ', 'Ⱶ'), - ('Ȿ', 'Ⲁ'), ('Ⲃ', 'Ⲃ'), ('Ⲅ', 'Ⲅ'), ('Ⲇ', 'Ⲇ'), - ('Ⲉ', 'Ⲉ'), ('Ⲋ', 'Ⲋ'), ('Ⲍ', 'Ⲍ'), ('Ⲏ', 'Ⲏ'), - ('Ⲑ', 'Ⲑ'), ('Ⲓ', 'Ⲓ'), ('Ⲕ', 'Ⲕ'), ('Ⲗ', 'Ⲗ'), - ('Ⲙ', 'Ⲙ'), ('Ⲛ', 'Ⲛ'), ('Ⲝ', 'Ⲝ'), ('Ⲟ', 'Ⲟ'), - ('Ⲡ', 'Ⲡ'), ('Ⲣ', 'Ⲣ'), ('Ⲥ', 'Ⲥ'), ('Ⲧ', 'Ⲧ'), - ('Ⲩ', 'Ⲩ'), ('Ⲫ', 'Ⲫ'), ('Ⲭ', 'Ⲭ'), ('Ⲯ', 'Ⲯ'), - ('Ⲱ', 'Ⲱ'), ('Ⲳ', 'Ⲳ'), ('Ⲵ', 'Ⲵ'), ('Ⲷ', 'Ⲷ'), - ('Ⲹ', 'Ⲹ'), ('Ⲻ', 'Ⲻ'), ('Ⲽ', 'Ⲽ'), ('Ⲿ', 'Ⲿ'), - ('Ⳁ', 'Ⳁ'), ('Ⳃ', 'Ⳃ'), ('Ⳅ', 'Ⳅ'), ('Ⳇ', 'Ⳇ'), - ('Ⳉ', 'Ⳉ'), ('Ⳋ', 'Ⳋ'), ('Ⳍ', 'Ⳍ'), ('Ⳏ', 'Ⳏ'), - ('Ⳑ', 'Ⳑ'), ('Ⳓ', 'Ⳓ'), ('Ⳕ', 'Ⳕ'), ('Ⳗ', 'Ⳗ'), - ('Ⳙ', 'Ⳙ'), ('Ⳛ', 'Ⳛ'), ('Ⳝ', 'Ⳝ'), ('Ⳟ', 'Ⳟ'), - ('Ⳡ', 'Ⳡ'), ('Ⳣ', 'Ⳣ'), ('Ⳬ', 'Ⳬ'), ('Ⳮ', 'Ⳮ'), - ('Ⳳ', 'Ⳳ'), ('Ꙁ', 'Ꙁ'), ('Ꙃ', 'Ꙃ'), ('Ꙅ', 'Ꙅ'), - ('Ꙇ', 'Ꙇ'), ('Ꙉ', 'Ꙉ'), ('Ꙋ', 'Ꙋ'), ('Ꙍ', 'Ꙍ'), - ('Ꙏ', 'Ꙏ'), ('Ꙑ', 'Ꙑ'), ('Ꙓ', 'Ꙓ'), ('Ꙕ', 'Ꙕ'), - ('Ꙗ', 'Ꙗ'), ('Ꙙ', 'Ꙙ'), ('Ꙛ', 'Ꙛ'), ('Ꙝ', 'Ꙝ'), - ('Ꙟ', 'Ꙟ'), ('Ꙡ', 'Ꙡ'), ('Ꙣ', 'Ꙣ'), ('Ꙥ', 'Ꙥ'), - ('Ꙧ', 'Ꙧ'), ('Ꙩ', 'Ꙩ'), ('Ꙫ', 'Ꙫ'), ('Ꙭ', 'Ꙭ'), - ('Ꚁ', 'Ꚁ'), ('Ꚃ', 'Ꚃ'), ('Ꚅ', 'Ꚅ'), ('Ꚇ', 'Ꚇ'), - ('Ꚉ', 'Ꚉ'), ('Ꚋ', 'Ꚋ'), ('Ꚍ', 'Ꚍ'), ('Ꚏ', 'Ꚏ'), - ('Ꚑ', 'Ꚑ'), ('Ꚓ', 'Ꚓ'), ('Ꚕ', 'Ꚕ'), ('Ꚗ', 'Ꚗ'), - ('Ꚙ', 'Ꚙ'), ('Ꚛ', 'Ꚛ'), ('Ꜣ', 'Ꜣ'), ('Ꜥ', 'Ꜥ'), - ('Ꜧ', 'Ꜧ'), ('Ꜩ', 'Ꜩ'), ('Ꜫ', 'Ꜫ'), ('Ꜭ', 'Ꜭ'), - ('Ꜯ', 'Ꜯ'), ('Ꜳ', 'Ꜳ'), ('Ꜵ', 'Ꜵ'), ('Ꜷ', 'Ꜷ'), - ('Ꜹ', 'Ꜹ'), ('Ꜻ', 'Ꜻ'), ('Ꜽ', 'Ꜽ'), ('Ꜿ', 'Ꜿ'), - ('Ꝁ', 'Ꝁ'), ('Ꝃ', 'Ꝃ'), ('Ꝅ', 'Ꝅ'), ('Ꝇ', 'Ꝇ'), - ('Ꝉ', 'Ꝉ'), ('Ꝋ', 'Ꝋ'), ('Ꝍ', 'Ꝍ'), ('Ꝏ', 'Ꝏ'), - ('Ꝑ', 'Ꝑ'), ('Ꝓ', 'Ꝓ'), ('Ꝕ', 'Ꝕ'), ('Ꝗ', 'Ꝗ'), - ('Ꝙ', 'Ꝙ'), ('Ꝛ', 'Ꝛ'), ('Ꝝ', 'Ꝝ'), ('Ꝟ', 'Ꝟ'), - ('Ꝡ', 'Ꝡ'), ('Ꝣ', 'Ꝣ'), ('Ꝥ', 'Ꝥ'), ('Ꝧ', 'Ꝧ'), - ('Ꝩ', 'Ꝩ'), ('Ꝫ', 'Ꝫ'), ('Ꝭ', 'Ꝭ'), ('Ꝯ', 'Ꝯ'), - ('Ꝺ', 'Ꝺ'), ('Ꝼ', 'Ꝼ'), ('Ᵹ', 'Ꝿ'), ('Ꞁ', 'Ꞁ'), - ('Ꞃ', 'Ꞃ'), ('Ꞅ', 'Ꞅ'), ('Ꞇ', 'Ꞇ'), ('Ꞌ', 'Ꞌ'), - ('Ɥ', 'Ɥ'), ('Ꞑ', 'Ꞑ'), ('Ꞓ', 'Ꞓ'), ('Ꞗ', 'Ꞗ'), - ('Ꞙ', 'Ꞙ'), ('Ꞛ', 'Ꞛ'), ('Ꞝ', 'Ꞝ'), ('Ꞟ', 'Ꞟ'), - ('Ꞡ', 'Ꞡ'), ('Ꞣ', 'Ꞣ'), ('Ꞥ', 'Ꞥ'), ('Ꞧ', 'Ꞧ'), - ('Ꞩ', 'Ꞩ'), ('Ɦ', 'Ɪ'), ('Ʞ', 'Ꞵ'), ('Ꞷ', 'Ꞷ'), - ('\u{a7b8}', '\u{a7b8}'), ('A', 'Z'), ('𐐀', '𐐧'), - ('𐒰', '𐓓'), ('𐲀', '𐲲'), ('𑢠', '𑢿'), - ('\u{16e40}', '\u{16e5f}'), ('𝐀', '𝐙'), ('𝐴', '𝑍'), + ('Ꭰ', 'Ᏽ'), ('Ა', 'Ჺ'), ('Ჽ', 'Ჿ'), ('Ḁ', 'Ḁ'), + ('Ḃ', 'Ḃ'), ('Ḅ', 'Ḅ'), ('Ḇ', 'Ḇ'), ('Ḉ', 'Ḉ'), + ('Ḋ', 'Ḋ'), ('Ḍ', 'Ḍ'), ('Ḏ', 'Ḏ'), ('Ḑ', 'Ḑ'), + ('Ḓ', 'Ḓ'), ('Ḕ', 'Ḕ'), ('Ḗ', 'Ḗ'), ('Ḙ', 'Ḙ'), + ('Ḛ', 'Ḛ'), ('Ḝ', 'Ḝ'), ('Ḟ', 'Ḟ'), ('Ḡ', 'Ḡ'), + ('Ḣ', 'Ḣ'), ('Ḥ', 'Ḥ'), ('Ḧ', 'Ḧ'), ('Ḩ', 'Ḩ'), + ('Ḫ', 'Ḫ'), ('Ḭ', 'Ḭ'), ('Ḯ', 'Ḯ'), ('Ḱ', 'Ḱ'), + ('Ḳ', 'Ḳ'), ('Ḵ', 'Ḵ'), ('Ḷ', 'Ḷ'), ('Ḹ', 'Ḹ'), + ('Ḻ', 'Ḻ'), ('Ḽ', 'Ḽ'), ('Ḿ', 'Ḿ'), ('Ṁ', 'Ṁ'), + ('Ṃ', 'Ṃ'), ('Ṅ', 'Ṅ'), ('Ṇ', 'Ṇ'), ('Ṉ', 'Ṉ'), + ('Ṋ', 'Ṋ'), ('Ṍ', 'Ṍ'), ('Ṏ', 'Ṏ'), ('Ṑ', 'Ṑ'), + ('Ṓ', 'Ṓ'), ('Ṕ', 'Ṕ'), ('Ṗ', 'Ṗ'), ('Ṙ', 'Ṙ'), + ('Ṛ', 'Ṛ'), ('Ṝ', 'Ṝ'), ('Ṟ', 'Ṟ'), ('Ṡ', 'Ṡ'), + ('Ṣ', 'Ṣ'), ('Ṥ', 'Ṥ'), ('Ṧ', 'Ṧ'), ('Ṩ', 'Ṩ'), + ('Ṫ', 'Ṫ'), ('Ṭ', 'Ṭ'), ('Ṯ', 'Ṯ'), ('Ṱ', 'Ṱ'), + ('Ṳ', 'Ṳ'), ('Ṵ', 'Ṵ'), ('Ṷ', 'Ṷ'), ('Ṹ', 'Ṹ'), + ('Ṻ', 'Ṻ'), ('Ṽ', 'Ṽ'), ('Ṿ', 'Ṿ'), ('Ẁ', 'Ẁ'), + ('Ẃ', 'Ẃ'), ('Ẅ', 'Ẅ'), ('Ẇ', 'Ẇ'), ('Ẉ', 'Ẉ'), + ('Ẋ', 'Ẋ'), ('Ẍ', 'Ẍ'), ('Ẏ', 'Ẏ'), ('Ẑ', 'Ẑ'), + ('Ẓ', 'Ẓ'), ('Ẕ', 'Ẕ'), ('ẞ', 'ẞ'), ('Ạ', 'Ạ'), + ('Ả', 'Ả'), ('Ấ', 'Ấ'), ('Ầ', 'Ầ'), ('Ẩ', 'Ẩ'), + ('Ẫ', 'Ẫ'), ('Ậ', 'Ậ'), ('Ắ', 'Ắ'), ('Ằ', 'Ằ'), + ('Ẳ', 'Ẳ'), ('Ẵ', 'Ẵ'), ('Ặ', 'Ặ'), ('Ẹ', 'Ẹ'), + ('Ẻ', 'Ẻ'), ('Ẽ', 'Ẽ'), ('Ế', 'Ế'), ('Ề', 'Ề'), + ('Ể', 'Ể'), ('Ễ', 'Ễ'), ('Ệ', 'Ệ'), ('Ỉ', 'Ỉ'), + ('Ị', 'Ị'), ('Ọ', 'Ọ'), ('Ỏ', 'Ỏ'), ('Ố', 'Ố'), + ('Ồ', 'Ồ'), ('Ổ', 'Ổ'), ('Ỗ', 'Ỗ'), ('Ộ', 'Ộ'), + ('Ớ', 'Ớ'), ('Ờ', 'Ờ'), ('Ở', 'Ở'), ('Ỡ', 'Ỡ'), + ('Ợ', 'Ợ'), ('Ụ', 'Ụ'), ('Ủ', 'Ủ'), ('Ứ', 'Ứ'), + ('Ừ', 'Ừ'), ('Ử', 'Ử'), ('Ữ', 'Ữ'), ('Ự', 'Ự'), + ('Ỳ', 'Ỳ'), ('Ỵ', 'Ỵ'), ('Ỷ', 'Ỷ'), ('Ỹ', 'Ỹ'), + ('Ỻ', 'Ỻ'), ('Ỽ', 'Ỽ'), ('Ỿ', 'Ỿ'), ('Ἀ', 'Ἇ'), + ('Ἐ', 'Ἕ'), ('Ἠ', 'Ἧ'), ('Ἰ', 'Ἷ'), ('Ὀ', 'Ὅ'), + ('Ὑ', 'Ὑ'), ('Ὓ', 'Ὓ'), ('Ὕ', 'Ὕ'), ('Ὗ', 'Ὗ'), + ('Ὠ', 'Ὧ'), ('Ᾰ', 'Ά'), ('Ὲ', 'Ή'), ('Ῐ', 'Ί'), + ('Ῠ', 'Ῥ'), ('Ὸ', 'Ώ'), ('ℂ', 'ℂ'), ('ℇ', 'ℇ'), + ('ℋ', 'ℍ'), ('ℐ', 'ℒ'), ('ℕ', 'ℕ'), ('ℙ', 'ℝ'), + ('ℤ', 'ℤ'), ('Ω', 'Ω'), ('ℨ', 'ℨ'), ('K', 'ℭ'), + ('ℰ', 'ℳ'), ('ℾ', 'ℿ'), ('ⅅ', 'ⅅ'), ('Ⅰ', 'Ⅿ'), + ('Ↄ', 'Ↄ'), ('Ⓐ', 'Ⓩ'), ('Ⰰ', 'Ⱞ'), ('Ⱡ', 'Ⱡ'), + ('Ɫ', 'Ɽ'), ('Ⱨ', 'Ⱨ'), ('Ⱪ', 'Ⱪ'), ('Ⱬ', 'Ⱬ'), + ('Ɑ', 'Ɒ'), ('Ⱳ', 'Ⱳ'), ('Ⱶ', 'Ⱶ'), ('Ȿ', 'Ⲁ'), + ('Ⲃ', 'Ⲃ'), ('Ⲅ', 'Ⲅ'), ('Ⲇ', 'Ⲇ'), ('Ⲉ', 'Ⲉ'), + ('Ⲋ', 'Ⲋ'), ('Ⲍ', 'Ⲍ'), ('Ⲏ', 'Ⲏ'), ('Ⲑ', 'Ⲑ'), + ('Ⲓ', 'Ⲓ'), ('Ⲕ', 'Ⲕ'), ('Ⲗ', 'Ⲗ'), ('Ⲙ', 'Ⲙ'), + ('Ⲛ', 'Ⲛ'), ('Ⲝ', 'Ⲝ'), ('Ⲟ', 'Ⲟ'), ('Ⲡ', 'Ⲡ'), + ('Ⲣ', 'Ⲣ'), ('Ⲥ', 'Ⲥ'), ('Ⲧ', 'Ⲧ'), ('Ⲩ', 'Ⲩ'), + ('Ⲫ', 'Ⲫ'), ('Ⲭ', 'Ⲭ'), ('Ⲯ', 'Ⲯ'), ('Ⲱ', 'Ⲱ'), + ('Ⲳ', 'Ⲳ'), ('Ⲵ', 'Ⲵ'), ('Ⲷ', 'Ⲷ'), ('Ⲹ', 'Ⲹ'), + ('Ⲻ', 'Ⲻ'), ('Ⲽ', 'Ⲽ'), ('Ⲿ', 'Ⲿ'), ('Ⳁ', 'Ⳁ'), + ('Ⳃ', 'Ⳃ'), ('Ⳅ', 'Ⳅ'), ('Ⳇ', 'Ⳇ'), ('Ⳉ', 'Ⳉ'), + ('Ⳋ', 'Ⳋ'), ('Ⳍ', 'Ⳍ'), ('Ⳏ', 'Ⳏ'), ('Ⳑ', 'Ⳑ'), + ('Ⳓ', 'Ⳓ'), ('Ⳕ', 'Ⳕ'), ('Ⳗ', 'Ⳗ'), ('Ⳙ', 'Ⳙ'), + ('Ⳛ', 'Ⳛ'), ('Ⳝ', 'Ⳝ'), ('Ⳟ', 'Ⳟ'), ('Ⳡ', 'Ⳡ'), + ('Ⳣ', 'Ⳣ'), ('Ⳬ', 'Ⳬ'), ('Ⳮ', 'Ⳮ'), ('Ⳳ', 'Ⳳ'), + ('Ꙁ', 'Ꙁ'), ('Ꙃ', 'Ꙃ'), ('Ꙅ', 'Ꙅ'), ('Ꙇ', 'Ꙇ'), + ('Ꙉ', 'Ꙉ'), ('Ꙋ', 'Ꙋ'), ('Ꙍ', 'Ꙍ'), ('Ꙏ', 'Ꙏ'), + ('Ꙑ', 'Ꙑ'), ('Ꙓ', 'Ꙓ'), ('Ꙕ', 'Ꙕ'), ('Ꙗ', 'Ꙗ'), + ('Ꙙ', 'Ꙙ'), ('Ꙛ', 'Ꙛ'), ('Ꙝ', 'Ꙝ'), ('Ꙟ', 'Ꙟ'), + ('Ꙡ', 'Ꙡ'), ('Ꙣ', 'Ꙣ'), ('Ꙥ', 'Ꙥ'), ('Ꙧ', 'Ꙧ'), + ('Ꙩ', 'Ꙩ'), ('Ꙫ', 'Ꙫ'), ('Ꙭ', 'Ꙭ'), ('Ꚁ', 'Ꚁ'), + ('Ꚃ', 'Ꚃ'), ('Ꚅ', 'Ꚅ'), ('Ꚇ', 'Ꚇ'), ('Ꚉ', 'Ꚉ'), + ('Ꚋ', 'Ꚋ'), ('Ꚍ', 'Ꚍ'), ('Ꚏ', 'Ꚏ'), ('Ꚑ', 'Ꚑ'), + ('Ꚓ', 'Ꚓ'), ('Ꚕ', 'Ꚕ'), ('Ꚗ', 'Ꚗ'), ('Ꚙ', 'Ꚙ'), + ('Ꚛ', 'Ꚛ'), ('Ꜣ', 'Ꜣ'), ('Ꜥ', 'Ꜥ'), ('Ꜧ', 'Ꜧ'), + ('Ꜩ', 'Ꜩ'), ('Ꜫ', 'Ꜫ'), ('Ꜭ', 'Ꜭ'), ('Ꜯ', 'Ꜯ'), + ('Ꜳ', 'Ꜳ'), ('Ꜵ', 'Ꜵ'), ('Ꜷ', 'Ꜷ'), ('Ꜹ', 'Ꜹ'), + ('Ꜻ', 'Ꜻ'), ('Ꜽ', 'Ꜽ'), ('Ꜿ', 'Ꜿ'), ('Ꝁ', 'Ꝁ'), + ('Ꝃ', 'Ꝃ'), ('Ꝅ', 'Ꝅ'), ('Ꝇ', 'Ꝇ'), ('Ꝉ', 'Ꝉ'), + ('Ꝋ', 'Ꝋ'), ('Ꝍ', 'Ꝍ'), ('Ꝏ', 'Ꝏ'), ('Ꝑ', 'Ꝑ'), + ('Ꝓ', 'Ꝓ'), ('Ꝕ', 'Ꝕ'), ('Ꝗ', 'Ꝗ'), ('Ꝙ', 'Ꝙ'), + ('Ꝛ', 'Ꝛ'), ('Ꝝ', 'Ꝝ'), ('Ꝟ', 'Ꝟ'), ('Ꝡ', 'Ꝡ'), + ('Ꝣ', 'Ꝣ'), ('Ꝥ', 'Ꝥ'), ('Ꝧ', 'Ꝧ'), ('Ꝩ', 'Ꝩ'), + ('Ꝫ', 'Ꝫ'), ('Ꝭ', 'Ꝭ'), ('Ꝯ', 'Ꝯ'), ('Ꝺ', 'Ꝺ'), + ('Ꝼ', 'Ꝼ'), ('Ᵹ', 'Ꝿ'), ('Ꞁ', 'Ꞁ'), ('Ꞃ', 'Ꞃ'), + ('Ꞅ', 'Ꞅ'), ('Ꞇ', 'Ꞇ'), ('Ꞌ', 'Ꞌ'), ('Ɥ', 'Ɥ'), + ('Ꞑ', 'Ꞑ'), ('Ꞓ', 'Ꞓ'), ('Ꞗ', 'Ꞗ'), ('Ꞙ', 'Ꞙ'), + ('Ꞛ', 'Ꞛ'), ('Ꞝ', 'Ꞝ'), ('Ꞟ', 'Ꞟ'), ('Ꞡ', 'Ꞡ'), + ('Ꞣ', 'Ꞣ'), ('Ꞥ', 'Ꞥ'), ('Ꞧ', 'Ꞧ'), ('Ꞩ', 'Ꞩ'), + ('Ɦ', 'Ɪ'), ('Ʞ', 'Ꞵ'), ('Ꞷ', 'Ꞷ'), ('Ꞹ', 'Ꞹ'), + ('A', 'Z'), ('𐐀', '𐐧'), ('𐒰', '𐓓'), ('𐲀', '𐲲'), + ('𑢠', '𑢿'), ('𖹀', '𖹟'), ('𝐀', '𝐙'), ('𝐴', '𝑍'), ('𝑨', '𝒁'), ('𝒜', '𝒜'), ('𝒞', '𝒟'), ('𝒢', '𝒢'), ('𝒥', '𝒦'), ('𝒩', '𝒬'), ('𝒮', '𝒵'), ('𝓐', '𝓩'), ('𝔄', '𝔅'), ('𝔇', '𝔊'), ('𝔍', '𝔔'), ('𝔖', '𝔜'), @@ -2308,7 +2597,8 @@ ]; pub const VARIATION_SELECTOR: &'static [(char, char)] = &[ - ('᠋', '᠍'), ('︀', '️'), ('󠄀', '󠇯'), + ('\u{180b}', '\u{180d}'), ('\u{fe00}', '\u{fe0f}'), + ('\u{e0100}', '\u{e01ef}'), ]; pub const WHITE_SPACE: &'static [(char, char)] = &[ @@ -2321,174 +2611,188 @@ pub const XID_CONTINUE: &'static [(char, char)] = &[ ('0', '9'), ('A', 'Z'), ('_', '_'), ('a', 'z'), ('ª', 'ª'), ('µ', 'µ'), ('·', '·'), ('º', 'º'), ('À', 'Ö'), ('Ø', 'ö'), ('ø', 'ˁ'), - ('ˆ', 'ˑ'), ('ˠ', 'ˤ'), ('ˬ', 'ˬ'), ('ˮ', 'ˮ'), ('̀', 'ʹ'), + ('ˆ', 'ˑ'), ('ˠ', 'ˤ'), ('ˬ', 'ˬ'), ('ˮ', 'ˮ'), ('\u{300}', 'ʹ'), ('Ͷ', 'ͷ'), ('ͻ', 'ͽ'), ('Ϳ', 'Ϳ'), ('Ά', 'Ί'), ('Ό', 'Ό'), - ('Ύ', 'Ρ'), ('Σ', 'ϵ'), ('Ϸ', 'ҁ'), ('҃', '҇'), ('Ҋ', 'ԯ'), - ('Ա', 'Ֆ'), ('ՙ', 'ՙ'), ('\u{560}', '\u{588}'), ('֑', 'ֽ'), - ('ֿ', 'ֿ'), ('ׁ', 'ׂ'), ('ׄ', 'ׅ'), ('ׇ', 'ׇ'), ('א', 'ת'), - ('\u{5ef}', 'ײ'), ('ؐ', 'ؚ'), ('ؠ', '٩'), ('ٮ', 'ۓ'), ('ە', 'ۜ'), - ('۟', 'ۨ'), ('۪', 'ۼ'), ('ۿ', 'ۿ'), ('ܐ', '݊'), ('ݍ', 'ޱ'), - ('߀', 'ߵ'), ('ߺ', 'ߺ'), ('\u{7fd}', '\u{7fd}'), ('ࠀ', '࠭'), - ('ࡀ', '࡛'), ('ࡠ', 'ࡪ'), ('ࢠ', 'ࢴ'), ('ࢶ', 'ࢽ'), - ('\u{8d3}', '࣡'), ('ࣣ', 'ॣ'), ('०', '९'), ('ॱ', 'ঃ'), - ('অ', 'ঌ'), ('এ', 'ঐ'), ('ও', 'ন'), ('প', 'র'), - ('ল', 'ল'), ('শ', 'হ'), ('়', 'ৄ'), ('ে', 'ৈ'), - ('ো', 'ৎ'), ('ৗ', 'ৗ'), ('ড়', 'ঢ়'), ('য়', 'ৣ'), - ('০', 'ৱ'), ('ৼ', 'ৼ'), ('\u{9fe}', '\u{9fe}'), ('ਁ', 'ਃ'), - ('ਅ', 'ਊ'), ('ਏ', 'ਐ'), ('ਓ', 'ਨ'), ('ਪ', 'ਰ'), - ('ਲ', 'ਲ਼'), ('ਵ', 'ਸ਼'), ('ਸ', 'ਹ'), ('਼', '਼'), - ('ਾ', 'ੂ'), ('ੇ', 'ੈ'), ('ੋ', '੍'), ('ੑ', 'ੑ'), - ('ਖ਼', 'ੜ'), ('ਫ਼', 'ਫ਼'), ('੦', 'ੵ'), ('ઁ', 'ઃ'), + ('Ύ', 'Ρ'), ('Σ', 'ϵ'), ('Ϸ', 'ҁ'), ('\u{483}', '\u{487}'), + ('Ҋ', 'ԯ'), ('Ա', 'Ֆ'), ('ՙ', 'ՙ'), ('ՠ', 'ֈ'), + ('\u{591}', '\u{5bd}'), ('\u{5bf}', '\u{5bf}'), ('\u{5c1}', '\u{5c2}'), + ('\u{5c4}', '\u{5c5}'), ('\u{5c7}', '\u{5c7}'), ('א', 'ת'), ('ׯ', 'ײ'), + ('\u{610}', '\u{61a}'), ('ؠ', '٩'), ('ٮ', 'ۓ'), ('ە', '\u{6dc}'), + ('\u{6df}', '\u{6e8}'), ('\u{6ea}', 'ۼ'), ('ۿ', 'ۿ'), ('ܐ', '\u{74a}'), + ('ݍ', 'ޱ'), ('߀', 'ߵ'), ('ߺ', 'ߺ'), ('\u{7fd}', '\u{7fd}'), + ('ࠀ', '\u{82d}'), ('ࡀ', '\u{85b}'), ('ࡠ', 'ࡪ'), ('ࢠ', 'ࢴ'), + ('ࢶ', 'ࢽ'), ('\u{8d3}', '\u{8e1}'), ('\u{8e3}', '\u{963}'), + ('०', '९'), ('ॱ', 'ঃ'), ('অ', 'ঌ'), ('এ', 'ঐ'), + ('ও', 'ন'), ('প', 'র'), ('ল', 'ল'), ('শ', 'হ'), + ('\u{9bc}', '\u{9c4}'), ('ে', 'ৈ'), ('ো', 'ৎ'), + ('\u{9d7}', '\u{9d7}'), ('ড়', 'ঢ়'), ('য়', '\u{9e3}'), ('০', 'ৱ'), + ('ৼ', 'ৼ'), ('\u{9fe}', '\u{9fe}'), ('\u{a01}', 'ਃ'), ('ਅ', 'ਊ'), + ('ਏ', 'ਐ'), ('ਓ', 'ਨ'), ('ਪ', 'ਰ'), ('ਲ', 'ਲ਼'), + ('ਵ', 'ਸ਼'), ('ਸ', 'ਹ'), ('\u{a3c}', '\u{a3c}'), ('ਾ', '\u{a42}'), + ('\u{a47}', '\u{a48}'), ('\u{a4b}', '\u{a4d}'), ('\u{a51}', '\u{a51}'), + ('ਖ਼', 'ੜ'), ('ਫ਼', 'ਫ਼'), ('੦', '\u{a75}'), ('\u{a81}', 'ઃ'), ('અ', 'ઍ'), ('એ', 'ઑ'), ('ઓ', 'ન'), ('પ', 'ર'), - ('લ', 'ળ'), ('વ', 'હ'), ('઼', 'ૅ'), ('ે', 'ૉ'), - ('ો', '્'), ('ૐ', 'ૐ'), ('ૠ', 'ૣ'), ('૦', '૯'), - ('ૹ', '૿'), ('ଁ', 'ଃ'), ('ଅ', 'ଌ'), ('ଏ', 'ଐ'), + ('લ', 'ળ'), ('વ', 'હ'), ('\u{abc}', '\u{ac5}'), ('\u{ac7}', 'ૉ'), + ('ો', '\u{acd}'), ('ૐ', 'ૐ'), ('ૠ', '\u{ae3}'), ('૦', '૯'), + ('ૹ', '\u{aff}'), ('\u{b01}', 'ଃ'), ('ଅ', 'ଌ'), ('ଏ', 'ଐ'), ('ଓ', 'ନ'), ('ପ', 'ର'), ('ଲ', 'ଳ'), ('ଵ', 'ହ'), - ('଼', 'ୄ'), ('େ', 'ୈ'), ('ୋ', '୍'), ('ୖ', 'ୗ'), - ('ଡ଼', 'ଢ଼'), ('ୟ', 'ୣ'), ('୦', '୯'), ('ୱ', 'ୱ'), - ('ஂ', 'ஃ'), ('அ', 'ஊ'), ('எ', 'ஐ'), ('ஒ', 'க'), - ('ங', 'ச'), ('ஜ', 'ஜ'), ('ஞ', 'ட'), ('ண', 'த'), - ('ந', 'ப'), ('ம', 'ஹ'), ('ா', 'ூ'), ('ெ', 'ை'), - ('ொ', '்'), ('ௐ', 'ௐ'), ('ௗ', 'ௗ'), ('௦', '௯'), - ('ఀ', 'ఌ'), ('ఎ', 'ఐ'), ('ఒ', 'న'), ('ప', 'హ'), - ('ఽ', 'ౄ'), ('ె', 'ై'), ('ొ', '్'), ('ౕ', 'ౖ'), - ('ౘ', 'ౚ'), ('ౠ', 'ౣ'), ('౦', '౯'), ('ಀ', 'ಃ'), - ('ಅ', 'ಌ'), ('ಎ', 'ಐ'), ('ಒ', 'ನ'), ('ಪ', 'ಳ'), - ('ವ', 'ಹ'), ('಼', 'ೄ'), ('ೆ', 'ೈ'), ('ೊ', '್'), - ('ೕ', 'ೖ'), ('ೞ', 'ೞ'), ('ೠ', 'ೣ'), ('೦', '೯'), - ('ೱ', 'ೲ'), ('ഀ', 'ഃ'), ('അ', 'ഌ'), ('എ', 'ഐ'), - ('ഒ', 'ൄ'), ('െ', 'ൈ'), ('ൊ', 'ൎ'), ('ൔ', 'ൗ'), - ('ൟ', 'ൣ'), ('൦', '൯'), ('ൺ', 'ൿ'), ('ං', 'ඃ'), + ('\u{b3c}', '\u{b44}'), ('େ', 'ୈ'), ('ୋ', '\u{b4d}'), + ('\u{b56}', '\u{b57}'), ('ଡ଼', 'ଢ଼'), ('ୟ', '\u{b63}'), ('୦', '୯'), + ('ୱ', 'ୱ'), ('\u{b82}', 'ஃ'), ('அ', 'ஊ'), ('எ', 'ஐ'), + ('ஒ', 'க'), ('ங', 'ச'), ('ஜ', 'ஜ'), ('ஞ', 'ட'), + ('ண', 'த'), ('ந', 'ப'), ('ம', 'ஹ'), ('\u{bbe}', 'ூ'), + ('ெ', 'ை'), ('ொ', '\u{bcd}'), ('ௐ', 'ௐ'), ('\u{bd7}', '\u{bd7}'), + ('௦', '௯'), ('\u{c00}', 'ఌ'), ('ఎ', 'ఐ'), ('ఒ', 'న'), + ('ప', 'హ'), ('ఽ', 'ౄ'), ('\u{c46}', '\u{c48}'), + ('\u{c4a}', '\u{c4d}'), ('\u{c55}', '\u{c56}'), ('ౘ', 'ౚ'), + ('ౠ', '\u{c63}'), ('౦', '౯'), ('ಀ', 'ಃ'), ('ಅ', 'ಌ'), + ('ಎ', 'ಐ'), ('ಒ', 'ನ'), ('ಪ', 'ಳ'), ('ವ', 'ಹ'), + ('\u{cbc}', 'ೄ'), ('\u{cc6}', 'ೈ'), ('ೊ', '\u{ccd}'), + ('\u{cd5}', '\u{cd6}'), ('ೞ', 'ೞ'), ('ೠ', '\u{ce3}'), ('೦', '೯'), + ('ೱ', 'ೲ'), ('\u{d00}', 'ഃ'), ('അ', 'ഌ'), ('എ', 'ഐ'), + ('ഒ', '\u{d44}'), ('െ', 'ൈ'), ('ൊ', 'ൎ'), ('ൔ', '\u{d57}'), + ('ൟ', '\u{d63}'), ('൦', '൯'), ('ൺ', 'ൿ'), ('ං', 'ඃ'), ('අ', 'ඖ'), ('ක', 'න'), ('ඳ', 'ර'), ('ල', 'ල'), - ('ව', 'ෆ'), ('්', '්'), ('ා', 'ු'), ('ූ', 'ූ'), - ('ෘ', 'ෟ'), ('෦', '෯'), ('ෲ', 'ෳ'), ('ก', 'ฺ'), - ('เ', '๎'), ('๐', '๙'), ('ກ', 'ຂ'), ('ຄ', 'ຄ'), - ('ງ', 'ຈ'), ('ຊ', 'ຊ'), ('ຍ', 'ຍ'), ('ດ', 'ທ'), - ('ນ', 'ຟ'), ('ມ', 'ຣ'), ('ລ', 'ລ'), ('ວ', 'ວ'), - ('ສ', 'ຫ'), ('ອ', 'ູ'), ('ົ', 'ຽ'), ('ເ', 'ໄ'), - ('ໆ', 'ໆ'), ('່', 'ໍ'), ('໐', '໙'), ('ໜ', 'ໟ'), - ('ༀ', 'ༀ'), ('༘', '༙'), ('༠', '༩'), ('༵', '༵'), - ('༷', '༷'), ('༹', '༹'), ('༾', 'ཇ'), ('ཉ', 'ཬ'), - ('ཱ', '྄'), ('྆', 'ྗ'), ('ྙ', 'ྼ'), ('࿆', '࿆'), - ('က', '၉'), ('ၐ', 'ႝ'), ('Ⴀ', 'Ⴥ'), ('Ⴧ', 'Ⴧ'), + ('ව', 'ෆ'), ('\u{dca}', '\u{dca}'), ('\u{dcf}', '\u{dd4}'), + ('\u{dd6}', '\u{dd6}'), ('ෘ', '\u{ddf}'), ('෦', '෯'), ('ෲ', 'ෳ'), + ('ก', '\u{e3a}'), ('เ', '\u{e4e}'), ('๐', '๙'), ('ກ', 'ຂ'), + ('ຄ', 'ຄ'), ('ງ', 'ຈ'), ('ຊ', 'ຊ'), ('ຍ', 'ຍ'), + ('ດ', 'ທ'), ('ນ', 'ຟ'), ('ມ', 'ຣ'), ('ລ', 'ລ'), + ('ວ', 'ວ'), ('ສ', 'ຫ'), ('ອ', '\u{eb9}'), ('\u{ebb}', 'ຽ'), + ('ເ', 'ໄ'), ('ໆ', 'ໆ'), ('\u{ec8}', '\u{ecd}'), ('໐', '໙'), + ('ໜ', 'ໟ'), ('ༀ', 'ༀ'), ('\u{f18}', '\u{f19}'), ('༠', '༩'), + ('\u{f35}', '\u{f35}'), ('\u{f37}', '\u{f37}'), ('\u{f39}', '\u{f39}'), + ('༾', 'ཇ'), ('ཉ', 'ཬ'), ('\u{f71}', '\u{f84}'), + ('\u{f86}', '\u{f97}'), ('\u{f99}', '\u{fbc}'), ('\u{fc6}', '\u{fc6}'), + ('က', '၉'), ('ၐ', '\u{109d}'), ('Ⴀ', 'Ⴥ'), ('Ⴧ', 'Ⴧ'), ('Ⴭ', 'Ⴭ'), ('ა', 'ჺ'), ('ჼ', 'ቈ'), ('ቊ', 'ቍ'), ('ቐ', 'ቖ'), ('ቘ', 'ቘ'), ('ቚ', 'ቝ'), ('በ', 'ኈ'), ('ኊ', 'ኍ'), ('ነ', 'ኰ'), ('ኲ', 'ኵ'), ('ኸ', 'ኾ'), ('ዀ', 'ዀ'), ('ዂ', 'ዅ'), ('ወ', 'ዖ'), ('ዘ', 'ጐ'), - ('ጒ', 'ጕ'), ('ጘ', 'ፚ'), ('፝', '፟'), ('፩', '፱'), + ('ጒ', 'ጕ'), ('ጘ', 'ፚ'), ('\u{135d}', '\u{135f}'), ('፩', '፱'), ('ᎀ', 'ᎏ'), ('Ꭰ', 'Ᏽ'), ('ᏸ', 'ᏽ'), ('ᐁ', 'ᙬ'), ('ᙯ', 'ᙿ'), ('ᚁ', 'ᚚ'), ('ᚠ', 'ᛪ'), ('ᛮ', 'ᛸ'), - ('ᜀ', 'ᜌ'), ('ᜎ', '᜔'), ('ᜠ', '᜴'), ('ᝀ', 'ᝓ'), - ('ᝠ', 'ᝬ'), ('ᝮ', 'ᝰ'), ('ᝲ', 'ᝳ'), ('ក', '៓'), - ('ៗ', 'ៗ'), ('ៜ', '៝'), ('០', '៩'), ('᠋', '᠍'), - ('᠐', '᠙'), ('ᠠ', '\u{1878}'), ('ᢀ', 'ᢪ'), ('ᢰ', 'ᣵ'), - ('ᤀ', 'ᤞ'), ('ᤠ', 'ᤫ'), ('ᤰ', '᤻'), ('᥆', 'ᥭ'), + ('ᜀ', 'ᜌ'), ('ᜎ', '\u{1714}'), ('ᜠ', '\u{1734}'), + ('ᝀ', '\u{1753}'), ('ᝠ', 'ᝬ'), ('ᝮ', 'ᝰ'), + ('\u{1772}', '\u{1773}'), ('ក', '\u{17d3}'), ('ៗ', 'ៗ'), + ('ៜ', '\u{17dd}'), ('០', '៩'), ('\u{180b}', '\u{180d}'), + ('᠐', '᠙'), ('ᠠ', 'ᡸ'), ('ᢀ', 'ᢪ'), ('ᢰ', 'ᣵ'), + ('ᤀ', 'ᤞ'), ('\u{1920}', 'ᤫ'), ('ᤰ', '\u{193b}'), ('᥆', 'ᥭ'), ('ᥰ', 'ᥴ'), ('ᦀ', 'ᦫ'), ('ᦰ', 'ᧉ'), ('᧐', '᧚'), - ('ᨀ', 'ᨛ'), ('ᨠ', 'ᩞ'), ('᩠', '᩼'), ('᩿', '᪉'), - ('᪐', '᪙'), ('ᪧ', 'ᪧ'), ('᪰', '᪽'), ('ᬀ', 'ᭋ'), - ('᭐', '᭙'), ('᭫', '᭳'), ('ᮀ', '᯳'), ('ᰀ', '᰷'), - ('᱀', '᱉'), ('ᱍ', 'ᱽ'), ('ᲀ', 'ᲈ'), ('\u{1c90}', '\u{1cba}'), - ('\u{1cbd}', '\u{1cbf}'), ('᳐', '᳒'), ('᳔', '᳹'), ('ᴀ', '᷹'), - ('᷻', 'ἕ'), ('Ἐ', 'Ἕ'), ('ἠ', 'ὅ'), ('Ὀ', 'Ὅ'), - ('ὐ', 'ὗ'), ('Ὑ', 'Ὑ'), ('Ὓ', 'Ὓ'), ('Ὕ', 'Ὕ'), - ('Ὗ', 'ώ'), ('ᾀ', 'ᾴ'), ('ᾶ', 'ᾼ'), ('ι', 'ι'), - ('ῂ', 'ῄ'), ('ῆ', 'ῌ'), ('ῐ', 'ΐ'), ('ῖ', 'Ί'), - ('ῠ', 'Ῥ'), ('ῲ', 'ῴ'), ('ῶ', 'ῼ'), ('‿', '⁀'), - ('⁔', '⁔'), ('ⁱ', 'ⁱ'), ('ⁿ', 'ⁿ'), ('ₐ', 'ₜ'), - ('⃐', '⃜'), ('⃡', '⃡'), ('⃥', '⃰'), ('ℂ', 'ℂ'), - ('ℇ', 'ℇ'), ('ℊ', 'ℓ'), ('ℕ', 'ℕ'), ('℘', 'ℝ'), - ('ℤ', 'ℤ'), ('Ω', 'Ω'), ('ℨ', 'ℨ'), ('K', 'ℹ'), - ('ℼ', 'ℿ'), ('ⅅ', 'ⅉ'), ('ⅎ', 'ⅎ'), ('Ⅰ', 'ↈ'), - ('Ⰰ', 'Ⱞ'), ('ⰰ', 'ⱞ'), ('Ⱡ', 'ⳤ'), ('Ⳬ', 'ⳳ'), - ('ⴀ', 'ⴥ'), ('ⴧ', 'ⴧ'), ('ⴭ', 'ⴭ'), ('ⴰ', 'ⵧ'), - ('ⵯ', 'ⵯ'), ('⵿', 'ⶖ'), ('ⶠ', 'ⶦ'), ('ⶨ', 'ⶮ'), - ('ⶰ', 'ⶶ'), ('ⶸ', 'ⶾ'), ('ⷀ', 'ⷆ'), ('ⷈ', 'ⷎ'), - ('ⷐ', 'ⷖ'), ('ⷘ', 'ⷞ'), ('ⷠ', 'ⷿ'), ('々', '〇'), - ('〡', '〯'), ('〱', '〵'), ('〸', '〼'), ('ぁ', 'ゖ'), - ('゙', '゚'), ('ゝ', 'ゟ'), ('ァ', 'ヺ'), ('ー', 'ヿ'), - ('ㄅ', '\u{312f}'), ('ㄱ', 'ㆎ'), ('ㆠ', 'ㆺ'), ('ㇰ', 'ㇿ'), - ('㐀', '䶵'), ('一', '\u{9fef}'), ('ꀀ', 'ꒌ'), ('ꓐ', 'ꓽ'), - ('ꔀ', 'ꘌ'), ('ꘐ', 'ꘫ'), ('Ꙁ', '꙯'), ('ꙴ', '꙽'), - ('ꙿ', '꛱'), ('ꜗ', 'ꜟ'), ('Ꜣ', 'ꞈ'), ('Ꞌ', '\u{a7b9}'), - ('ꟷ', 'ꠧ'), ('ꡀ', 'ꡳ'), ('ꢀ', 'ꣅ'), ('꣐', '꣙'), - ('꣠', 'ꣷ'), ('ꣻ', 'ꣻ'), ('ꣽ', '꤭'), ('ꤰ', '꥓'), - ('ꥠ', 'ꥼ'), ('ꦀ', '꧀'), ('ꧏ', '꧙'), ('ꧠ', 'ꧾ'), - ('ꨀ', 'ꨶ'), ('ꩀ', 'ꩍ'), ('꩐', '꩙'), ('ꩠ', 'ꩶ'), - ('ꩺ', 'ꫂ'), ('ꫛ', 'ꫝ'), ('ꫠ', 'ꫯ'), ('ꫲ', '꫶'), + ('ᨀ', '\u{1a1b}'), ('ᨠ', '\u{1a5e}'), ('\u{1a60}', '\u{1a7c}'), + ('\u{1a7f}', '᪉'), ('᪐', '᪙'), ('ᪧ', 'ᪧ'), + ('\u{1ab0}', '\u{1abd}'), ('\u{1b00}', 'ᭋ'), ('᭐', '᭙'), + ('\u{1b6b}', '\u{1b73}'), ('\u{1b80}', '᯳'), ('ᰀ', '\u{1c37}'), + ('᱀', '᱉'), ('ᱍ', 'ᱽ'), ('ᲀ', 'ᲈ'), ('Ა', 'Ჺ'), + ('Ჽ', 'Ჿ'), ('\u{1cd0}', '\u{1cd2}'), ('\u{1cd4}', '\u{1cf9}'), + ('ᴀ', '\u{1df9}'), ('\u{1dfb}', 'ἕ'), ('Ἐ', 'Ἕ'), ('ἠ', 'ὅ'), + ('Ὀ', 'Ὅ'), ('ὐ', 'ὗ'), ('Ὑ', 'Ὑ'), ('Ὓ', 'Ὓ'), + ('Ὕ', 'Ὕ'), ('Ὗ', 'ώ'), ('ᾀ', 'ᾴ'), ('ᾶ', 'ᾼ'), + ('ι', 'ι'), ('ῂ', 'ῄ'), ('ῆ', 'ῌ'), ('ῐ', 'ΐ'), + ('ῖ', 'Ί'), ('ῠ', 'Ῥ'), ('ῲ', 'ῴ'), ('ῶ', 'ῼ'), + ('‿', '⁀'), ('⁔', '⁔'), ('ⁱ', 'ⁱ'), ('ⁿ', 'ⁿ'), + ('ₐ', 'ₜ'), ('\u{20d0}', '\u{20dc}'), ('\u{20e1}', '\u{20e1}'), + ('\u{20e5}', '\u{20f0}'), ('ℂ', 'ℂ'), ('ℇ', 'ℇ'), ('ℊ', 'ℓ'), + ('ℕ', 'ℕ'), ('℘', 'ℝ'), ('ℤ', 'ℤ'), ('Ω', 'Ω'), + ('ℨ', 'ℨ'), ('K', 'ℹ'), ('ℼ', 'ℿ'), ('ⅅ', 'ⅉ'), + ('ⅎ', 'ⅎ'), ('Ⅰ', 'ↈ'), ('Ⰰ', 'Ⱞ'), ('ⰰ', 'ⱞ'), + ('Ⱡ', 'ⳤ'), ('Ⳬ', 'ⳳ'), ('ⴀ', 'ⴥ'), ('ⴧ', 'ⴧ'), + ('ⴭ', 'ⴭ'), ('ⴰ', 'ⵧ'), ('ⵯ', 'ⵯ'), ('\u{2d7f}', 'ⶖ'), + ('ⶠ', 'ⶦ'), ('ⶨ', 'ⶮ'), ('ⶰ', 'ⶶ'), ('ⶸ', 'ⶾ'), + ('ⷀ', 'ⷆ'), ('ⷈ', 'ⷎ'), ('ⷐ', 'ⷖ'), ('ⷘ', 'ⷞ'), + ('\u{2de0}', '\u{2dff}'), ('々', '〇'), ('〡', '\u{302f}'), + ('〱', '〵'), ('〸', '〼'), ('ぁ', 'ゖ'), ('\u{3099}', '\u{309a}'), + ('ゝ', 'ゟ'), ('ァ', 'ヺ'), ('ー', 'ヿ'), ('ㄅ', 'ㄯ'), + ('ㄱ', 'ㆎ'), ('ㆠ', 'ㆺ'), ('ㇰ', 'ㇿ'), ('㐀', '䶵'), + ('一', '鿯'), ('ꀀ', 'ꒌ'), ('ꓐ', 'ꓽ'), ('ꔀ', 'ꘌ'), + ('ꘐ', 'ꘫ'), ('Ꙁ', '\u{a66f}'), ('\u{a674}', '\u{a67d}'), + ('ꙿ', '\u{a6f1}'), ('ꜗ', 'ꜟ'), ('Ꜣ', 'ꞈ'), ('Ꞌ', 'ꞹ'), + ('ꟷ', 'ꠧ'), ('ꡀ', 'ꡳ'), ('ꢀ', '\u{a8c5}'), ('꣐', '꣙'), + ('\u{a8e0}', 'ꣷ'), ('ꣻ', 'ꣻ'), ('ꣽ', '\u{a92d}'), ('ꤰ', '꥓'), + ('ꥠ', 'ꥼ'), ('\u{a980}', '꧀'), ('ꧏ', '꧙'), ('ꧠ', 'ꧾ'), + ('ꨀ', '\u{aa36}'), ('ꩀ', 'ꩍ'), ('꩐', '꩙'), ('ꩠ', 'ꩶ'), + ('ꩺ', 'ꫂ'), ('ꫛ', 'ꫝ'), ('ꫠ', 'ꫯ'), ('ꫲ', '\u{aaf6}'), ('ꬁ', 'ꬆ'), ('ꬉ', 'ꬎ'), ('ꬑ', 'ꬖ'), ('ꬠ', 'ꬦ'), ('ꬨ', 'ꬮ'), ('ꬰ', 'ꭚ'), ('ꭜ', 'ꭥ'), ('ꭰ', 'ꯪ'), - ('꯬', '꯭'), ('꯰', '꯹'), ('가', '힣'), ('ힰ', 'ퟆ'), + ('꯬', '\u{abed}'), ('꯰', '꯹'), ('가', '힣'), ('ힰ', 'ퟆ'), ('ퟋ', 'ퟻ'), ('豈', '舘'), ('並', '龎'), ('ff', 'st'), ('ﬓ', 'ﬗ'), ('יִ', 'ﬨ'), ('שׁ', 'זּ'), ('טּ', 'לּ'), ('מּ', 'מּ'), ('נּ', 'סּ'), ('ףּ', 'פּ'), ('צּ', 'ﮱ'), ('ﯓ', 'ﱝ'), ('ﱤ', 'ﴽ'), ('ﵐ', 'ﶏ'), ('ﶒ', 'ﷇ'), - ('ﷰ', 'ﷹ'), ('︀', '️'), ('︠', '︯'), ('︳', '︴'), - ('﹍', '﹏'), ('ﹱ', 'ﹱ'), ('ﹳ', 'ﹳ'), ('ﹷ', 'ﹷ'), - ('ﹹ', 'ﹹ'), ('ﹻ', 'ﹻ'), ('ﹽ', 'ﹽ'), ('ﹿ', 'ﻼ'), - ('0', '9'), ('A', 'Z'), ('_', '_'), ('a', 'z'), - ('ヲ', 'ᄒ'), ('ᅡ', 'ᅦ'), ('ᅧ', 'ᅬ'), ('ᅭ', 'ᅲ'), - ('ᅳ', 'ᅵ'), ('𐀀', '𐀋'), ('𐀍', '𐀦'), ('𐀨', '𐀺'), - ('𐀼', '𐀽'), ('𐀿', '𐁍'), ('𐁐', '𐁝'), ('𐂀', '𐃺'), - ('𐅀', '𐅴'), ('𐇽', '𐇽'), ('𐊀', '𐊜'), ('𐊠', '𐋐'), - ('𐋠', '𐋠'), ('𐌀', '𐌟'), ('𐌭', '𐍊'), ('𐍐', '𐍺'), - ('𐎀', '𐎝'), ('𐎠', '𐏃'), ('𐏈', '𐏏'), ('𐏑', '𐏕'), - ('𐐀', '𐒝'), ('𐒠', '𐒩'), ('𐒰', '𐓓'), ('𐓘', '𐓻'), - ('𐔀', '𐔧'), ('𐔰', '𐕣'), ('𐘀', '𐜶'), ('𐝀', '𐝕'), - ('𐝠', '𐝧'), ('𐠀', '𐠅'), ('𐠈', '𐠈'), ('𐠊', '𐠵'), - ('𐠷', '𐠸'), ('𐠼', '𐠼'), ('𐠿', '𐡕'), ('𐡠', '𐡶'), - ('𐢀', '𐢞'), ('𐣠', '𐣲'), ('𐣴', '𐣵'), ('𐤀', '𐤕'), - ('𐤠', '𐤹'), ('𐦀', '𐦷'), ('𐦾', '𐦿'), ('𐨀', '𐨃'), - ('𐨅', '𐨆'), ('𐨌', '𐨓'), ('𐨕', '𐨗'), ('𐨙', '\u{10a35}'), - ('𐨸', '𐨺'), ('𐨿', '𐨿'), ('𐩠', '𐩼'), ('𐪀', '𐪜'), - ('𐫀', '𐫇'), ('𐫉', '𐫦'), ('𐬀', '𐬵'), ('𐭀', '𐭕'), - ('𐭠', '𐭲'), ('𐮀', '𐮑'), ('𐰀', '𐱈'), ('𐲀', '𐲲'), - ('𐳀', '𐳲'), ('\u{10d00}', '\u{10d27}'), ('\u{10d30}', '\u{10d39}'), - ('\u{10f00}', '\u{10f1c}'), ('\u{10f27}', '\u{10f27}'), - ('\u{10f30}', '\u{10f50}'), ('𑀀', '𑁆'), ('𑁦', '𑁯'), - ('𑁿', '𑂺'), ('𑃐', '𑃨'), ('𑃰', '𑃹'), ('𑄀', '𑄴'), - ('𑄶', '𑄿'), ('\u{11144}', '\u{11146}'), ('𑅐', '𑅳'), - ('𑅶', '𑅶'), ('𑆀', '𑇄'), ('𑇉', '𑇌'), ('𑇐', '𑇚'), - ('𑇜', '𑇜'), ('𑈀', '𑈑'), ('𑈓', '𑈷'), ('𑈾', '𑈾'), - ('𑊀', '𑊆'), ('𑊈', '𑊈'), ('𑊊', '𑊍'), ('𑊏', '𑊝'), - ('𑊟', '𑊨'), ('𑊰', '𑋪'), ('𑋰', '𑋹'), ('𑌀', '𑌃'), - ('𑌅', '𑌌'), ('𑌏', '𑌐'), ('𑌓', '𑌨'), ('𑌪', '𑌰'), - ('𑌲', '𑌳'), ('𑌵', '𑌹'), ('\u{1133b}', '𑍄'), ('𑍇', '𑍈'), - ('𑍋', '𑍍'), ('𑍐', '𑍐'), ('𑍗', '𑍗'), ('𑍝', '𑍣'), - ('𑍦', '𑍬'), ('𑍰', '𑍴'), ('𑐀', '𑑊'), ('𑑐', '𑑙'), + ('ﷰ', 'ﷹ'), ('\u{fe00}', '\u{fe0f}'), ('\u{fe20}', '\u{fe2f}'), + ('︳', '︴'), ('﹍', '﹏'), ('ﹱ', 'ﹱ'), ('ﹳ', 'ﹳ'), + ('ﹷ', 'ﹷ'), ('ﹹ', 'ﹹ'), ('ﹻ', 'ﹻ'), ('ﹽ', 'ﹽ'), + ('ﹿ', 'ﻼ'), ('0', '9'), ('A', 'Z'), ('_', '_'), + ('a', 'z'), ('ヲ', 'ᄒ'), ('ᅡ', 'ᅦ'), ('ᅧ', 'ᅬ'), + ('ᅭ', 'ᅲ'), ('ᅳ', 'ᅵ'), ('𐀀', '𐀋'), ('𐀍', '𐀦'), + ('𐀨', '𐀺'), ('𐀼', '𐀽'), ('𐀿', '𐁍'), ('𐁐', '𐁝'), + ('𐂀', '𐃺'), ('𐅀', '𐅴'), ('\u{101fd}', '\u{101fd}'), + ('𐊀', '𐊜'), ('𐊠', '𐋐'), ('\u{102e0}', '\u{102e0}'), + ('𐌀', '𐌟'), ('𐌭', '𐍊'), ('𐍐', '\u{1037a}'), ('𐎀', '𐎝'), + ('𐎠', '𐏃'), ('𐏈', '𐏏'), ('𐏑', '𐏕'), ('𐐀', '𐒝'), + ('𐒠', '𐒩'), ('𐒰', '𐓓'), ('𐓘', '𐓻'), ('𐔀', '𐔧'), + ('𐔰', '𐕣'), ('𐘀', '𐜶'), ('𐝀', '𐝕'), ('𐝠', '𐝧'), + ('𐠀', '𐠅'), ('𐠈', '𐠈'), ('𐠊', '𐠵'), ('𐠷', '𐠸'), + ('𐠼', '𐠼'), ('𐠿', '𐡕'), ('𐡠', '𐡶'), ('𐢀', '𐢞'), + ('𐣠', '𐣲'), ('𐣴', '𐣵'), ('𐤀', '𐤕'), ('𐤠', '𐤹'), + ('𐦀', '𐦷'), ('𐦾', '𐦿'), ('𐨀', '\u{10a03}'), + ('\u{10a05}', '\u{10a06}'), ('\u{10a0c}', '𐨓'), ('𐨕', '𐨗'), + ('𐨙', '𐨵'), ('\u{10a38}', '\u{10a3a}'), ('\u{10a3f}', '\u{10a3f}'), + ('𐩠', '𐩼'), ('𐪀', '𐪜'), ('𐫀', '𐫇'), ('𐫉', '\u{10ae6}'), + ('𐬀', '𐬵'), ('𐭀', '𐭕'), ('𐭠', '𐭲'), ('𐮀', '𐮑'), + ('𐰀', '𐱈'), ('𐲀', '𐲲'), ('𐳀', '𐳲'), ('𐴀', '\u{10d27}'), + ('𐴰', '𐴹'), ('𐼀', '𐼜'), ('𐼧', '𐼧'), ('𐼰', '\u{10f50}'), + ('𑀀', '\u{11046}'), ('𑁦', '𑁯'), ('\u{1107f}', '\u{110ba}'), + ('𑃐', '𑃨'), ('𑃰', '𑃹'), ('\u{11100}', '\u{11134}'), + ('𑄶', '𑄿'), ('𑅄', '𑅆'), ('𑅐', '\u{11173}'), ('𑅶', '𑅶'), + ('\u{11180}', '𑇄'), ('\u{111c9}', '\u{111cc}'), ('𑇐', '𑇚'), + ('𑇜', '𑇜'), ('𑈀', '𑈑'), ('𑈓', '\u{11237}'), + ('\u{1123e}', '\u{1123e}'), ('𑊀', '𑊆'), ('𑊈', '𑊈'), + ('𑊊', '𑊍'), ('𑊏', '𑊝'), ('𑊟', '𑊨'), ('𑊰', '\u{112ea}'), + ('𑋰', '𑋹'), ('\u{11300}', '𑌃'), ('𑌅', '𑌌'), ('𑌏', '𑌐'), + ('𑌓', '𑌨'), ('𑌪', '𑌰'), ('𑌲', '𑌳'), ('𑌵', '𑌹'), + ('\u{1133b}', '𑍄'), ('𑍇', '𑍈'), ('𑍋', '𑍍'), ('𑍐', '𑍐'), + ('\u{11357}', '\u{11357}'), ('𑍝', '𑍣'), ('\u{11366}', '\u{1136c}'), + ('\u{11370}', '\u{11374}'), ('𑐀', '𑑊'), ('𑑐', '𑑙'), ('\u{1145e}', '\u{1145e}'), ('𑒀', '𑓅'), ('𑓇', '𑓇'), - ('𑓐', '𑓙'), ('𑖀', '𑖵'), ('𑖸', '𑗀'), ('𑗘', '𑗝'), - ('𑘀', '𑙀'), ('𑙄', '𑙄'), ('𑙐', '𑙙'), ('𑚀', '𑚷'), - ('𑛀', '𑛉'), ('𑜀', '\u{1171a}'), ('𑜝', '𑜫'), ('𑜰', '𑜹'), - ('\u{11800}', '\u{1183a}'), ('𑢠', '𑣩'), ('𑣿', '𑣿'), - ('𑨀', '𑨾'), ('𑩇', '𑩇'), ('𑩐', '𑪃'), ('𑪆', '𑪙'), - ('\u{11a9d}', '\u{11a9d}'), ('𑫀', '𑫸'), ('𑰀', '𑰈'), - ('𑰊', '𑰶'), ('𑰸', '𑱀'), ('𑱐', '𑱙'), ('𑱲', '𑲏'), - ('𑲒', '𑲧'), ('𑲩', '𑲶'), ('𑴀', '𑴆'), ('𑴈', '𑴉'), - ('𑴋', '𑴶'), ('𑴺', '𑴺'), ('𑴼', '𑴽'), ('𑴿', '𑵇'), - ('𑵐', '𑵙'), ('\u{11d60}', '\u{11d65}'), ('\u{11d67}', '\u{11d68}'), - ('\u{11d6a}', '\u{11d8e}'), ('\u{11d90}', '\u{11d91}'), - ('\u{11d93}', '\u{11d98}'), ('\u{11da0}', '\u{11da9}'), - ('\u{11ee0}', '\u{11ef6}'), ('𒀀', '𒎙'), ('𒐀', '𒑮'), - ('𒒀', '𒕃'), ('𓀀', '𓐮'), ('𔐀', '𔙆'), ('𖠀', '𖨸'), - ('𖩀', '𖩞'), ('𖩠', '𖩩'), ('𖫐', '𖫭'), ('𖫰', '𖫴'), - ('𖬀', '𖬶'), ('𖭀', '𖭃'), ('𖭐', '𖭙'), ('𖭣', '𖭷'), - ('𖭽', '𖮏'), ('\u{16e40}', '\u{16e7f}'), ('𖼀', '𖽄'), - ('𖽐', '𖽾'), ('𖾏', '𖾟'), ('𖿠', '𖿡'), ('𗀀', '\u{187f1}'), - ('𘠀', '𘫲'), ('𛀀', '𛄞'), ('𛅰', '𛋻'), ('𛰀', '𛱪'), - ('𛱰', '𛱼'), ('𛲀', '𛲈'), ('𛲐', '𛲙'), ('𛲝', '𛲞'), - ('𝅥', '𝅩'), ('𝅭', '𝅲'), ('𝅻', '𝆂'), ('𝆅', '𝆋'), - ('𝆪', '𝆭'), ('𝉂', '𝉄'), ('𝐀', '𝑔'), ('𝑖', '𝒜'), - ('𝒞', '𝒟'), ('𝒢', '𝒢'), ('𝒥', '𝒦'), ('𝒩', '𝒬'), - ('𝒮', '𝒹'), ('𝒻', '𝒻'), ('𝒽', '𝓃'), ('𝓅', '𝔅'), - ('𝔇', '𝔊'), ('𝔍', '𝔔'), ('𝔖', '𝔜'), ('𝔞', '𝔹'), - ('𝔻', '𝔾'), ('𝕀', '𝕄'), ('𝕆', '𝕆'), ('𝕊', '𝕐'), - ('𝕒', '𝚥'), ('𝚨', '𝛀'), ('𝛂', '𝛚'), ('𝛜', '𝛺'), - ('𝛼', '𝜔'), ('𝜖', '𝜴'), ('𝜶', '𝝎'), ('𝝐', '𝝮'), - ('𝝰', '𝞈'), ('𝞊', '𝞨'), ('𝞪', '𝟂'), ('𝟄', '𝟋'), - ('𝟎', '𝟿'), ('𝨀', '𝨶'), ('𝨻', '𝩬'), ('𝩵', '𝩵'), - ('𝪄', '𝪄'), ('𝪛', '𝪟'), ('𝪡', '𝪯'), ('𞀀', '𞀆'), - ('𞀈', '𞀘'), ('𞀛', '𞀡'), ('𞀣', '𞀤'), ('𞀦', '𞀪'), - ('𞠀', '𞣄'), ('𞣐', '𞣖'), ('𞤀', '𞥊'), ('𞥐', '𞥙'), + ('𑓐', '𑓙'), ('𑖀', '\u{115b5}'), ('𑖸', '\u{115c0}'), + ('𑗘', '\u{115dd}'), ('𑘀', '\u{11640}'), ('𑙄', '𑙄'), + ('𑙐', '𑙙'), ('𑚀', '\u{116b7}'), ('𑛀', '𑛉'), ('𑜀', '𑜚'), + ('\u{1171d}', '\u{1172b}'), ('𑜰', '𑜹'), ('𑠀', '\u{1183a}'), + ('𑢠', '𑣩'), ('𑣿', '𑣿'), ('𑨀', '\u{11a3e}'), + ('\u{11a47}', '\u{11a47}'), ('𑩐', '𑪃'), ('𑪆', '\u{11a99}'), + ('𑪝', '𑪝'), ('𑫀', '𑫸'), ('𑰀', '𑰈'), ('𑰊', '\u{11c36}'), + ('\u{11c38}', '𑱀'), ('𑱐', '𑱙'), ('𑱲', '𑲏'), + ('\u{11c92}', '\u{11ca7}'), ('𑲩', '\u{11cb6}'), ('𑴀', '𑴆'), + ('𑴈', '𑴉'), ('𑴋', '\u{11d36}'), ('\u{11d3a}', '\u{11d3a}'), + ('\u{11d3c}', '\u{11d3d}'), ('\u{11d3f}', '\u{11d47}'), ('𑵐', '𑵙'), + ('𑵠', '𑵥'), ('𑵧', '𑵨'), ('𑵪', '𑶎'), + ('\u{11d90}', '\u{11d91}'), ('𑶓', '𑶘'), ('𑶠', '𑶩'), + ('𑻠', '𑻶'), ('𒀀', '𒎙'), ('𒐀', '𒑮'), ('𒒀', '𒕃'), + ('𓀀', '𓐮'), ('𔐀', '𔙆'), ('𖠀', '𖨸'), ('𖩀', '𖩞'), + ('𖩠', '𖩩'), ('𖫐', '𖫭'), ('\u{16af0}', '\u{16af4}'), + ('𖬀', '\u{16b36}'), ('𖭀', '𖭃'), ('𖭐', '𖭙'), ('𖭣', '𖭷'), + ('𖭽', '𖮏'), ('𖹀', '𖹿'), ('𖼀', '𖽄'), ('𖽐', '𖽾'), + ('\u{16f8f}', '𖾟'), ('𖿠', '𖿡'), ('𗀀', '𘟱'), ('𘠀', '𘫲'), + ('𛀀', '𛄞'), ('𛅰', '𛋻'), ('𛰀', '𛱪'), ('𛱰', '𛱼'), + ('𛲀', '𛲈'), ('𛲐', '𛲙'), ('\u{1bc9d}', '\u{1bc9e}'), + ('\u{1d165}', '\u{1d169}'), ('𝅭', '\u{1d172}'), + ('\u{1d17b}', '\u{1d182}'), ('\u{1d185}', '\u{1d18b}'), + ('\u{1d1aa}', '\u{1d1ad}'), ('\u{1d242}', '\u{1d244}'), ('𝐀', '𝑔'), + ('𝑖', '𝒜'), ('𝒞', '𝒟'), ('𝒢', '𝒢'), ('𝒥', '𝒦'), + ('𝒩', '𝒬'), ('𝒮', '𝒹'), ('𝒻', '𝒻'), ('𝒽', '𝓃'), + ('𝓅', '𝔅'), ('𝔇', '𝔊'), ('𝔍', '𝔔'), ('𝔖', '𝔜'), + ('𝔞', '𝔹'), ('𝔻', '𝔾'), ('𝕀', '𝕄'), ('𝕆', '𝕆'), + ('𝕊', '𝕐'), ('𝕒', '𝚥'), ('𝚨', '𝛀'), ('𝛂', '𝛚'), + ('𝛜', '𝛺'), ('𝛼', '𝜔'), ('𝜖', '𝜴'), ('𝜶', '𝝎'), + ('𝝐', '𝝮'), ('𝝰', '𝞈'), ('𝞊', '𝞨'), ('𝞪', '𝟂'), + ('𝟄', '𝟋'), ('𝟎', '𝟿'), ('\u{1da00}', '\u{1da36}'), + ('\u{1da3b}', '\u{1da6c}'), ('\u{1da75}', '\u{1da75}'), + ('\u{1da84}', '\u{1da84}'), ('\u{1da9b}', '\u{1da9f}'), + ('\u{1daa1}', '\u{1daaf}'), ('\u{1e000}', '\u{1e006}'), + ('\u{1e008}', '\u{1e018}'), ('\u{1e01b}', '\u{1e021}'), + ('\u{1e023}', '\u{1e024}'), ('\u{1e026}', '\u{1e02a}'), ('𞠀', '𞣄'), + ('\u{1e8d0}', '\u{1e8d6}'), ('𞤀', '\u{1e94a}'), ('𞥐', '𞥙'), ('𞸀', '𞸃'), ('𞸅', '𞸟'), ('𞸡', '𞸢'), ('𞸤', '𞸤'), ('𞸧', '𞸧'), ('𞸩', '𞸲'), ('𞸴', '𞸷'), ('𞸹', '𞸹'), ('𞸻', '𞸻'), ('𞹂', '𞹂'), ('𞹇', '𞹇'), ('𞹉', '𞹉'), @@ -2498,7 +2802,8 @@ ('𞹬', '𞹲'), ('𞹴', '𞹷'), ('𞹹', '𞹼'), ('𞹾', '𞹾'), ('𞺀', '𞺉'), ('𞺋', '𞺛'), ('𞺡', '𞺣'), ('𞺥', '𞺩'), ('𞺫', '𞺻'), ('𠀀', '𪛖'), ('𪜀', '𫜴'), ('𫝀', '𫠝'), - ('𫠠', '𬺡'), ('𬺰', '𮯠'), ('丽', '𪘀'), ('󠄀', '󠇯'), + ('𫠠', '𬺡'), ('𬺰', '𮯠'), ('丽', '𪘀'), + ('\u{e0100}', '\u{e01ef}'), ]; pub const XID_START: &'static [(char, char)] = &[ @@ -2507,152 +2812,149 @@ ('ˬ', 'ˬ'), ('ˮ', 'ˮ'), ('Ͱ', 'ʹ'), ('Ͷ', 'ͷ'), ('ͻ', 'ͽ'), ('Ϳ', 'Ϳ'), ('Ά', 'Ά'), ('Έ', 'Ί'), ('Ό', 'Ό'), ('Ύ', 'Ρ'), ('Σ', 'ϵ'), ('Ϸ', 'ҁ'), ('Ҋ', 'ԯ'), ('Ա', 'Ֆ'), ('ՙ', 'ՙ'), - ('\u{560}', '\u{588}'), ('א', 'ת'), ('\u{5ef}', 'ײ'), ('ؠ', 'ي'), - ('ٮ', 'ٯ'), ('ٱ', 'ۓ'), ('ە', 'ە'), ('ۥ', 'ۦ'), ('ۮ', 'ۯ'), - ('ۺ', 'ۼ'), ('ۿ', 'ۿ'), ('ܐ', 'ܐ'), ('ܒ', 'ܯ'), ('ݍ', 'ޥ'), - ('ޱ', 'ޱ'), ('ߊ', 'ߪ'), ('ߴ', 'ߵ'), ('ߺ', 'ߺ'), ('ࠀ', 'ࠕ'), - ('ࠚ', 'ࠚ'), ('ࠤ', 'ࠤ'), ('ࠨ', 'ࠨ'), ('ࡀ', 'ࡘ'), - ('ࡠ', 'ࡪ'), ('ࢠ', 'ࢴ'), ('ࢶ', 'ࢽ'), ('ऄ', 'ह'), - ('ऽ', 'ऽ'), ('ॐ', 'ॐ'), ('क़', 'ॡ'), ('ॱ', 'ঀ'), - ('অ', 'ঌ'), ('এ', 'ঐ'), ('ও', 'ন'), ('প', 'র'), - ('ল', 'ল'), ('শ', 'হ'), ('ঽ', 'ঽ'), ('ৎ', 'ৎ'), - ('ড়', 'ঢ়'), ('য়', 'ৡ'), ('ৰ', 'ৱ'), ('ৼ', 'ৼ'), - ('ਅ', 'ਊ'), ('ਏ', 'ਐ'), ('ਓ', 'ਨ'), ('ਪ', 'ਰ'), - ('ਲ', 'ਲ਼'), ('ਵ', 'ਸ਼'), ('ਸ', 'ਹ'), ('ਖ਼', 'ੜ'), - ('ਫ਼', 'ਫ਼'), ('ੲ', 'ੴ'), ('અ', 'ઍ'), ('એ', 'ઑ'), - ('ઓ', 'ન'), ('પ', 'ર'), ('લ', 'ળ'), ('વ', 'હ'), - ('ઽ', 'ઽ'), ('ૐ', 'ૐ'), ('ૠ', 'ૡ'), ('ૹ', 'ૹ'), - ('ଅ', 'ଌ'), ('ଏ', 'ଐ'), ('ଓ', 'ନ'), ('ପ', 'ର'), - ('ଲ', 'ଳ'), ('ଵ', 'ହ'), ('ଽ', 'ଽ'), ('ଡ଼', 'ଢ଼'), - ('ୟ', 'ୡ'), ('ୱ', 'ୱ'), ('ஃ', 'ஃ'), ('அ', 'ஊ'), - ('எ', 'ஐ'), ('ஒ', 'க'), ('ங', 'ச'), ('ஜ', 'ஜ'), - ('ஞ', 'ட'), ('ண', 'த'), ('ந', 'ப'), ('ம', 'ஹ'), - ('ௐ', 'ௐ'), ('అ', 'ఌ'), ('ఎ', 'ఐ'), ('ఒ', 'న'), - ('ప', 'హ'), ('ఽ', 'ఽ'), ('ౘ', 'ౚ'), ('ౠ', 'ౡ'), - ('ಀ', 'ಀ'), ('ಅ', 'ಌ'), ('ಎ', 'ಐ'), ('ಒ', 'ನ'), - ('ಪ', 'ಳ'), ('ವ', 'ಹ'), ('ಽ', 'ಽ'), ('ೞ', 'ೞ'), - ('ೠ', 'ೡ'), ('ೱ', 'ೲ'), ('അ', 'ഌ'), ('എ', 'ഐ'), - ('ഒ', 'ഺ'), ('ഽ', 'ഽ'), ('ൎ', 'ൎ'), ('ൔ', 'ൖ'), - ('ൟ', 'ൡ'), ('ൺ', 'ൿ'), ('අ', 'ඖ'), ('ක', 'න'), - ('ඳ', 'ර'), ('ල', 'ල'), ('ව', 'ෆ'), ('ก', 'ะ'), - ('า', 'า'), ('เ', 'ๆ'), ('ກ', 'ຂ'), ('ຄ', 'ຄ'), - ('ງ', 'ຈ'), ('ຊ', 'ຊ'), ('ຍ', 'ຍ'), ('ດ', 'ທ'), - ('ນ', 'ຟ'), ('ມ', 'ຣ'), ('ລ', 'ລ'), ('ວ', 'ວ'), - ('ສ', 'ຫ'), ('ອ', 'ະ'), ('າ', 'າ'), ('ຽ', 'ຽ'), - ('ເ', 'ໄ'), ('ໆ', 'ໆ'), ('ໜ', 'ໟ'), ('ༀ', 'ༀ'), - ('ཀ', 'ཇ'), ('ཉ', 'ཬ'), ('ྈ', 'ྌ'), ('က', 'ဪ'), - ('ဿ', 'ဿ'), ('ၐ', 'ၕ'), ('ၚ', 'ၝ'), ('ၡ', 'ၡ'), - ('ၥ', 'ၦ'), ('ၮ', 'ၰ'), ('ၵ', 'ႁ'), ('ႎ', 'ႎ'), - ('Ⴀ', 'Ⴥ'), ('Ⴧ', 'Ⴧ'), ('Ⴭ', 'Ⴭ'), ('ა', 'ჺ'), - ('ჼ', 'ቈ'), ('ቊ', 'ቍ'), ('ቐ', 'ቖ'), ('ቘ', 'ቘ'), - ('ቚ', 'ቝ'), ('በ', 'ኈ'), ('ኊ', 'ኍ'), ('ነ', 'ኰ'), - ('ኲ', 'ኵ'), ('ኸ', 'ኾ'), ('ዀ', 'ዀ'), ('ዂ', 'ዅ'), - ('ወ', 'ዖ'), ('ዘ', 'ጐ'), ('ጒ', 'ጕ'), ('ጘ', 'ፚ'), - ('ᎀ', 'ᎏ'), ('Ꭰ', 'Ᏽ'), ('ᏸ', 'ᏽ'), ('ᐁ', 'ᙬ'), - ('ᙯ', 'ᙿ'), ('ᚁ', 'ᚚ'), ('ᚠ', 'ᛪ'), ('ᛮ', 'ᛸ'), - ('ᜀ', 'ᜌ'), ('ᜎ', 'ᜑ'), ('ᜠ', 'ᜱ'), ('ᝀ', 'ᝑ'), - ('ᝠ', 'ᝬ'), ('ᝮ', 'ᝰ'), ('ក', 'ឳ'), ('ៗ', 'ៗ'), - ('ៜ', 'ៜ'), ('ᠠ', '\u{1878}'), ('ᢀ', 'ᢨ'), ('ᢪ', 'ᢪ'), - ('ᢰ', 'ᣵ'), ('ᤀ', 'ᤞ'), ('ᥐ', 'ᥭ'), ('ᥰ', 'ᥴ'), - ('ᦀ', 'ᦫ'), ('ᦰ', 'ᧉ'), ('ᨀ', 'ᨖ'), ('ᨠ', 'ᩔ'), - ('ᪧ', 'ᪧ'), ('ᬅ', 'ᬳ'), ('ᭅ', 'ᭋ'), ('ᮃ', 'ᮠ'), - ('ᮮ', 'ᮯ'), ('ᮺ', 'ᯥ'), ('ᰀ', 'ᰣ'), ('ᱍ', 'ᱏ'), - ('ᱚ', 'ᱽ'), ('ᲀ', 'ᲈ'), ('\u{1c90}', '\u{1cba}'), - ('\u{1cbd}', '\u{1cbf}'), ('ᳩ', 'ᳬ'), ('ᳮ', 'ᳱ'), ('ᳵ', 'ᳶ'), - ('ᴀ', 'ᶿ'), ('Ḁ', 'ἕ'), ('Ἐ', 'Ἕ'), ('ἠ', 'ὅ'), - ('Ὀ', 'Ὅ'), ('ὐ', 'ὗ'), ('Ὑ', 'Ὑ'), ('Ὓ', 'Ὓ'), - ('Ὕ', 'Ὕ'), ('Ὗ', 'ώ'), ('ᾀ', 'ᾴ'), ('ᾶ', 'ᾼ'), - ('ι', 'ι'), ('ῂ', 'ῄ'), ('ῆ', 'ῌ'), ('ῐ', 'ΐ'), - ('ῖ', 'Ί'), ('ῠ', 'Ῥ'), ('ῲ', 'ῴ'), ('ῶ', 'ῼ'), - ('ⁱ', 'ⁱ'), ('ⁿ', 'ⁿ'), ('ₐ', 'ₜ'), ('ℂ', 'ℂ'), - ('ℇ', 'ℇ'), ('ℊ', 'ℓ'), ('ℕ', 'ℕ'), ('℘', 'ℝ'), - ('ℤ', 'ℤ'), ('Ω', 'Ω'), ('ℨ', 'ℨ'), ('K', 'ℹ'), - ('ℼ', 'ℿ'), ('ⅅ', 'ⅉ'), ('ⅎ', 'ⅎ'), ('Ⅰ', 'ↈ'), - ('Ⰰ', 'Ⱞ'), ('ⰰ', 'ⱞ'), ('Ⱡ', 'ⳤ'), ('Ⳬ', 'ⳮ'), - ('Ⳳ', 'ⳳ'), ('ⴀ', 'ⴥ'), ('ⴧ', 'ⴧ'), ('ⴭ', 'ⴭ'), - ('ⴰ', 'ⵧ'), ('ⵯ', 'ⵯ'), ('ⶀ', 'ⶖ'), ('ⶠ', 'ⶦ'), - ('ⶨ', 'ⶮ'), ('ⶰ', 'ⶶ'), ('ⶸ', 'ⶾ'), ('ⷀ', 'ⷆ'), - ('ⷈ', 'ⷎ'), ('ⷐ', 'ⷖ'), ('ⷘ', 'ⷞ'), ('々', '〇'), - ('〡', '〩'), ('〱', '〵'), ('〸', '〼'), ('ぁ', 'ゖ'), - ('ゝ', 'ゟ'), ('ァ', 'ヺ'), ('ー', 'ヿ'), ('ㄅ', '\u{312f}'), - ('ㄱ', 'ㆎ'), ('ㆠ', 'ㆺ'), ('ㇰ', 'ㇿ'), ('㐀', '䶵'), - ('一', '\u{9fef}'), ('ꀀ', 'ꒌ'), ('ꓐ', 'ꓽ'), ('ꔀ', 'ꘌ'), - ('ꘐ', 'ꘟ'), ('ꘪ', 'ꘫ'), ('Ꙁ', 'ꙮ'), ('ꙿ', 'ꚝ'), - ('ꚠ', 'ꛯ'), ('ꜗ', 'ꜟ'), ('Ꜣ', 'ꞈ'), ('Ꞌ', '\u{a7b9}'), - ('ꟷ', 'ꠁ'), ('ꠃ', 'ꠅ'), ('ꠇ', 'ꠊ'), ('ꠌ', 'ꠢ'), - ('ꡀ', 'ꡳ'), ('ꢂ', 'ꢳ'), ('ꣲ', 'ꣷ'), ('ꣻ', 'ꣻ'), - ('ꣽ', '\u{a8fe}'), ('ꤊ', 'ꤥ'), ('ꤰ', 'ꥆ'), ('ꥠ', 'ꥼ'), - ('ꦄ', 'ꦲ'), ('ꧏ', 'ꧏ'), ('ꧠ', 'ꧤ'), ('ꧦ', 'ꧯ'), - ('ꧺ', 'ꧾ'), ('ꨀ', 'ꨨ'), ('ꩀ', 'ꩂ'), ('ꩄ', 'ꩋ'), - ('ꩠ', 'ꩶ'), ('ꩺ', 'ꩺ'), ('ꩾ', 'ꪯ'), ('ꪱ', 'ꪱ'), - ('ꪵ', 'ꪶ'), ('ꪹ', 'ꪽ'), ('ꫀ', 'ꫀ'), ('ꫂ', 'ꫂ'), - ('ꫛ', 'ꫝ'), ('ꫠ', 'ꫪ'), ('ꫲ', 'ꫴ'), ('ꬁ', 'ꬆ'), - ('ꬉ', 'ꬎ'), ('ꬑ', 'ꬖ'), ('ꬠ', 'ꬦ'), ('ꬨ', 'ꬮ'), - ('ꬰ', 'ꭚ'), ('ꭜ', 'ꭥ'), ('ꭰ', 'ꯢ'), ('가', '힣'), - ('ힰ', 'ퟆ'), ('ퟋ', 'ퟻ'), ('豈', '舘'), ('並', '龎'), - ('ff', 'st'), ('ﬓ', 'ﬗ'), ('יִ', 'יִ'), ('ײַ', 'ﬨ'), - ('שׁ', 'זּ'), ('טּ', 'לּ'), ('מּ', 'מּ'), ('נּ', 'סּ'), - ('ףּ', 'פּ'), ('צּ', 'ﮱ'), ('ﯓ', 'ﱝ'), ('ﱤ', 'ﴽ'), - ('ﵐ', 'ﶏ'), ('ﶒ', 'ﷇ'), ('ﷰ', 'ﷹ'), ('ﹱ', 'ﹱ'), - ('ﹳ', 'ﹳ'), ('ﹷ', 'ﹷ'), ('ﹹ', 'ﹹ'), ('ﹻ', 'ﹻ'), - ('ﹽ', 'ﹽ'), ('ﹿ', 'ﻼ'), ('A', 'Z'), ('a', 'z'), - ('ヲ', 'ン'), ('ᅠ', 'ᄒ'), ('ᅡ', 'ᅦ'), ('ᅧ', 'ᅬ'), - ('ᅭ', 'ᅲ'), ('ᅳ', 'ᅵ'), ('𐀀', '𐀋'), ('𐀍', '𐀦'), - ('𐀨', '𐀺'), ('𐀼', '𐀽'), ('𐀿', '𐁍'), ('𐁐', '𐁝'), - ('𐂀', '𐃺'), ('𐅀', '𐅴'), ('𐊀', '𐊜'), ('𐊠', '𐋐'), - ('𐌀', '𐌟'), ('𐌭', '𐍊'), ('𐍐', '𐍵'), ('𐎀', '𐎝'), - ('𐎠', '𐏃'), ('𐏈', '𐏏'), ('𐏑', '𐏕'), ('𐐀', '𐒝'), - ('𐒰', '𐓓'), ('𐓘', '𐓻'), ('𐔀', '𐔧'), ('𐔰', '𐕣'), - ('𐘀', '𐜶'), ('𐝀', '𐝕'), ('𐝠', '𐝧'), ('𐠀', '𐠅'), - ('𐠈', '𐠈'), ('𐠊', '𐠵'), ('𐠷', '𐠸'), ('𐠼', '𐠼'), - ('𐠿', '𐡕'), ('𐡠', '𐡶'), ('𐢀', '𐢞'), ('𐣠', '𐣲'), - ('𐣴', '𐣵'), ('𐤀', '𐤕'), ('𐤠', '𐤹'), ('𐦀', '𐦷'), - ('𐦾', '𐦿'), ('𐨀', '𐨀'), ('𐨐', '𐨓'), ('𐨕', '𐨗'), - ('𐨙', '\u{10a35}'), ('𐩠', '𐩼'), ('𐪀', '𐪜'), ('𐫀', '𐫇'), - ('𐫉', '𐫤'), ('𐬀', '𐬵'), ('𐭀', '𐭕'), ('𐭠', '𐭲'), - ('𐮀', '𐮑'), ('𐰀', '𐱈'), ('𐲀', '𐲲'), ('𐳀', '𐳲'), - ('\u{10d00}', '\u{10d23}'), ('\u{10f00}', '\u{10f1c}'), - ('\u{10f27}', '\u{10f27}'), ('\u{10f30}', '\u{10f45}'), ('𑀃', '𑀷'), - ('𑂃', '𑂯'), ('𑃐', '𑃨'), ('𑄃', '𑄦'), - ('\u{11144}', '\u{11144}'), ('𑅐', '𑅲'), ('𑅶', '𑅶'), - ('𑆃', '𑆲'), ('𑇁', '𑇄'), ('𑇚', '𑇚'), ('𑇜', '𑇜'), - ('𑈀', '𑈑'), ('𑈓', '𑈫'), ('𑊀', '𑊆'), ('𑊈', '𑊈'), - ('𑊊', '𑊍'), ('𑊏', '𑊝'), ('𑊟', '𑊨'), ('𑊰', '𑋞'), - ('𑌅', '𑌌'), ('𑌏', '𑌐'), ('𑌓', '𑌨'), ('𑌪', '𑌰'), - ('𑌲', '𑌳'), ('𑌵', '𑌹'), ('𑌽', '𑌽'), ('𑍐', '𑍐'), - ('𑍝', '𑍡'), ('𑐀', '𑐴'), ('𑑇', '𑑊'), ('𑒀', '𑒯'), - ('𑓄', '𑓅'), ('𑓇', '𑓇'), ('𑖀', '𑖮'), ('𑗘', '𑗛'), - ('𑘀', '𑘯'), ('𑙄', '𑙄'), ('𑚀', '𑚪'), ('𑜀', '\u{1171a}'), - ('\u{11800}', '\u{1182b}'), ('𑢠', '𑣟'), ('𑣿', '𑣿'), + ('ՠ', 'ֈ'), ('א', 'ת'), ('ׯ', 'ײ'), ('ؠ', 'ي'), ('ٮ', 'ٯ'), + ('ٱ', 'ۓ'), ('ە', 'ە'), ('ۥ', 'ۦ'), ('ۮ', 'ۯ'), ('ۺ', 'ۼ'), + ('ۿ', 'ۿ'), ('ܐ', 'ܐ'), ('ܒ', 'ܯ'), ('ݍ', 'ޥ'), ('ޱ', 'ޱ'), + ('ߊ', 'ߪ'), ('ߴ', 'ߵ'), ('ߺ', 'ߺ'), ('ࠀ', 'ࠕ'), ('ࠚ', 'ࠚ'), + ('ࠤ', 'ࠤ'), ('ࠨ', 'ࠨ'), ('ࡀ', 'ࡘ'), ('ࡠ', 'ࡪ'), + ('ࢠ', 'ࢴ'), ('ࢶ', 'ࢽ'), ('ऄ', 'ह'), ('ऽ', 'ऽ'), + ('ॐ', 'ॐ'), ('क़', 'ॡ'), ('ॱ', 'ঀ'), ('অ', 'ঌ'), + ('এ', 'ঐ'), ('ও', 'ন'), ('প', 'র'), ('ল', 'ল'), + ('শ', 'হ'), ('ঽ', 'ঽ'), ('ৎ', 'ৎ'), ('ড়', 'ঢ়'), + ('য়', 'ৡ'), ('ৰ', 'ৱ'), ('ৼ', 'ৼ'), ('ਅ', 'ਊ'), + ('ਏ', 'ਐ'), ('ਓ', 'ਨ'), ('ਪ', 'ਰ'), ('ਲ', 'ਲ਼'), + ('ਵ', 'ਸ਼'), ('ਸ', 'ਹ'), ('ਖ਼', 'ੜ'), ('ਫ਼', 'ਫ਼'), + ('ੲ', 'ੴ'), ('અ', 'ઍ'), ('એ', 'ઑ'), ('ઓ', 'ન'), + ('પ', 'ર'), ('લ', 'ળ'), ('વ', 'હ'), ('ઽ', 'ઽ'), + ('ૐ', 'ૐ'), ('ૠ', 'ૡ'), ('ૹ', 'ૹ'), ('ଅ', 'ଌ'), + ('ଏ', 'ଐ'), ('ଓ', 'ନ'), ('ପ', 'ର'), ('ଲ', 'ଳ'), + ('ଵ', 'ହ'), ('ଽ', 'ଽ'), ('ଡ଼', 'ଢ଼'), ('ୟ', 'ୡ'), + ('ୱ', 'ୱ'), ('ஃ', 'ஃ'), ('அ', 'ஊ'), ('எ', 'ஐ'), + ('ஒ', 'க'), ('ங', 'ச'), ('ஜ', 'ஜ'), ('ஞ', 'ட'), + ('ண', 'த'), ('ந', 'ப'), ('ம', 'ஹ'), ('ௐ', 'ௐ'), + ('అ', 'ఌ'), ('ఎ', 'ఐ'), ('ఒ', 'న'), ('ప', 'హ'), + ('ఽ', 'ఽ'), ('ౘ', 'ౚ'), ('ౠ', 'ౡ'), ('ಀ', 'ಀ'), + ('ಅ', 'ಌ'), ('ಎ', 'ಐ'), ('ಒ', 'ನ'), ('ಪ', 'ಳ'), + ('ವ', 'ಹ'), ('ಽ', 'ಽ'), ('ೞ', 'ೞ'), ('ೠ', 'ೡ'), + ('ೱ', 'ೲ'), ('അ', 'ഌ'), ('എ', 'ഐ'), ('ഒ', 'ഺ'), + ('ഽ', 'ഽ'), ('ൎ', 'ൎ'), ('ൔ', 'ൖ'), ('ൟ', 'ൡ'), + ('ൺ', 'ൿ'), ('අ', 'ඖ'), ('ක', 'න'), ('ඳ', 'ර'), + ('ල', 'ල'), ('ව', 'ෆ'), ('ก', 'ะ'), ('า', 'า'), + ('เ', 'ๆ'), ('ກ', 'ຂ'), ('ຄ', 'ຄ'), ('ງ', 'ຈ'), + ('ຊ', 'ຊ'), ('ຍ', 'ຍ'), ('ດ', 'ທ'), ('ນ', 'ຟ'), + ('ມ', 'ຣ'), ('ລ', 'ລ'), ('ວ', 'ວ'), ('ສ', 'ຫ'), + ('ອ', 'ະ'), ('າ', 'າ'), ('ຽ', 'ຽ'), ('ເ', 'ໄ'), + ('ໆ', 'ໆ'), ('ໜ', 'ໟ'), ('ༀ', 'ༀ'), ('ཀ', 'ཇ'), + ('ཉ', 'ཬ'), ('ྈ', 'ྌ'), ('က', 'ဪ'), ('ဿ', 'ဿ'), + ('ၐ', 'ၕ'), ('ၚ', 'ၝ'), ('ၡ', 'ၡ'), ('ၥ', 'ၦ'), + ('ၮ', 'ၰ'), ('ၵ', 'ႁ'), ('ႎ', 'ႎ'), ('Ⴀ', 'Ⴥ'), + ('Ⴧ', 'Ⴧ'), ('Ⴭ', 'Ⴭ'), ('ა', 'ჺ'), ('ჼ', 'ቈ'), + ('ቊ', 'ቍ'), ('ቐ', 'ቖ'), ('ቘ', 'ቘ'), ('ቚ', 'ቝ'), + ('በ', 'ኈ'), ('ኊ', 'ኍ'), ('ነ', 'ኰ'), ('ኲ', 'ኵ'), + ('ኸ', 'ኾ'), ('ዀ', 'ዀ'), ('ዂ', 'ዅ'), ('ወ', 'ዖ'), + ('ዘ', 'ጐ'), ('ጒ', 'ጕ'), ('ጘ', 'ፚ'), ('ᎀ', 'ᎏ'), + ('Ꭰ', 'Ᏽ'), ('ᏸ', 'ᏽ'), ('ᐁ', 'ᙬ'), ('ᙯ', 'ᙿ'), + ('ᚁ', 'ᚚ'), ('ᚠ', 'ᛪ'), ('ᛮ', 'ᛸ'), ('ᜀ', 'ᜌ'), + ('ᜎ', 'ᜑ'), ('ᜠ', 'ᜱ'), ('ᝀ', 'ᝑ'), ('ᝠ', 'ᝬ'), + ('ᝮ', 'ᝰ'), ('ក', 'ឳ'), ('ៗ', 'ៗ'), ('ៜ', 'ៜ'), + ('ᠠ', 'ᡸ'), ('ᢀ', 'ᢨ'), ('ᢪ', 'ᢪ'), ('ᢰ', 'ᣵ'), + ('ᤀ', 'ᤞ'), ('ᥐ', 'ᥭ'), ('ᥰ', 'ᥴ'), ('ᦀ', 'ᦫ'), + ('ᦰ', 'ᧉ'), ('ᨀ', 'ᨖ'), ('ᨠ', 'ᩔ'), ('ᪧ', 'ᪧ'), + ('ᬅ', 'ᬳ'), ('ᭅ', 'ᭋ'), ('ᮃ', 'ᮠ'), ('ᮮ', 'ᮯ'), + ('ᮺ', 'ᯥ'), ('ᰀ', 'ᰣ'), ('ᱍ', 'ᱏ'), ('ᱚ', 'ᱽ'), + ('ᲀ', 'ᲈ'), ('Ა', 'Ჺ'), ('Ჽ', 'Ჿ'), ('ᳩ', 'ᳬ'), + ('ᳮ', 'ᳱ'), ('ᳵ', 'ᳶ'), ('ᴀ', 'ᶿ'), ('Ḁ', 'ἕ'), + ('Ἐ', 'Ἕ'), ('ἠ', 'ὅ'), ('Ὀ', 'Ὅ'), ('ὐ', 'ὗ'), + ('Ὑ', 'Ὑ'), ('Ὓ', 'Ὓ'), ('Ὕ', 'Ὕ'), ('Ὗ', 'ώ'), + ('ᾀ', 'ᾴ'), ('ᾶ', 'ᾼ'), ('ι', 'ι'), ('ῂ', 'ῄ'), + ('ῆ', 'ῌ'), ('ῐ', 'ΐ'), ('ῖ', 'Ί'), ('ῠ', 'Ῥ'), + ('ῲ', 'ῴ'), ('ῶ', 'ῼ'), ('ⁱ', 'ⁱ'), ('ⁿ', 'ⁿ'), + ('ₐ', 'ₜ'), ('ℂ', 'ℂ'), ('ℇ', 'ℇ'), ('ℊ', 'ℓ'), + ('ℕ', 'ℕ'), ('℘', 'ℝ'), ('ℤ', 'ℤ'), ('Ω', 'Ω'), + ('ℨ', 'ℨ'), ('K', 'ℹ'), ('ℼ', 'ℿ'), ('ⅅ', 'ⅉ'), + ('ⅎ', 'ⅎ'), ('Ⅰ', 'ↈ'), ('Ⰰ', 'Ⱞ'), ('ⰰ', 'ⱞ'), + ('Ⱡ', 'ⳤ'), ('Ⳬ', 'ⳮ'), ('Ⳳ', 'ⳳ'), ('ⴀ', 'ⴥ'), + ('ⴧ', 'ⴧ'), ('ⴭ', 'ⴭ'), ('ⴰ', 'ⵧ'), ('ⵯ', 'ⵯ'), + ('ⶀ', 'ⶖ'), ('ⶠ', 'ⶦ'), ('ⶨ', 'ⶮ'), ('ⶰ', 'ⶶ'), + ('ⶸ', 'ⶾ'), ('ⷀ', 'ⷆ'), ('ⷈ', 'ⷎ'), ('ⷐ', 'ⷖ'), + ('ⷘ', 'ⷞ'), ('々', '〇'), ('〡', '〩'), ('〱', '〵'), + ('〸', '〼'), ('ぁ', 'ゖ'), ('ゝ', 'ゟ'), ('ァ', 'ヺ'), + ('ー', 'ヿ'), ('ㄅ', 'ㄯ'), ('ㄱ', 'ㆎ'), ('ㆠ', 'ㆺ'), + ('ㇰ', 'ㇿ'), ('㐀', '䶵'), ('一', '鿯'), ('ꀀ', 'ꒌ'), + ('ꓐ', 'ꓽ'), ('ꔀ', 'ꘌ'), ('ꘐ', 'ꘟ'), ('ꘪ', 'ꘫ'), + ('Ꙁ', 'ꙮ'), ('ꙿ', 'ꚝ'), ('ꚠ', 'ꛯ'), ('ꜗ', 'ꜟ'), + ('Ꜣ', 'ꞈ'), ('Ꞌ', 'ꞹ'), ('ꟷ', 'ꠁ'), ('ꠃ', 'ꠅ'), + ('ꠇ', 'ꠊ'), ('ꠌ', 'ꠢ'), ('ꡀ', 'ꡳ'), ('ꢂ', 'ꢳ'), + ('ꣲ', 'ꣷ'), ('ꣻ', 'ꣻ'), ('ꣽ', 'ꣾ'), ('ꤊ', 'ꤥ'), + ('ꤰ', 'ꥆ'), ('ꥠ', 'ꥼ'), ('ꦄ', 'ꦲ'), ('ꧏ', 'ꧏ'), + ('ꧠ', 'ꧤ'), ('ꧦ', 'ꧯ'), ('ꧺ', 'ꧾ'), ('ꨀ', 'ꨨ'), + ('ꩀ', 'ꩂ'), ('ꩄ', 'ꩋ'), ('ꩠ', 'ꩶ'), ('ꩺ', 'ꩺ'), + ('ꩾ', 'ꪯ'), ('ꪱ', 'ꪱ'), ('ꪵ', 'ꪶ'), ('ꪹ', 'ꪽ'), + ('ꫀ', 'ꫀ'), ('ꫂ', 'ꫂ'), ('ꫛ', 'ꫝ'), ('ꫠ', 'ꫪ'), + ('ꫲ', 'ꫴ'), ('ꬁ', 'ꬆ'), ('ꬉ', 'ꬎ'), ('ꬑ', 'ꬖ'), + ('ꬠ', 'ꬦ'), ('ꬨ', 'ꬮ'), ('ꬰ', 'ꭚ'), ('ꭜ', 'ꭥ'), + ('ꭰ', 'ꯢ'), ('가', '힣'), ('ힰ', 'ퟆ'), ('ퟋ', 'ퟻ'), + ('豈', '舘'), ('並', '龎'), ('ff', 'st'), ('ﬓ', 'ﬗ'), + ('יִ', 'יִ'), ('ײַ', 'ﬨ'), ('שׁ', 'זּ'), ('טּ', 'לּ'), + ('מּ', 'מּ'), ('נּ', 'סּ'), ('ףּ', 'פּ'), ('צּ', 'ﮱ'), + ('ﯓ', 'ﱝ'), ('ﱤ', 'ﴽ'), ('ﵐ', 'ﶏ'), ('ﶒ', 'ﷇ'), + ('ﷰ', 'ﷹ'), ('ﹱ', 'ﹱ'), ('ﹳ', 'ﹳ'), ('ﹷ', 'ﹷ'), + ('ﹹ', 'ﹹ'), ('ﹻ', 'ﹻ'), ('ﹽ', 'ﹽ'), ('ﹿ', 'ﻼ'), + ('A', 'Z'), ('a', 'z'), ('ヲ', 'ン'), ('ᅠ', 'ᄒ'), + ('ᅡ', 'ᅦ'), ('ᅧ', 'ᅬ'), ('ᅭ', 'ᅲ'), ('ᅳ', 'ᅵ'), + ('𐀀', '𐀋'), ('𐀍', '𐀦'), ('𐀨', '𐀺'), ('𐀼', '𐀽'), + ('𐀿', '𐁍'), ('𐁐', '𐁝'), ('𐂀', '𐃺'), ('𐅀', '𐅴'), + ('𐊀', '𐊜'), ('𐊠', '𐋐'), ('𐌀', '𐌟'), ('𐌭', '𐍊'), + ('𐍐', '𐍵'), ('𐎀', '𐎝'), ('𐎠', '𐏃'), ('𐏈', '𐏏'), + ('𐏑', '𐏕'), ('𐐀', '𐒝'), ('𐒰', '𐓓'), ('𐓘', '𐓻'), + ('𐔀', '𐔧'), ('𐔰', '𐕣'), ('𐘀', '𐜶'), ('𐝀', '𐝕'), + ('𐝠', '𐝧'), ('𐠀', '𐠅'), ('𐠈', '𐠈'), ('𐠊', '𐠵'), + ('𐠷', '𐠸'), ('𐠼', '𐠼'), ('𐠿', '𐡕'), ('𐡠', '𐡶'), + ('𐢀', '𐢞'), ('𐣠', '𐣲'), ('𐣴', '𐣵'), ('𐤀', '𐤕'), + ('𐤠', '𐤹'), ('𐦀', '𐦷'), ('𐦾', '𐦿'), ('𐨀', '𐨀'), + ('𐨐', '𐨓'), ('𐨕', '𐨗'), ('𐨙', '𐨵'), ('𐩠', '𐩼'), + ('𐪀', '𐪜'), ('𐫀', '𐫇'), ('𐫉', '𐫤'), ('𐬀', '𐬵'), + ('𐭀', '𐭕'), ('𐭠', '𐭲'), ('𐮀', '𐮑'), ('𐰀', '𐱈'), + ('𐲀', '𐲲'), ('𐳀', '𐳲'), ('𐴀', '𐴣'), ('𐼀', '𐼜'), + ('𐼧', '𐼧'), ('𐼰', '𐽅'), ('𑀃', '𑀷'), ('𑂃', '𑂯'), + ('𑃐', '𑃨'), ('𑄃', '𑄦'), ('𑅄', '𑅄'), ('𑅐', '𑅲'), + ('𑅶', '𑅶'), ('𑆃', '𑆲'), ('𑇁', '𑇄'), ('𑇚', '𑇚'), + ('𑇜', '𑇜'), ('𑈀', '𑈑'), ('𑈓', '𑈫'), ('𑊀', '𑊆'), + ('𑊈', '𑊈'), ('𑊊', '𑊍'), ('𑊏', '𑊝'), ('𑊟', '𑊨'), + ('𑊰', '𑋞'), ('𑌅', '𑌌'), ('𑌏', '𑌐'), ('𑌓', '𑌨'), + ('𑌪', '𑌰'), ('𑌲', '𑌳'), ('𑌵', '𑌹'), ('𑌽', '𑌽'), + ('𑍐', '𑍐'), ('𑍝', '𑍡'), ('𑐀', '𑐴'), ('𑑇', '𑑊'), + ('𑒀', '𑒯'), ('𑓄', '𑓅'), ('𑓇', '𑓇'), ('𑖀', '𑖮'), + ('𑗘', '𑗛'), ('𑘀', '𑘯'), ('𑙄', '𑙄'), ('𑚀', '𑚪'), + ('𑜀', '𑜚'), ('𑠀', '𑠫'), ('𑢠', '𑣟'), ('𑣿', '𑣿'), ('𑨀', '𑨀'), ('𑨋', '𑨲'), ('𑨺', '𑨺'), ('𑩐', '𑩐'), - ('𑩜', '𑪃'), ('𑪆', '𑪉'), ('\u{11a9d}', '\u{11a9d}'), - ('𑫀', '𑫸'), ('𑰀', '𑰈'), ('𑰊', '𑰮'), ('𑱀', '𑱀'), - ('𑱲', '𑲏'), ('𑴀', '𑴆'), ('𑴈', '𑴉'), ('𑴋', '𑴰'), - ('𑵆', '𑵆'), ('\u{11d60}', '\u{11d65}'), ('\u{11d67}', '\u{11d68}'), - ('\u{11d6a}', '\u{11d89}'), ('\u{11d98}', '\u{11d98}'), - ('\u{11ee0}', '\u{11ef2}'), ('𒀀', '𒎙'), ('𒐀', '𒑮'), - ('𒒀', '𒕃'), ('𓀀', '𓐮'), ('𔐀', '𔙆'), ('𖠀', '𖨸'), - ('𖩀', '𖩞'), ('𖫐', '𖫭'), ('𖬀', '𖬯'), ('𖭀', '𖭃'), - ('𖭣', '𖭷'), ('𖭽', '𖮏'), ('\u{16e40}', '\u{16e7f}'), - ('𖼀', '𖽄'), ('𖽐', '𖽐'), ('𖾓', '𖾟'), ('𖿠', '𖿡'), - ('𗀀', '\u{187f1}'), ('𘠀', '𘫲'), ('𛀀', '𛄞'), ('𛅰', '𛋻'), - ('𛰀', '𛱪'), ('𛱰', '𛱼'), ('𛲀', '𛲈'), ('𛲐', '𛲙'), - ('𝐀', '𝑔'), ('𝑖', '𝒜'), ('𝒞', '𝒟'), ('𝒢', '𝒢'), - ('𝒥', '𝒦'), ('𝒩', '𝒬'), ('𝒮', '𝒹'), ('𝒻', '𝒻'), - ('𝒽', '𝓃'), ('𝓅', '𝔅'), ('𝔇', '𝔊'), ('𝔍', '𝔔'), - ('𝔖', '𝔜'), ('𝔞', '𝔹'), ('𝔻', '𝔾'), ('𝕀', '𝕄'), - ('𝕆', '𝕆'), ('𝕊', '𝕐'), ('𝕒', '𝚥'), ('𝚨', '𝛀'), - ('𝛂', '𝛚'), ('𝛜', '𝛺'), ('𝛼', '𝜔'), ('𝜖', '𝜴'), - ('𝜶', '𝝎'), ('𝝐', '𝝮'), ('𝝰', '𝞈'), ('𝞊', '𝞨'), - ('𝞪', '𝟂'), ('𝟄', '𝟋'), ('𞠀', '𞣄'), ('𞤀', '𞥃'), - ('𞸀', '𞸃'), ('𞸅', '𞸟'), ('𞸡', '𞸢'), ('𞸤', '𞸤'), - ('𞸧', '𞸧'), ('𞸩', '𞸲'), ('𞸴', '𞸷'), ('𞸹', '𞸹'), - ('𞸻', '𞸻'), ('𞹂', '𞹂'), ('𞹇', '𞹇'), ('𞹉', '𞹉'), - ('𞹋', '𞹋'), ('𞹍', '𞹏'), ('𞹑', '𞹒'), ('𞹔', '𞹔'), - ('𞹗', '𞹗'), ('𞹙', '𞹙'), ('𞹛', '𞹛'), ('𞹝', '𞹝'), - ('𞹟', '𞹟'), ('𞹡', '𞹢'), ('𞹤', '𞹤'), ('𞹧', '𞹪'), - ('𞹬', '𞹲'), ('𞹴', '𞹷'), ('𞹹', '𞹼'), ('𞹾', '𞹾'), - ('𞺀', '𞺉'), ('𞺋', '𞺛'), ('𞺡', '𞺣'), ('𞺥', '𞺩'), - ('𞺫', '𞺻'), ('𠀀', '𪛖'), ('𪜀', '𫜴'), ('𫝀', '𫠝'), - ('𫠠', '𬺡'), ('𬺰', '𮯠'), ('丽', '𪘀'), + ('𑩜', '𑪃'), ('𑪆', '𑪉'), ('𑪝', '𑪝'), ('𑫀', '𑫸'), + ('𑰀', '𑰈'), ('𑰊', '𑰮'), ('𑱀', '𑱀'), ('𑱲', '𑲏'), + ('𑴀', '𑴆'), ('𑴈', '𑴉'), ('𑴋', '𑴰'), ('𑵆', '𑵆'), + ('𑵠', '𑵥'), ('𑵧', '𑵨'), ('𑵪', '𑶉'), ('𑶘', '𑶘'), + ('𑻠', '𑻲'), ('𒀀', '𒎙'), ('𒐀', '𒑮'), ('𒒀', '𒕃'), + ('𓀀', '𓐮'), ('𔐀', '𔙆'), ('𖠀', '𖨸'), ('𖩀', '𖩞'), + ('𖫐', '𖫭'), ('𖬀', '𖬯'), ('𖭀', '𖭃'), ('𖭣', '𖭷'), + ('𖭽', '𖮏'), ('𖹀', '𖹿'), ('𖼀', '𖽄'), ('𖽐', '𖽐'), + ('𖾓', '𖾟'), ('𖿠', '𖿡'), ('𗀀', '𘟱'), ('𘠀', '𘫲'), + ('𛀀', '𛄞'), ('𛅰', '𛋻'), ('𛰀', '𛱪'), ('𛱰', '𛱼'), + ('𛲀', '𛲈'), ('𛲐', '𛲙'), ('𝐀', '𝑔'), ('𝑖', '𝒜'), + ('𝒞', '𝒟'), ('𝒢', '𝒢'), ('𝒥', '𝒦'), ('𝒩', '𝒬'), + ('𝒮', '𝒹'), ('𝒻', '𝒻'), ('𝒽', '𝓃'), ('𝓅', '𝔅'), + ('𝔇', '𝔊'), ('𝔍', '𝔔'), ('𝔖', '𝔜'), ('𝔞', '𝔹'), + ('𝔻', '𝔾'), ('𝕀', '𝕄'), ('𝕆', '𝕆'), ('𝕊', '𝕐'), + ('𝕒', '𝚥'), ('𝚨', '𝛀'), ('𝛂', '𝛚'), ('𝛜', '𝛺'), + ('𝛼', '𝜔'), ('𝜖', '𝜴'), ('𝜶', '𝝎'), ('𝝐', '𝝮'), + ('𝝰', '𝞈'), ('𝞊', '𝞨'), ('𝞪', '𝟂'), ('𝟄', '𝟋'), + ('𞠀', '𞣄'), ('𞤀', '𞥃'), ('𞸀', '𞸃'), ('𞸅', '𞸟'), + ('𞸡', '𞸢'), ('𞸤', '𞸤'), ('𞸧', '𞸧'), ('𞸩', '𞸲'), + ('𞸴', '𞸷'), ('𞸹', '𞸹'), ('𞸻', '𞸻'), ('𞹂', '𞹂'), + ('𞹇', '𞹇'), ('𞹉', '𞹉'), ('𞹋', '𞹋'), ('𞹍', '𞹏'), + ('𞹑', '𞹒'), ('𞹔', '𞹔'), ('𞹗', '𞹗'), ('𞹙', '𞹙'), + ('𞹛', '𞹛'), ('𞹝', '𞹝'), ('𞹟', '𞹟'), ('𞹡', '𞹢'), + ('𞹤', '𞹤'), ('𞹧', '𞹪'), ('𞹬', '𞹲'), ('𞹴', '𞹷'), + ('𞹹', '𞹼'), ('𞹾', '𞹾'), ('𞺀', '𞺉'), ('𞺋', '𞺛'), + ('𞺡', '𞺣'), ('𞺥', '𞺩'), ('𞺫', '𞺻'), ('𠀀', '𪛖'), + ('𪜀', '𫜴'), ('𫝀', '𫠝'), ('𫠠', '𬺡'), ('𬺰', '𮯠'), + ('丽', '𪘀'), ]; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/property_names.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/property_names.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/property_names.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/property_names.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,6 +1,6 @@ // DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY: // -// ucd-generate property-names tmp/ucd-11.0.0/ +// ucd-generate property-names /home/andrew/tmp/ucd-11.0.0/ // // ucd-generate is available on crates.io. @@ -47,13 +47,17 @@ ("di", "Default_Ignorable_Code_Point"), ("dia", "Diacritic"), ("diacritic", "Diacritic"), ("dm", "Decomposition_Mapping"), ("dt", "Decomposition_Type"), ("ea", "East_Asian_Width"), - ("eastasianwidth", "East_Asian_Width"), + ("eastasianwidth", "East_Asian_Width"), ("emoji", "Emoji"), + ("emojicomponent", "Emoji_Component"), ("emojimodifier", "Emoji_Modifier"), + ("emojimodifierbase", "Emoji_Modifier_Base"), + ("emojipresentation", "Emoji_Presentation"), ("equideo", "Equivalent_Unified_Ideograph"), ("equivalentunifiedideograph", "Equivalent_Unified_Ideograph"), ("expandsonnfc", "Expands_On_NFC"), ("expandsonnfd", "Expands_On_NFD"), ("expandsonnfkc", "Expands_On_NFKC"), ("expandsonnfkd", "Expands_On_NFKD"), - ("ext", "Extender"), ("extender", "Extender"), - ("fcnfkc", "FC_NFKC_Closure"), ("fcnfkcclosure", "FC_NFKC_Closure"), + ("ext", "Extender"), ("extendedpictographic", "Extended_Pictographic"), + ("extender", "Extender"), ("fcnfkc", "FC_NFKC_Closure"), + ("fcnfkcclosure", "FC_NFKC_Closure"), ("fullcompositionexclusion", "Full_Composition_Exclusion"), ("gc", "General_Category"), ("gcb", "Grapheme_Cluster_Break"), ("generalcategory", "General_Category"), ("graphemebase", "Grapheme_Base"), diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/property_values.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/property_values.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/property_values.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/property_values.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,6 +1,6 @@ // DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY: // -// ucd-generate property-values tmp/ucd-11.0.0/ --include gc,script,scx,age +// ucd-generate property-values /home/andrew/tmp/ucd-11.0.0/ --include gc,script,scx,age,gcb,wb,sb // // ucd-generate is available on crates.io. @@ -57,6 +57,17 @@ ("zl", "Line_Separator"), ("zp", "Paragraph_Separator"), ("zs", "Space_Separator"), ]), + ("Grapheme_Cluster_Break", &[("cn", "Control"), ("control", "Control"), + ("cr", "CR"), ("eb", "E_Base"), ("ebase", "E_Base"), + ("ebasegaz", "E_Base_GAZ"), ("ebg", "E_Base_GAZ"), ("em", "E_Modifier"), + ("emodifier", "E_Modifier"), ("ex", "Extend"), ("extend", "Extend"), + ("gaz", "Glue_After_Zwj"), ("glueafterzwj", "Glue_After_Zwj"), ("l", "L"), + ("lf", "LF"), ("lv", "LV"), ("lvt", "LVT"), ("other", "Other"), + ("pp", "Prepend"), ("prepend", "Prepend"), + ("regionalindicator", "Regional_Indicator"), ("ri", "Regional_Indicator"), + ("sm", "SpacingMark"), ("spacingmark", "SpacingMark"), ("t", "T"), + ("v", "V"), ("xx", "Other"), ("zwj", "ZWJ"), ]), + ("Script", &[("adlam", "Adlam"), ("adlm", "Adlam"), ("aghb", "Caucasian_Albanian"), ("ahom", "Ahom"), ("anatolianhieroglyphs", "Anatolian_Hieroglyphs"), ("arab", "Arabic"), @@ -286,4 +297,30 @@ ("yiii", "Yi"), ("zanabazarsquare", "Zanabazar_Square"), ("zanb", "Zanabazar_Square"), ("zinh", "Inherited"), ("zyyy", "Common"), ("zzzz", "Unknown"), ]), + + ("Sentence_Break", &[("at", "ATerm"), ("aterm", "ATerm"), ("cl", "Close"), + ("close", "Close"), ("cr", "CR"), ("ex", "Extend"), ("extend", "Extend"), + ("fo", "Format"), ("format", "Format"), ("le", "OLetter"), ("lf", "LF"), + ("lo", "Lower"), ("lower", "Lower"), ("nu", "Numeric"), + ("numeric", "Numeric"), ("oletter", "OLetter"), ("other", "Other"), + ("sc", "SContinue"), ("scontinue", "SContinue"), ("se", "Sep"), + ("sep", "Sep"), ("sp", "Sp"), ("st", "STerm"), ("sterm", "STerm"), + ("up", "Upper"), ("upper", "Upper"), ("xx", "Other"), ]), + + ("Word_Break", &[("aletter", "ALetter"), ("cr", "CR"), + ("doublequote", "Double_Quote"), ("dq", "Double_Quote"), ("eb", "E_Base"), + ("ebase", "E_Base"), ("ebasegaz", "E_Base_GAZ"), ("ebg", "E_Base_GAZ"), + ("em", "E_Modifier"), ("emodifier", "E_Modifier"), ("ex", "ExtendNumLet"), + ("extend", "Extend"), ("extendnumlet", "ExtendNumLet"), ("fo", "Format"), + ("format", "Format"), ("gaz", "Glue_After_Zwj"), + ("glueafterzwj", "Glue_After_Zwj"), ("hebrewletter", "Hebrew_Letter"), + ("hl", "Hebrew_Letter"), ("ka", "Katakana"), ("katakana", "Katakana"), + ("le", "ALetter"), ("lf", "LF"), ("mb", "MidNumLet"), + ("midletter", "MidLetter"), ("midnum", "MidNum"), + ("midnumlet", "MidNumLet"), ("ml", "MidLetter"), ("mn", "MidNum"), + ("newline", "Newline"), ("nl", "Newline"), ("nu", "Numeric"), + ("numeric", "Numeric"), ("other", "Other"), + ("regionalindicator", "Regional_Indicator"), ("ri", "Regional_Indicator"), + ("singlequote", "Single_Quote"), ("sq", "Single_Quote"), + ("wsegspace", "WSegSpace"), ("xx", "Other"), ("zwj", "ZWJ"), ]), ]; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/sentence_break.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/sentence_break.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/sentence_break.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/sentence_break.rs 2019-01-04 19:47:55.000000000 +0000 @@ -0,0 +1,642 @@ +// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY: +// +// ucd-generate sentence-break /home/andrew/tmp/ucd-11.0.0/ --chars +// +// ucd-generate is available on crates.io. + +pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[ + ("ATerm", ATERM), ("CR", CR), ("Close", CLOSE), ("Extend", EXTEND), + ("Format", FORMAT), ("LF", LF), ("Lower", LOWER), ("Numeric", NUMERIC), + ("OLetter", OLETTER), ("SContinue", SCONTINUE), ("STerm", STERM), + ("Sep", SEP), ("Sp", SP), ("Upper", UPPER), +]; + +pub const ATERM: &'static [(char, char)] = &[ + ('.', '.'), ('․', '․'), ('﹒', '﹒'), ('.', '.'), +]; + +pub const CR: &'static [(char, char)] = &[ + ('\r', '\r'), +]; + +pub const CLOSE: &'static [(char, char)] = &[ + ('\"', '\"'), ('\'', ')'), ('[', '['), (']', ']'), ('{', '{'), ('}', '}'), + ('«', '«'), ('»', '»'), ('༺', '༽'), ('᚛', '᚜'), ('‘', '‟'), + ('‹', '›'), ('⁅', '⁆'), ('⁽', '⁾'), ('₍', '₎'), + ('⌈', '⌋'), ('〈', '〉'), ('❛', '❠'), ('❨', '❵'), + ('⟅', '⟆'), ('⟦', '⟯'), ('⦃', '⦘'), ('⧘', '⧛'), + ('⧼', '⧽'), ('⸀', '⸍'), ('⸜', '⸝'), ('⸠', '⸩'), + ('⹂', '⹂'), ('〈', '】'), ('〔', '〛'), ('〝', '〟'), + ('﴾', '﴿'), ('︗', '︘'), ('︵', '﹄'), ('﹇', '﹈'), + ('﹙', '﹞'), ('(', ')'), ('[', '['), (']', ']'), + ('{', '{'), ('}', '}'), ('⦅', '⦆'), ('「', '」'), + ('🙶', '🙸'), +]; + +pub const EXTEND: &'static [(char, char)] = &[ + ('\u{300}', '\u{36f}'), ('\u{483}', '\u{489}'), ('\u{591}', '\u{5bd}'), + ('\u{5bf}', '\u{5bf}'), ('\u{5c1}', '\u{5c2}'), ('\u{5c4}', '\u{5c5}'), + ('\u{5c7}', '\u{5c7}'), ('\u{610}', '\u{61a}'), ('\u{64b}', '\u{65f}'), + ('\u{670}', '\u{670}'), ('\u{6d6}', '\u{6dc}'), ('\u{6df}', '\u{6e4}'), + ('\u{6e7}', '\u{6e8}'), ('\u{6ea}', '\u{6ed}'), ('\u{711}', '\u{711}'), + ('\u{730}', '\u{74a}'), ('\u{7a6}', '\u{7b0}'), ('\u{7eb}', '\u{7f3}'), + ('\u{7fd}', '\u{7fd}'), ('\u{816}', '\u{819}'), ('\u{81b}', '\u{823}'), + ('\u{825}', '\u{827}'), ('\u{829}', '\u{82d}'), ('\u{859}', '\u{85b}'), + ('\u{8d3}', '\u{8e1}'), ('\u{8e3}', 'ः'), ('\u{93a}', '\u{93c}'), + ('ा', 'ॏ'), ('\u{951}', '\u{957}'), ('\u{962}', '\u{963}'), + ('\u{981}', 'ঃ'), ('\u{9bc}', '\u{9bc}'), ('\u{9be}', '\u{9c4}'), + ('ে', 'ৈ'), ('ো', '\u{9cd}'), ('\u{9d7}', '\u{9d7}'), + ('\u{9e2}', '\u{9e3}'), ('\u{9fe}', '\u{9fe}'), ('\u{a01}', 'ਃ'), + ('\u{a3c}', '\u{a3c}'), ('ਾ', '\u{a42}'), ('\u{a47}', '\u{a48}'), + ('\u{a4b}', '\u{a4d}'), ('\u{a51}', '\u{a51}'), ('\u{a70}', '\u{a71}'), + ('\u{a75}', '\u{a75}'), ('\u{a81}', 'ઃ'), ('\u{abc}', '\u{abc}'), + ('ા', '\u{ac5}'), ('\u{ac7}', 'ૉ'), ('ો', '\u{acd}'), + ('\u{ae2}', '\u{ae3}'), ('\u{afa}', '\u{aff}'), ('\u{b01}', 'ଃ'), + ('\u{b3c}', '\u{b3c}'), ('\u{b3e}', '\u{b44}'), ('େ', 'ୈ'), + ('ୋ', '\u{b4d}'), ('\u{b56}', '\u{b57}'), ('\u{b62}', '\u{b63}'), + ('\u{b82}', '\u{b82}'), ('\u{bbe}', 'ூ'), ('ெ', 'ை'), + ('ொ', '\u{bcd}'), ('\u{bd7}', '\u{bd7}'), ('\u{c00}', '\u{c04}'), + ('\u{c3e}', 'ౄ'), ('\u{c46}', '\u{c48}'), ('\u{c4a}', '\u{c4d}'), + ('\u{c55}', '\u{c56}'), ('\u{c62}', '\u{c63}'), ('\u{c81}', 'ಃ'), + ('\u{cbc}', '\u{cbc}'), ('ಾ', 'ೄ'), ('\u{cc6}', 'ೈ'), + ('ೊ', '\u{ccd}'), ('\u{cd5}', '\u{cd6}'), ('\u{ce2}', '\u{ce3}'), + ('\u{d00}', 'ഃ'), ('\u{d3b}', '\u{d3c}'), ('\u{d3e}', '\u{d44}'), + ('െ', 'ൈ'), ('ൊ', '\u{d4d}'), ('\u{d57}', '\u{d57}'), + ('\u{d62}', '\u{d63}'), ('ං', 'ඃ'), ('\u{dca}', '\u{dca}'), + ('\u{dcf}', '\u{dd4}'), ('\u{dd6}', '\u{dd6}'), ('ෘ', '\u{ddf}'), + ('ෲ', 'ෳ'), ('\u{e31}', '\u{e31}'), ('\u{e34}', '\u{e3a}'), + ('\u{e47}', '\u{e4e}'), ('\u{eb1}', '\u{eb1}'), ('\u{eb4}', '\u{eb9}'), + ('\u{ebb}', '\u{ebc}'), ('\u{ec8}', '\u{ecd}'), ('\u{f18}', '\u{f19}'), + ('\u{f35}', '\u{f35}'), ('\u{f37}', '\u{f37}'), ('\u{f39}', '\u{f39}'), + ('༾', '༿'), ('\u{f71}', '\u{f84}'), ('\u{f86}', '\u{f87}'), + ('\u{f8d}', '\u{f97}'), ('\u{f99}', '\u{fbc}'), ('\u{fc6}', '\u{fc6}'), + ('ါ', '\u{103e}'), ('ၖ', '\u{1059}'), ('\u{105e}', '\u{1060}'), + ('ၢ', 'ၤ'), ('ၧ', 'ၭ'), ('\u{1071}', '\u{1074}'), + ('\u{1082}', '\u{108d}'), ('ႏ', 'ႏ'), ('ႚ', '\u{109d}'), + ('\u{135d}', '\u{135f}'), ('\u{1712}', '\u{1714}'), + ('\u{1732}', '\u{1734}'), ('\u{1752}', '\u{1753}'), + ('\u{1772}', '\u{1773}'), ('\u{17b4}', '\u{17d3}'), + ('\u{17dd}', '\u{17dd}'), ('\u{180b}', '\u{180d}'), + ('\u{1885}', '\u{1886}'), ('\u{18a9}', '\u{18a9}'), ('\u{1920}', 'ᤫ'), + ('ᤰ', '\u{193b}'), ('\u{1a17}', '\u{1a1b}'), ('ᩕ', '\u{1a5e}'), + ('\u{1a60}', '\u{1a7c}'), ('\u{1a7f}', '\u{1a7f}'), + ('\u{1ab0}', '\u{1abe}'), ('\u{1b00}', 'ᬄ'), ('\u{1b34}', '᭄'), + ('\u{1b6b}', '\u{1b73}'), ('\u{1b80}', 'ᮂ'), ('ᮡ', '\u{1bad}'), + ('\u{1be6}', '᯳'), ('ᰤ', '\u{1c37}'), ('\u{1cd0}', '\u{1cd2}'), + ('\u{1cd4}', '\u{1ce8}'), ('\u{1ced}', '\u{1ced}'), ('ᳲ', '\u{1cf4}'), + ('᳷', '\u{1cf9}'), ('\u{1dc0}', '\u{1df9}'), ('\u{1dfb}', '\u{1dff}'), + ('\u{200c}', '\u{200d}'), ('\u{20d0}', '\u{20f0}'), + ('\u{2cef}', '\u{2cf1}'), ('\u{2d7f}', '\u{2d7f}'), + ('\u{2de0}', '\u{2dff}'), ('\u{302a}', '\u{302f}'), + ('\u{3099}', '\u{309a}'), ('\u{a66f}', '\u{a672}'), + ('\u{a674}', '\u{a67d}'), ('\u{a69e}', '\u{a69f}'), + ('\u{a6f0}', '\u{a6f1}'), ('\u{a802}', '\u{a802}'), + ('\u{a806}', '\u{a806}'), ('\u{a80b}', '\u{a80b}'), ('ꠣ', 'ꠧ'), + ('ꢀ', 'ꢁ'), ('ꢴ', '\u{a8c5}'), ('\u{a8e0}', '\u{a8f1}'), + ('\u{a8ff}', '\u{a8ff}'), ('\u{a926}', '\u{a92d}'), ('\u{a947}', '꥓'), + ('\u{a980}', 'ꦃ'), ('\u{a9b3}', '꧀'), ('\u{a9e5}', '\u{a9e5}'), + ('\u{aa29}', '\u{aa36}'), ('\u{aa43}', '\u{aa43}'), ('\u{aa4c}', 'ꩍ'), + ('ꩻ', 'ꩽ'), ('\u{aab0}', '\u{aab0}'), ('\u{aab2}', '\u{aab4}'), + ('\u{aab7}', '\u{aab8}'), ('\u{aabe}', '\u{aabf}'), + ('\u{aac1}', '\u{aac1}'), ('ꫫ', 'ꫯ'), ('ꫵ', '\u{aaf6}'), + ('ꯣ', 'ꯪ'), ('꯬', '\u{abed}'), ('\u{fb1e}', '\u{fb1e}'), + ('\u{fe00}', '\u{fe0f}'), ('\u{fe20}', '\u{fe2f}'), + ('\u{ff9e}', '\u{ff9f}'), ('\u{101fd}', '\u{101fd}'), + ('\u{102e0}', '\u{102e0}'), ('\u{10376}', '\u{1037a}'), + ('\u{10a01}', '\u{10a03}'), ('\u{10a05}', '\u{10a06}'), + ('\u{10a0c}', '\u{10a0f}'), ('\u{10a38}', '\u{10a3a}'), + ('\u{10a3f}', '\u{10a3f}'), ('\u{10ae5}', '\u{10ae6}'), + ('\u{10d24}', '\u{10d27}'), ('\u{10f46}', '\u{10f50}'), ('𑀀', '𑀂'), + ('\u{11038}', '\u{11046}'), ('\u{1107f}', '𑂂'), ('𑂰', '\u{110ba}'), + ('\u{11100}', '\u{11102}'), ('\u{11127}', '\u{11134}'), ('𑅅', '𑅆'), + ('\u{11173}', '\u{11173}'), ('\u{11180}', '𑆂'), ('𑆳', '𑇀'), + ('\u{111c9}', '\u{111cc}'), ('𑈬', '\u{11237}'), + ('\u{1123e}', '\u{1123e}'), ('\u{112df}', '\u{112ea}'), + ('\u{11300}', '𑌃'), ('\u{1133b}', '\u{1133c}'), ('\u{1133e}', '𑍄'), + ('𑍇', '𑍈'), ('𑍋', '𑍍'), ('\u{11357}', '\u{11357}'), + ('𑍢', '𑍣'), ('\u{11366}', '\u{1136c}'), ('\u{11370}', '\u{11374}'), + ('𑐵', '\u{11446}'), ('\u{1145e}', '\u{1145e}'), + ('\u{114b0}', '\u{114c3}'), ('\u{115af}', '\u{115b5}'), + ('𑖸', '\u{115c0}'), ('\u{115dc}', '\u{115dd}'), ('𑘰', '\u{11640}'), + ('\u{116ab}', '\u{116b7}'), ('\u{1171d}', '\u{1172b}'), + ('𑠬', '\u{1183a}'), ('\u{11a01}', '\u{11a0a}'), ('\u{11a33}', '𑨹'), + ('\u{11a3b}', '\u{11a3e}'), ('\u{11a47}', '\u{11a47}'), + ('\u{11a51}', '\u{11a5b}'), ('\u{11a8a}', '\u{11a99}'), + ('𑰯', '\u{11c36}'), ('\u{11c38}', '\u{11c3f}'), + ('\u{11c92}', '\u{11ca7}'), ('𑲩', '\u{11cb6}'), + ('\u{11d31}', '\u{11d36}'), ('\u{11d3a}', '\u{11d3a}'), + ('\u{11d3c}', '\u{11d3d}'), ('\u{11d3f}', '\u{11d45}'), + ('\u{11d47}', '\u{11d47}'), ('𑶊', '𑶎'), ('\u{11d90}', '\u{11d91}'), + ('𑶓', '\u{11d97}'), ('\u{11ef3}', '𑻶'), ('\u{16af0}', '\u{16af4}'), + ('\u{16b30}', '\u{16b36}'), ('𖽑', '𖽾'), ('\u{16f8f}', '\u{16f92}'), + ('\u{1bc9d}', '\u{1bc9e}'), ('\u{1d165}', '\u{1d169}'), + ('𝅭', '\u{1d172}'), ('\u{1d17b}', '\u{1d182}'), + ('\u{1d185}', '\u{1d18b}'), ('\u{1d1aa}', '\u{1d1ad}'), + ('\u{1d242}', '\u{1d244}'), ('\u{1da00}', '\u{1da36}'), + ('\u{1da3b}', '\u{1da6c}'), ('\u{1da75}', '\u{1da75}'), + ('\u{1da84}', '\u{1da84}'), ('\u{1da9b}', '\u{1da9f}'), + ('\u{1daa1}', '\u{1daaf}'), ('\u{1e000}', '\u{1e006}'), + ('\u{1e008}', '\u{1e018}'), ('\u{1e01b}', '\u{1e021}'), + ('\u{1e023}', '\u{1e024}'), ('\u{1e026}', '\u{1e02a}'), + ('\u{1e8d0}', '\u{1e8d6}'), ('\u{1e944}', '\u{1e94a}'), + ('\u{e0020}', '\u{e007f}'), ('\u{e0100}', '\u{e01ef}'), +]; + +pub const FORMAT: &'static [(char, char)] = &[ + ('\u{ad}', '\u{ad}'), ('\u{600}', '\u{605}'), ('\u{61c}', '\u{61c}'), + ('\u{6dd}', '\u{6dd}'), ('\u{70f}', '\u{70f}'), ('\u{8e2}', '\u{8e2}'), + ('\u{180e}', '\u{180e}'), ('\u{200b}', '\u{200b}'), + ('\u{200e}', '\u{200f}'), ('\u{202a}', '\u{202e}'), + ('\u{2060}', '\u{2064}'), ('\u{2066}', '\u{206f}'), + ('\u{feff}', '\u{feff}'), ('\u{fff9}', '\u{fffb}'), + ('\u{110bd}', '\u{110bd}'), ('\u{110cd}', '\u{110cd}'), + ('\u{1bca0}', '\u{1bca3}'), ('\u{1d173}', '\u{1d17a}'), + ('\u{e0001}', '\u{e0001}'), +]; + +pub const LF: &'static [(char, char)] = &[ + ('\n', '\n'), +]; + +pub const LOWER: &'static [(char, char)] = &[ + ('a', 'z'), ('ª', 'ª'), ('µ', 'µ'), ('º', 'º'), ('ß', 'ö'), + ('ø', 'ÿ'), ('ā', 'ā'), ('ă', 'ă'), ('ą', 'ą'), ('ć', 'ć'), + ('ĉ', 'ĉ'), ('ċ', 'ċ'), ('č', 'č'), ('ď', 'ď'), ('đ', 'đ'), + ('ē', 'ē'), ('ĕ', 'ĕ'), ('ė', 'ė'), ('ę', 'ę'), ('ě', 'ě'), + ('ĝ', 'ĝ'), ('ğ', 'ğ'), ('ġ', 'ġ'), ('ģ', 'ģ'), ('ĥ', 'ĥ'), + ('ħ', 'ħ'), ('ĩ', 'ĩ'), ('ī', 'ī'), ('ĭ', 'ĭ'), ('į', 'į'), + ('ı', 'ı'), ('ij', 'ij'), ('ĵ', 'ĵ'), ('ķ', 'ĸ'), ('ĺ', 'ĺ'), + ('ļ', 'ļ'), ('ľ', 'ľ'), ('ŀ', 'ŀ'), ('ł', 'ł'), ('ń', 'ń'), + ('ņ', 'ņ'), ('ň', 'ʼn'), ('ŋ', 'ŋ'), ('ō', 'ō'), ('ŏ', 'ŏ'), + ('ő', 'ő'), ('œ', 'œ'), ('ŕ', 'ŕ'), ('ŗ', 'ŗ'), ('ř', 'ř'), + ('ś', 'ś'), ('ŝ', 'ŝ'), ('ş', 'ş'), ('š', 'š'), ('ţ', 'ţ'), + ('ť', 'ť'), ('ŧ', 'ŧ'), ('ũ', 'ũ'), ('ū', 'ū'), ('ŭ', 'ŭ'), + ('ů', 'ů'), ('ű', 'ű'), ('ų', 'ų'), ('ŵ', 'ŵ'), ('ŷ', 'ŷ'), + ('ź', 'ź'), ('ż', 'ż'), ('ž', 'ƀ'), ('ƃ', 'ƃ'), ('ƅ', 'ƅ'), + ('ƈ', 'ƈ'), ('ƌ', 'ƍ'), ('ƒ', 'ƒ'), ('ƕ', 'ƕ'), ('ƙ', 'ƛ'), + ('ƞ', 'ƞ'), ('ơ', 'ơ'), ('ƣ', 'ƣ'), ('ƥ', 'ƥ'), ('ƨ', 'ƨ'), + ('ƪ', 'ƫ'), ('ƭ', 'ƭ'), ('ư', 'ư'), ('ƴ', 'ƴ'), ('ƶ', 'ƶ'), + ('ƹ', 'ƺ'), ('ƽ', 'ƿ'), ('dž', 'dž'), ('lj', 'lj'), ('nj', 'nj'), + ('ǎ', 'ǎ'), ('ǐ', 'ǐ'), ('ǒ', 'ǒ'), ('ǔ', 'ǔ'), ('ǖ', 'ǖ'), + ('ǘ', 'ǘ'), ('ǚ', 'ǚ'), ('ǜ', 'ǝ'), ('ǟ', 'ǟ'), ('ǡ', 'ǡ'), + ('ǣ', 'ǣ'), ('ǥ', 'ǥ'), ('ǧ', 'ǧ'), ('ǩ', 'ǩ'), ('ǫ', 'ǫ'), + ('ǭ', 'ǭ'), ('ǯ', 'ǰ'), ('dz', 'dz'), ('ǵ', 'ǵ'), ('ǹ', 'ǹ'), + ('ǻ', 'ǻ'), ('ǽ', 'ǽ'), ('ǿ', 'ǿ'), ('ȁ', 'ȁ'), ('ȃ', 'ȃ'), + ('ȅ', 'ȅ'), ('ȇ', 'ȇ'), ('ȉ', 'ȉ'), ('ȋ', 'ȋ'), ('ȍ', 'ȍ'), + ('ȏ', 'ȏ'), ('ȑ', 'ȑ'), ('ȓ', 'ȓ'), ('ȕ', 'ȕ'), ('ȗ', 'ȗ'), + ('ș', 'ș'), ('ț', 'ț'), ('ȝ', 'ȝ'), ('ȟ', 'ȟ'), ('ȡ', 'ȡ'), + ('ȣ', 'ȣ'), ('ȥ', 'ȥ'), ('ȧ', 'ȧ'), ('ȩ', 'ȩ'), ('ȫ', 'ȫ'), + ('ȭ', 'ȭ'), ('ȯ', 'ȯ'), ('ȱ', 'ȱ'), ('ȳ', 'ȹ'), ('ȼ', 'ȼ'), + ('ȿ', 'ɀ'), ('ɂ', 'ɂ'), ('ɇ', 'ɇ'), ('ɉ', 'ɉ'), ('ɋ', 'ɋ'), + ('ɍ', 'ɍ'), ('ɏ', 'ʓ'), ('ʕ', 'ʸ'), ('ˀ', 'ˁ'), ('ˠ', 'ˤ'), + ('ͱ', 'ͱ'), ('ͳ', 'ͳ'), ('ͷ', 'ͷ'), ('ͺ', 'ͽ'), ('ΐ', 'ΐ'), + ('ά', 'ώ'), ('ϐ', 'ϑ'), ('ϕ', 'ϗ'), ('ϙ', 'ϙ'), ('ϛ', 'ϛ'), + ('ϝ', 'ϝ'), ('ϟ', 'ϟ'), ('ϡ', 'ϡ'), ('ϣ', 'ϣ'), ('ϥ', 'ϥ'), + ('ϧ', 'ϧ'), ('ϩ', 'ϩ'), ('ϫ', 'ϫ'), ('ϭ', 'ϭ'), ('ϯ', 'ϳ'), + ('ϵ', 'ϵ'), ('ϸ', 'ϸ'), ('ϻ', 'ϼ'), ('а', 'џ'), ('ѡ', 'ѡ'), + ('ѣ', 'ѣ'), ('ѥ', 'ѥ'), ('ѧ', 'ѧ'), ('ѩ', 'ѩ'), ('ѫ', 'ѫ'), + ('ѭ', 'ѭ'), ('ѯ', 'ѯ'), ('ѱ', 'ѱ'), ('ѳ', 'ѳ'), ('ѵ', 'ѵ'), + ('ѷ', 'ѷ'), ('ѹ', 'ѹ'), ('ѻ', 'ѻ'), ('ѽ', 'ѽ'), ('ѿ', 'ѿ'), + ('ҁ', 'ҁ'), ('ҋ', 'ҋ'), ('ҍ', 'ҍ'), ('ҏ', 'ҏ'), ('ґ', 'ґ'), + ('ғ', 'ғ'), ('ҕ', 'ҕ'), ('җ', 'җ'), ('ҙ', 'ҙ'), ('қ', 'қ'), + ('ҝ', 'ҝ'), ('ҟ', 'ҟ'), ('ҡ', 'ҡ'), ('ң', 'ң'), ('ҥ', 'ҥ'), + ('ҧ', 'ҧ'), ('ҩ', 'ҩ'), ('ҫ', 'ҫ'), ('ҭ', 'ҭ'), ('ү', 'ү'), + ('ұ', 'ұ'), ('ҳ', 'ҳ'), ('ҵ', 'ҵ'), ('ҷ', 'ҷ'), ('ҹ', 'ҹ'), + ('һ', 'һ'), ('ҽ', 'ҽ'), ('ҿ', 'ҿ'), ('ӂ', 'ӂ'), ('ӄ', 'ӄ'), + ('ӆ', 'ӆ'), ('ӈ', 'ӈ'), ('ӊ', 'ӊ'), ('ӌ', 'ӌ'), ('ӎ', 'ӏ'), + ('ӑ', 'ӑ'), ('ӓ', 'ӓ'), ('ӕ', 'ӕ'), ('ӗ', 'ӗ'), ('ә', 'ә'), + ('ӛ', 'ӛ'), ('ӝ', 'ӝ'), ('ӟ', 'ӟ'), ('ӡ', 'ӡ'), ('ӣ', 'ӣ'), + ('ӥ', 'ӥ'), ('ӧ', 'ӧ'), ('ө', 'ө'), ('ӫ', 'ӫ'), ('ӭ', 'ӭ'), + ('ӯ', 'ӯ'), ('ӱ', 'ӱ'), ('ӳ', 'ӳ'), ('ӵ', 'ӵ'), ('ӷ', 'ӷ'), + ('ӹ', 'ӹ'), ('ӻ', 'ӻ'), ('ӽ', 'ӽ'), ('ӿ', 'ӿ'), ('ԁ', 'ԁ'), + ('ԃ', 'ԃ'), ('ԅ', 'ԅ'), ('ԇ', 'ԇ'), ('ԉ', 'ԉ'), ('ԋ', 'ԋ'), + ('ԍ', 'ԍ'), ('ԏ', 'ԏ'), ('ԑ', 'ԑ'), ('ԓ', 'ԓ'), ('ԕ', 'ԕ'), + ('ԗ', 'ԗ'), ('ԙ', 'ԙ'), ('ԛ', 'ԛ'), ('ԝ', 'ԝ'), ('ԟ', 'ԟ'), + ('ԡ', 'ԡ'), ('ԣ', 'ԣ'), ('ԥ', 'ԥ'), ('ԧ', 'ԧ'), ('ԩ', 'ԩ'), + ('ԫ', 'ԫ'), ('ԭ', 'ԭ'), ('ԯ', 'ԯ'), ('ՠ', 'ֈ'), ('ა', 'ჺ'), + ('ჽ', 'ჿ'), ('ᏸ', 'ᏽ'), ('ᲀ', 'ᲈ'), ('ᴀ', 'ᶿ'), + ('ḁ', 'ḁ'), ('ḃ', 'ḃ'), ('ḅ', 'ḅ'), ('ḇ', 'ḇ'), + ('ḉ', 'ḉ'), ('ḋ', 'ḋ'), ('ḍ', 'ḍ'), ('ḏ', 'ḏ'), + ('ḑ', 'ḑ'), ('ḓ', 'ḓ'), ('ḕ', 'ḕ'), ('ḗ', 'ḗ'), + ('ḙ', 'ḙ'), ('ḛ', 'ḛ'), ('ḝ', 'ḝ'), ('ḟ', 'ḟ'), + ('ḡ', 'ḡ'), ('ḣ', 'ḣ'), ('ḥ', 'ḥ'), ('ḧ', 'ḧ'), + ('ḩ', 'ḩ'), ('ḫ', 'ḫ'), ('ḭ', 'ḭ'), ('ḯ', 'ḯ'), + ('ḱ', 'ḱ'), ('ḳ', 'ḳ'), ('ḵ', 'ḵ'), ('ḷ', 'ḷ'), + ('ḹ', 'ḹ'), ('ḻ', 'ḻ'), ('ḽ', 'ḽ'), ('ḿ', 'ḿ'), + ('ṁ', 'ṁ'), ('ṃ', 'ṃ'), ('ṅ', 'ṅ'), ('ṇ', 'ṇ'), + ('ṉ', 'ṉ'), ('ṋ', 'ṋ'), ('ṍ', 'ṍ'), ('ṏ', 'ṏ'), + ('ṑ', 'ṑ'), ('ṓ', 'ṓ'), ('ṕ', 'ṕ'), ('ṗ', 'ṗ'), + ('ṙ', 'ṙ'), ('ṛ', 'ṛ'), ('ṝ', 'ṝ'), ('ṟ', 'ṟ'), + ('ṡ', 'ṡ'), ('ṣ', 'ṣ'), ('ṥ', 'ṥ'), ('ṧ', 'ṧ'), + ('ṩ', 'ṩ'), ('ṫ', 'ṫ'), ('ṭ', 'ṭ'), ('ṯ', 'ṯ'), + ('ṱ', 'ṱ'), ('ṳ', 'ṳ'), ('ṵ', 'ṵ'), ('ṷ', 'ṷ'), + ('ṹ', 'ṹ'), ('ṻ', 'ṻ'), ('ṽ', 'ṽ'), ('ṿ', 'ṿ'), + ('ẁ', 'ẁ'), ('ẃ', 'ẃ'), ('ẅ', 'ẅ'), ('ẇ', 'ẇ'), + ('ẉ', 'ẉ'), ('ẋ', 'ẋ'), ('ẍ', 'ẍ'), ('ẏ', 'ẏ'), + ('ẑ', 'ẑ'), ('ẓ', 'ẓ'), ('ẕ', 'ẝ'), ('ẟ', 'ẟ'), + ('ạ', 'ạ'), ('ả', 'ả'), ('ấ', 'ấ'), ('ầ', 'ầ'), + ('ẩ', 'ẩ'), ('ẫ', 'ẫ'), ('ậ', 'ậ'), ('ắ', 'ắ'), + ('ằ', 'ằ'), ('ẳ', 'ẳ'), ('ẵ', 'ẵ'), ('ặ', 'ặ'), + ('ẹ', 'ẹ'), ('ẻ', 'ẻ'), ('ẽ', 'ẽ'), ('ế', 'ế'), + ('ề', 'ề'), ('ể', 'ể'), ('ễ', 'ễ'), ('ệ', 'ệ'), + ('ỉ', 'ỉ'), ('ị', 'ị'), ('ọ', 'ọ'), ('ỏ', 'ỏ'), + ('ố', 'ố'), ('ồ', 'ồ'), ('ổ', 'ổ'), ('ỗ', 'ỗ'), + ('ộ', 'ộ'), ('ớ', 'ớ'), ('ờ', 'ờ'), ('ở', 'ở'), + ('ỡ', 'ỡ'), ('ợ', 'ợ'), ('ụ', 'ụ'), ('ủ', 'ủ'), + ('ứ', 'ứ'), ('ừ', 'ừ'), ('ử', 'ử'), ('ữ', 'ữ'), + ('ự', 'ự'), ('ỳ', 'ỳ'), ('ỵ', 'ỵ'), ('ỷ', 'ỷ'), + ('ỹ', 'ỹ'), ('ỻ', 'ỻ'), ('ỽ', 'ỽ'), ('ỿ', 'ἇ'), + ('ἐ', 'ἕ'), ('ἠ', 'ἧ'), ('ἰ', 'ἷ'), ('ὀ', 'ὅ'), + ('ὐ', 'ὗ'), ('ὠ', 'ὧ'), ('ὰ', 'ώ'), ('ᾀ', 'ᾇ'), + ('ᾐ', 'ᾗ'), ('ᾠ', 'ᾧ'), ('ᾰ', 'ᾴ'), ('ᾶ', 'ᾷ'), + ('ι', 'ι'), ('ῂ', 'ῄ'), ('ῆ', 'ῇ'), ('ῐ', 'ΐ'), + ('ῖ', 'ῗ'), ('ῠ', 'ῧ'), ('ῲ', 'ῴ'), ('ῶ', 'ῷ'), + ('ⁱ', 'ⁱ'), ('ⁿ', 'ⁿ'), ('ₐ', 'ₜ'), ('ℊ', 'ℊ'), + ('ℎ', 'ℏ'), ('ℓ', 'ℓ'), ('ℯ', 'ℯ'), ('ℴ', 'ℴ'), + ('ℹ', 'ℹ'), ('ℼ', 'ℽ'), ('ⅆ', 'ⅉ'), ('ⅎ', 'ⅎ'), + ('ⅰ', 'ⅿ'), ('ↄ', 'ↄ'), ('ⓐ', 'ⓩ'), ('ⰰ', 'ⱞ'), + ('ⱡ', 'ⱡ'), ('ⱥ', 'ⱦ'), ('ⱨ', 'ⱨ'), ('ⱪ', 'ⱪ'), + ('ⱬ', 'ⱬ'), ('ⱱ', 'ⱱ'), ('ⱳ', 'ⱴ'), ('ⱶ', 'ⱽ'), + ('ⲁ', 'ⲁ'), ('ⲃ', 'ⲃ'), ('ⲅ', 'ⲅ'), ('ⲇ', 'ⲇ'), + ('ⲉ', 'ⲉ'), ('ⲋ', 'ⲋ'), ('ⲍ', 'ⲍ'), ('ⲏ', 'ⲏ'), + ('ⲑ', 'ⲑ'), ('ⲓ', 'ⲓ'), ('ⲕ', 'ⲕ'), ('ⲗ', 'ⲗ'), + ('ⲙ', 'ⲙ'), ('ⲛ', 'ⲛ'), ('ⲝ', 'ⲝ'), ('ⲟ', 'ⲟ'), + ('ⲡ', 'ⲡ'), ('ⲣ', 'ⲣ'), ('ⲥ', 'ⲥ'), ('ⲧ', 'ⲧ'), + ('ⲩ', 'ⲩ'), ('ⲫ', 'ⲫ'), ('ⲭ', 'ⲭ'), ('ⲯ', 'ⲯ'), + ('ⲱ', 'ⲱ'), ('ⲳ', 'ⲳ'), ('ⲵ', 'ⲵ'), ('ⲷ', 'ⲷ'), + ('ⲹ', 'ⲹ'), ('ⲻ', 'ⲻ'), ('ⲽ', 'ⲽ'), ('ⲿ', 'ⲿ'), + ('ⳁ', 'ⳁ'), ('ⳃ', 'ⳃ'), ('ⳅ', 'ⳅ'), ('ⳇ', 'ⳇ'), + ('ⳉ', 'ⳉ'), ('ⳋ', 'ⳋ'), ('ⳍ', 'ⳍ'), ('ⳏ', 'ⳏ'), + ('ⳑ', 'ⳑ'), ('ⳓ', 'ⳓ'), ('ⳕ', 'ⳕ'), ('ⳗ', 'ⳗ'), + ('ⳙ', 'ⳙ'), ('ⳛ', 'ⳛ'), ('ⳝ', 'ⳝ'), ('ⳟ', 'ⳟ'), + ('ⳡ', 'ⳡ'), ('ⳣ', 'ⳤ'), ('ⳬ', 'ⳬ'), ('ⳮ', 'ⳮ'), + ('ⳳ', 'ⳳ'), ('ⴀ', 'ⴥ'), ('ⴧ', 'ⴧ'), ('ⴭ', 'ⴭ'), + ('ꙁ', 'ꙁ'), ('ꙃ', 'ꙃ'), ('ꙅ', 'ꙅ'), ('ꙇ', 'ꙇ'), + ('ꙉ', 'ꙉ'), ('ꙋ', 'ꙋ'), ('ꙍ', 'ꙍ'), ('ꙏ', 'ꙏ'), + ('ꙑ', 'ꙑ'), ('ꙓ', 'ꙓ'), ('ꙕ', 'ꙕ'), ('ꙗ', 'ꙗ'), + ('ꙙ', 'ꙙ'), ('ꙛ', 'ꙛ'), ('ꙝ', 'ꙝ'), ('ꙟ', 'ꙟ'), + ('ꙡ', 'ꙡ'), ('ꙣ', 'ꙣ'), ('ꙥ', 'ꙥ'), ('ꙧ', 'ꙧ'), + ('ꙩ', 'ꙩ'), ('ꙫ', 'ꙫ'), ('ꙭ', 'ꙭ'), ('ꚁ', 'ꚁ'), + ('ꚃ', 'ꚃ'), ('ꚅ', 'ꚅ'), ('ꚇ', 'ꚇ'), ('ꚉ', 'ꚉ'), + ('ꚋ', 'ꚋ'), ('ꚍ', 'ꚍ'), ('ꚏ', 'ꚏ'), ('ꚑ', 'ꚑ'), + ('ꚓ', 'ꚓ'), ('ꚕ', 'ꚕ'), ('ꚗ', 'ꚗ'), ('ꚙ', 'ꚙ'), + ('ꚛ', 'ꚝ'), ('ꜣ', 'ꜣ'), ('ꜥ', 'ꜥ'), ('ꜧ', 'ꜧ'), + ('ꜩ', 'ꜩ'), ('ꜫ', 'ꜫ'), ('ꜭ', 'ꜭ'), ('ꜯ', 'ꜱ'), + ('ꜳ', 'ꜳ'), ('ꜵ', 'ꜵ'), ('ꜷ', 'ꜷ'), ('ꜹ', 'ꜹ'), + ('ꜻ', 'ꜻ'), ('ꜽ', 'ꜽ'), ('ꜿ', 'ꜿ'), ('ꝁ', 'ꝁ'), + ('ꝃ', 'ꝃ'), ('ꝅ', 'ꝅ'), ('ꝇ', 'ꝇ'), ('ꝉ', 'ꝉ'), + ('ꝋ', 'ꝋ'), ('ꝍ', 'ꝍ'), ('ꝏ', 'ꝏ'), ('ꝑ', 'ꝑ'), + ('ꝓ', 'ꝓ'), ('ꝕ', 'ꝕ'), ('ꝗ', 'ꝗ'), ('ꝙ', 'ꝙ'), + ('ꝛ', 'ꝛ'), ('ꝝ', 'ꝝ'), ('ꝟ', 'ꝟ'), ('ꝡ', 'ꝡ'), + ('ꝣ', 'ꝣ'), ('ꝥ', 'ꝥ'), ('ꝧ', 'ꝧ'), ('ꝩ', 'ꝩ'), + ('ꝫ', 'ꝫ'), ('ꝭ', 'ꝭ'), ('ꝯ', 'ꝸ'), ('ꝺ', 'ꝺ'), + ('ꝼ', 'ꝼ'), ('ꝿ', 'ꝿ'), ('ꞁ', 'ꞁ'), ('ꞃ', 'ꞃ'), + ('ꞅ', 'ꞅ'), ('ꞇ', 'ꞇ'), ('ꞌ', 'ꞌ'), ('ꞎ', 'ꞎ'), + ('ꞑ', 'ꞑ'), ('ꞓ', 'ꞕ'), ('ꞗ', 'ꞗ'), ('ꞙ', 'ꞙ'), + ('ꞛ', 'ꞛ'), ('ꞝ', 'ꞝ'), ('ꞟ', 'ꞟ'), ('ꞡ', 'ꞡ'), + ('ꞣ', 'ꞣ'), ('ꞥ', 'ꞥ'), ('ꞧ', 'ꞧ'), ('ꞩ', 'ꞩ'), + ('ꞯ', 'ꞯ'), ('ꞵ', 'ꞵ'), ('ꞷ', 'ꞷ'), ('ꞹ', 'ꞹ'), + ('ꟸ', 'ꟺ'), ('ꬰ', 'ꭚ'), ('ꭜ', 'ꭥ'), ('ꭰ', 'ꮿ'), + ('ff', 'st'), ('ﬓ', 'ﬗ'), ('a', 'z'), ('𐐨', '𐑏'), + ('𐓘', '𐓻'), ('𐳀', '𐳲'), ('𑣀', '𑣟'), ('𖹠', '𖹿'), + ('𝐚', '𝐳'), ('𝑎', '𝑔'), ('𝑖', '𝑧'), ('𝒂', '𝒛'), + ('𝒶', '𝒹'), ('𝒻', '𝒻'), ('𝒽', '𝓃'), ('𝓅', '𝓏'), + ('𝓪', '𝔃'), ('𝔞', '𝔷'), ('𝕒', '𝕫'), ('𝖆', '𝖟'), + ('𝖺', '𝗓'), ('𝗮', '𝘇'), ('𝘢', '𝘻'), ('𝙖', '𝙯'), + ('𝚊', '𝚥'), ('𝛂', '𝛚'), ('𝛜', '𝛡'), ('𝛼', '𝜔'), + ('𝜖', '𝜛'), ('𝜶', '𝝎'), ('𝝐', '𝝕'), ('𝝰', '𝞈'), + ('𝞊', '𝞏'), ('𝞪', '𝟂'), ('𝟄', '𝟉'), ('𝟋', '𝟋'), + ('𞤢', '𞥃'), +]; + +pub const NUMERIC: &'static [(char, char)] = &[ + ('0', '9'), ('٠', '٩'), ('٫', '٬'), ('۰', '۹'), ('߀', '߉'), + ('०', '९'), ('০', '৯'), ('੦', '੯'), ('૦', '૯'), + ('୦', '୯'), ('௦', '௯'), ('౦', '౯'), ('೦', '೯'), + ('൦', '൯'), ('෦', '෯'), ('๐', '๙'), ('໐', '໙'), + ('༠', '༩'), ('၀', '၉'), ('႐', '႙'), ('០', '៩'), + ('᠐', '᠙'), ('᥆', '᥏'), ('᧐', '᧙'), ('᪀', '᪉'), + ('᪐', '᪙'), ('᭐', '᭙'), ('᮰', '᮹'), ('᱀', '᱉'), + ('᱐', '᱙'), ('꘠', '꘩'), ('꣐', '꣙'), ('꤀', '꤉'), + ('꧐', '꧙'), ('꧰', '꧹'), ('꩐', '꩙'), ('꯰', '꯹'), + ('𐒠', '𐒩'), ('𐴰', '𐴹'), ('𑁦', '𑁯'), ('𑃰', '𑃹'), + ('𑄶', '𑄿'), ('𑇐', '𑇙'), ('𑋰', '𑋹'), ('𑑐', '𑑙'), + ('𑓐', '𑓙'), ('𑙐', '𑙙'), ('𑛀', '𑛉'), ('𑜰', '𑜹'), + ('𑣠', '𑣩'), ('𑱐', '𑱙'), ('𑵐', '𑵙'), ('𑶠', '𑶩'), + ('𖩠', '𖩩'), ('𖭐', '𖭙'), ('𝟎', '𝟿'), ('𞥐', '𞥙'), +]; + +pub const OLETTER: &'static [(char, char)] = &[ + ('ƻ', 'ƻ'), ('ǀ', 'ǃ'), ('ʔ', 'ʔ'), ('ʹ', 'ʿ'), ('ˆ', 'ˑ'), + ('ˬ', 'ˬ'), ('ˮ', 'ˮ'), ('ʹ', 'ʹ'), ('ՙ', 'ՙ'), ('א', 'ת'), + ('ׯ', '׳'), ('ؠ', 'ي'), ('ٮ', 'ٯ'), ('ٱ', 'ۓ'), ('ە', 'ە'), + ('ۥ', 'ۦ'), ('ۮ', 'ۯ'), ('ۺ', 'ۼ'), ('ۿ', 'ۿ'), ('ܐ', 'ܐ'), + ('ܒ', 'ܯ'), ('ݍ', 'ޥ'), ('ޱ', 'ޱ'), ('ߊ', 'ߪ'), ('ߴ', 'ߵ'), + ('ߺ', 'ߺ'), ('ࠀ', 'ࠕ'), ('ࠚ', 'ࠚ'), ('ࠤ', 'ࠤ'), + ('ࠨ', 'ࠨ'), ('ࡀ', 'ࡘ'), ('ࡠ', 'ࡪ'), ('ࢠ', 'ࢴ'), + ('ࢶ', 'ࢽ'), ('ऄ', 'ह'), ('ऽ', 'ऽ'), ('ॐ', 'ॐ'), + ('क़', 'ॡ'), ('ॱ', 'ঀ'), ('অ', 'ঌ'), ('এ', 'ঐ'), + ('ও', 'ন'), ('প', 'র'), ('ল', 'ল'), ('শ', 'হ'), + ('ঽ', 'ঽ'), ('ৎ', 'ৎ'), ('ড়', 'ঢ়'), ('য়', 'ৡ'), + ('ৰ', 'ৱ'), ('ৼ', 'ৼ'), ('ਅ', 'ਊ'), ('ਏ', 'ਐ'), + ('ਓ', 'ਨ'), ('ਪ', 'ਰ'), ('ਲ', 'ਲ਼'), ('ਵ', 'ਸ਼'), + ('ਸ', 'ਹ'), ('ਖ਼', 'ੜ'), ('ਫ਼', 'ਫ਼'), ('ੲ', 'ੴ'), + ('અ', 'ઍ'), ('એ', 'ઑ'), ('ઓ', 'ન'), ('પ', 'ર'), + ('લ', 'ળ'), ('વ', 'હ'), ('ઽ', 'ઽ'), ('ૐ', 'ૐ'), + ('ૠ', 'ૡ'), ('ૹ', 'ૹ'), ('ଅ', 'ଌ'), ('ଏ', 'ଐ'), + ('ଓ', 'ନ'), ('ପ', 'ର'), ('ଲ', 'ଳ'), ('ଵ', 'ହ'), + ('ଽ', 'ଽ'), ('ଡ଼', 'ଢ଼'), ('ୟ', 'ୡ'), ('ୱ', 'ୱ'), + ('ஃ', 'ஃ'), ('அ', 'ஊ'), ('எ', 'ஐ'), ('ஒ', 'க'), + ('ங', 'ச'), ('ஜ', 'ஜ'), ('ஞ', 'ட'), ('ண', 'த'), + ('ந', 'ப'), ('ம', 'ஹ'), ('ௐ', 'ௐ'), ('అ', 'ఌ'), + ('ఎ', 'ఐ'), ('ఒ', 'న'), ('ప', 'హ'), ('ఽ', 'ఽ'), + ('ౘ', 'ౚ'), ('ౠ', 'ౡ'), ('ಀ', 'ಀ'), ('ಅ', 'ಌ'), + ('ಎ', 'ಐ'), ('ಒ', 'ನ'), ('ಪ', 'ಳ'), ('ವ', 'ಹ'), + ('ಽ', 'ಽ'), ('ೞ', 'ೞ'), ('ೠ', 'ೡ'), ('ೱ', 'ೲ'), + ('അ', 'ഌ'), ('എ', 'ഐ'), ('ഒ', 'ഺ'), ('ഽ', 'ഽ'), + ('ൎ', 'ൎ'), ('ൔ', 'ൖ'), ('ൟ', 'ൡ'), ('ൺ', 'ൿ'), + ('අ', 'ඖ'), ('ක', 'න'), ('ඳ', 'ර'), ('ල', 'ල'), + ('ව', 'ෆ'), ('ก', 'ะ'), ('า', 'ำ'), ('เ', 'ๆ'), + ('ກ', 'ຂ'), ('ຄ', 'ຄ'), ('ງ', 'ຈ'), ('ຊ', 'ຊ'), + ('ຍ', 'ຍ'), ('ດ', 'ທ'), ('ນ', 'ຟ'), ('ມ', 'ຣ'), + ('ລ', 'ລ'), ('ວ', 'ວ'), ('ສ', 'ຫ'), ('ອ', 'ະ'), + ('າ', 'ຳ'), ('ຽ', 'ຽ'), ('ເ', 'ໄ'), ('ໆ', 'ໆ'), + ('ໜ', 'ໟ'), ('ༀ', 'ༀ'), ('ཀ', 'ཇ'), ('ཉ', 'ཬ'), + ('ྈ', 'ྌ'), ('က', 'ဪ'), ('ဿ', 'ဿ'), ('ၐ', 'ၕ'), + ('ၚ', 'ၝ'), ('ၡ', 'ၡ'), ('ၥ', 'ၦ'), ('ၮ', 'ၰ'), + ('ၵ', 'ႁ'), ('ႎ', 'ႎ'), ('ჼ', 'ჼ'), ('ᄀ', 'ቈ'), + ('ቊ', 'ቍ'), ('ቐ', 'ቖ'), ('ቘ', 'ቘ'), ('ቚ', 'ቝ'), + ('በ', 'ኈ'), ('ኊ', 'ኍ'), ('ነ', 'ኰ'), ('ኲ', 'ኵ'), + ('ኸ', 'ኾ'), ('ዀ', 'ዀ'), ('ዂ', 'ዅ'), ('ወ', 'ዖ'), + ('ዘ', 'ጐ'), ('ጒ', 'ጕ'), ('ጘ', 'ፚ'), ('ᎀ', 'ᎏ'), + ('ᐁ', 'ᙬ'), ('ᙯ', 'ᙿ'), ('ᚁ', 'ᚚ'), ('ᚠ', 'ᛪ'), + ('ᛮ', 'ᛸ'), ('ᜀ', 'ᜌ'), ('ᜎ', 'ᜑ'), ('ᜠ', 'ᜱ'), + ('ᝀ', 'ᝑ'), ('ᝠ', 'ᝬ'), ('ᝮ', 'ᝰ'), ('ក', 'ឳ'), + ('ៗ', 'ៗ'), ('ៜ', 'ៜ'), ('ᠠ', 'ᡸ'), ('ᢀ', 'ᢄ'), + ('ᢇ', 'ᢨ'), ('ᢪ', 'ᢪ'), ('ᢰ', 'ᣵ'), ('ᤀ', 'ᤞ'), + ('ᥐ', 'ᥭ'), ('ᥰ', 'ᥴ'), ('ᦀ', 'ᦫ'), ('ᦰ', 'ᧉ'), + ('ᨀ', 'ᨖ'), ('ᨠ', 'ᩔ'), ('ᪧ', 'ᪧ'), ('ᬅ', 'ᬳ'), + ('ᭅ', 'ᭋ'), ('ᮃ', 'ᮠ'), ('ᮮ', 'ᮯ'), ('ᮺ', 'ᯥ'), + ('ᰀ', 'ᰣ'), ('ᱍ', 'ᱏ'), ('ᱚ', 'ᱽ'), ('ᳩ', 'ᳬ'), + ('ᳮ', 'ᳱ'), ('ᳵ', 'ᳶ'), ('ℵ', 'ℸ'), ('ↀ', 'ↂ'), + ('ↅ', 'ↈ'), ('ⴰ', 'ⵧ'), ('ⵯ', 'ⵯ'), ('ⶀ', 'ⶖ'), + ('ⶠ', 'ⶦ'), ('ⶨ', 'ⶮ'), ('ⶰ', 'ⶶ'), ('ⶸ', 'ⶾ'), + ('ⷀ', 'ⷆ'), ('ⷈ', 'ⷎ'), ('ⷐ', 'ⷖ'), ('ⷘ', 'ⷞ'), + ('ⸯ', 'ⸯ'), ('々', '〇'), ('〡', '〩'), ('〱', '〵'), + ('〸', '〼'), ('ぁ', 'ゖ'), ('ゝ', 'ゟ'), ('ァ', 'ヺ'), + ('ー', 'ヿ'), ('ㄅ', 'ㄯ'), ('ㄱ', 'ㆎ'), ('ㆠ', 'ㆺ'), + ('ㇰ', 'ㇿ'), ('㐀', '䶵'), ('一', '鿯'), ('ꀀ', 'ꒌ'), + ('ꓐ', 'ꓽ'), ('ꔀ', 'ꘌ'), ('ꘐ', 'ꘟ'), ('ꘪ', 'ꘫ'), + ('ꙮ', 'ꙮ'), ('ꙿ', 'ꙿ'), ('ꚠ', 'ꛯ'), ('ꜗ', 'ꜟ'), + ('ꞈ', 'ꞈ'), ('ꞏ', 'ꞏ'), ('ꟷ', 'ꟷ'), ('ꟻ', 'ꠁ'), + ('ꠃ', 'ꠅ'), ('ꠇ', 'ꠊ'), ('ꠌ', 'ꠢ'), ('ꡀ', 'ꡳ'), + ('ꢂ', 'ꢳ'), ('ꣲ', 'ꣷ'), ('ꣻ', 'ꣻ'), ('ꣽ', 'ꣾ'), + ('ꤊ', 'ꤥ'), ('ꤰ', 'ꥆ'), ('ꥠ', 'ꥼ'), ('ꦄ', 'ꦲ'), + ('ꧏ', 'ꧏ'), ('ꧠ', 'ꧤ'), ('ꧦ', 'ꧯ'), ('ꧺ', 'ꧾ'), + ('ꨀ', 'ꨨ'), ('ꩀ', 'ꩂ'), ('ꩄ', 'ꩋ'), ('ꩠ', 'ꩶ'), + ('ꩺ', 'ꩺ'), ('ꩾ', 'ꪯ'), ('ꪱ', 'ꪱ'), ('ꪵ', 'ꪶ'), + ('ꪹ', 'ꪽ'), ('ꫀ', 'ꫀ'), ('ꫂ', 'ꫂ'), ('ꫛ', 'ꫝ'), + ('ꫠ', 'ꫪ'), ('ꫲ', 'ꫴ'), ('ꬁ', 'ꬆ'), ('ꬉ', 'ꬎ'), + ('ꬑ', 'ꬖ'), ('ꬠ', 'ꬦ'), ('ꬨ', 'ꬮ'), ('ꯀ', 'ꯢ'), + ('가', '힣'), ('ힰ', 'ퟆ'), ('ퟋ', 'ퟻ'), ('豈', '舘'), + ('並', '龎'), ('יִ', 'יִ'), ('ײַ', 'ﬨ'), ('שׁ', 'זּ'), + ('טּ', 'לּ'), ('מּ', 'מּ'), ('נּ', 'סּ'), ('ףּ', 'פּ'), + ('צּ', 'ﮱ'), ('ﯓ', 'ﴽ'), ('ﵐ', 'ﶏ'), ('ﶒ', 'ﷇ'), + ('ﷰ', 'ﷻ'), ('ﹰ', 'ﹴ'), ('ﹶ', 'ﻼ'), ('ヲ', 'ン'), + ('ᅠ', 'ᄒ'), ('ᅡ', 'ᅦ'), ('ᅧ', 'ᅬ'), ('ᅭ', 'ᅲ'), + ('ᅳ', 'ᅵ'), ('𐀀', '𐀋'), ('𐀍', '𐀦'), ('𐀨', '𐀺'), + ('𐀼', '𐀽'), ('𐀿', '𐁍'), ('𐁐', '𐁝'), ('𐂀', '𐃺'), + ('𐅀', '𐅴'), ('𐊀', '𐊜'), ('𐊠', '𐋐'), ('𐌀', '𐌟'), + ('𐌭', '𐍊'), ('𐍐', '𐍵'), ('𐎀', '𐎝'), ('𐎠', '𐏃'), + ('𐏈', '𐏏'), ('𐏑', '𐏕'), ('𐑐', '𐒝'), ('𐔀', '𐔧'), + ('𐔰', '𐕣'), ('𐘀', '𐜶'), ('𐝀', '𐝕'), ('𐝠', '𐝧'), + ('𐠀', '𐠅'), ('𐠈', '𐠈'), ('𐠊', '𐠵'), ('𐠷', '𐠸'), + ('𐠼', '𐠼'), ('𐠿', '𐡕'), ('𐡠', '𐡶'), ('𐢀', '𐢞'), + ('𐣠', '𐣲'), ('𐣴', '𐣵'), ('𐤀', '𐤕'), ('𐤠', '𐤹'), + ('𐦀', '𐦷'), ('𐦾', '𐦿'), ('𐨀', '𐨀'), ('𐨐', '𐨓'), + ('𐨕', '𐨗'), ('𐨙', '𐨵'), ('𐩠', '𐩼'), ('𐪀', '𐪜'), + ('𐫀', '𐫇'), ('𐫉', '𐫤'), ('𐬀', '𐬵'), ('𐭀', '𐭕'), + ('𐭠', '𐭲'), ('𐮀', '𐮑'), ('𐰀', '𐱈'), ('𐴀', '𐴣'), + ('𐼀', '𐼜'), ('𐼧', '𐼧'), ('𐼰', '𐽅'), ('𑀃', '𑀷'), + ('𑂃', '𑂯'), ('𑃐', '𑃨'), ('𑄃', '𑄦'), ('𑅄', '𑅄'), + ('𑅐', '𑅲'), ('𑅶', '𑅶'), ('𑆃', '𑆲'), ('𑇁', '𑇄'), + ('𑇚', '𑇚'), ('𑇜', '𑇜'), ('𑈀', '𑈑'), ('𑈓', '𑈫'), + ('𑊀', '𑊆'), ('𑊈', '𑊈'), ('𑊊', '𑊍'), ('𑊏', '𑊝'), + ('𑊟', '𑊨'), ('𑊰', '𑋞'), ('𑌅', '𑌌'), ('𑌏', '𑌐'), + ('𑌓', '𑌨'), ('𑌪', '𑌰'), ('𑌲', '𑌳'), ('𑌵', '𑌹'), + ('𑌽', '𑌽'), ('𑍐', '𑍐'), ('𑍝', '𑍡'), ('𑐀', '𑐴'), + ('𑑇', '𑑊'), ('𑒀', '𑒯'), ('𑓄', '𑓅'), ('𑓇', '𑓇'), + ('𑖀', '𑖮'), ('𑗘', '𑗛'), ('𑘀', '𑘯'), ('𑙄', '𑙄'), + ('𑚀', '𑚪'), ('𑜀', '𑜚'), ('𑠀', '𑠫'), ('𑣿', '𑣿'), + ('𑨀', '𑨀'), ('𑨋', '𑨲'), ('𑨺', '𑨺'), ('𑩐', '𑩐'), + ('𑩜', '𑪃'), ('𑪆', '𑪉'), ('𑪝', '𑪝'), ('𑫀', '𑫸'), + ('𑰀', '𑰈'), ('𑰊', '𑰮'), ('𑱀', '𑱀'), ('𑱲', '𑲏'), + ('𑴀', '𑴆'), ('𑴈', '𑴉'), ('𑴋', '𑴰'), ('𑵆', '𑵆'), + ('𑵠', '𑵥'), ('𑵧', '𑵨'), ('𑵪', '𑶉'), ('𑶘', '𑶘'), + ('𑻠', '𑻲'), ('𒀀', '𒎙'), ('𒐀', '𒑮'), ('𒒀', '𒕃'), + ('𓀀', '𓐮'), ('𔐀', '𔙆'), ('𖠀', '𖨸'), ('𖩀', '𖩞'), + ('𖫐', '𖫭'), ('𖬀', '𖬯'), ('𖭀', '𖭃'), ('𖭣', '𖭷'), + ('𖭽', '𖮏'), ('𖼀', '𖽄'), ('𖽐', '𖽐'), ('𖾓', '𖾟'), + ('𖿠', '𖿡'), ('𗀀', '𘟱'), ('𘠀', '𘫲'), ('𛀀', '𛄞'), + ('𛅰', '𛋻'), ('𛰀', '𛱪'), ('𛱰', '𛱼'), ('𛲀', '𛲈'), + ('𛲐', '𛲙'), ('𞠀', '𞣄'), ('𞸀', '𞸃'), ('𞸅', '𞸟'), + ('𞸡', '𞸢'), ('𞸤', '𞸤'), ('𞸧', '𞸧'), ('𞸩', '𞸲'), + ('𞸴', '𞸷'), ('𞸹', '𞸹'), ('𞸻', '𞸻'), ('𞹂', '𞹂'), + ('𞹇', '𞹇'), ('𞹉', '𞹉'), ('𞹋', '𞹋'), ('𞹍', '𞹏'), + ('𞹑', '𞹒'), ('𞹔', '𞹔'), ('𞹗', '𞹗'), ('𞹙', '𞹙'), + ('𞹛', '𞹛'), ('𞹝', '𞹝'), ('𞹟', '𞹟'), ('𞹡', '𞹢'), + ('𞹤', '𞹤'), ('𞹧', '𞹪'), ('𞹬', '𞹲'), ('𞹴', '𞹷'), + ('𞹹', '𞹼'), ('𞹾', '𞹾'), ('𞺀', '𞺉'), ('𞺋', '𞺛'), + ('𞺡', '𞺣'), ('𞺥', '𞺩'), ('𞺫', '𞺻'), ('𠀀', '𪛖'), + ('𪜀', '𫜴'), ('𫝀', '𫠝'), ('𫠠', '𬺡'), ('𬺰', '𮯠'), + ('丽', '𪘀'), +]; + +pub const SCONTINUE: &'static [(char, char)] = &[ + (',', '-'), (':', ':'), ('՝', '՝'), ('،', '؍'), ('߸', '߸'), + ('᠂', '᠂'), ('᠈', '᠈'), ('–', '—'), ('、', '、'), + ('︐', '︑'), ('︓', '︓'), ('︱', '︲'), ('﹐', '﹑'), + ('﹕', '﹕'), ('﹘', '﹘'), ('﹣', '﹣'), (',', '-'), + (':', ':'), ('、', '、'), +]; + +pub const STERM: &'static [(char, char)] = &[ + ('!', '!'), ('?', '?'), ('։', '։'), ('؞', '؟'), ('۔', '۔'), + ('܀', '܂'), ('߹', '߹'), ('࠷', '࠷'), ('࠹', '࠹'), ('࠽', '࠾'), + ('।', '॥'), ('၊', '။'), ('።', '።'), ('፧', '፨'), + ('᙮', '᙮'), ('᜵', '᜶'), ('᠃', '᠃'), ('᠉', '᠉'), + ('᥄', '᥅'), ('᪨', '᪫'), ('᭚', '᭛'), ('᭞', '᭟'), + ('᰻', '᰼'), ('᱾', '᱿'), ('‼', '‽'), ('⁇', '⁉'), + ('⸮', '⸮'), ('⸼', '⸼'), ('。', '。'), ('꓿', '꓿'), + ('꘎', '꘏'), ('꛳', '꛳'), ('꛷', '꛷'), ('꡶', '꡷'), + ('꣎', '꣏'), ('꤯', '꤯'), ('꧈', '꧉'), ('꩝', '꩟'), + ('꫰', '꫱'), ('꯫', '꯫'), ('﹖', '﹗'), ('!', '!'), + ('?', '?'), ('。', '。'), ('𐩖', '𐩗'), ('𐽕', '𐽙'), + ('𑁇', '𑁈'), ('𑂾', '𑃁'), ('𑅁', '𑅃'), ('𑇅', '𑇆'), + ('𑇍', '𑇍'), ('𑇞', '𑇟'), ('𑈸', '𑈹'), ('𑈻', '𑈼'), + ('𑊩', '𑊩'), ('𑑋', '𑑌'), ('𑗂', '𑗃'), ('𑗉', '𑗗'), + ('𑙁', '𑙂'), ('𑜼', '𑜾'), ('𑩂', '𑩃'), ('𑪛', '𑪜'), + ('𑱁', '𑱂'), ('𑻷', '𑻸'), ('𖩮', '𖩯'), ('𖫵', '𖫵'), + ('𖬷', '𖬸'), ('𖭄', '𖭄'), ('𖺘', '𖺘'), ('𛲟', '𛲟'), + ('𝪈', '𝪈'), +]; + +pub const SEP: &'static [(char, char)] = &[ + ('\u{85}', '\u{85}'), ('\u{2028}', '\u{2029}'), +]; + +pub const SP: &'static [(char, char)] = &[ + ('\t', '\t'), ('\u{b}', '\u{c}'), (' ', ' '), ('\u{a0}', '\u{a0}'), + ('\u{1680}', '\u{1680}'), ('\u{2000}', '\u{200a}'), + ('\u{202f}', '\u{202f}'), ('\u{205f}', '\u{205f}'), + ('\u{3000}', '\u{3000}'), +]; + +pub const UPPER: &'static [(char, char)] = &[ + ('A', 'Z'), ('À', 'Ö'), ('Ø', 'Þ'), ('Ā', 'Ā'), ('Ă', 'Ă'), + ('Ą', 'Ą'), ('Ć', 'Ć'), ('Ĉ', 'Ĉ'), ('Ċ', 'Ċ'), ('Č', 'Č'), + ('Ď', 'Ď'), ('Đ', 'Đ'), ('Ē', 'Ē'), ('Ĕ', 'Ĕ'), ('Ė', 'Ė'), + ('Ę', 'Ę'), ('Ě', 'Ě'), ('Ĝ', 'Ĝ'), ('Ğ', 'Ğ'), ('Ġ', 'Ġ'), + ('Ģ', 'Ģ'), ('Ĥ', 'Ĥ'), ('Ħ', 'Ħ'), ('Ĩ', 'Ĩ'), ('Ī', 'Ī'), + ('Ĭ', 'Ĭ'), ('Į', 'Į'), ('İ', 'İ'), ('IJ', 'IJ'), ('Ĵ', 'Ĵ'), + ('Ķ', 'Ķ'), ('Ĺ', 'Ĺ'), ('Ļ', 'Ļ'), ('Ľ', 'Ľ'), ('Ŀ', 'Ŀ'), + ('Ł', 'Ł'), ('Ń', 'Ń'), ('Ņ', 'Ņ'), ('Ň', 'Ň'), ('Ŋ', 'Ŋ'), + ('Ō', 'Ō'), ('Ŏ', 'Ŏ'), ('Ő', 'Ő'), ('Œ', 'Œ'), ('Ŕ', 'Ŕ'), + ('Ŗ', 'Ŗ'), ('Ř', 'Ř'), ('Ś', 'Ś'), ('Ŝ', 'Ŝ'), ('Ş', 'Ş'), + ('Š', 'Š'), ('Ţ', 'Ţ'), ('Ť', 'Ť'), ('Ŧ', 'Ŧ'), ('Ũ', 'Ũ'), + ('Ū', 'Ū'), ('Ŭ', 'Ŭ'), ('Ů', 'Ů'), ('Ű', 'Ű'), ('Ų', 'Ų'), + ('Ŵ', 'Ŵ'), ('Ŷ', 'Ŷ'), ('Ÿ', 'Ź'), ('Ż', 'Ż'), ('Ž', 'Ž'), + ('Ɓ', 'Ƃ'), ('Ƅ', 'Ƅ'), ('Ɔ', 'Ƈ'), ('Ɖ', 'Ƌ'), ('Ǝ', 'Ƒ'), + ('Ɠ', 'Ɣ'), ('Ɩ', 'Ƙ'), ('Ɯ', 'Ɲ'), ('Ɵ', 'Ơ'), ('Ƣ', 'Ƣ'), + ('Ƥ', 'Ƥ'), ('Ʀ', 'Ƨ'), ('Ʃ', 'Ʃ'), ('Ƭ', 'Ƭ'), ('Ʈ', 'Ư'), + ('Ʊ', 'Ƴ'), ('Ƶ', 'Ƶ'), ('Ʒ', 'Ƹ'), ('Ƽ', 'Ƽ'), ('DŽ', 'Dž'), + ('LJ', 'Lj'), ('NJ', 'Nj'), ('Ǎ', 'Ǎ'), ('Ǐ', 'Ǐ'), ('Ǒ', 'Ǒ'), + ('Ǔ', 'Ǔ'), ('Ǖ', 'Ǖ'), ('Ǘ', 'Ǘ'), ('Ǚ', 'Ǚ'), ('Ǜ', 'Ǜ'), + ('Ǟ', 'Ǟ'), ('Ǡ', 'Ǡ'), ('Ǣ', 'Ǣ'), ('Ǥ', 'Ǥ'), ('Ǧ', 'Ǧ'), + ('Ǩ', 'Ǩ'), ('Ǫ', 'Ǫ'), ('Ǭ', 'Ǭ'), ('Ǯ', 'Ǯ'), ('DZ', 'Dz'), + ('Ǵ', 'Ǵ'), ('Ƕ', 'Ǹ'), ('Ǻ', 'Ǻ'), ('Ǽ', 'Ǽ'), ('Ǿ', 'Ǿ'), + ('Ȁ', 'Ȁ'), ('Ȃ', 'Ȃ'), ('Ȅ', 'Ȅ'), ('Ȇ', 'Ȇ'), ('Ȉ', 'Ȉ'), + ('Ȋ', 'Ȋ'), ('Ȍ', 'Ȍ'), ('Ȏ', 'Ȏ'), ('Ȑ', 'Ȑ'), ('Ȓ', 'Ȓ'), + ('Ȕ', 'Ȕ'), ('Ȗ', 'Ȗ'), ('Ș', 'Ș'), ('Ț', 'Ț'), ('Ȝ', 'Ȝ'), + ('Ȟ', 'Ȟ'), ('Ƞ', 'Ƞ'), ('Ȣ', 'Ȣ'), ('Ȥ', 'Ȥ'), ('Ȧ', 'Ȧ'), + ('Ȩ', 'Ȩ'), ('Ȫ', 'Ȫ'), ('Ȭ', 'Ȭ'), ('Ȯ', 'Ȯ'), ('Ȱ', 'Ȱ'), + ('Ȳ', 'Ȳ'), ('Ⱥ', 'Ȼ'), ('Ƚ', 'Ⱦ'), ('Ɂ', 'Ɂ'), ('Ƀ', 'Ɇ'), + ('Ɉ', 'Ɉ'), ('Ɋ', 'Ɋ'), ('Ɍ', 'Ɍ'), ('Ɏ', 'Ɏ'), ('Ͱ', 'Ͱ'), + ('Ͳ', 'Ͳ'), ('Ͷ', 'Ͷ'), ('Ϳ', 'Ϳ'), ('Ά', 'Ά'), ('Έ', 'Ί'), + ('Ό', 'Ό'), ('Ύ', 'Ώ'), ('Α', 'Ρ'), ('Σ', 'Ϋ'), ('Ϗ', 'Ϗ'), + ('ϒ', 'ϔ'), ('Ϙ', 'Ϙ'), ('Ϛ', 'Ϛ'), ('Ϝ', 'Ϝ'), ('Ϟ', 'Ϟ'), + ('Ϡ', 'Ϡ'), ('Ϣ', 'Ϣ'), ('Ϥ', 'Ϥ'), ('Ϧ', 'Ϧ'), ('Ϩ', 'Ϩ'), + ('Ϫ', 'Ϫ'), ('Ϭ', 'Ϭ'), ('Ϯ', 'Ϯ'), ('ϴ', 'ϴ'), ('Ϸ', 'Ϸ'), + ('Ϲ', 'Ϻ'), ('Ͻ', 'Я'), ('Ѡ', 'Ѡ'), ('Ѣ', 'Ѣ'), ('Ѥ', 'Ѥ'), + ('Ѧ', 'Ѧ'), ('Ѩ', 'Ѩ'), ('Ѫ', 'Ѫ'), ('Ѭ', 'Ѭ'), ('Ѯ', 'Ѯ'), + ('Ѱ', 'Ѱ'), ('Ѳ', 'Ѳ'), ('Ѵ', 'Ѵ'), ('Ѷ', 'Ѷ'), ('Ѹ', 'Ѹ'), + ('Ѻ', 'Ѻ'), ('Ѽ', 'Ѽ'), ('Ѿ', 'Ѿ'), ('Ҁ', 'Ҁ'), ('Ҋ', 'Ҋ'), + ('Ҍ', 'Ҍ'), ('Ҏ', 'Ҏ'), ('Ґ', 'Ґ'), ('Ғ', 'Ғ'), ('Ҕ', 'Ҕ'), + ('Җ', 'Җ'), ('Ҙ', 'Ҙ'), ('Қ', 'Қ'), ('Ҝ', 'Ҝ'), ('Ҟ', 'Ҟ'), + ('Ҡ', 'Ҡ'), ('Ң', 'Ң'), ('Ҥ', 'Ҥ'), ('Ҧ', 'Ҧ'), ('Ҩ', 'Ҩ'), + ('Ҫ', 'Ҫ'), ('Ҭ', 'Ҭ'), ('Ү', 'Ү'), ('Ұ', 'Ұ'), ('Ҳ', 'Ҳ'), + ('Ҵ', 'Ҵ'), ('Ҷ', 'Ҷ'), ('Ҹ', 'Ҹ'), ('Һ', 'Һ'), ('Ҽ', 'Ҽ'), + ('Ҿ', 'Ҿ'), ('Ӏ', 'Ӂ'), ('Ӄ', 'Ӄ'), ('Ӆ', 'Ӆ'), ('Ӈ', 'Ӈ'), + ('Ӊ', 'Ӊ'), ('Ӌ', 'Ӌ'), ('Ӎ', 'Ӎ'), ('Ӑ', 'Ӑ'), ('Ӓ', 'Ӓ'), + ('Ӕ', 'Ӕ'), ('Ӗ', 'Ӗ'), ('Ә', 'Ә'), ('Ӛ', 'Ӛ'), ('Ӝ', 'Ӝ'), + ('Ӟ', 'Ӟ'), ('Ӡ', 'Ӡ'), ('Ӣ', 'Ӣ'), ('Ӥ', 'Ӥ'), ('Ӧ', 'Ӧ'), + ('Ө', 'Ө'), ('Ӫ', 'Ӫ'), ('Ӭ', 'Ӭ'), ('Ӯ', 'Ӯ'), ('Ӱ', 'Ӱ'), + ('Ӳ', 'Ӳ'), ('Ӵ', 'Ӵ'), ('Ӷ', 'Ӷ'), ('Ӹ', 'Ӹ'), ('Ӻ', 'Ӻ'), + ('Ӽ', 'Ӽ'), ('Ӿ', 'Ӿ'), ('Ԁ', 'Ԁ'), ('Ԃ', 'Ԃ'), ('Ԅ', 'Ԅ'), + ('Ԇ', 'Ԇ'), ('Ԉ', 'Ԉ'), ('Ԋ', 'Ԋ'), ('Ԍ', 'Ԍ'), ('Ԏ', 'Ԏ'), + ('Ԑ', 'Ԑ'), ('Ԓ', 'Ԓ'), ('Ԕ', 'Ԕ'), ('Ԗ', 'Ԗ'), ('Ԙ', 'Ԙ'), + ('Ԛ', 'Ԛ'), ('Ԝ', 'Ԝ'), ('Ԟ', 'Ԟ'), ('Ԡ', 'Ԡ'), ('Ԣ', 'Ԣ'), + ('Ԥ', 'Ԥ'), ('Ԧ', 'Ԧ'), ('Ԩ', 'Ԩ'), ('Ԫ', 'Ԫ'), ('Ԭ', 'Ԭ'), + ('Ԯ', 'Ԯ'), ('Ա', 'Ֆ'), ('Ⴀ', 'Ⴥ'), ('Ⴧ', 'Ⴧ'), ('Ⴭ', 'Ⴭ'), + ('Ꭰ', 'Ᏽ'), ('Ა', 'Ჺ'), ('Ჽ', 'Ჿ'), ('Ḁ', 'Ḁ'), + ('Ḃ', 'Ḃ'), ('Ḅ', 'Ḅ'), ('Ḇ', 'Ḇ'), ('Ḉ', 'Ḉ'), + ('Ḋ', 'Ḋ'), ('Ḍ', 'Ḍ'), ('Ḏ', 'Ḏ'), ('Ḑ', 'Ḑ'), + ('Ḓ', 'Ḓ'), ('Ḕ', 'Ḕ'), ('Ḗ', 'Ḗ'), ('Ḙ', 'Ḙ'), + ('Ḛ', 'Ḛ'), ('Ḝ', 'Ḝ'), ('Ḟ', 'Ḟ'), ('Ḡ', 'Ḡ'), + ('Ḣ', 'Ḣ'), ('Ḥ', 'Ḥ'), ('Ḧ', 'Ḧ'), ('Ḩ', 'Ḩ'), + ('Ḫ', 'Ḫ'), ('Ḭ', 'Ḭ'), ('Ḯ', 'Ḯ'), ('Ḱ', 'Ḱ'), + ('Ḳ', 'Ḳ'), ('Ḵ', 'Ḵ'), ('Ḷ', 'Ḷ'), ('Ḹ', 'Ḹ'), + ('Ḻ', 'Ḻ'), ('Ḽ', 'Ḽ'), ('Ḿ', 'Ḿ'), ('Ṁ', 'Ṁ'), + ('Ṃ', 'Ṃ'), ('Ṅ', 'Ṅ'), ('Ṇ', 'Ṇ'), ('Ṉ', 'Ṉ'), + ('Ṋ', 'Ṋ'), ('Ṍ', 'Ṍ'), ('Ṏ', 'Ṏ'), ('Ṑ', 'Ṑ'), + ('Ṓ', 'Ṓ'), ('Ṕ', 'Ṕ'), ('Ṗ', 'Ṗ'), ('Ṙ', 'Ṙ'), + ('Ṛ', 'Ṛ'), ('Ṝ', 'Ṝ'), ('Ṟ', 'Ṟ'), ('Ṡ', 'Ṡ'), + ('Ṣ', 'Ṣ'), ('Ṥ', 'Ṥ'), ('Ṧ', 'Ṧ'), ('Ṩ', 'Ṩ'), + ('Ṫ', 'Ṫ'), ('Ṭ', 'Ṭ'), ('Ṯ', 'Ṯ'), ('Ṱ', 'Ṱ'), + ('Ṳ', 'Ṳ'), ('Ṵ', 'Ṵ'), ('Ṷ', 'Ṷ'), ('Ṹ', 'Ṹ'), + ('Ṻ', 'Ṻ'), ('Ṽ', 'Ṽ'), ('Ṿ', 'Ṿ'), ('Ẁ', 'Ẁ'), + ('Ẃ', 'Ẃ'), ('Ẅ', 'Ẅ'), ('Ẇ', 'Ẇ'), ('Ẉ', 'Ẉ'), + ('Ẋ', 'Ẋ'), ('Ẍ', 'Ẍ'), ('Ẏ', 'Ẏ'), ('Ẑ', 'Ẑ'), + ('Ẓ', 'Ẓ'), ('Ẕ', 'Ẕ'), ('ẞ', 'ẞ'), ('Ạ', 'Ạ'), + ('Ả', 'Ả'), ('Ấ', 'Ấ'), ('Ầ', 'Ầ'), ('Ẩ', 'Ẩ'), + ('Ẫ', 'Ẫ'), ('Ậ', 'Ậ'), ('Ắ', 'Ắ'), ('Ằ', 'Ằ'), + ('Ẳ', 'Ẳ'), ('Ẵ', 'Ẵ'), ('Ặ', 'Ặ'), ('Ẹ', 'Ẹ'), + ('Ẻ', 'Ẻ'), ('Ẽ', 'Ẽ'), ('Ế', 'Ế'), ('Ề', 'Ề'), + ('Ể', 'Ể'), ('Ễ', 'Ễ'), ('Ệ', 'Ệ'), ('Ỉ', 'Ỉ'), + ('Ị', 'Ị'), ('Ọ', 'Ọ'), ('Ỏ', 'Ỏ'), ('Ố', 'Ố'), + ('Ồ', 'Ồ'), ('Ổ', 'Ổ'), ('Ỗ', 'Ỗ'), ('Ộ', 'Ộ'), + ('Ớ', 'Ớ'), ('Ờ', 'Ờ'), ('Ở', 'Ở'), ('Ỡ', 'Ỡ'), + ('Ợ', 'Ợ'), ('Ụ', 'Ụ'), ('Ủ', 'Ủ'), ('Ứ', 'Ứ'), + ('Ừ', 'Ừ'), ('Ử', 'Ử'), ('Ữ', 'Ữ'), ('Ự', 'Ự'), + ('Ỳ', 'Ỳ'), ('Ỵ', 'Ỵ'), ('Ỷ', 'Ỷ'), ('Ỹ', 'Ỹ'), + ('Ỻ', 'Ỻ'), ('Ỽ', 'Ỽ'), ('Ỿ', 'Ỿ'), ('Ἀ', 'Ἇ'), + ('Ἐ', 'Ἕ'), ('Ἠ', 'Ἧ'), ('Ἰ', 'Ἷ'), ('Ὀ', 'Ὅ'), + ('Ὑ', 'Ὑ'), ('Ὓ', 'Ὓ'), ('Ὕ', 'Ὕ'), ('Ὗ', 'Ὗ'), + ('Ὠ', 'Ὧ'), ('ᾈ', 'ᾏ'), ('ᾘ', 'ᾟ'), ('ᾨ', 'ᾯ'), + ('Ᾰ', 'ᾼ'), ('Ὲ', 'ῌ'), ('Ῐ', 'Ί'), ('Ῠ', 'Ῥ'), + ('Ὸ', 'ῼ'), ('ℂ', 'ℂ'), ('ℇ', 'ℇ'), ('ℋ', 'ℍ'), + ('ℐ', 'ℒ'), ('ℕ', 'ℕ'), ('ℙ', 'ℝ'), ('ℤ', 'ℤ'), + ('Ω', 'Ω'), ('ℨ', 'ℨ'), ('K', 'ℭ'), ('ℰ', 'ℳ'), + ('ℾ', 'ℿ'), ('ⅅ', 'ⅅ'), ('Ⅰ', 'Ⅿ'), ('Ↄ', 'Ↄ'), + ('Ⓐ', 'Ⓩ'), ('Ⰰ', 'Ⱞ'), ('Ⱡ', 'Ⱡ'), ('Ɫ', 'Ɽ'), + ('Ⱨ', 'Ⱨ'), ('Ⱪ', 'Ⱪ'), ('Ⱬ', 'Ⱬ'), ('Ɑ', 'Ɒ'), + ('Ⱳ', 'Ⱳ'), ('Ⱶ', 'Ⱶ'), ('Ȿ', 'Ⲁ'), ('Ⲃ', 'Ⲃ'), + ('Ⲅ', 'Ⲅ'), ('Ⲇ', 'Ⲇ'), ('Ⲉ', 'Ⲉ'), ('Ⲋ', 'Ⲋ'), + ('Ⲍ', 'Ⲍ'), ('Ⲏ', 'Ⲏ'), ('Ⲑ', 'Ⲑ'), ('Ⲓ', 'Ⲓ'), + ('Ⲕ', 'Ⲕ'), ('Ⲗ', 'Ⲗ'), ('Ⲙ', 'Ⲙ'), ('Ⲛ', 'Ⲛ'), + ('Ⲝ', 'Ⲝ'), ('Ⲟ', 'Ⲟ'), ('Ⲡ', 'Ⲡ'), ('Ⲣ', 'Ⲣ'), + ('Ⲥ', 'Ⲥ'), ('Ⲧ', 'Ⲧ'), ('Ⲩ', 'Ⲩ'), ('Ⲫ', 'Ⲫ'), + ('Ⲭ', 'Ⲭ'), ('Ⲯ', 'Ⲯ'), ('Ⲱ', 'Ⲱ'), ('Ⲳ', 'Ⲳ'), + ('Ⲵ', 'Ⲵ'), ('Ⲷ', 'Ⲷ'), ('Ⲹ', 'Ⲹ'), ('Ⲻ', 'Ⲻ'), + ('Ⲽ', 'Ⲽ'), ('Ⲿ', 'Ⲿ'), ('Ⳁ', 'Ⳁ'), ('Ⳃ', 'Ⳃ'), + ('Ⳅ', 'Ⳅ'), ('Ⳇ', 'Ⳇ'), ('Ⳉ', 'Ⳉ'), ('Ⳋ', 'Ⳋ'), + ('Ⳍ', 'Ⳍ'), ('Ⳏ', 'Ⳏ'), ('Ⳑ', 'Ⳑ'), ('Ⳓ', 'Ⳓ'), + ('Ⳕ', 'Ⳕ'), ('Ⳗ', 'Ⳗ'), ('Ⳙ', 'Ⳙ'), ('Ⳛ', 'Ⳛ'), + ('Ⳝ', 'Ⳝ'), ('Ⳟ', 'Ⳟ'), ('Ⳡ', 'Ⳡ'), ('Ⳣ', 'Ⳣ'), + ('Ⳬ', 'Ⳬ'), ('Ⳮ', 'Ⳮ'), ('Ⳳ', 'Ⳳ'), ('Ꙁ', 'Ꙁ'), + ('Ꙃ', 'Ꙃ'), ('Ꙅ', 'Ꙅ'), ('Ꙇ', 'Ꙇ'), ('Ꙉ', 'Ꙉ'), + ('Ꙋ', 'Ꙋ'), ('Ꙍ', 'Ꙍ'), ('Ꙏ', 'Ꙏ'), ('Ꙑ', 'Ꙑ'), + ('Ꙓ', 'Ꙓ'), ('Ꙕ', 'Ꙕ'), ('Ꙗ', 'Ꙗ'), ('Ꙙ', 'Ꙙ'), + ('Ꙛ', 'Ꙛ'), ('Ꙝ', 'Ꙝ'), ('Ꙟ', 'Ꙟ'), ('Ꙡ', 'Ꙡ'), + ('Ꙣ', 'Ꙣ'), ('Ꙥ', 'Ꙥ'), ('Ꙧ', 'Ꙧ'), ('Ꙩ', 'Ꙩ'), + ('Ꙫ', 'Ꙫ'), ('Ꙭ', 'Ꙭ'), ('Ꚁ', 'Ꚁ'), ('Ꚃ', 'Ꚃ'), + ('Ꚅ', 'Ꚅ'), ('Ꚇ', 'Ꚇ'), ('Ꚉ', 'Ꚉ'), ('Ꚋ', 'Ꚋ'), + ('Ꚍ', 'Ꚍ'), ('Ꚏ', 'Ꚏ'), ('Ꚑ', 'Ꚑ'), ('Ꚓ', 'Ꚓ'), + ('Ꚕ', 'Ꚕ'), ('Ꚗ', 'Ꚗ'), ('Ꚙ', 'Ꚙ'), ('Ꚛ', 'Ꚛ'), + ('Ꜣ', 'Ꜣ'), ('Ꜥ', 'Ꜥ'), ('Ꜧ', 'Ꜧ'), ('Ꜩ', 'Ꜩ'), + ('Ꜫ', 'Ꜫ'), ('Ꜭ', 'Ꜭ'), ('Ꜯ', 'Ꜯ'), ('Ꜳ', 'Ꜳ'), + ('Ꜵ', 'Ꜵ'), ('Ꜷ', 'Ꜷ'), ('Ꜹ', 'Ꜹ'), ('Ꜻ', 'Ꜻ'), + ('Ꜽ', 'Ꜽ'), ('Ꜿ', 'Ꜿ'), ('Ꝁ', 'Ꝁ'), ('Ꝃ', 'Ꝃ'), + ('Ꝅ', 'Ꝅ'), ('Ꝇ', 'Ꝇ'), ('Ꝉ', 'Ꝉ'), ('Ꝋ', 'Ꝋ'), + ('Ꝍ', 'Ꝍ'), ('Ꝏ', 'Ꝏ'), ('Ꝑ', 'Ꝑ'), ('Ꝓ', 'Ꝓ'), + ('Ꝕ', 'Ꝕ'), ('Ꝗ', 'Ꝗ'), ('Ꝙ', 'Ꝙ'), ('Ꝛ', 'Ꝛ'), + ('Ꝝ', 'Ꝝ'), ('Ꝟ', 'Ꝟ'), ('Ꝡ', 'Ꝡ'), ('Ꝣ', 'Ꝣ'), + ('Ꝥ', 'Ꝥ'), ('Ꝧ', 'Ꝧ'), ('Ꝩ', 'Ꝩ'), ('Ꝫ', 'Ꝫ'), + ('Ꝭ', 'Ꝭ'), ('Ꝯ', 'Ꝯ'), ('Ꝺ', 'Ꝺ'), ('Ꝼ', 'Ꝼ'), + ('Ᵹ', 'Ꝿ'), ('Ꞁ', 'Ꞁ'), ('Ꞃ', 'Ꞃ'), ('Ꞅ', 'Ꞅ'), + ('Ꞇ', 'Ꞇ'), ('Ꞌ', 'Ꞌ'), ('Ɥ', 'Ɥ'), ('Ꞑ', 'Ꞑ'), + ('Ꞓ', 'Ꞓ'), ('Ꞗ', 'Ꞗ'), ('Ꞙ', 'Ꞙ'), ('Ꞛ', 'Ꞛ'), + ('Ꞝ', 'Ꞝ'), ('Ꞟ', 'Ꞟ'), ('Ꞡ', 'Ꞡ'), ('Ꞣ', 'Ꞣ'), + ('Ꞥ', 'Ꞥ'), ('Ꞧ', 'Ꞧ'), ('Ꞩ', 'Ꞩ'), ('Ɦ', 'Ɪ'), + ('Ʞ', 'Ꞵ'), ('Ꞷ', 'Ꞷ'), ('Ꞹ', 'Ꞹ'), ('A', 'Z'), + ('𐐀', '𐐧'), ('𐒰', '𐓓'), ('𐲀', '𐲲'), ('𑢠', '𑢿'), + ('𖹀', '𖹟'), ('𝐀', '𝐙'), ('𝐴', '𝑍'), ('𝑨', '𝒁'), + ('𝒜', '𝒜'), ('𝒞', '𝒟'), ('𝒢', '𝒢'), ('𝒥', '𝒦'), + ('𝒩', '𝒬'), ('𝒮', '𝒵'), ('𝓐', '𝓩'), ('𝔄', '𝔅'), + ('𝔇', '𝔊'), ('𝔍', '𝔔'), ('𝔖', '𝔜'), ('𝔸', '𝔹'), + ('𝔻', '𝔾'), ('𝕀', '𝕄'), ('𝕆', '𝕆'), ('𝕊', '𝕐'), + ('𝕬', '𝖅'), ('𝖠', '𝖹'), ('𝗔', '𝗭'), ('𝘈', '𝘡'), + ('𝘼', '𝙕'), ('𝙰', '𝚉'), ('𝚨', '𝛀'), ('𝛢', '𝛺'), + ('𝜜', '𝜴'), ('𝝖', '𝝮'), ('𝞐', '𝞨'), ('𝟊', '𝟊'), + ('𞤀', '𞤡'), ('🄰', '🅉'), ('🅐', '🅩'), ('🅰', '🆉'), +]; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/word_break.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/word_break.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/word_break.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/regex-syntax/src/unicode_tables/word_break.rs 2019-01-04 19:47:55.000000000 +0000 @@ -0,0 +1,351 @@ +// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY: +// +// ucd-generate word-break /home/andrew/tmp/ucd-11.0.0/ --chars +// +// ucd-generate is available on crates.io. + +pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[ + ("ALetter", ALETTER), ("CR", CR), ("Double_Quote", DOUBLE_QUOTE), + ("Extend", EXTEND), ("ExtendNumLet", EXTENDNUMLET), ("Format", FORMAT), + ("Hebrew_Letter", HEBREW_LETTER), ("Katakana", KATAKANA), ("LF", LF), + ("MidLetter", MIDLETTER), ("MidNum", MIDNUM), ("MidNumLet", MIDNUMLET), + ("Newline", NEWLINE), ("Numeric", NUMERIC), + ("Regional_Indicator", REGIONAL_INDICATOR), ("Single_Quote", SINGLE_QUOTE), + ("WSegSpace", WSEGSPACE), ("ZWJ", ZWJ), +]; + +pub const ALETTER: &'static [(char, char)] = &[ + ('A', 'Z'), ('a', 'z'), ('ª', 'ª'), ('µ', 'µ'), ('º', 'º'), + ('À', 'Ö'), ('Ø', 'ö'), ('ø', '˗'), ('˞', 'ˤ'), ('ˬ', '˿'), + ('Ͱ', 'ʹ'), ('Ͷ', 'ͷ'), ('ͺ', 'ͽ'), ('Ϳ', 'Ϳ'), ('Ά', 'Ά'), + ('Έ', 'Ί'), ('Ό', 'Ό'), ('Ύ', 'Ρ'), ('Σ', 'ϵ'), ('Ϸ', 'ҁ'), + ('Ҋ', 'ԯ'), ('Ա', 'Ֆ'), ('ՙ', 'ՙ'), ('՛', '՜'), ('՞', '՞'), + ('ՠ', 'ֈ'), ('׳', '׳'), ('ؠ', 'ي'), ('ٮ', 'ٯ'), ('ٱ', 'ۓ'), + ('ە', 'ە'), ('ۥ', 'ۦ'), ('ۮ', 'ۯ'), ('ۺ', 'ۼ'), ('ۿ', 'ۿ'), + ('ܐ', 'ܐ'), ('ܒ', 'ܯ'), ('ݍ', 'ޥ'), ('ޱ', 'ޱ'), ('ߊ', 'ߪ'), + ('ߴ', 'ߵ'), ('ߺ', 'ߺ'), ('ࠀ', 'ࠕ'), ('ࠚ', 'ࠚ'), ('ࠤ', 'ࠤ'), + ('ࠨ', 'ࠨ'), ('ࡀ', 'ࡘ'), ('ࡠ', 'ࡪ'), ('ࢠ', 'ࢴ'), + ('ࢶ', 'ࢽ'), ('ऄ', 'ह'), ('ऽ', 'ऽ'), ('ॐ', 'ॐ'), + ('क़', 'ॡ'), ('ॱ', 'ঀ'), ('অ', 'ঌ'), ('এ', 'ঐ'), + ('ও', 'ন'), ('প', 'র'), ('ল', 'ল'), ('শ', 'হ'), + ('ঽ', 'ঽ'), ('ৎ', 'ৎ'), ('ড়', 'ঢ়'), ('য়', 'ৡ'), + ('ৰ', 'ৱ'), ('ৼ', 'ৼ'), ('ਅ', 'ਊ'), ('ਏ', 'ਐ'), + ('ਓ', 'ਨ'), ('ਪ', 'ਰ'), ('ਲ', 'ਲ਼'), ('ਵ', 'ਸ਼'), + ('ਸ', 'ਹ'), ('ਖ਼', 'ੜ'), ('ਫ਼', 'ਫ਼'), ('ੲ', 'ੴ'), + ('અ', 'ઍ'), ('એ', 'ઑ'), ('ઓ', 'ન'), ('પ', 'ર'), + ('લ', 'ળ'), ('વ', 'હ'), ('ઽ', 'ઽ'), ('ૐ', 'ૐ'), + ('ૠ', 'ૡ'), ('ૹ', 'ૹ'), ('ଅ', 'ଌ'), ('ଏ', 'ଐ'), + ('ଓ', 'ନ'), ('ପ', 'ର'), ('ଲ', 'ଳ'), ('ଵ', 'ହ'), + ('ଽ', 'ଽ'), ('ଡ଼', 'ଢ଼'), ('ୟ', 'ୡ'), ('ୱ', 'ୱ'), + ('ஃ', 'ஃ'), ('அ', 'ஊ'), ('எ', 'ஐ'), ('ஒ', 'க'), + ('ங', 'ச'), ('ஜ', 'ஜ'), ('ஞ', 'ட'), ('ண', 'த'), + ('ந', 'ப'), ('ம', 'ஹ'), ('ௐ', 'ௐ'), ('అ', 'ఌ'), + ('ఎ', 'ఐ'), ('ఒ', 'న'), ('ప', 'హ'), ('ఽ', 'ఽ'), + ('ౘ', 'ౚ'), ('ౠ', 'ౡ'), ('ಀ', 'ಀ'), ('ಅ', 'ಌ'), + ('ಎ', 'ಐ'), ('ಒ', 'ನ'), ('ಪ', 'ಳ'), ('ವ', 'ಹ'), + ('ಽ', 'ಽ'), ('ೞ', 'ೞ'), ('ೠ', 'ೡ'), ('ೱ', 'ೲ'), + ('അ', 'ഌ'), ('എ', 'ഐ'), ('ഒ', 'ഺ'), ('ഽ', 'ഽ'), + ('ൎ', 'ൎ'), ('ൔ', 'ൖ'), ('ൟ', 'ൡ'), ('ൺ', 'ൿ'), + ('අ', 'ඖ'), ('ක', 'න'), ('ඳ', 'ර'), ('ල', 'ල'), + ('ව', 'ෆ'), ('ༀ', 'ༀ'), ('ཀ', 'ཇ'), ('ཉ', 'ཬ'), + ('ྈ', 'ྌ'), ('Ⴀ', 'Ⴥ'), ('Ⴧ', 'Ⴧ'), ('Ⴭ', 'Ⴭ'), + ('ა', 'ჺ'), ('ჼ', 'ቈ'), ('ቊ', 'ቍ'), ('ቐ', 'ቖ'), + ('ቘ', 'ቘ'), ('ቚ', 'ቝ'), ('በ', 'ኈ'), ('ኊ', 'ኍ'), + ('ነ', 'ኰ'), ('ኲ', 'ኵ'), ('ኸ', 'ኾ'), ('ዀ', 'ዀ'), + ('ዂ', 'ዅ'), ('ወ', 'ዖ'), ('ዘ', 'ጐ'), ('ጒ', 'ጕ'), + ('ጘ', 'ፚ'), ('ᎀ', 'ᎏ'), ('Ꭰ', 'Ᏽ'), ('ᏸ', 'ᏽ'), + ('ᐁ', 'ᙬ'), ('ᙯ', 'ᙿ'), ('ᚁ', 'ᚚ'), ('ᚠ', 'ᛪ'), + ('ᛮ', 'ᛸ'), ('ᜀ', 'ᜌ'), ('ᜎ', 'ᜑ'), ('ᜠ', 'ᜱ'), + ('ᝀ', 'ᝑ'), ('ᝠ', 'ᝬ'), ('ᝮ', 'ᝰ'), ('ᠠ', 'ᡸ'), + ('ᢀ', 'ᢄ'), ('ᢇ', 'ᢨ'), ('ᢪ', 'ᢪ'), ('ᢰ', 'ᣵ'), + ('ᤀ', 'ᤞ'), ('ᨀ', 'ᨖ'), ('ᬅ', 'ᬳ'), ('ᭅ', 'ᭋ'), + ('ᮃ', 'ᮠ'), ('ᮮ', 'ᮯ'), ('ᮺ', 'ᯥ'), ('ᰀ', 'ᰣ'), + ('ᱍ', 'ᱏ'), ('ᱚ', 'ᱽ'), ('ᲀ', 'ᲈ'), ('Ა', 'Ჺ'), + ('Ჽ', 'Ჿ'), ('ᳩ', 'ᳬ'), ('ᳮ', 'ᳱ'), ('ᳵ', 'ᳶ'), + ('ᴀ', 'ᶿ'), ('Ḁ', 'ἕ'), ('Ἐ', 'Ἕ'), ('ἠ', 'ὅ'), + ('Ὀ', 'Ὅ'), ('ὐ', 'ὗ'), ('Ὑ', 'Ὑ'), ('Ὓ', 'Ὓ'), + ('Ὕ', 'Ὕ'), ('Ὗ', 'ώ'), ('ᾀ', 'ᾴ'), ('ᾶ', 'ᾼ'), + ('ι', 'ι'), ('ῂ', 'ῄ'), ('ῆ', 'ῌ'), ('ῐ', 'ΐ'), + ('ῖ', 'Ί'), ('ῠ', 'Ῥ'), ('ῲ', 'ῴ'), ('ῶ', 'ῼ'), + ('ⁱ', 'ⁱ'), ('ⁿ', 'ⁿ'), ('ₐ', 'ₜ'), ('ℂ', 'ℂ'), + ('ℇ', 'ℇ'), ('ℊ', 'ℓ'), ('ℕ', 'ℕ'), ('ℙ', 'ℝ'), + ('ℤ', 'ℤ'), ('Ω', 'Ω'), ('ℨ', 'ℨ'), ('K', 'ℭ'), + ('ℯ', 'ℹ'), ('ℼ', 'ℿ'), ('ⅅ', 'ⅉ'), ('ⅎ', 'ⅎ'), + ('Ⅰ', 'ↈ'), ('Ⓐ', 'ⓩ'), ('Ⰰ', 'Ⱞ'), ('ⰰ', 'ⱞ'), + ('Ⱡ', 'ⳤ'), ('Ⳬ', 'ⳮ'), ('Ⳳ', 'ⳳ'), ('ⴀ', 'ⴥ'), + ('ⴧ', 'ⴧ'), ('ⴭ', 'ⴭ'), ('ⴰ', 'ⵧ'), ('ⵯ', 'ⵯ'), + ('ⶀ', 'ⶖ'), ('ⶠ', 'ⶦ'), ('ⶨ', 'ⶮ'), ('ⶰ', 'ⶶ'), + ('ⶸ', 'ⶾ'), ('ⷀ', 'ⷆ'), ('ⷈ', 'ⷎ'), ('ⷐ', 'ⷖ'), + ('ⷘ', 'ⷞ'), ('ⸯ', 'ⸯ'), ('々', '々'), ('〻', '〼'), + ('ㄅ', 'ㄯ'), ('ㄱ', 'ㆎ'), ('ㆠ', 'ㆺ'), ('ꀀ', 'ꒌ'), + ('ꓐ', 'ꓽ'), ('ꔀ', 'ꘌ'), ('ꘐ', 'ꘟ'), ('ꘪ', 'ꘫ'), + ('Ꙁ', 'ꙮ'), ('ꙿ', 'ꚝ'), ('ꚠ', 'ꛯ'), ('ꜗ', 'ꞹ'), + ('ꟷ', 'ꠁ'), ('ꠃ', 'ꠅ'), ('ꠇ', 'ꠊ'), ('ꠌ', 'ꠢ'), + ('ꡀ', 'ꡳ'), ('ꢂ', 'ꢳ'), ('ꣲ', 'ꣷ'), ('ꣻ', 'ꣻ'), + ('ꣽ', 'ꣾ'), ('ꤊ', 'ꤥ'), ('ꤰ', 'ꥆ'), ('ꥠ', 'ꥼ'), + ('ꦄ', 'ꦲ'), ('ꧏ', 'ꧏ'), ('ꨀ', 'ꨨ'), ('ꩀ', 'ꩂ'), + ('ꩄ', 'ꩋ'), ('ꫠ', 'ꫪ'), ('ꫲ', 'ꫴ'), ('ꬁ', 'ꬆ'), + ('ꬉ', 'ꬎ'), ('ꬑ', 'ꬖ'), ('ꬠ', 'ꬦ'), ('ꬨ', 'ꬮ'), + ('ꬰ', 'ꭥ'), ('ꭰ', 'ꯢ'), ('가', '힣'), ('ힰ', 'ퟆ'), + ('ퟋ', 'ퟻ'), ('ff', 'st'), ('ﬓ', 'ﬗ'), ('ﭐ', 'ﮱ'), + ('ﯓ', 'ﴽ'), ('ﵐ', 'ﶏ'), ('ﶒ', 'ﷇ'), ('ﷰ', 'ﷻ'), + ('ﹰ', 'ﹴ'), ('ﹶ', 'ﻼ'), ('A', 'Z'), ('a', 'z'), + ('ᅠ', 'ᄒ'), ('ᅡ', 'ᅦ'), ('ᅧ', 'ᅬ'), ('ᅭ', 'ᅲ'), + ('ᅳ', 'ᅵ'), ('𐀀', '𐀋'), ('𐀍', '𐀦'), ('𐀨', '𐀺'), + ('𐀼', '𐀽'), ('𐀿', '𐁍'), ('𐁐', '𐁝'), ('𐂀', '𐃺'), + ('𐅀', '𐅴'), ('𐊀', '𐊜'), ('𐊠', '𐋐'), ('𐌀', '𐌟'), + ('𐌭', '𐍊'), ('𐍐', '𐍵'), ('𐎀', '𐎝'), ('𐎠', '𐏃'), + ('𐏈', '𐏏'), ('𐏑', '𐏕'), ('𐐀', '𐒝'), ('𐒰', '𐓓'), + ('𐓘', '𐓻'), ('𐔀', '𐔧'), ('𐔰', '𐕣'), ('𐘀', '𐜶'), + ('𐝀', '𐝕'), ('𐝠', '𐝧'), ('𐠀', '𐠅'), ('𐠈', '𐠈'), + ('𐠊', '𐠵'), ('𐠷', '𐠸'), ('𐠼', '𐠼'), ('𐠿', '𐡕'), + ('𐡠', '𐡶'), ('𐢀', '𐢞'), ('𐣠', '𐣲'), ('𐣴', '𐣵'), + ('𐤀', '𐤕'), ('𐤠', '𐤹'), ('𐦀', '𐦷'), ('𐦾', '𐦿'), + ('𐨀', '𐨀'), ('𐨐', '𐨓'), ('𐨕', '𐨗'), ('𐨙', '𐨵'), + ('𐩠', '𐩼'), ('𐪀', '𐪜'), ('𐫀', '𐫇'), ('𐫉', '𐫤'), + ('𐬀', '𐬵'), ('𐭀', '𐭕'), ('𐭠', '𐭲'), ('𐮀', '𐮑'), + ('𐰀', '𐱈'), ('𐲀', '𐲲'), ('𐳀', '𐳲'), ('𐴀', '𐴣'), + ('𐼀', '𐼜'), ('𐼧', '𐼧'), ('𐼰', '𐽅'), ('𑀃', '𑀷'), + ('𑂃', '𑂯'), ('𑃐', '𑃨'), ('𑄃', '𑄦'), ('𑅄', '𑅄'), + ('𑅐', '𑅲'), ('𑅶', '𑅶'), ('𑆃', '𑆲'), ('𑇁', '𑇄'), + ('𑇚', '𑇚'), ('𑇜', '𑇜'), ('𑈀', '𑈑'), ('𑈓', '𑈫'), + ('𑊀', '𑊆'), ('𑊈', '𑊈'), ('𑊊', '𑊍'), ('𑊏', '𑊝'), + ('𑊟', '𑊨'), ('𑊰', '𑋞'), ('𑌅', '𑌌'), ('𑌏', '𑌐'), + ('𑌓', '𑌨'), ('𑌪', '𑌰'), ('𑌲', '𑌳'), ('𑌵', '𑌹'), + ('𑌽', '𑌽'), ('𑍐', '𑍐'), ('𑍝', '𑍡'), ('𑐀', '𑐴'), + ('𑑇', '𑑊'), ('𑒀', '𑒯'), ('𑓄', '𑓅'), ('𑓇', '𑓇'), + ('𑖀', '𑖮'), ('𑗘', '𑗛'), ('𑘀', '𑘯'), ('𑙄', '𑙄'), + ('𑚀', '𑚪'), ('𑠀', '𑠫'), ('𑢠', '𑣟'), ('𑣿', '𑣿'), + ('𑨀', '𑨀'), ('𑨋', '𑨲'), ('𑨺', '𑨺'), ('𑩐', '𑩐'), + ('𑩜', '𑪃'), ('𑪆', '𑪉'), ('𑪝', '𑪝'), ('𑫀', '𑫸'), + ('𑰀', '𑰈'), ('𑰊', '𑰮'), ('𑱀', '𑱀'), ('𑱲', '𑲏'), + ('𑴀', '𑴆'), ('𑴈', '𑴉'), ('𑴋', '𑴰'), ('𑵆', '𑵆'), + ('𑵠', '𑵥'), ('𑵧', '𑵨'), ('𑵪', '𑶉'), ('𑶘', '𑶘'), + ('𑻠', '𑻲'), ('𒀀', '𒎙'), ('𒐀', '𒑮'), ('𒒀', '𒕃'), + ('𓀀', '𓐮'), ('𔐀', '𔙆'), ('𖠀', '𖨸'), ('𖩀', '𖩞'), + ('𖫐', '𖫭'), ('𖬀', '𖬯'), ('𖭀', '𖭃'), ('𖭣', '𖭷'), + ('𖭽', '𖮏'), ('𖹀', '𖹿'), ('𖼀', '𖽄'), ('𖽐', '𖽐'), + ('𖾓', '𖾟'), ('𖿠', '𖿡'), ('𛰀', '𛱪'), ('𛱰', '𛱼'), + ('𛲀', '𛲈'), ('𛲐', '𛲙'), ('𝐀', '𝑔'), ('𝑖', '𝒜'), + ('𝒞', '𝒟'), ('𝒢', '𝒢'), ('𝒥', '𝒦'), ('𝒩', '𝒬'), + ('𝒮', '𝒹'), ('𝒻', '𝒻'), ('𝒽', '𝓃'), ('𝓅', '𝔅'), + ('𝔇', '𝔊'), ('𝔍', '𝔔'), ('𝔖', '𝔜'), ('𝔞', '𝔹'), + ('𝔻', '𝔾'), ('𝕀', '𝕄'), ('𝕆', '𝕆'), ('𝕊', '𝕐'), + ('𝕒', '𝚥'), ('𝚨', '𝛀'), ('𝛂', '𝛚'), ('𝛜', '𝛺'), + ('𝛼', '𝜔'), ('𝜖', '𝜴'), ('𝜶', '𝝎'), ('𝝐', '𝝮'), + ('𝝰', '𝞈'), ('𝞊', '𝞨'), ('𝞪', '𝟂'), ('𝟄', '𝟋'), + ('𞠀', '𞣄'), ('𞤀', '𞥃'), ('𞸀', '𞸃'), ('𞸅', '𞸟'), + ('𞸡', '𞸢'), ('𞸤', '𞸤'), ('𞸧', '𞸧'), ('𞸩', '𞸲'), + ('𞸴', '𞸷'), ('𞸹', '𞸹'), ('𞸻', '𞸻'), ('𞹂', '𞹂'), + ('𞹇', '𞹇'), ('𞹉', '𞹉'), ('𞹋', '𞹋'), ('𞹍', '𞹏'), + ('𞹑', '𞹒'), ('𞹔', '𞹔'), ('𞹗', '𞹗'), ('𞹙', '𞹙'), + ('𞹛', '𞹛'), ('𞹝', '𞹝'), ('𞹟', '𞹟'), ('𞹡', '𞹢'), + ('𞹤', '𞹤'), ('𞹧', '𞹪'), ('𞹬', '𞹲'), ('𞹴', '𞹷'), + ('𞹹', '𞹼'), ('𞹾', '𞹾'), ('𞺀', '𞺉'), ('𞺋', '𞺛'), + ('𞺡', '𞺣'), ('𞺥', '𞺩'), ('𞺫', '𞺻'), ('🄰', '🅉'), + ('🅐', '🅩'), ('🅰', '🆉'), +]; + +pub const CR: &'static [(char, char)] = &[ + ('\r', '\r'), +]; + +pub const DOUBLE_QUOTE: &'static [(char, char)] = &[ + ('\"', '\"'), +]; + +pub const EXTEND: &'static [(char, char)] = &[ + ('\u{300}', '\u{36f}'), ('\u{483}', '\u{489}'), ('\u{591}', '\u{5bd}'), + ('\u{5bf}', '\u{5bf}'), ('\u{5c1}', '\u{5c2}'), ('\u{5c4}', '\u{5c5}'), + ('\u{5c7}', '\u{5c7}'), ('\u{610}', '\u{61a}'), ('\u{64b}', '\u{65f}'), + ('\u{670}', '\u{670}'), ('\u{6d6}', '\u{6dc}'), ('\u{6df}', '\u{6e4}'), + ('\u{6e7}', '\u{6e8}'), ('\u{6ea}', '\u{6ed}'), ('\u{711}', '\u{711}'), + ('\u{730}', '\u{74a}'), ('\u{7a6}', '\u{7b0}'), ('\u{7eb}', '\u{7f3}'), + ('\u{7fd}', '\u{7fd}'), ('\u{816}', '\u{819}'), ('\u{81b}', '\u{823}'), + ('\u{825}', '\u{827}'), ('\u{829}', '\u{82d}'), ('\u{859}', '\u{85b}'), + ('\u{8d3}', '\u{8e1}'), ('\u{8e3}', 'ः'), ('\u{93a}', '\u{93c}'), + ('ा', 'ॏ'), ('\u{951}', '\u{957}'), ('\u{962}', '\u{963}'), + ('\u{981}', 'ঃ'), ('\u{9bc}', '\u{9bc}'), ('\u{9be}', '\u{9c4}'), + ('ে', 'ৈ'), ('ো', '\u{9cd}'), ('\u{9d7}', '\u{9d7}'), + ('\u{9e2}', '\u{9e3}'), ('\u{9fe}', '\u{9fe}'), ('\u{a01}', 'ਃ'), + ('\u{a3c}', '\u{a3c}'), ('ਾ', '\u{a42}'), ('\u{a47}', '\u{a48}'), + ('\u{a4b}', '\u{a4d}'), ('\u{a51}', '\u{a51}'), ('\u{a70}', '\u{a71}'), + ('\u{a75}', '\u{a75}'), ('\u{a81}', 'ઃ'), ('\u{abc}', '\u{abc}'), + ('ા', '\u{ac5}'), ('\u{ac7}', 'ૉ'), ('ો', '\u{acd}'), + ('\u{ae2}', '\u{ae3}'), ('\u{afa}', '\u{aff}'), ('\u{b01}', 'ଃ'), + ('\u{b3c}', '\u{b3c}'), ('\u{b3e}', '\u{b44}'), ('େ', 'ୈ'), + ('ୋ', '\u{b4d}'), ('\u{b56}', '\u{b57}'), ('\u{b62}', '\u{b63}'), + ('\u{b82}', '\u{b82}'), ('\u{bbe}', 'ூ'), ('ெ', 'ை'), + ('ொ', '\u{bcd}'), ('\u{bd7}', '\u{bd7}'), ('\u{c00}', '\u{c04}'), + ('\u{c3e}', 'ౄ'), ('\u{c46}', '\u{c48}'), ('\u{c4a}', '\u{c4d}'), + ('\u{c55}', '\u{c56}'), ('\u{c62}', '\u{c63}'), ('\u{c81}', 'ಃ'), + ('\u{cbc}', '\u{cbc}'), ('ಾ', 'ೄ'), ('\u{cc6}', 'ೈ'), + ('ೊ', '\u{ccd}'), ('\u{cd5}', '\u{cd6}'), ('\u{ce2}', '\u{ce3}'), + ('\u{d00}', 'ഃ'), ('\u{d3b}', '\u{d3c}'), ('\u{d3e}', '\u{d44}'), + ('െ', 'ൈ'), ('ൊ', '\u{d4d}'), ('\u{d57}', '\u{d57}'), + ('\u{d62}', '\u{d63}'), ('ං', 'ඃ'), ('\u{dca}', '\u{dca}'), + ('\u{dcf}', '\u{dd4}'), ('\u{dd6}', '\u{dd6}'), ('ෘ', '\u{ddf}'), + ('ෲ', 'ෳ'), ('\u{e31}', '\u{e31}'), ('\u{e34}', '\u{e3a}'), + ('\u{e47}', '\u{e4e}'), ('\u{eb1}', '\u{eb1}'), ('\u{eb4}', '\u{eb9}'), + ('\u{ebb}', '\u{ebc}'), ('\u{ec8}', '\u{ecd}'), ('\u{f18}', '\u{f19}'), + ('\u{f35}', '\u{f35}'), ('\u{f37}', '\u{f37}'), ('\u{f39}', '\u{f39}'), + ('༾', '༿'), ('\u{f71}', '\u{f84}'), ('\u{f86}', '\u{f87}'), + ('\u{f8d}', '\u{f97}'), ('\u{f99}', '\u{fbc}'), ('\u{fc6}', '\u{fc6}'), + ('ါ', '\u{103e}'), ('ၖ', '\u{1059}'), ('\u{105e}', '\u{1060}'), + ('ၢ', 'ၤ'), ('ၧ', 'ၭ'), ('\u{1071}', '\u{1074}'), + ('\u{1082}', '\u{108d}'), ('ႏ', 'ႏ'), ('ႚ', '\u{109d}'), + ('\u{135d}', '\u{135f}'), ('\u{1712}', '\u{1714}'), + ('\u{1732}', '\u{1734}'), ('\u{1752}', '\u{1753}'), + ('\u{1772}', '\u{1773}'), ('\u{17b4}', '\u{17d3}'), + ('\u{17dd}', '\u{17dd}'), ('\u{180b}', '\u{180d}'), + ('\u{1885}', '\u{1886}'), ('\u{18a9}', '\u{18a9}'), ('\u{1920}', 'ᤫ'), + ('ᤰ', '\u{193b}'), ('\u{1a17}', '\u{1a1b}'), ('ᩕ', '\u{1a5e}'), + ('\u{1a60}', '\u{1a7c}'), ('\u{1a7f}', '\u{1a7f}'), + ('\u{1ab0}', '\u{1abe}'), ('\u{1b00}', 'ᬄ'), ('\u{1b34}', '᭄'), + ('\u{1b6b}', '\u{1b73}'), ('\u{1b80}', 'ᮂ'), ('ᮡ', '\u{1bad}'), + ('\u{1be6}', '᯳'), ('ᰤ', '\u{1c37}'), ('\u{1cd0}', '\u{1cd2}'), + ('\u{1cd4}', '\u{1ce8}'), ('\u{1ced}', '\u{1ced}'), ('ᳲ', '\u{1cf4}'), + ('᳷', '\u{1cf9}'), ('\u{1dc0}', '\u{1df9}'), ('\u{1dfb}', '\u{1dff}'), + ('\u{200c}', '\u{200c}'), ('\u{20d0}', '\u{20f0}'), + ('\u{2cef}', '\u{2cf1}'), ('\u{2d7f}', '\u{2d7f}'), + ('\u{2de0}', '\u{2dff}'), ('\u{302a}', '\u{302f}'), + ('\u{3099}', '\u{309a}'), ('\u{a66f}', '\u{a672}'), + ('\u{a674}', '\u{a67d}'), ('\u{a69e}', '\u{a69f}'), + ('\u{a6f0}', '\u{a6f1}'), ('\u{a802}', '\u{a802}'), + ('\u{a806}', '\u{a806}'), ('\u{a80b}', '\u{a80b}'), ('ꠣ', 'ꠧ'), + ('ꢀ', 'ꢁ'), ('ꢴ', '\u{a8c5}'), ('\u{a8e0}', '\u{a8f1}'), + ('\u{a8ff}', '\u{a8ff}'), ('\u{a926}', '\u{a92d}'), ('\u{a947}', '꥓'), + ('\u{a980}', 'ꦃ'), ('\u{a9b3}', '꧀'), ('\u{a9e5}', '\u{a9e5}'), + ('\u{aa29}', '\u{aa36}'), ('\u{aa43}', '\u{aa43}'), ('\u{aa4c}', 'ꩍ'), + ('ꩻ', 'ꩽ'), ('\u{aab0}', '\u{aab0}'), ('\u{aab2}', '\u{aab4}'), + ('\u{aab7}', '\u{aab8}'), ('\u{aabe}', '\u{aabf}'), + ('\u{aac1}', '\u{aac1}'), ('ꫫ', 'ꫯ'), ('ꫵ', '\u{aaf6}'), + ('ꯣ', 'ꯪ'), ('꯬', '\u{abed}'), ('\u{fb1e}', '\u{fb1e}'), + ('\u{fe00}', '\u{fe0f}'), ('\u{fe20}', '\u{fe2f}'), + ('\u{ff9e}', '\u{ff9f}'), ('\u{101fd}', '\u{101fd}'), + ('\u{102e0}', '\u{102e0}'), ('\u{10376}', '\u{1037a}'), + ('\u{10a01}', '\u{10a03}'), ('\u{10a05}', '\u{10a06}'), + ('\u{10a0c}', '\u{10a0f}'), ('\u{10a38}', '\u{10a3a}'), + ('\u{10a3f}', '\u{10a3f}'), ('\u{10ae5}', '\u{10ae6}'), + ('\u{10d24}', '\u{10d27}'), ('\u{10f46}', '\u{10f50}'), ('𑀀', '𑀂'), + ('\u{11038}', '\u{11046}'), ('\u{1107f}', '𑂂'), ('𑂰', '\u{110ba}'), + ('\u{11100}', '\u{11102}'), ('\u{11127}', '\u{11134}'), ('𑅅', '𑅆'), + ('\u{11173}', '\u{11173}'), ('\u{11180}', '𑆂'), ('𑆳', '𑇀'), + ('\u{111c9}', '\u{111cc}'), ('𑈬', '\u{11237}'), + ('\u{1123e}', '\u{1123e}'), ('\u{112df}', '\u{112ea}'), + ('\u{11300}', '𑌃'), ('\u{1133b}', '\u{1133c}'), ('\u{1133e}', '𑍄'), + ('𑍇', '𑍈'), ('𑍋', '𑍍'), ('\u{11357}', '\u{11357}'), + ('𑍢', '𑍣'), ('\u{11366}', '\u{1136c}'), ('\u{11370}', '\u{11374}'), + ('𑐵', '\u{11446}'), ('\u{1145e}', '\u{1145e}'), + ('\u{114b0}', '\u{114c3}'), ('\u{115af}', '\u{115b5}'), + ('𑖸', '\u{115c0}'), ('\u{115dc}', '\u{115dd}'), ('𑘰', '\u{11640}'), + ('\u{116ab}', '\u{116b7}'), ('\u{1171d}', '\u{1172b}'), + ('𑠬', '\u{1183a}'), ('\u{11a01}', '\u{11a0a}'), ('\u{11a33}', '𑨹'), + ('\u{11a3b}', '\u{11a3e}'), ('\u{11a47}', '\u{11a47}'), + ('\u{11a51}', '\u{11a5b}'), ('\u{11a8a}', '\u{11a99}'), + ('𑰯', '\u{11c36}'), ('\u{11c38}', '\u{11c3f}'), + ('\u{11c92}', '\u{11ca7}'), ('𑲩', '\u{11cb6}'), + ('\u{11d31}', '\u{11d36}'), ('\u{11d3a}', '\u{11d3a}'), + ('\u{11d3c}', '\u{11d3d}'), ('\u{11d3f}', '\u{11d45}'), + ('\u{11d47}', '\u{11d47}'), ('𑶊', '𑶎'), ('\u{11d90}', '\u{11d91}'), + ('𑶓', '\u{11d97}'), ('\u{11ef3}', '𑻶'), ('\u{16af0}', '\u{16af4}'), + ('\u{16b30}', '\u{16b36}'), ('𖽑', '𖽾'), ('\u{16f8f}', '\u{16f92}'), + ('\u{1bc9d}', '\u{1bc9e}'), ('\u{1d165}', '\u{1d169}'), + ('𝅭', '\u{1d172}'), ('\u{1d17b}', '\u{1d182}'), + ('\u{1d185}', '\u{1d18b}'), ('\u{1d1aa}', '\u{1d1ad}'), + ('\u{1d242}', '\u{1d244}'), ('\u{1da00}', '\u{1da36}'), + ('\u{1da3b}', '\u{1da6c}'), ('\u{1da75}', '\u{1da75}'), + ('\u{1da84}', '\u{1da84}'), ('\u{1da9b}', '\u{1da9f}'), + ('\u{1daa1}', '\u{1daaf}'), ('\u{1e000}', '\u{1e006}'), + ('\u{1e008}', '\u{1e018}'), ('\u{1e01b}', '\u{1e021}'), + ('\u{1e023}', '\u{1e024}'), ('\u{1e026}', '\u{1e02a}'), + ('\u{1e8d0}', '\u{1e8d6}'), ('\u{1e944}', '\u{1e94a}'), ('🏻', '🏿'), + ('\u{e0020}', '\u{e007f}'), ('\u{e0100}', '\u{e01ef}'), +]; + +pub const EXTENDNUMLET: &'static [(char, char)] = &[ + ('_', '_'), ('\u{202f}', '\u{202f}'), ('‿', '⁀'), ('⁔', '⁔'), + ('︳', '︴'), ('﹍', '﹏'), ('_', '_'), +]; + +pub const FORMAT: &'static [(char, char)] = &[ + ('\u{ad}', '\u{ad}'), ('\u{600}', '\u{605}'), ('\u{61c}', '\u{61c}'), + ('\u{6dd}', '\u{6dd}'), ('\u{70f}', '\u{70f}'), ('\u{8e2}', '\u{8e2}'), + ('\u{180e}', '\u{180e}'), ('\u{200e}', '\u{200f}'), + ('\u{202a}', '\u{202e}'), ('\u{2060}', '\u{2064}'), + ('\u{2066}', '\u{206f}'), ('\u{feff}', '\u{feff}'), + ('\u{fff9}', '\u{fffb}'), ('\u{110bd}', '\u{110bd}'), + ('\u{110cd}', '\u{110cd}'), ('\u{1bca0}', '\u{1bca3}'), + ('\u{1d173}', '\u{1d17a}'), ('\u{e0001}', '\u{e0001}'), +]; + +pub const HEBREW_LETTER: &'static [(char, char)] = &[ + ('א', 'ת'), ('ׯ', 'ײ'), ('יִ', 'יִ'), ('ײַ', 'ﬨ'), ('שׁ', 'זּ'), + ('טּ', 'לּ'), ('מּ', 'מּ'), ('נּ', 'סּ'), ('ףּ', 'פּ'), + ('צּ', 'ﭏ'), +]; + +pub const KATAKANA: &'static [(char, char)] = &[ + ('〱', '〵'), ('゛', '゜'), ('゠', 'ヺ'), ('ー', 'ヿ'), + ('ㇰ', 'ㇿ'), ('㋐', '㋾'), ('㌀', '㍗'), ('ヲ', 'ン'), + ('𛀀', '𛀀'), +]; + +pub const LF: &'static [(char, char)] = &[ + ('\n', '\n'), +]; + +pub const MIDLETTER: &'static [(char, char)] = &[ + (':', ':'), ('·', '·'), ('·', '·'), ('״', '״'), ('‧', '‧'), + ('︓', '︓'), ('﹕', '﹕'), (':', ':'), +]; + +pub const MIDNUM: &'static [(char, char)] = &[ + (',', ','), (';', ';'), (';', ';'), ('։', '։'), ('،', '؍'), + ('٬', '٬'), ('߸', '߸'), ('⁄', '⁄'), ('︐', '︐'), ('︔', '︔'), + ('﹐', '﹐'), ('﹔', '﹔'), (',', ','), (';', ';'), +]; + +pub const MIDNUMLET: &'static [(char, char)] = &[ + ('.', '.'), ('‘', '’'), ('․', '․'), ('﹒', '﹒'), (''', '''), + ('.', '.'), +]; + +pub const NEWLINE: &'static [(char, char)] = &[ + ('\u{b}', '\u{c}'), ('\u{85}', '\u{85}'), ('\u{2028}', '\u{2029}'), +]; + +pub const NUMERIC: &'static [(char, char)] = &[ + ('0', '9'), ('٠', '٩'), ('٫', '٫'), ('۰', '۹'), ('߀', '߉'), + ('०', '९'), ('০', '৯'), ('੦', '੯'), ('૦', '૯'), + ('୦', '୯'), ('௦', '௯'), ('౦', '౯'), ('೦', '೯'), + ('൦', '൯'), ('෦', '෯'), ('๐', '๙'), ('໐', '໙'), + ('༠', '༩'), ('၀', '၉'), ('႐', '႙'), ('០', '៩'), + ('᠐', '᠙'), ('᥆', '᥏'), ('᧐', '᧙'), ('᪀', '᪉'), + ('᪐', '᪙'), ('᭐', '᭙'), ('᮰', '᮹'), ('᱀', '᱉'), + ('᱐', '᱙'), ('꘠', '꘩'), ('꣐', '꣙'), ('꤀', '꤉'), + ('꧐', '꧙'), ('꧰', '꧹'), ('꩐', '꩙'), ('꯰', '꯹'), + ('𐒠', '𐒩'), ('𐴰', '𐴹'), ('𑁦', '𑁯'), ('𑃰', '𑃹'), + ('𑄶', '𑄿'), ('𑇐', '𑇙'), ('𑋰', '𑋹'), ('𑑐', '𑑙'), + ('𑓐', '𑓙'), ('𑙐', '𑙙'), ('𑛀', '𑛉'), ('𑜰', '𑜹'), + ('𑣠', '𑣩'), ('𑱐', '𑱙'), ('𑵐', '𑵙'), ('𑶠', '𑶩'), + ('𖩠', '𖩩'), ('𖭐', '𖭙'), ('𝟎', '𝟿'), ('𞥐', '𞥙'), +]; + +pub const REGIONAL_INDICATOR: &'static [(char, char)] = &[ + ('🇦', '🇿'), +]; + +pub const SINGLE_QUOTE: &'static [(char, char)] = &[ + ('\'', '\''), +]; + +pub const WSEGSPACE: &'static [(char, char)] = &[ + (' ', ' '), ('\u{1680}', '\u{1680}'), ('\u{2000}', '\u{2006}'), + ('\u{2008}', '\u{200a}'), ('\u{205f}', '\u{205f}'), + ('\u{3000}', '\u{3000}'), +]; + +pub const ZWJ: &'static [(char, char)] = &[ + ('\u{200d}', '\u{200d}'), +]; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/rustc-demangle/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/rustc-demangle/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/rustc-demangle/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/rustc-demangle/.cargo-checksum.json 2019-01-04 19:47:55.000000000 +0000 @@ -1 +1 @@ -{"files":{".travis.yml":"ff608da9edb53d86860db37ca32b87abb9423785544d763b0776eb654e1896c0","Cargo.toml":"c3a30232f994a71ab7db72c60f00c0e245800bf07d2a1d5501ef273acb4d575c","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"7bb7dbc6378a31b5b925a0cff628a69006c77a4cdf3533f7507b7c8fbe3492b0","src/lib.rs":"b1fbe3850a7b81c79ef161543897a9c47b79715e6ac95c54799c4cc3b60abf45"},"package":"bcfe5b13211b4d78e5c2cadfebd7769197d95c639c35a50057eb4c05de811395"} \ No newline at end of file +{"files":{".cargo_vcs_info.json":"894e0ac5f2a92f037d067d1c50e689ab0e71746b07d7d0963e1fa7ba76b8380c",".travis.yml":"ff608da9edb53d86860db37ca32b87abb9423785544d763b0776eb654e1896c0","Cargo.toml":"ef4cae4a38b74a1a33929168c14ab84c8197fcd4e1d114479f6b632b06c337ae","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"7bb7dbc6378a31b5b925a0cff628a69006c77a4cdf3533f7507b7c8fbe3492b0","src/lib.rs":"878746d32d9f1a470dfe3827a21389f5c5db1b06839a1fe81b6ac6515ac8cce8"},"package":"adacaae16d02b6ec37fdc7acfcddf365978de76d1983d3ee22afc260e1ca9619"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/rustc-demangle/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/rustc-demangle/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/rustc-demangle/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/rustc-demangle/Cargo.toml 2019-01-04 19:47:55.000000000 +0000 @@ -12,7 +12,7 @@ [package] name = "rustc-demangle" -version = "0.1.9" +version = "0.1.13" authors = ["Alex Crichton <alex@alexcrichton.com>"] description = "Rust compiler symbol demangling.\n" homepage = "https://github.com/alexcrichton/rustc-demangle" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/rustc-demangle/.cargo_vcs_info.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/rustc-demangle/.cargo_vcs_info.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/rustc-demangle/.cargo_vcs_info.json 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/rustc-demangle/.cargo_vcs_info.json 2019-01-04 19:47:55.000000000 +0000 @@ -0,0 +1,5 @@ +{ + "git": { + "sha1": "a099f0a490100f4f7c6b1a5717eda1c599c8b95e" + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/rustc-demangle/src/lib.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/rustc-demangle/src/lib.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/rustc-demangle/src/lib.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/rustc-demangle/src/lib.rs 2019-01-04 19:47:55.000000000 +0000 @@ -283,7 +283,7 @@ } } else if rest.starts_with('$') { macro_rules! demangle { - ($($pat:expr => $demangled:expr),*) => ({ + ($($pat:expr => $demangled:expr,)*) => ({ $(if rest.starts_with($pat) { try!(f.write_str($demangled)); rest = &rest[$pat.len()..]; @@ -319,7 +319,8 @@ "$u7d$" => "}", "$u3b$" => ";", "$u2b$" => "+", - "$u22$" => "\"" + "$u21$" => "!", + "$u22$" => "\"", } } else { let idx = match rest.char_indices().find(|&(_, c)| c == '$' || c == '.') { @@ -364,7 +365,14 @@ fn ok(sym: &str, expected: &str) -> bool { match super::try_demangle(sym) { - Ok(s) => s.to_string() == expected, + Ok(s) => { + if s.to_string() == expected { + true + } else { + println!("\n{}\n!=\n{}\n", s, expected); + false + } + } Err(_) => { println!("error demangling"); false @@ -498,4 +506,12 @@ fn handle_assoc_types() { t!("_ZN151_$LT$alloc..boxed..Box$LT$alloc..boxed..FnBox$LT$A$C$$u20$Output$u3d$R$GT$$u20$$u2b$$u20$$u27$a$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$9call_once17h69e8f44b3723e1caE", "<alloc::boxed::Box<alloc::boxed::FnBox<A, Output=R> + 'a> as core::ops::function::FnOnce<A>>::call_once::h69e8f44b3723e1ca"); } + + #[test] + fn handle_bang() { + t!( + "_ZN88_$LT$core..result..Result$LT$$u21$$C$$u20$E$GT$$u20$as$u20$std..process..Termination$GT$6report17hfc41d0da4a40b3e8E", + "<core::result::Result<!, E> as std::process::Termination>::report::hfc41d0da4a40b3e8" + ); + } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ryu/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ryu/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ryu/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ryu/.cargo-checksum.json 2019-01-04 19:47:55.000000000 +0000 @@ -1 +1 @@ -{"files":{".travis.yml":"f73b83dfd8c84e2af27d780e93441a071507c8c2d981a73844558fe72717448e","Cargo.toml":"63e35b88c4aace57e0c84d143525fa905f4ffc5c80dfc71d64c58af8f052de84","LICENSE-APACHE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","LICENSE-BOOST":"c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566","README.md":"1cb3e87a4316b157240ee854e567762e0c4c9918c5ff70c18aed70b74e2349d4","benchmark/benchmark.rs":"5ee2d5f68f6fa93f24e3828c9e8e269c22ce3ea96c0804def61b0b3026ad021f","build.rs":"29f0eb26131bb240a3f950c4000686409014500b6b43ba8b265db6e642fc6b58","src/buffer/mod.rs":"bcdc3db1c97b36c04c4445c4a7fba768be7a8b16e0f8bc7bab86ac06256a9750","src/common.rs":"f165881b718867b7801044bd29fa7f4322ebfc63d45d462d4a703253f8812a3e","src/d2s.rs":"3c2bbb4e91a5ce565643dc0e1771d3b79d3d2f725527333394c28214f2dd3566","src/d2s_full_table.rs":"7f7e475c54ae69d834574603bde9dcbe9f0d7cb09cfc3cda025319c903996bf8","src/d2s_intrinsics.rs":"e1952d6a860d094b4fccb3f836816bd0248e0a0feffda07e0fd56fe2024f126a","src/d2s_small_table.rs":"f1fbb2d67cd1475413cd35058bdd0c30204ed860d2d3501dd3da2fbab6019ce1","src/digit_table.rs":"02351ca54cb8cb3679f635115dd094f32fd91750e9f66103c1ee9ec3db507072","src/f2s.rs":"2a59cc3ea57244ef4e926d98284a33363fb67452e20f24141395312173698e32","src/lib.rs":"0c41b44c011b7ca329ada6ab59ba0b5d873978e72c6b785680e51d90ea913739","src/pretty/exponent.rs":"15fd163fdb81573d331f24fda37f5403931512ffb08715a2695f0a0256b69b84","src/pretty/mantissa.rs":"7b0ea97069ee597f3bc0c8f2f3354c75be93d01c6a8135104ae82cd83df318e0","src/pretty/mod.rs":"f691267e66ce6f13d6db17ca6b93065e50a669e73916cbd22c8bfb3e33ad85fe","tests/d2s_table_test.rs":"7012a7a47327fe1d9b46364d6e444a0ab863fd8c2e345ca48b98ca4a46372a40","tests/d2s_test.rs":"9abea253a30d96815688a34f20e2b3eff40c9d8b9a1209d7e927ba5a63efd74a","tests/exhaustive.rs":"0e01491936cb6b5ae68d92e50b6f7cebb26362774e860df103695ecc1f71fa7b","tests/f2s_test.rs":"7fa9dd515ed42947f570243a6d0656b6e2861c1399f679d96317dc109018d59b","tests/macros/mod.rs":"45eed20e9a3d8d9b673f504e8194f762223346adec46a6fbf1e0717eaeee85bc"},"package":"7153dd96dade874ab973e098cb62fcdbb89a03682e46b144fd09550998d4a4a7"} \ No newline at end of file +{"files":{".cargo_vcs_info.json":"ce829ddff3b8de866feb85777a6a03383cb8f7a4ffcece229b7bd48ad72f7c07",".travis.yml":"f73b83dfd8c84e2af27d780e93441a071507c8c2d981a73844558fe72717448e","Cargo.toml":"95faf7e39605fcc01a523824cdbd942418b8fdb047f8acf2e4e994b80e1d3933","LICENSE-APACHE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","LICENSE-BOOST":"c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566","README.md":"720bb0a6b8860fdaa15284e3f683fe86dd1cd53957788b9b592f5b9a9809acf7","benchmark/benchmark.rs":"5ee2d5f68f6fa93f24e3828c9e8e269c22ce3ea96c0804def61b0b3026ad021f","build.rs":"29f0eb26131bb240a3f950c4000686409014500b6b43ba8b265db6e642fc6b58","src/buffer/mod.rs":"bcdc3db1c97b36c04c4445c4a7fba768be7a8b16e0f8bc7bab86ac06256a9750","src/common.rs":"f165881b718867b7801044bd29fa7f4322ebfc63d45d462d4a703253f8812a3e","src/d2s.rs":"e5c5a9fd9a9a9b696cef79c906ba1a8d50815f0a87a0ac977a84f434667cfc02","src/d2s_full_table.rs":"7f7e475c54ae69d834574603bde9dcbe9f0d7cb09cfc3cda025319c903996bf8","src/d2s_intrinsics.rs":"e1952d6a860d094b4fccb3f836816bd0248e0a0feffda07e0fd56fe2024f126a","src/d2s_small_table.rs":"f1fbb2d67cd1475413cd35058bdd0c30204ed860d2d3501dd3da2fbab6019ce1","src/digit_table.rs":"02351ca54cb8cb3679f635115dd094f32fd91750e9f66103c1ee9ec3db507072","src/f2s.rs":"502ffc95a19e38be80c60c210beb8bd470ede716b61b4752e032122fac059a65","src/lib.rs":"f53a0cb29dfbc126e1821a0698b5d47e717fe5c91a9db91ff857f5512be414ca","src/pretty/exponent.rs":"15fd163fdb81573d331f24fda37f5403931512ffb08715a2695f0a0256b69b84","src/pretty/mantissa.rs":"7b0ea97069ee597f3bc0c8f2f3354c75be93d01c6a8135104ae82cd83df318e0","src/pretty/mod.rs":"880a80ccbef8578cfe97c0181cf8bf5e7e40507a78fe7931d1b8493c2162d83b","tests/d2s_table_test.rs":"7012a7a47327fe1d9b46364d6e444a0ab863fd8c2e345ca48b98ca4a46372a40","tests/d2s_test.rs":"37ec63ec8eaf4b6ef1e253e7c20c6eaf1689bee9b17af5365616a5346a7636d7","tests/exhaustive.rs":"0e01491936cb6b5ae68d92e50b6f7cebb26362774e860df103695ecc1f71fa7b","tests/f2s_test.rs":"7fa9dd515ed42947f570243a6d0656b6e2861c1399f679d96317dc109018d59b","tests/macros/mod.rs":"45eed20e9a3d8d9b673f504e8194f762223346adec46a6fbf1e0717eaeee85bc"},"package":"eb9e9b8cde282a9fe6a42dd4681319bfb63f121b8a8ee9439c6f4107e58a46f7"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ryu/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ryu/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ryu/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ryu/Cargo.toml 2019-01-04 19:47:55.000000000 +0000 @@ -12,7 +12,7 @@ [package] name = "ryu" -version = "0.2.6" +version = "0.2.7" authors = ["David Tolnay <dtolnay@gmail.com>"] build = "build.rs" description = "Fast floating point to string conversion" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ryu/.cargo_vcs_info.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ryu/.cargo_vcs_info.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ryu/.cargo_vcs_info.json 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ryu/.cargo_vcs_info.json 2019-01-04 19:47:55.000000000 +0000 @@ -0,0 +1,5 @@ +{ + "git": { + "sha1": "5edafe24373c9884609fc2e04c0eba0770df47a8" + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ryu/README.md distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ryu/README.md --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ryu/README.md 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ryu/README.md 2019-01-04 19:47:55.000000000 +0000 @@ -24,7 +24,7 @@ uses nothing from the Rust standard library so is usable from no_std crates.* [paper]: https://dl.acm.org/citation.cfm?id=3192369 -[upstream]: https://github.com/ulfjack/ryu/tree/46f4c5572121a6f1428749fe3e24132c3626c946 +[upstream]: https://github.com/ulfjack/ryu/tree/66ba13274ca0247ad46fd4fe8a2f6d36f5d39b01 ```toml [dependencies] diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ryu/src/d2s.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ryu/src/d2s.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ryu/src/d2s.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ryu/src/d2s.rs 2019-01-04 19:47:55.000000000 +0000 @@ -532,7 +532,8 @@ index as usize } -/// Print f64 to the given buffer and return number of bytes written. +/// Print f64 to the given buffer and return number of bytes written. Ryū's +/// original formatting. /// /// At most 24 bytes will be written. /// diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ryu/src/f2s.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ryu/src/f2s.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ryu/src/f2s.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ryu/src/f2s.rs 2019-01-04 19:47:55.000000000 +0000 @@ -444,7 +444,8 @@ index as usize } -/// Print f32 to the given buffer and return number of bytes written. +/// Print f32 to the given buffer and return number of bytes written. Ryū's +/// original formatting. /// /// At most 15 bytes will be written. /// diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ryu/src/lib.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ryu/src/lib.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ryu/src/lib.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ryu/src/lib.rs 2019-01-04 19:47:55.000000000 +0000 @@ -30,7 +30,7 @@ //! ``` #![no_std] -#![doc(html_root_url = "https://docs.rs/ryu/0.2.6")] +#![doc(html_root_url = "https://docs.rs/ryu/0.2.7")] #![cfg_attr( feature = "cargo-clippy", allow( @@ -63,4 +63,6 @@ pub mod raw { pub use d2s::d2s_buffered_n; pub use f2s::f2s_buffered_n; + pub use pretty::d2s_buffered_n as pretty_d2s_buffered_n; + pub use pretty::f2s_buffered_n as pretty_f2s_buffered_n; } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ryu/src/pretty/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ryu/src/pretty/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ryu/src/pretty/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ryu/src/pretty/mod.rs 2019-01-04 19:47:55.000000000 +0000 @@ -13,6 +13,41 @@ #[cfg(feature = "no-panic")] use no_panic::no_panic; +/// Print f64 to the given buffer and return number of bytes written. Human +/// readable formatting. +/// +/// At most 24 bytes will be written. +/// +/// ## Special cases +/// +/// This function **does not** check for NaN or infinity. If the input +/// number is not a finite float, the printed representation will be some +/// correctly formatted but unspecified numerical value. +/// +/// Please check [`is_finite`] yourself before calling this function, or +/// check [`is_nan`] and [`is_infinite`] and handle those cases yourself. +/// +/// [`is_finite`]: https://doc.rust-lang.org/std/primitive.f64.html#method.is_finite +/// [`is_nan`]: https://doc.rust-lang.org/std/primitive.f64.html#method.is_nan +/// [`is_infinite`]: https://doc.rust-lang.org/std/primitive.f64.html#method.is_infinite +/// +/// ## Safety +/// +/// The `result` pointer argument must point to sufficiently many writable bytes +/// to hold Ryū's representation of `f`. +/// +/// ## Example +/// +/// ```rust +/// let f = 1.234f64; +/// +/// unsafe { +/// let mut buffer: [u8; 24] = std::mem::uninitialized(); +/// let n = ryu::raw::pretty_d2s_buffered_n(f, &mut buffer[0]); +/// let s = std::str::from_utf8_unchecked(&buffer[..n]); +/// assert_eq!(s, "1.234"); +/// } +/// ``` #[cfg_attr(must_use_return, must_use)] #[cfg_attr(feature = "no-panic", no_panic)] pub unsafe fn d2s_buffered_n(f: f64, result: *mut u8) -> usize { @@ -83,6 +118,41 @@ } } +/// Print f32 to the given buffer and return number of bytes written. Human +/// readable formatting. +/// +/// At most 16 bytes will be written. +/// +/// ## Special cases +/// +/// This function **does not** check for NaN or infinity. If the input +/// number is not a finite float, the printed representation will be some +/// correctly formatted but unspecified numerical value. +/// +/// Please check [`is_finite`] yourself before calling this function, or +/// check [`is_nan`] and [`is_infinite`] and handle those cases yourself. +/// +/// [`is_finite`]: https://doc.rust-lang.org/std/primitive.f32.html#method.is_finite +/// [`is_nan`]: https://doc.rust-lang.org/std/primitive.f32.html#method.is_nan +/// [`is_infinite`]: https://doc.rust-lang.org/std/primitive.f32.html#method.is_infinite +/// +/// ## Safety +/// +/// The `result` pointer argument must point to sufficiently many writable bytes +/// to hold Ryū's representation of `f`. +/// +/// ## Example +/// +/// ```rust +/// let f = 1.234f32; +/// +/// unsafe { +/// let mut buffer: [u8; 16] = std::mem::uninitialized(); +/// let n = ryu::raw::pretty_f2s_buffered_n(f, &mut buffer[0]); +/// let s = std::str::from_utf8_unchecked(&buffer[..n]); +/// assert_eq!(s, "1.234"); +/// } +/// ``` #[cfg_attr(must_use_return, must_use)] #[cfg_attr(feature = "no-panic", no_panic)] pub unsafe fn f2s_buffered_n(f: f32, result: *mut u8) -> usize { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ryu/tests/d2s_test.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ryu/tests/d2s_test.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ryu/tests/d2s_test.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ryu/tests/d2s_test.rs 2019-01-04 19:47:55.000000000 +0000 @@ -37,6 +37,12 @@ ryu::Buffer::new().format(f).to_owned() } +fn ieee_parts_to_double(sign: bool, ieee_exponent: u32, ieee_mantissa: u64) -> f64 { + assert!(ieee_exponent <= 2047); + assert!(ieee_mantissa <= (1u64 << 53) - 1); + f64::from_bits(((sign as u64) << 63) | ((ieee_exponent as u64) << 52) | ieee_mantissa) +} + #[test] fn test_ryu() { check!(3E-1, 0.3); @@ -152,3 +158,67 @@ check!(4.294967297E0, 4.294967297); // 2^32 + 1 check!(4.294967298E0, 4.294967298); // 2^32 + 2 } + +// Test min, max shift values in shiftright128 +#[test] +fn test_min_max_shift() { + let max_mantissa = (1u64 << 53) - 1; + + // 32-bit opt-size=0: 49 <= dist <= 50 + // 32-bit opt-size=1: 30 <= dist <= 50 + // 64-bit opt-size=0: 50 <= dist <= 50 + // 64-bit opt-size=1: 30 <= dist <= 50 + assert_eq!(1.7800590868057611E-307, ieee_parts_to_double(false, 4, 0)); + check!(1.7800590868057611E-307, 1.7800590868057611e-307); + // 32-bit opt-size=0: 49 <= dist <= 49 + // 32-bit opt-size=1: 28 <= dist <= 49 + // 64-bit opt-size=0: 50 <= dist <= 50 + // 64-bit opt-size=1: 28 <= dist <= 50 + assert_eq!(2.8480945388892175E-306, ieee_parts_to_double(false, 6, max_mantissa)); + check!(2.8480945388892175E-306, 2.8480945388892175e-306); + // 32-bit opt-size=0: 52 <= dist <= 53 + // 32-bit opt-size=1: 2 <= dist <= 53 + // 64-bit opt-size=0: 53 <= dist <= 53 + // 64-bit opt-size=1: 2 <= dist <= 53 + assert_eq!(2.446494580089078E-296, ieee_parts_to_double(false, 41, 0)); + check!(2.446494580089078E-296, 2.446494580089078e-296); + // 32-bit opt-size=0: 52 <= dist <= 52 + // 32-bit opt-size=1: 2 <= dist <= 52 + // 64-bit opt-size=0: 53 <= dist <= 53 + // 64-bit opt-size=1: 2 <= dist <= 53 + assert_eq!(4.8929891601781557E-296, ieee_parts_to_double(false, 40, max_mantissa)); + check!(4.8929891601781557E-296, 4.8929891601781557e-296); + + // 32-bit opt-size=0: 57 <= dist <= 58 + // 32-bit opt-size=1: 57 <= dist <= 58 + // 64-bit opt-size=0: 58 <= dist <= 58 + // 64-bit opt-size=1: 58 <= dist <= 58 + assert_eq!(1.8014398509481984E16, ieee_parts_to_double(false, 1077, 0)); + check!(1.8014398509481984E16, 1.8014398509481984e16); + // 32-bit opt-size=0: 57 <= dist <= 57 + // 32-bit opt-size=1: 57 <= dist <= 57 + // 64-bit opt-size=0: 58 <= dist <= 58 + // 64-bit opt-size=1: 58 <= dist <= 58 + assert_eq!(3.6028797018963964E16, ieee_parts_to_double(false, 1076, max_mantissa)); + check!(3.6028797018963964E16, 3.6028797018963964e16); + // 32-bit opt-size=0: 51 <= dist <= 52 + // 32-bit opt-size=1: 51 <= dist <= 59 + // 64-bit opt-size=0: 52 <= dist <= 52 + // 64-bit opt-size=1: 52 <= dist <= 59 + assert_eq!(2.900835519859558E-216, ieee_parts_to_double(false, 307, 0)); + check!(2.900835519859558E-216, 2.900835519859558e-216); + // 32-bit opt-size=0: 51 <= dist <= 51 + // 32-bit opt-size=1: 51 <= dist <= 59 + // 64-bit opt-size=0: 52 <= dist <= 52 + // 64-bit opt-size=1: 52 <= dist <= 59 + assert_eq!(5.801671039719115E-216, ieee_parts_to_double(false, 306, max_mantissa)); + check!(5.801671039719115E-216, 5.801671039719115e-216); + + // https://github.com/ulfjack/ryu/commit/19e44d16d80236f5de25800f56d82606d1be00b9#commitcomment-30146483 + // 32-bit opt-size=0: 49 <= dist <= 49 + // 32-bit opt-size=1: 44 <= dist <= 49 + // 64-bit opt-size=0: 50 <= dist <= 50 + // 64-bit opt-size=1: 44 <= dist <= 50 + assert_eq!(3.196104012172126E-27, ieee_parts_to_double(false, 934, 0x000FA7161A4D6E0C)); + check!(3.196104012172126E-27, 3.196104012172126e-27); +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/build.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/build.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/build.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/build.rs 2019-01-04 19:47:55.000000000 +0000 @@ -71,11 +71,6 @@ Err(_) => return None, }; - // Temporary workaround to support the old 1.26-dev compiler on docs.rs. - if version.contains("0eb87c9bf") { - return Some(25); - } - let mut pieces = version.split('.'); if pieces.next() != Some("rustc 1") { return None; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/.cargo-checksum.json 2019-01-04 19:47:55.000000000 +0000 @@ -1 +1 @@ -{"files":{".cargo_vcs_info.json":"cfa5ab2afddbb64fef2413266283d55652b4e9ddf3092ec94bf612b81c5c8cc2","Cargo.toml":"d370184a37692fbf66fc20feef381e5ce9a1a7c6e95fd855c03c796b15f28f0e","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"c4218d07d775c036cd50495b0354c5b59435472b12e159042cacb30b6ef1a7c1","build.rs":"f3fdadb2b0f8c9f1568903f47cfc48a8e5ec3f81dd54a067fda5e4fa084d0d30","crates-io.md":"8dce715dfbd2e9bbdd87e401d1f7974a60089f0673f7a84f4c5d840411075d14","src/de/from_primitive.rs":"3cf03cb47d884ff32555673831d79de8f6bf0c58a22783d73077d1f694c1494d","src/de/ignored_any.rs":"90b6b3c79472fd6c8997f4456dae9f28d4dbaa87efdbbc5fb304d6a83c560d00","src/de/impls.rs":"76b2b181e9cd9e748fae1bdb1e30a256f9ea3d5398be191a23fe56164c6792dd","src/de/mod.rs":"5def657ab51bf031c7706b98a19d369abef80a8c1c5b46267dc8223c904ba52b","src/de/utf8.rs":"956b124b7ce98353cb781b56e43a6fed2e67f1389d35b7a468d5be75b1485853","src/de/value.rs":"5883ea09fb61c30fcb7422a000688481f4fae4c0980ca4618f8b5747b573d545","src/export.rs":"4e3ed8aa2b0e5d9c18f462183dff7fa4772a30e88e6b3cc0fb9712282ecbe0c5","src/integer128.rs":"1bf9e18047a4a3f95a43b8d253e4f844b6be62e71684e47d980582462bce4223","src/lib.rs":"d6d7291950ff051c9958a31eb39f34edfbb5fd1692185bf99e0f55b3aa6f802f","src/macros.rs":"953b42721810eb26239231849af2f9f461721497695317e7672001c27d2cb25c","src/private/de.rs":"29a62d208e9439f8ce6dff4bca746a9e85b36b88da13f187a320be84a66cebc0","src/private/macros.rs":"0bebda4a3c1b794280d21581fc0d5e3cf130647f53b6a8ac157164c74e14df51","src/private/mod.rs":"0c774d86042cefdb447857070a1d4d2c0b9f519a7f5db588a1e7fcc16ca5a511","src/private/ser.rs":"56b61986a7c57d37d65d763cb69119889a3dc06eb27a9e95cd5e758acf0e4535","src/ser/impls.rs":"d3bb23bc5860e7ed4b7cdf01c66d22e1ac6e2ec2efb52ba831298fd63a27baed","src/ser/impossible.rs":"91da408362284ec567b2316050900251ff66a1134413963720154fb70f3919c0","src/ser/mod.rs":"feba74b5c928ce00c2fcc5d8602e7255a0731428fefd2de45353170334cdbea4"},"package":"15c141fc7027dd265a47c090bf864cf62b42c4d228bbcf4e51a0c9e2b0d3f7ef"} \ No newline at end of file +{"files":{".cargo_vcs_info.json":"1f3bd5a1c9760f10301b18f15d27ddc958e1c3fecde69566a3170ed13c58d8d9","Cargo.toml":"a1657440f6b2f841e509299a38cf58aa02a652a09580bfd695ecaa0742f4c9bb","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"c4218d07d775c036cd50495b0354c5b59435472b12e159042cacb30b6ef1a7c1","build.rs":"dcfb811e5852fd6151435382d6a3682c0e0b6cb2ca652bc21e5f4d63edecf14b","crates-io.md":"8dce715dfbd2e9bbdd87e401d1f7974a60089f0673f7a84f4c5d840411075d14","src/de/from_primitive.rs":"058fa17313ed3a9c29ec04c6ec67f21a756f6f28cdeb4b0dfcd7012b3e702d0b","src/de/ignored_any.rs":"3c199f3e4c3f8775ab30439c6868b61aa0a32fa23232b218afb94d1aadb15f0a","src/de/impls.rs":"32edb706d85539b5524b61585f43a2db0ac392692747957b1747fe1db1b204f9","src/de/mod.rs":"a444a13648044a3521025da0ea59b4d469712676d644894a09bd8a8114a0630a","src/de/utf8.rs":"f17524ee0af98ec3abcfd7d0b812fbd1033263bd8e2ce2f57c1e1999ce153558","src/de/value.rs":"c738089a0309ba1749f69a4bb01e237d6ddaecba0799db009a2661c5269873c3","src/export.rs":"dceb648800cd6a4ee651259a203c6d98bffe768b943f090e4a06ff0c1cfc701f","src/integer128.rs":"f8298a559f1fae7579819cb68f6cba8c01cdda11737cf1fb498bf52810c130b6","src/lib.rs":"26500faa70bc18d4bc635b2fe03ffdb0144eecbb513454ce9539a8fe3e43a44c","src/macros.rs":"f18fc25c5fb857238bf119cdee5c7987a8584dea69c51f27ca718b7dfd871d0f","src/private/de.rs":"26df85eaa862a7f6c6ddfd25ed0cc86851bd93440fbbc840e8ee2750a143b7d2","src/private/macros.rs":"ebb6affd4c89e3b5f9a42e03f8b7d966bc588875e9b44e962d0b7aba7f80a10f","src/private/mod.rs":"f8f2cd5edbfc26c268b34cdb89db1b34e6348f81384f03d18532e7568575006d","src/private/ser.rs":"946bf9910bb646a4c1732fd17f8c98db2515fe23edeb6e622e3618ff4de46b33","src/ser/impls.rs":"1d3402f74cf946798d004c6d7a35d7171f733a904b97cabeb5375e18329a8a9c","src/ser/impossible.rs":"3dd0e165b88fc67e698e675f16569b91fab9e054caa4c3e1997f929ba364fe90","src/ser/mod.rs":"c4ce0f6c0d74cdd9c3832005d4b19c363458721e7c82746d3bb71ca9587a6132"},"package":"0e732ed5a5592c17d961555e3b552985baf98d50ce418b7b655f31f6ba7eb1b7"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/Cargo.toml 2019-01-04 19:47:55.000000000 +0000 @@ -12,7 +12,7 @@ [package] name = "serde" -version = "1.0.80" +version = "1.0.84" authors = ["Erick Tryzelaar <erick.tryzelaar@gmail.com>", "David Tolnay <dtolnay@gmail.com>"] build = "build.rs" include = ["Cargo.toml", "build.rs", "src/**/*.rs", "crates-io.md", "README.md", "LICENSE-APACHE", "LICENSE-MIT"] @@ -24,6 +24,8 @@ categories = ["encoding"] license = "MIT/Apache-2.0" repository = "https://github.com/serde-rs/serde" +[package.metadata.playground] +features = ["derive", "rc"] [dependencies.serde_derive] version = "1.0" optional = true diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/.cargo_vcs_info.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/.cargo_vcs_info.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/.cargo_vcs_info.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/.cargo_vcs_info.json 2019-01-04 19:47:55.000000000 +0000 @@ -1,5 +1,5 @@ { "git": { - "sha1": "1b45e5766a30db85010112ea6d2d2638eddd9b12" + "sha1": "fea4e8e5b69bf44c051066aa9621f80144275992" } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/LICENSE-MIT distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/LICENSE-MIT --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/LICENSE-MIT 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/LICENSE-MIT 2019-01-04 19:47:55.000000000 +0000 @@ -1,5 +1,3 @@ -Copyright (c) 2014 The Rust Project Developers - 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 diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/de/from_primitive.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/de/from_primitive.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/de/from_primitive.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/de/from_primitive.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2017 Serde Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - use lib::*; macro_rules! int_to_int { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/de/ignored_any.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/de/ignored_any.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/de/ignored_any.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/de/ignored_any.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2017 Serde Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - use lib::*; use de::{Deserialize, Deserializer, Error, MapAccess, SeqAccess, Visitor}; @@ -16,7 +8,7 @@ /// any type, except that it does not store any information about the data that /// gets deserialized. /// -/// ```rust +/// ```edition2018 /// use std::fmt; /// use std::marker::PhantomData; /// @@ -29,7 +21,7 @@ /// /// /// /// For example to deserialize only the element at index 3: /// /// -/// /// ```rust +/// /// ``` /// /// NthElement::new(3).deserialize(deserializer) /// /// ``` /// pub struct NthElement<T> { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/de/impls.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/de/impls.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/de/impls.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/de/impls.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2017 Serde Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - use lib::*; use de::{ @@ -874,7 +866,9 @@ } } - let visitor = VecVisitor { marker: PhantomData }; + let visitor = VecVisitor { + marker: PhantomData, + }; deserializer.deserialize_seq(visitor) } @@ -1425,7 +1419,7 @@ deserializer.deserialize_str(IpAddrVisitor) } else { use lib::net::IpAddr; - deserialize_enum!{ + deserialize_enum! { IpAddr IpAddrKind (V4; b"V4"; 0, V6; b"V6"; 1) "`V4` or `V6`", deserializer @@ -1502,7 +1496,7 @@ deserializer.deserialize_str(SocketAddrVisitor) } else { use lib::net::SocketAddr; - deserialize_enum!{ + deserialize_enum! { SocketAddr SocketAddrKind (V4; b"V4"; 0, V6; b"V6"; 1) "`V4` or `V6`", deserializer @@ -1602,7 +1596,7 @@ // #[derive(Deserialize)] // #[serde(variant_identifier)] #[cfg(all(feature = "std", any(unix, windows)))] -variant_identifier!{ +variant_identifier! { OsStringKind (Unix; b"Unix"; 0, Windows; b"Windows"; 1) "`Unix` or `Windows`", OSSTR_VARIANTS @@ -1760,11 +1754,7 @@ //////////////////////////////////////////////////////////////////////////////// -#[cfg(all( - de_rc_dst, - feature = "rc", - any(feature = "std", feature = "alloc") -))] +#[cfg(all(de_rc_dst, feature = "rc", any(feature = "std", feature = "alloc")))] macro_rules! box_forwarded_impl { ( $(#[doc = $doc:tt])* @@ -1785,11 +1775,7 @@ }; } -#[cfg(all( - de_rc_dst, - feature = "rc", - any(feature = "std", feature = "alloc") -))] +#[cfg(all(de_rc_dst, feature = "rc", any(feature = "std", feature = "alloc")))] box_forwarded_impl! { /// This impl requires the [`"rc"`] Cargo feature of Serde. /// @@ -1801,11 +1787,7 @@ Rc } -#[cfg(all( - de_rc_dst, - feature = "rc", - any(feature = "std", feature = "alloc") -))] +#[cfg(all(de_rc_dst, feature = "rc", any(feature = "std", feature = "alloc")))] box_forwarded_impl! { /// This impl requires the [`"rc"`] Cargo feature of Serde. /// diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/de/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/de/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/de/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/de/mod.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2017 Serde Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - //! Generic data structure deserialization framework. //! //! The two most important traits in this module are [`Deserialize`] and @@ -161,7 +153,7 @@ /// /// The message should not be capitalized and should not end with a period. /// - /// ```rust + /// ```edition2018 /// # use std::str::FromStr; /// # /// # struct IpAddr; @@ -181,7 +173,7 @@ /// where /// D: Deserializer<'de>, /// { - /// let s = try!(String::deserialize(deserializer)); + /// let s = String::deserialize(deserializer)?; /// s.parse().map_err(de::Error::custom) /// } /// } @@ -245,12 +237,16 @@ #[cold] fn unknown_variant(variant: &str, expected: &'static [&'static str]) -> Self { if expected.is_empty() { - Error::custom(format_args!("unknown variant `{}`, there are no variants", - variant)) + Error::custom(format_args!( + "unknown variant `{}`, there are no variants", + variant + )) } else { - Error::custom(format_args!("unknown variant `{}`, expected {}", - variant, - OneOf { names: expected })) + Error::custom(format_args!( + "unknown variant `{}`, expected {}", + variant, + OneOf { names: expected } + )) } } @@ -259,12 +255,16 @@ #[cold] fn unknown_field(field: &str, expected: &'static [&'static str]) -> Self { if expected.is_empty() { - Error::custom(format_args!("unknown field `{}`, there are no fields", - field)) + Error::custom(format_args!( + "unknown field `{}`, there are no fields", + field + )) } else { - Error::custom(format_args!("unknown field `{}`, expected {}", - field, - OneOf { names: expected })) + Error::custom(format_args!( + "unknown field `{}`, expected {}", + field, + OneOf { names: expected } + )) } } @@ -298,7 +298,7 @@ /// This is used as an argument to the `invalid_type`, `invalid_value`, and /// `invalid_length` methods of the `Error` trait to build error messages. /// -/// ```rust +/// ```edition2018 /// # use std::fmt; /// # /// # use serde::de::{self, Unexpected, Visitor}; @@ -423,7 +423,7 @@ /// Within the context of a `Visitor` implementation, the `Visitor` itself /// (`&self`) is an implementation of this trait. /// -/// ```rust +/// ```edition2018 /// # use std::fmt; /// # /// # use serde::de::{self, Unexpected, Visitor}; @@ -448,7 +448,7 @@ /// /// Outside of a `Visitor`, `&"..."` can be used. /// -/// ```rust +/// ```edition2018 /// # use serde::de::{self, Unexpected}; /// # /// # fn example<E>() -> Result<(), E> @@ -569,7 +569,7 @@ /// from the input string, but a `from_reader` function may only deserialize /// owned data. /// -/// ```rust +/// ```edition2018 /// # use serde::de::{Deserialize, DeserializeOwned}; /// # use std::io::{Read, Result}; /// # @@ -608,7 +608,7 @@ /// /// The canonical API for stateless deserialization looks like this: /// -/// ```rust +/// ```edition2018 /// # use serde::Deserialize; /// # /// # enum Error {} @@ -622,7 +622,7 @@ /// Adjusting an API like this to support stateful deserialization is a matter /// of accepting a seed as input: /// -/// ```rust +/// ```edition2018 /// # use serde::de::DeserializeSeed; /// # /// # enum Error {} @@ -655,7 +655,7 @@ /// into it. This requires stateful deserialization using the `DeserializeSeed` /// trait. /// -/// ```rust +/// ```edition2018 /// use std::fmt; /// use std::marker::PhantomData; /// @@ -1145,7 +1145,7 @@ /// human-readable one and binary formats like Bincode will prefer the /// compact one. /// - /// ``` + /// ```edition2018 /// # use std::ops::Add; /// # use std::str::FromStr; /// # @@ -1222,7 +1222,7 @@ /// /// # Example /// -/// ```rust +/// ```edition2018 /// # use std::fmt; /// # /// # use serde::de::{self, Unexpected, Visitor}; @@ -1263,7 +1263,7 @@ /// "an integer between 0 and 64". The message should not be capitalized and /// should not end with a period. /// - /// ```rust + /// ```edition2018 /// # use std::fmt; /// # /// # struct S { @@ -2004,7 +2004,7 @@ /// If the data contains a different type of variant, the following /// `invalid_type` error should be constructed: /// - /// ```rust + /// ```edition2018 /// # use serde::de::{self, value, DeserializeSeed, Visitor, VariantAccess, Unexpected}; /// # /// # struct X; @@ -2044,7 +2044,7 @@ /// If the data contains a different type of variant, the following /// `invalid_type` error should be constructed: /// - /// ```rust + /// ```edition2018 /// # use serde::de::{self, value, DeserializeSeed, Visitor, VariantAccess, Unexpected}; /// # /// # struct X; @@ -2100,7 +2100,7 @@ /// If the data contains a different type of variant, the following /// `invalid_type` error should be constructed: /// - /// ```rust + /// ```edition2018 /// # use serde::de::{self, value, DeserializeSeed, Visitor, VariantAccess, Unexpected}; /// # /// # struct X; @@ -2147,7 +2147,7 @@ /// If the data contains a different type of variant, the following /// `invalid_type` error should be constructed: /// - /// ```rust + /// ```edition2018 /// # use serde::de::{self, value, DeserializeSeed, Visitor, VariantAccess, Unexpected}; /// # /// # struct X; @@ -2207,14 +2207,10 @@ /// /// # Example /// -/// ```rust -/// #[macro_use] -/// extern crate serde_derive; -/// -/// extern crate serde; -/// +/// ```edition2018 /// use std::str::FromStr; -/// use serde::de::{value, Deserialize, IntoDeserializer}; +/// use serde::Deserialize; +/// use serde::de::{value, IntoDeserializer}; /// /// #[derive(Deserialize)] /// enum Setting { @@ -2229,8 +2225,6 @@ /// Self::deserialize(s.into_deserializer()) /// } /// } -/// # -/// # fn main() {} /// ``` pub trait IntoDeserializer<'de, E: Error = value::Error> { /// The type of the deserializer being converted into. diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/de/utf8.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/de/utf8.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/de/utf8.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/de/utf8.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2017 Serde Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - use lib::*; const TAG_CONT: u8 = 0b1000_0000; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/de/value.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/de/value.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/de/value.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/de/value.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,22 +1,10 @@ -// Copyright 2017 Serde Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - //! Building blocks for deserializing basic values using the `IntoDeserializer` //! trait. //! -//! ```rust -//! #[macro_use] -//! extern crate serde_derive; -//! -//! extern crate serde; -//! +//! ```edition2018 //! use std::str::FromStr; -//! use serde::de::{value, Deserialize, IntoDeserializer}; +//! use serde::Deserialize; +//! use serde::de::{value, IntoDeserializer}; //! //! #[derive(Deserialize)] //! enum Setting { @@ -31,8 +19,6 @@ //! Self::deserialize(s.into_deserializer()) //! } //! } -//! # -//! # fn main() {} //! ``` use lib::*; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/export.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/export.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/export.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/export.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2017 Serde Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - pub use lib::clone::Clone; pub use lib::convert::{From, Into}; pub use lib::default::Default; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/integer128.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/integer128.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/integer128.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/integer128.rs 2019-01-04 19:47:55.000000000 +0000 @@ -9,14 +9,12 @@ /// do not need to bother with this macro and may assume support for 128-bit /// integers. /// -/// ```rust -/// #[macro_use] -/// extern crate serde; -/// -/// use serde::Serializer; +/// ```edition2018 /// # use serde::private::ser::Error; /// # /// # struct MySerializer; +/// # +/// use serde::{serde_if_integer128, Serializer}; /// /// impl Serializer for MySerializer { /// type Ok = (); @@ -41,20 +39,18 @@ /// } /// } /// # -/// # __serialize_unimplemented! { +/// # serde::__serialize_unimplemented! { /// # bool i8 i16 i32 u8 u16 u32 u64 f32 f64 char str bytes none some /// # unit unit_struct unit_variant newtype_struct newtype_variant seq /// # tuple tuple_struct tuple_variant map struct struct_variant /// # } /// } -/// # -/// # fn main() {} /// ``` /// /// When Serde is built with support for 128-bit integers, this macro expands /// transparently into just the input tokens. /// -/// ```rust +/// ```edition2018 /// macro_rules! serde_if_integer128 { /// ($($tt:tt)*) => { /// $($tt)* @@ -65,7 +61,7 @@ /// When built without support for 128-bit integers, this macro expands to /// nothing. /// -/// ```rust +/// ```edition2018 /// macro_rules! serde_if_integer128 { /// ($($tt:tt)*) => {}; /// } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/lib.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/lib.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/lib.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/lib.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2017 Serde Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - //! # Serde //! //! Serde is a framework for ***ser***ializing and ***de***serializing Rust data @@ -50,17 +42,17 @@ //! - [MessagePack], an efficient binary format that resembles a compact JSON. //! - [TOML], a minimal configuration format used by [Cargo]. //! - [Pickle], a format common in the Python world. -//! - [Hjson], a variant of JSON designed to be readable and writable by humans. +//! - [RON], a Rusty Object Notation. //! - [BSON], the data storage and network transfer format used by MongoDB. //! - [Avro], a binary format used within Apache Hadoop, with support for schema //! definition. +//! - [Hjson], a variant of JSON designed to be readable and writable by humans. +//! - [JSON5], A superset of JSON including some productions from ES5. //! - [URL], the x-www-form-urlencoded format. -//! - [XML], the flexible machine-friendly W3C standard. -//! *(deserialization only)* //! - [Envy], a way to deserialize environment variables into Rust structs. //! *(deserialization only)* -//! - [Redis], deserialize values from Redis when using [redis-rs]. -//! *(deserialization only)* +//! - [Envy Store], a way to deserialize [AWS Parameter Store] parameters into +//! Rust structs. *(deserialization only)* //! //! [JSON]: https://github.com/serde-rs/json //! [Bincode]: https://github.com/TyOverby/bincode @@ -69,20 +61,21 @@ //! [MessagePack]: https://github.com/3Hren/msgpack-rust //! [TOML]: https://github.com/alexcrichton/toml-rs //! [Pickle]: https://github.com/birkenfeld/serde-pickle -//! [Hjson]: https://github.com/laktak/hjson-rust +//! [RON]: https://github.com/ron-rs/ron //! [BSON]: https://github.com/zonyitoo/bson-rs //! [Avro]: https://github.com/flavray/avro-rs +//! [Hjson]: https://github.com/laktak/hjson-rust +//! [JSON5]: https://github.com/callum-oakley/json5-rs //! [URL]: https://github.com/nox/serde_urlencoded -//! [XML]: https://github.com/RReverser/serde-xml-rs //! [Envy]: https://github.com/softprops/envy -//! [Redis]: https://github.com/OneSignal/serde-redis +//! [Envy Store]: https://github.com/softprops/envy-store //! [Cargo]: http://doc.crates.io/manifest.html -//! [redis-rs]: https://crates.io/crates/redis +//! [AWS Parameter Store]: https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-paramstore.html //////////////////////////////////////////////////////////////////////////////// // Serde types in rustdoc of other crates get linked to here. -#![doc(html_root_url = "https://docs.rs/serde/1.0.80")] +#![doc(html_root_url = "https://docs.rs/serde/1.0.84")] // Support using Serde without the standard library! #![cfg_attr(not(feature = "std"), no_std)] // Unstable functionality only if the user asks for it. For tracking and @@ -93,7 +86,7 @@ #![cfg_attr(feature = "alloc", feature(alloc))] #![cfg_attr(feature = "cargo-clippy", allow(renamed_and_removed_lints))] #![cfg_attr(feature = "cargo-clippy", deny(clippy, clippy_pedantic))] -// Whitelisted clippy lints +// Ignored clippy lints #![cfg_attr( feature = "cargo-clippy", allow( @@ -108,7 +101,7 @@ zero_prefixed_literal ) )] -// Whitelisted clippy_pedantic lints +// Ignored clippy_pedantic lints #![cfg_attr(feature = "cargo-clippy", allow( // integer and float ser/de requires these sorts of casts cast_possible_truncation, @@ -119,11 +112,11 @@ invalid_upcast_comparisons, // things are often more readable this way decimal_literal_representation, + module_name_repetitions, option_unwrap_used, result_unwrap_used, shadow_reuse, single_match_else, - stutter, use_self, // not practical indexing_slicing, diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/macros.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/macros.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/macros.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/macros.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2017 Serde Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - // Super explicit first paragraph because this shows up at the top level and // trips up people who are just looking for basic Serialize / Deserialize // documentation. @@ -19,10 +11,8 @@ /// input. This requires repetitive implementations of all the [`Deserializer`] /// trait methods. /// -/// ```rust -/// # #[macro_use] -/// # extern crate serde; -/// # +/// ```edition2018 +/// # use serde::forward_to_deserialize_any; /// # use serde::de::{value, Deserializer, Visitor}; /// # /// # struct MyDeserializer; @@ -51,18 +41,14 @@ /// # tuple_struct map struct enum identifier ignored_any /// # } /// # } -/// # -/// # fn main() {} /// ``` /// /// The `forward_to_deserialize_any!` macro implements these simple forwarding /// methods so that they forward directly to [`Deserializer::deserialize_any`]. /// You can choose which methods to forward. /// -/// ```rust -/// # #[macro_use] -/// # extern crate serde; -/// # +/// ```edition2018 +/// # use serde::forward_to_deserialize_any; /// # use serde::de::{value, Deserializer, Visitor}; /// # /// # struct MyDeserializer; @@ -85,8 +71,6 @@ /// tuple_struct map struct enum identifier ignored_any /// } /// } -/// # -/// # fn main() {} /// ``` /// /// The macro assumes the convention that your `Deserializer` lifetime parameter @@ -94,12 +78,10 @@ /// called `V`. A different type parameter and a different lifetime can be /// specified explicitly if necessary. /// -/// ```rust -/// # #[macro_use] -/// # extern crate serde; -/// # +/// ```edition2018 /// # use std::marker::PhantomData; /// # +/// # use serde::forward_to_deserialize_any; /// # use serde::de::{value, Deserializer, Visitor}; /// # /// # struct MyDeserializer<V>(PhantomData<V>); @@ -121,8 +103,6 @@ /// tuple_struct map struct enum identifier ignored_any /// } /// # } -/// # -/// # fn main() {} /// ``` /// /// [`Deserializer`]: trait.Deserializer.html diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/private/de.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/private/de.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/private/de.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/private/de.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2017 Serde Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - use lib::*; use de::{Deserialize, DeserializeSeed, Deserializer, Error, IntoDeserializer, Visitor}; @@ -1427,6 +1419,7 @@ Content::Str(v) => visitor.visit_borrowed_str(v), Content::ByteBuf(v) => visitor.visit_byte_buf(v), Content::Bytes(v) => visitor.visit_borrowed_bytes(v), + Content::U8(v) => visitor.visit_u8(v), _ => Err(self.invalid_type(&visitor)), } } @@ -1763,7 +1756,7 @@ V: Visitor<'de>, E: de::Error, { - let seq = content.into_iter().map(ContentRefDeserializer::new); + let seq = content.iter().map(ContentRefDeserializer::new); let mut seq_visitor = de::value::SeqDeserializer::new(seq); let value = try!(visitor.visit_seq(&mut seq_visitor)); try!(seq_visitor.end()); @@ -1778,7 +1771,7 @@ V: Visitor<'de>, E: de::Error, { - let map = content.into_iter().map(|&(ref k, ref v)| { + let map = content.iter().map(|&(ref k, ref v)| { ( ContentRefDeserializer::new(k), ContentRefDeserializer::new(v), @@ -2085,7 +2078,7 @@ { let (variant, value) = match *self.content { Content::Map(ref value) => { - let mut iter = value.into_iter(); + let mut iter = value.iter(); let &(ref variant, ref value) = match iter.next() { Some(v) => v, None => { @@ -2129,6 +2122,7 @@ Content::Str(v) => visitor.visit_borrowed_str(v), Content::ByteBuf(ref v) => visitor.visit_bytes(v), Content::Bytes(v) => visitor.visit_borrowed_bytes(v), + Content::U8(v) => visitor.visit_u8(v), _ => Err(self.invalid_type(&visitor)), } } @@ -2272,9 +2266,9 @@ where E: de::Error, { - fn new(vec: &'a [Content<'de>]) -> Self { + fn new(slice: &'a [Content<'de>]) -> Self { SeqRefDeserializer { - iter: vec.into_iter(), + iter: slice.iter(), err: PhantomData, } } @@ -2350,7 +2344,7 @@ { fn new(map: &'a [(Content<'de>, Content<'de>)]) -> Self { MapRefDeserializer { - iter: map.into_iter(), + iter: map.iter(), value: None, err: PhantomData, } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/private/macros.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/private/macros.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/private/macros.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/private/macros.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2017 Serde Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - #[doc(hidden)] #[macro_export] macro_rules! __private_serialize { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/private/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/private/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/private/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/private/mod.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2017 Serde Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - mod macros; pub mod de; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/private/ser.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/private/ser.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/private/ser.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/private/ser.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2017 Serde Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - use lib::*; use ser::{self, Impossible, Serialize, SerializeMap, SerializeStruct, Serializer}; @@ -409,10 +401,9 @@ } fn end(mut self) -> Result<M::Ok, M::Error> { - try!( - self.map - .serialize_value(&Content::TupleStruct(self.name, self.fields)) - ); + try!(self + .map + .serialize_value(&Content::TupleStruct(self.name, self.fields))); self.map.end() } } @@ -454,10 +445,9 @@ } fn end(mut self) -> Result<M::Ok, M::Error> { - try!( - self.map - .serialize_value(&Content::Struct(self.name, self.fields)) - ); + try!(self + .map + .serialize_value(&Content::Struct(self.name, self.fields))); self.map.end() } } @@ -1328,10 +1318,9 @@ } fn end(self) -> Result<(), Self::Error> { - try!( - self.map - .serialize_value(&Content::Struct(self.name, self.fields)) - ); + try!(self + .map + .serialize_value(&Content::Struct(self.name, self.fields))); Ok(()) } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/ser/impls.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/ser/impls.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/ser/impls.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/ser/impls.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2017 Serde Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - use lib::*; use ser::{Error, Serialize, SerializeTuple, Serializer}; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/ser/impossible.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/ser/impossible.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/ser/impossible.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/ser/impossible.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2017 Serde Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - //! This module contains `Impossible` serializer and its implementations. use lib::*; @@ -23,10 +15,7 @@ /// [`SerializeTuple`], [`SerializeTupleStruct`], [`SerializeTupleVariant`], /// [`SerializeMap`], [`SerializeStruct`], and [`SerializeStructVariant`]. /// -/// ```rust -/// # #[macro_use] -/// # extern crate serde; -/// # +/// ```edition2018 /// # use serde::ser::{Serializer, Impossible}; /// # use serde::private::ser::Error; /// # @@ -52,14 +41,12 @@ /// } /// /// /* other Serializer methods */ -/// # __serialize_unimplemented! { +/// # serde::__serialize_unimplemented! { /// # bool i8 i16 i32 i64 u8 u16 u32 u64 f32 f64 char str bytes none some /// # unit unit_struct unit_variant newtype_struct newtype_variant /// # tuple tuple_struct tuple_variant map struct struct_variant /// # } /// } -/// # -/// # fn main() {} /// ``` /// /// [`Serializer`]: trait.Serializer.html diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/ser/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/ser/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde/src/ser/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde/src/ser/mod.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2017 Serde Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - //! Generic data structure serialization framework. //! //! The two most important traits in this module are [`Serialize`] and @@ -145,7 +137,7 @@ /// For example, a filesystem [`Path`] may refuse to serialize /// itself if it contains invalid UTF-8 data. /// - /// ```rust + /// ```edition2018 /// # struct Path; /// # /// # impl Path { @@ -218,7 +210,7 @@ /// See the [Implementing `Serialize`] section of the manual for more /// information about how to implement this method. /// - /// ```rust + /// ```edition2018 /// use serde::ser::{Serialize, SerializeStruct, Serializer}; /// /// struct Person { @@ -385,13 +377,10 @@ /// Serialize a `bool` value. /// - /// ```rust - /// # #[macro_use] - /// # extern crate serde; - /// # + /// ```edition2018 /// # use serde::Serializer; /// # - /// # __private_serialize!(); + /// # serde::__private_serialize!(); /// # /// impl Serialize for bool { /// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> @@ -401,8 +390,6 @@ /// serializer.serialize_bool(*self) /// } /// } - /// # - /// # fn main() {} /// ``` fn serialize_bool(self, v: bool) -> Result<Self::Ok, Self::Error>; @@ -412,13 +399,10 @@ /// reasonable implementation would be to cast the value to `i64` and /// forward to `serialize_i64`. /// - /// ```rust - /// # #[macro_use] - /// # extern crate serde; - /// # + /// ```edition2018 /// # use serde::Serializer; /// # - /// # __private_serialize!(); + /// # serde::__private_serialize!(); /// # /// impl Serialize for i8 { /// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> @@ -428,8 +412,6 @@ /// serializer.serialize_i8(*self) /// } /// } - /// # - /// # fn main() {} /// ``` fn serialize_i8(self, v: i8) -> Result<Self::Ok, Self::Error>; @@ -439,13 +421,10 @@ /// reasonable implementation would be to cast the value to `i64` and /// forward to `serialize_i64`. /// - /// ```rust - /// # #[macro_use] - /// # extern crate serde; - /// # + /// ```edition2018 /// # use serde::Serializer; /// # - /// # __private_serialize!(); + /// # serde::__private_serialize!(); /// # /// impl Serialize for i16 { /// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> @@ -455,8 +434,6 @@ /// serializer.serialize_i16(*self) /// } /// } - /// # - /// # fn main() {} /// ``` fn serialize_i16(self, v: i16) -> Result<Self::Ok, Self::Error>; @@ -466,13 +443,10 @@ /// reasonable implementation would be to cast the value to `i64` and /// forward to `serialize_i64`. /// - /// ```rust - /// # #[macro_use] - /// # extern crate serde; - /// # + /// ```edition2018 /// # use serde::Serializer; /// # - /// # __private_serialize!(); + /// # serde::__private_serialize!(); /// # /// impl Serialize for i32 { /// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> @@ -482,20 +456,15 @@ /// serializer.serialize_i32(*self) /// } /// } - /// # - /// # fn main() {} /// ``` fn serialize_i32(self, v: i32) -> Result<Self::Ok, Self::Error>; /// Serialize an `i64` value. /// - /// ```rust - /// # #[macro_use] - /// # extern crate serde; - /// # + /// ```edition2018 /// # use serde::Serializer; /// # - /// # __private_serialize!(); + /// # serde::__private_serialize!(); /// # /// impl Serialize for i64 { /// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> @@ -505,21 +474,16 @@ /// serializer.serialize_i64(*self) /// } /// } - /// # - /// # fn main() {} /// ``` fn serialize_i64(self, v: i64) -> Result<Self::Ok, Self::Error>; serde_if_integer128! { /// Serialize an `i128` value. /// - /// ```rust - /// # #[macro_use] - /// # extern crate serde; - /// # + /// ```edition2018 /// # use serde::Serializer; /// # - /// # __private_serialize!(); + /// # serde::__private_serialize!(); /// # /// impl Serialize for i128 { /// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> @@ -529,8 +493,6 @@ /// serializer.serialize_i128(*self) /// } /// } - /// # - /// # fn main() {} /// ``` /// /// This method is available only on Rust compiler versions >=1.26. The @@ -547,13 +509,10 @@ /// reasonable implementation would be to cast the value to `u64` and /// forward to `serialize_u64`. /// - /// ```rust - /// # #[macro_use] - /// # extern crate serde; - /// # + /// ```edition2018 /// # use serde::Serializer; /// # - /// # __private_serialize!(); + /// # serde::__private_serialize!(); /// # /// impl Serialize for u8 { /// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> @@ -563,8 +522,6 @@ /// serializer.serialize_u8(*self) /// } /// } - /// # - /// # fn main() {} /// ``` fn serialize_u8(self, v: u8) -> Result<Self::Ok, Self::Error>; @@ -574,13 +531,10 @@ /// reasonable implementation would be to cast the value to `u64` and /// forward to `serialize_u64`. /// - /// ```rust - /// # #[macro_use] - /// # extern crate serde; - /// # + /// ```edition2018 /// # use serde::Serializer; /// # - /// # __private_serialize!(); + /// # serde::__private_serialize!(); /// # /// impl Serialize for u16 { /// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> @@ -590,8 +544,6 @@ /// serializer.serialize_u16(*self) /// } /// } - /// # - /// # fn main() {} /// ``` fn serialize_u16(self, v: u16) -> Result<Self::Ok, Self::Error>; @@ -601,13 +553,10 @@ /// reasonable implementation would be to cast the value to `u64` and /// forward to `serialize_u64`. /// - /// ```rust - /// # #[macro_use] - /// # extern crate serde; - /// # + /// ```edition2018 /// # use serde::Serializer; /// # - /// # __private_serialize!(); + /// # serde::__private_serialize!(); /// # /// impl Serialize for u32 { /// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> @@ -617,20 +566,15 @@ /// serializer.serialize_u32(*self) /// } /// } - /// # - /// # fn main() {} /// ``` fn serialize_u32(self, v: u32) -> Result<Self::Ok, Self::Error>; /// Serialize a `u64` value. /// - /// ```rust - /// # #[macro_use] - /// # extern crate serde; - /// # + /// ```edition2018 /// # use serde::Serializer; /// # - /// # __private_serialize!(); + /// # serde::__private_serialize!(); /// # /// impl Serialize for u64 { /// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> @@ -640,21 +584,16 @@ /// serializer.serialize_u64(*self) /// } /// } - /// # - /// # fn main() {} /// ``` fn serialize_u64(self, v: u64) -> Result<Self::Ok, Self::Error>; serde_if_integer128! { /// Serialize a `u128` value. /// - /// ```rust - /// # #[macro_use] - /// # extern crate serde; - /// # + /// ```edition2018 /// # use serde::Serializer; /// # - /// # __private_serialize!(); + /// # serde::__private_serialize!(); /// # /// impl Serialize for u128 { /// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> @@ -664,8 +603,6 @@ /// serializer.serialize_u128(*self) /// } /// } - /// # - /// # fn main() {} /// ``` /// /// This method is available only on Rust compiler versions >=1.26. The @@ -682,13 +619,10 @@ /// reasonable implementation would be to cast the value to `f64` and /// forward to `serialize_f64`. /// - /// ```rust - /// # #[macro_use] - /// # extern crate serde; - /// # + /// ```edition2018 /// # use serde::Serializer; /// # - /// # __private_serialize!(); + /// # serde::__private_serialize!(); /// # /// impl Serialize for f32 { /// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> @@ -698,20 +632,15 @@ /// serializer.serialize_f32(*self) /// } /// } - /// # - /// # fn main() {} /// ``` fn serialize_f32(self, v: f32) -> Result<Self::Ok, Self::Error>; /// Serialize an `f64` value. /// - /// ```rust - /// # #[macro_use] - /// # extern crate serde; - /// # + /// ```edition2018 /// # use serde::Serializer; /// # - /// # __private_serialize!(); + /// # serde::__private_serialize!(); /// # /// impl Serialize for f64 { /// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> @@ -721,8 +650,6 @@ /// serializer.serialize_f64(*self) /// } /// } - /// # - /// # fn main() {} /// ``` fn serialize_f64(self, v: f64) -> Result<Self::Ok, Self::Error>; @@ -731,13 +658,10 @@ /// If the format does not support characters, it is reasonable to serialize /// it as a single element `str` or a `u32`. /// - /// ```rust - /// # #[macro_use] - /// # extern crate serde; - /// # + /// ```edition2018 /// # use serde::Serializer; /// # - /// # __private_serialize!(); + /// # serde::__private_serialize!(); /// # /// impl Serialize for char { /// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> @@ -747,20 +671,15 @@ /// serializer.serialize_char(*self) /// } /// } - /// # - /// # fn main() {} /// ``` fn serialize_char(self, v: char) -> Result<Self::Ok, Self::Error>; /// Serialize a `&str`. /// - /// ```rust - /// # #[macro_use] - /// # extern crate serde; - /// # + /// ```edition2018 /// # use serde::Serializer; /// # - /// # __private_serialize!(); + /// # serde::__private_serialize!(); /// # /// impl Serialize for str { /// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> @@ -770,8 +689,6 @@ /// serializer.serialize_str(self) /// } /// } - /// # - /// # fn main() {} /// ``` fn serialize_str(self, v: &str) -> Result<Self::Ok, Self::Error>; @@ -783,10 +700,7 @@ /// `serialize_seq`. If forwarded, the implementation looks usually just /// like this: /// - /// ```rust - /// # #[macro_use] - /// # extern crate serde; - /// # + /// ```edition2018 /// # use serde::ser::{Serializer, SerializeSeq}; /// # use serde::private::ser::Error; /// # @@ -804,22 +718,18 @@ /// seq.end() /// } /// # - /// # __serialize_unimplemented! { + /// # serde::__serialize_unimplemented! { /// # bool i8 i16 i32 i64 u8 u16 u32 u64 f32 f64 char str none some /// # unit unit_struct unit_variant newtype_struct newtype_variant /// # seq tuple tuple_struct tuple_variant map struct struct_variant /// # } /// # } - /// # - /// # fn main() {} /// ``` fn serialize_bytes(self, v: &[u8]) -> Result<Self::Ok, Self::Error>; /// Serialize a [`None`] value. /// - /// ```rust - /// # extern crate serde; - /// # + /// ```edition2018 /// # use serde::{Serialize, Serializer}; /// # /// # enum Option<T> { @@ -827,7 +737,7 @@ /// # None, /// # } /// # - /// # use Option::{Some, None}; + /// # use self::Option::{Some, None}; /// # /// impl<T> Serialize for Option<T> /// where @@ -852,9 +762,7 @@ /// Serialize a [`Some(T)`] value. /// - /// ```rust - /// # extern crate serde; - /// # + /// ```edition2018 /// # use serde::{Serialize, Serializer}; /// # /// # enum Option<T> { @@ -862,7 +770,7 @@ /// # None, /// # } /// # - /// # use Option::{Some, None}; + /// # use self::Option::{Some, None}; /// # /// impl<T> Serialize for Option<T> /// where @@ -889,13 +797,10 @@ /// Serialize a `()` value. /// - /// ```rust - /// # #[macro_use] - /// # extern crate serde; - /// # + /// ```edition2018 /// # use serde::Serializer; /// # - /// # __private_serialize!(); + /// # serde::__private_serialize!(); /// # /// impl Serialize for () { /// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> @@ -905,8 +810,6 @@ /// serializer.serialize_unit() /// } /// } - /// # - /// # fn main() {} /// ``` fn serialize_unit(self) -> Result<Self::Ok, Self::Error>; @@ -914,7 +817,7 @@ /// /// A reasonable implementation would be to forward to `serialize_unit`. /// - /// ```rust + /// ```edition2018 /// use serde::{Serialize, Serializer}; /// /// struct Nothing; @@ -936,7 +839,7 @@ /// this variant within the enum, and the `variant` is the name of the /// variant. /// - /// ```rust + /// ```edition2018 /// use serde::{Serialize, Serializer}; /// /// enum E { @@ -969,7 +872,7 @@ /// wrappers around the data they contain. A reasonable implementation would /// be to forward to `value.serialize(self)`. /// - /// ```rust + /// ```edition2018 /// use serde::{Serialize, Serializer}; /// /// struct Millimeters(u8); @@ -997,7 +900,7 @@ /// this variant within the enum, and the `variant` is the name of the /// variant. The `value` is the data contained within this newtype variant. /// - /// ```rust + /// ```edition2018 /// use serde::{Serialize, Serializer}; /// /// enum E { @@ -1035,7 +938,7 @@ /// not be computable before the sequence is iterated. Some serializers only /// support sequences whose length is known up front. /// - /// ```rust + /// ```edition2018 /// # use std::marker::PhantomData; /// # /// # struct Vec<T>(PhantomData<T>); @@ -1080,7 +983,7 @@ /// This call must be followed by zero or more calls to `serialize_element`, /// then a call to `end`. /// - /// ```rust + /// ```edition2018 /// use serde::ser::{Serialize, Serializer, SerializeTuple}; /// /// # mod fool { @@ -1110,7 +1013,7 @@ /// } /// ``` /// - /// ```rust + /// ```edition2018 /// use serde::ser::{Serialize, SerializeTuple, Serializer}; /// /// const VRAM_SIZE: usize = 386; @@ -1138,7 +1041,7 @@ /// The `name` is the name of the tuple struct and the `len` is the number /// of data fields that will be serialized. /// - /// ```rust + /// ```edition2018 /// use serde::ser::{Serialize, SerializeTupleStruct, Serializer}; /// /// struct Rgb(u8, u8, u8); @@ -1170,7 +1073,7 @@ /// this variant within the enum, the `variant` is the name of the variant, /// and the `len` is the number of data fields that will be serialized. /// - /// ```rust + /// ```edition2018 /// use serde::ser::{Serialize, SerializeTupleVariant, Serializer}; /// /// enum E { @@ -1216,7 +1119,7 @@ /// be computable before the map is iterated. Some serializers only support /// maps whose length is known up front. /// - /// ```rust + /// ```edition2018 /// # use std::marker::PhantomData; /// # /// # struct HashMap<K, V>(PhantomData<K>, PhantomData<V>); @@ -1264,7 +1167,7 @@ /// The `name` is the name of the struct and the `len` is the number of /// data fields that will be serialized. /// - /// ```rust + /// ```edition2018 /// use serde::ser::{Serialize, SerializeStruct, Serializer}; /// /// struct Rgb { @@ -1300,7 +1203,7 @@ /// this variant within the enum, the `variant` is the name of the variant, /// and the `len` is the number of data fields that will be serialized. /// - /// ```rust + /// ```edition2018 /// use serde::ser::{Serialize, SerializeStructVariant, Serializer}; /// /// enum E { @@ -1342,7 +1245,7 @@ /// using [`serialize_seq`]. Implementors should not need to override this /// method. /// - /// ```rust + /// ```edition2018 /// use serde::{Serialize, Serializer}; /// /// struct SecretlyOneHigher { @@ -1379,7 +1282,7 @@ /// using [`serialize_map`]. Implementors should not need to override this /// method. /// - /// ```rust + /// ```edition2018 /// use serde::{Serialize, Serializer}; /// use std::collections::BTreeSet; /// @@ -1419,7 +1322,7 @@ /// delegates to [`serialize_str`]. Serializers are encouraged to provide a /// more efficient implementation if possible. /// - /// ```rust + /// ```edition2018 /// # struct DateTime; /// # /// # impl DateTime { @@ -1460,7 +1363,7 @@ /// of this method. If no more sensible behavior is possible, the /// implementation is expected to return an error. /// - /// ```rust + /// ```edition2018 /// # struct DateTime; /// # /// # impl DateTime { @@ -1495,7 +1398,7 @@ /// human-readable one and binary formats like Bincode will prefer the /// compact one. /// - /// ``` + /// ```edition2018 /// # use std::fmt::{self, Display}; /// # /// # struct Timestamp; @@ -1544,7 +1447,7 @@ /// /// # Example use /// -/// ```rust +/// ```edition2018 /// # use std::marker::PhantomData; /// # /// # struct Vec<T>(PhantomData<T>); @@ -1608,7 +1511,7 @@ /// /// # Example use /// -/// ```rust +/// ```edition2018 /// use serde::ser::{Serialize, Serializer, SerializeTuple}; /// /// # mod fool { @@ -1638,7 +1541,7 @@ /// } /// ``` /// -/// ```rust +/// ```edition2018 /// # use std::marker::PhantomData; /// # /// # struct Array<T>(PhantomData<T>); @@ -1708,7 +1611,7 @@ /// /// # Example use /// -/// ```rust +/// ```edition2018 /// use serde::ser::{Serialize, SerializeTupleStruct, Serializer}; /// /// struct Rgb(u8, u8, u8); @@ -1753,7 +1656,7 @@ /// /// # Example use /// -/// ```rust +/// ```edition2018 /// use serde::ser::{Serialize, SerializeTupleVariant, Serializer}; /// /// enum E { @@ -1811,7 +1714,7 @@ /// /// # Example use /// -/// ```rust +/// ```edition2018 /// # use std::marker::PhantomData; /// # /// # struct HashMap<K, V>(PhantomData<K>, PhantomData<V>); @@ -1922,7 +1825,7 @@ /// /// # Example use /// -/// ```rust +/// ```edition2018 /// use serde::ser::{Serialize, SerializeStruct, Serializer}; /// /// struct Rgb { @@ -1982,7 +1885,7 @@ /// /// # Example use /// -/// ```rust +/// ```edition2018 /// use serde::ser::{Serialize, SerializeStructVariant, Serializer}; /// /// enum E { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde_json/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde_json/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde_json/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde_json/.cargo-checksum.json 2019-01-04 19:47:55.000000000 +0000 @@ -1 +1 @@ -{"files":{".cargo_vcs_info.json":"869454d716570d666cbdaae295377f30484e3929b4aaec825e1a021d149399bd","Cargo.toml":"835ea82dc5bf7069cccee493719e638d19ff9d666887ee65f34c95a37b39333d","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"5e04e8df6009a66c357bdc291f775c7ef216fbd535a22dc9db52c54e9c5923fa","src/de.rs":"52d4ec6a0af49ffa111c7660426860e2fbb3969f044264a71df65dddf4c4efb8","src/error.rs":"8ac6d4c861891c133b3359b2a14fccb8a6d463a4b2c13f0d658884c1972186ce","src/iter.rs":"b5c77c5482e45bed1e63bd36a0f991a08f732811546a163228be48303e7f1b4d","src/lib.rs":"1d07af83dddd8d123b5ee2d76adc15194c53dfb1e7895b56076a1badddf7fa3c","src/macros.rs":"0d9850832f53c8aca337395b2536f1cdaf2d2d2699adc09c9a2001544106a4fc","src/map.rs":"724205f934003c879fb3e48a84b21c54e273e968beec97b85617042911ca88d7","src/number.rs":"67a7295ff771de5be214180b117b2dade7f51ac5331d2d749ecc3203232c918c","src/raw.rs":"374aae841a6a8396c1b253a01a78059231d653940eea1d1a5654160914874517","src/read.rs":"674ed8b4e3eb9a0882a6b152b64f45f4fcca6ba534ca07d3082139ec5fdb3175","src/ser.rs":"7312fe0377c77d6107e5337591d2c7d9eb85b8fb7001599bc200d1015142b05a","src/value/de.rs":"f75afaa0eb8a3a91f3eefbd401384599cd27b37a9361ff3481dcf41956771211","src/value/from.rs":"13a6c7b0b327f23c2fd899c8390e8ddfd8907bfcfc362e80834b9ae7ddb698e9","src/value/index.rs":"b9a8cc6f37e2a079a5e4ab1bf25fa9ff076c514870e0756a0c88af3ffa0f51a8","src/value/mod.rs":"2b7eada7505475954d32ed04b9fb585125fdc96dd20f7c1d3433619b4fd88813","src/value/partial_eq.rs":"5924e245408afc8075e2bb9dda479c938c6c8cdd3c18b54697aa2b33fffda57b","src/value/ser.rs":"6b4b454d48eecf5012353f11cc58820db60b156a1f9639226677185e7b0f8d97"},"package":"43344e7ce05d0d8280c5940cabb4964bea626aa58b1ec0e8c73fa2a8512a38ce"} \ No newline at end of file +{"files":{".cargo_vcs_info.json":"b81e48a1613c75bbef99d235d85413557ac1ef52ffd2304c3b354cd7c0b890b9","Cargo.toml":"4a9fd3ce376bbe199b4264f0c140c10fc64fa879aeaa005d13f06c9ab47bd6f2","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"5e04e8df6009a66c357bdc291f775c7ef216fbd535a22dc9db52c54e9c5923fa","src/de.rs":"b5982f0dbede25b6f0737f695a55d2b8a7b5d8763c576da3d1a74c14efde8d74","src/error.rs":"8ac6d4c861891c133b3359b2a14fccb8a6d463a4b2c13f0d658884c1972186ce","src/iter.rs":"b5c77c5482e45bed1e63bd36a0f991a08f732811546a163228be48303e7f1b4d","src/lib.rs":"9974773bb0ba803423556f6d92f5a0bbb4e5bde233ac7b76b177285c7855ff3b","src/macros.rs":"0d9850832f53c8aca337395b2536f1cdaf2d2d2699adc09c9a2001544106a4fc","src/map.rs":"724205f934003c879fb3e48a84b21c54e273e968beec97b85617042911ca88d7","src/number.rs":"6273405a4cc19a32ddce19b7fec2eddae050fdfc22db83b2ff329fe8327c7cee","src/raw.rs":"12a9e9e2029fcffb46253fe71f72785a4ecf1f64494a9be6c23c3dcd4a546fa0","src/read.rs":"76306c2f318fccca08419550d758e4bf697ba87d0eee958a3e2ebae44a3ccefd","src/ser.rs":"c5d4841537fbb04194fbe709f58c27029474867878c21937f1749ef4a17903d8","src/value/de.rs":"88d2136008c6f3b3ead77498c15903a37c81cb7ed631ab47a43c43b4f1b9b80b","src/value/from.rs":"44208986c69579b7c2d5ed29c6edbbdb194f52d244ed7f99fbc99684a0fbd8b6","src/value/index.rs":"b9a8cc6f37e2a079a5e4ab1bf25fa9ff076c514870e0756a0c88af3ffa0f51a8","src/value/mod.rs":"c71a7ca56b4d83dd0321bea514fb4426f2ca35c95e1561abf015e61172e283df","src/value/partial_eq.rs":"5924e245408afc8075e2bb9dda479c938c6c8cdd3c18b54697aa2b33fffda57b","src/value/ser.rs":"7735d535c34c929a6518680d7aa0542153a726e2e77bfbf1864a701a15fabcc6"},"package":"bdf540260cfee6da923831f4776ddc495ada940c30117977c70f1313a6130545"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde_json/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde_json/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde_json/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde_json/Cargo.toml 2019-01-04 19:47:55.000000000 +0000 @@ -12,7 +12,7 @@ [package] name = "serde_json" -version = "1.0.32" +version = "1.0.34" authors = ["Erick Tryzelaar <erick.tryzelaar@gmail.com>", "David Tolnay <dtolnay@gmail.com>"] include = ["Cargo.toml", "src/**/*.rs", "README.md", "LICENSE-APACHE", "LICENSE-MIT"] description = "A JSON serialization file format" @@ -41,6 +41,7 @@ version = "1.0.60" [dev-dependencies.compiletest_rs] version = "0.3" +features = ["stable"] [dev-dependencies.serde_bytes] version = "0.10" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde_json/.cargo_vcs_info.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde_json/.cargo_vcs_info.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde_json/.cargo_vcs_info.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde_json/.cargo_vcs_info.json 2019-01-04 19:47:55.000000000 +0000 @@ -1,5 +1,5 @@ { "git": { - "sha1": "2a627d13d6f4bbd7b7077b85b73ddcc7044b6be1" + "sha1": "3bd0fc177fda6e13a493060be5a2d872394d8401" } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde_json/src/de.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde_json/src/de.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde_json/src/de.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde_json/src/de.rs 2019-01-04 19:47:55.000000000 +0000 @@ -346,13 +346,11 @@ // number as a `u64` until we grow too large. At that point, switch to // parsing the value as a `f64`. if overflow!(res * 10 + digit, u64::max_value()) { - return Ok(ParserNumber::F64(try!( - self.parse_long_integer( - positive, - res, - 1, // res * 10^1 - ) - ))); + return Ok(ParserNumber::F64(try!(self.parse_long_integer( + positive, + res, + 1, // res * 10^1 + )))); } res = res * 10 + digit; @@ -867,9 +865,11 @@ return Err(self.peek_error(ErrorCode::InvalidNumber)); } } - b'1'...b'9' => while let b'0'...b'9' = try!(self.peek_or_null()) { - self.eat_char(); - }, + b'1'...b'9' => { + while let b'0'...b'9' = try!(self.peek_or_null()) { + self.eat_char(); + } + } _ => { return Err(self.error(ErrorCode::InvalidNumber)); } @@ -2121,15 +2121,17 @@ /// Deserialize an instance of type `T` from an IO stream of JSON. /// -/// # Errors +/// The content of the IO stream is deserialized directly from the stream +/// without being buffered in memory by serde_json. /// -/// This conversion can fail if the structure of the input does not match the -/// structure expected by `T`, for example if `T` is a struct type but the input -/// contains something other than a JSON map. It can also fail if the structure -/// is correct but `T`'s implementation of `Deserialize` decides that something -/// is wrong with the data, for example required struct fields are missing from -/// the JSON map or some number is too big to fit in the expected primitive -/// type. +/// When reading from a source against which short reads are not efficient, such +/// as a [`File`], you will want to apply your own buffering because serde_json +/// will not buffer the input. See [`std::io::BufReader`]. +/// +/// [`File`]: https://doc.rust-lang.org/std/fs/struct.File.html +/// [`BufReader`]: https://doc.rust-lang.org/std/io/struct.BufReader.html +/// +/// # Example /// /// ```rust /// #[macro_use] @@ -2140,6 +2142,7 @@ /// /// use std::error::Error; /// use std::fs::File; +/// use std::io::BufReader; /// use std::path::Path; /// /// #[derive(Deserialize, Debug)] @@ -2149,11 +2152,12 @@ /// } /// /// fn read_user_from_file<P: AsRef<Path>>(path: P) -> Result<User, Box<Error>> { -/// // Open the file in read-only mode. +/// // Open the file in read-only mode with buffer. /// let file = File::open(path)?; +/// let reader = BufReader::new(file); /// /// // Read the JSON contents of the file as an instance of `User`. -/// let u = serde_json::from_reader(file)?; +/// let u = serde_json::from_reader(reader)?; /// /// // Return the `User`. /// Ok(u) @@ -2166,15 +2170,6 @@ /// println!("{:#?}", u); /// } /// ``` -pub fn from_reader<R, T>(rdr: R) -> Result<T> -where - R: io::Read, - T: de::DeserializeOwned, -{ - from_trait(read::IoRead::new(rdr)) -} - -/// Deserialize an instance of type `T` from bytes of JSON text. /// /// # Errors /// @@ -2185,6 +2180,17 @@ /// is wrong with the data, for example required struct fields are missing from /// the JSON map or some number is too big to fit in the expected primitive /// type. +pub fn from_reader<R, T>(rdr: R) -> Result<T> +where + R: io::Read, + T: de::DeserializeOwned, +{ + from_trait(read::IoRead::new(rdr)) +} + +/// Deserialize an instance of type `T` from bytes of JSON text. +/// +/// # Example /// /// ```rust /// #[macro_use] @@ -2210,14 +2216,6 @@ /// println!("{:#?}", u); /// } /// ``` -pub fn from_slice<'a, T>(v: &'a [u8]) -> Result<T> -where - T: de::Deserialize<'a>, -{ - from_trait(read::SliceRead::new(v)) -} - -/// Deserialize an instance of type `T` from a string of JSON text. /// /// # Errors /// @@ -2228,6 +2226,16 @@ /// is wrong with the data, for example required struct fields are missing from /// the JSON map or some number is too big to fit in the expected primitive /// type. +pub fn from_slice<'a, T>(v: &'a [u8]) -> Result<T> +where + T: de::Deserialize<'a>, +{ + from_trait(read::SliceRead::new(v)) +} + +/// Deserialize an instance of type `T` from a string of JSON text. +/// +/// # Example /// /// ```rust /// #[macro_use] @@ -2253,6 +2261,16 @@ /// println!("{:#?}", u); /// } /// ``` +/// +/// # Errors +/// +/// This conversion can fail if the structure of the input does not match the +/// structure expected by `T`, for example if `T` is a struct type but the input +/// contains something other than a JSON map. It can also fail if the structure +/// is correct but `T`'s implementation of `Deserialize` decides that something +/// is wrong with the data, for example required struct fields are missing from +/// the JSON map or some number is too big to fit in the expected primitive +/// type. pub fn from_str<'a, T>(s: &'a str) -> Result<T> where T: de::Deserialize<'a>, diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde_json/src/lib.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde_json/src/lib.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde_json/src/lib.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde_json/src/lib.rs 2019-01-04 19:47:55.000000000 +0000 @@ -315,36 +315,26 @@ //! [macro]: https://docs.serde.rs/serde_json/macro.json.html //! [`serde-json-core`]: https://japaric.github.io/serde-json-core/serde_json_core/ -#![doc(html_root_url = "https://docs.rs/serde_json/1.0.32")] +#![doc(html_root_url = "https://docs.rs/serde_json/1.0.34")] #![cfg_attr(feature = "cargo-clippy", allow(renamed_and_removed_lints))] #![cfg_attr(feature = "cargo-clippy", deny(clippy, clippy_pedantic))] -// Whitelisted clippy lints -#![cfg_attr( - feature = "cargo-clippy", - allow(doc_markdown, needless_pass_by_value) -)] -// Whitelisted clippy_pedantic lints +// Ignored clippy lints +#![cfg_attr(feature = "cargo-clippy", allow(deprecated_cfg_attr, doc_markdown))] +// Ignored clippy_pedantic lints #![cfg_attr(feature = "cargo-clippy", allow( -// Deserializer::from_str, into_iter + // Deserializer::from_str, into_iter should_implement_trait, -// integer and float ser/de requires these sorts of casts - cast_possible_truncation, + // integer and float ser/de requires these sorts of casts cast_possible_wrap, cast_precision_loss, cast_sign_loss, -// string ser/de uses indexing and slicing - indexing_slicing, -// things are often more readable this way + // things are often more readable this way cast_lossless, - shadow_reuse, + module_name_repetitions, shadow_unrelated, single_match_else, - stutter, use_self, -// not practical - missing_docs_in_private_items, - similar_names, -// we support older compilers + // we support older compilers redundant_field_names, ))] #![deny(missing_docs)] diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde_json/src/number.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde_json/src/number.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde_json/src/number.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde_json/src/number.rs 2019-01-04 19:47:55.000000000 +0000 @@ -175,11 +175,13 @@ pub fn as_i64(&self) -> Option<i64> { #[cfg(not(feature = "arbitrary_precision"))] match self.n { - N::PosInt(n) => if n <= i64::max_value() as u64 { - Some(n as i64) - } else { - None - }, + N::PosInt(n) => { + if n <= i64::max_value() as u64 { + Some(n as i64) + } else { + None + } + } N::NegInt(n) => Some(n), N::Float(_) => None, } @@ -738,6 +740,21 @@ impl_from_unsigned!(u8, u16, u32, u64, usize); impl_from_signed!(i8, i16, i32, i64, isize); +#[cfg(feature = "arbitrary_precision")] +serde_if_integer128! { + impl From<i128> for Number { + fn from(i: i128) -> Self { + Number { n: i.to_string() } + } + } + + impl From<u128> for Number { + fn from(u: u128) -> Self { + Number { n: u.to_string() } + } + } +} + impl Number { #[cfg(not(feature = "arbitrary_precision"))] // Not public API. Should be pub(crate). diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde_json/src/raw.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde_json/src/raw.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde_json/src/raw.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde_json/src/raw.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,9 +1,12 @@ use std::fmt::{self, Debug, Display}; use std::mem; -use serde::ser::{Serialize, Serializer, SerializeStruct}; -use serde::de::{self, Deserialize, Deserializer, DeserializeSeed, IntoDeserializer, MapAccess, Unexpected, Visitor}; use serde::de::value::BorrowedStrDeserializer; +use serde::de::{ + self, Deserialize, DeserializeSeed, Deserializer, IntoDeserializer, MapAccess, Unexpected, + Visitor, +}; +use serde::ser::{Serialize, SerializeStruct, Serializer}; use error::Error; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde_json/src/read.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde_json/src/read.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde_json/src/read.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde_json/src/read.rs 2019-01-04 19:47:55.000000000 +0000 @@ -369,7 +369,9 @@ { let raw = self.raw_buffer.take().unwrap(); let raw = String::from_utf8(raw).unwrap(); - visitor.visit_map(OwnedRawDeserializer { raw_value: Some(raw) }) + visitor.visit_map(OwnedRawDeserializer { + raw_value: Some(raw), + }) } } @@ -578,7 +580,9 @@ { let raw = &self.slice[self.raw_buffering_start_index..self.index]; let raw = str::from_utf8(raw).unwrap(); - visitor.visit_map(BorrowedRawDeserializer { raw_value: Some(raw) }) + visitor.visit_map(BorrowedRawDeserializer { + raw_value: Some(raw), + }) } } @@ -667,7 +671,9 @@ V: Visitor<'a>, { let raw = &self.data[self.delegate.raw_buffering_start_index..self.delegate.index]; - visitor.visit_map(BorrowedRawDeserializer { raw_value: Some(raw) }) + visitor.visit_map(BorrowedRawDeserializer { + raw_value: Some(raw), + }) } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde_json/src/ser.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde_json/src/ser.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde_json/src/ser.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde_json/src/ser.rs 2019-01-04 19:47:55.000000000 +0000 @@ -87,51 +87,46 @@ #[inline] fn serialize_bool(self, value: bool) -> Result<()> { - try!( - self.formatter - .write_bool(&mut self.writer, value) - .map_err(Error::io) - ); + try!(self + .formatter + .write_bool(&mut self.writer, value) + .map_err(Error::io)); Ok(()) } #[inline] fn serialize_i8(self, value: i8) -> Result<()> { - try!( - self.formatter - .write_i8(&mut self.writer, value) - .map_err(Error::io) - ); + try!(self + .formatter + .write_i8(&mut self.writer, value) + .map_err(Error::io)); Ok(()) } #[inline] fn serialize_i16(self, value: i16) -> Result<()> { - try!( - self.formatter - .write_i16(&mut self.writer, value) - .map_err(Error::io) - ); + try!(self + .formatter + .write_i16(&mut self.writer, value) + .map_err(Error::io)); Ok(()) } #[inline] fn serialize_i32(self, value: i32) -> Result<()> { - try!( - self.formatter - .write_i32(&mut self.writer, value) - .map_err(Error::io) - ); + try!(self + .formatter + .write_i32(&mut self.writer, value) + .map_err(Error::io)); Ok(()) } #[inline] fn serialize_i64(self, value: i64) -> Result<()> { - try!( - self.formatter - .write_i64(&mut self.writer, value) - .map_err(Error::io) - ); + try!(self + .formatter + .write_i64(&mut self.writer, value) + .map_err(Error::io)); Ok(()) } @@ -145,41 +140,37 @@ #[inline] fn serialize_u8(self, value: u8) -> Result<()> { - try!( - self.formatter - .write_u8(&mut self.writer, value) - .map_err(Error::io) - ); + try!(self + .formatter + .write_u8(&mut self.writer, value) + .map_err(Error::io)); Ok(()) } #[inline] fn serialize_u16(self, value: u16) -> Result<()> { - try!( - self.formatter - .write_u16(&mut self.writer, value) - .map_err(Error::io) - ); + try!(self + .formatter + .write_u16(&mut self.writer, value) + .map_err(Error::io)); Ok(()) } #[inline] fn serialize_u32(self, value: u32) -> Result<()> { - try!( - self.formatter - .write_u32(&mut self.writer, value) - .map_err(Error::io) - ); + try!(self + .formatter + .write_u32(&mut self.writer, value) + .map_err(Error::io)); Ok(()) } #[inline] fn serialize_u64(self, value: u64) -> Result<()> { - try!( - self.formatter - .write_u64(&mut self.writer, value) - .map_err(Error::io) - ); + try!(self + .formatter + .write_u64(&mut self.writer, value) + .map_err(Error::io)); Ok(()) } @@ -195,18 +186,16 @@ fn serialize_f32(self, value: f32) -> Result<()> { match value.classify() { FpCategory::Nan | FpCategory::Infinite => { - try!( - self.formatter - .write_null(&mut self.writer) - .map_err(Error::io) - ); + try!(self + .formatter + .write_null(&mut self.writer) + .map_err(Error::io)); } _ => { - try!( - self.formatter - .write_f32(&mut self.writer, value) - .map_err(Error::io) - ); + try!(self + .formatter + .write_f32(&mut self.writer, value) + .map_err(Error::io)); } } Ok(()) @@ -216,18 +205,16 @@ fn serialize_f64(self, value: f64) -> Result<()> { match value.classify() { FpCategory::Nan | FpCategory::Infinite => { - try!( - self.formatter - .write_null(&mut self.writer) - .map_err(Error::io) - ); + try!(self + .formatter + .write_null(&mut self.writer) + .map_err(Error::io)); } _ => { - try!( - self.formatter - .write_f64(&mut self.writer, value) - .map_err(Error::io) - ); + try!(self + .formatter + .write_f64(&mut self.writer, value) + .map_err(Error::io)); } } Ok(()) @@ -258,11 +245,10 @@ #[inline] fn serialize_unit(self) -> Result<()> { - try!( - self.formatter - .write_null(&mut self.writer) - .map_err(Error::io) - ); + try!(self + .formatter + .write_null(&mut self.writer) + .map_err(Error::io)); Ok(()) } @@ -301,38 +287,32 @@ where T: Serialize, { - try!( - self.formatter - .begin_object(&mut self.writer) - .map_err(Error::io) - ); - try!( - self.formatter - .begin_object_key(&mut self.writer, true) - .map_err(Error::io) - ); + try!(self + .formatter + .begin_object(&mut self.writer) + .map_err(Error::io)); + try!(self + .formatter + .begin_object_key(&mut self.writer, true) + .map_err(Error::io)); try!(self.serialize_str(variant)); - try!( - self.formatter - .end_object_key(&mut self.writer) - .map_err(Error::io) - ); - try!( - self.formatter - .begin_object_value(&mut self.writer) - .map_err(Error::io) - ); + try!(self + .formatter + .end_object_key(&mut self.writer) + .map_err(Error::io)); + try!(self + .formatter + .begin_object_value(&mut self.writer) + .map_err(Error::io)); try!(value.serialize(&mut *self)); - try!( - self.formatter - .end_object_value(&mut self.writer) - .map_err(Error::io) - ); - try!( - self.formatter - .end_object(&mut self.writer) - .map_err(Error::io) - ); + try!(self + .formatter + .end_object_value(&mut self.writer) + .map_err(Error::io)); + try!(self + .formatter + .end_object(&mut self.writer) + .map_err(Error::io)); Ok(()) } @@ -352,26 +332,23 @@ #[inline] fn serialize_seq(self, len: Option<usize>) -> Result<Self::SerializeSeq> { if len == Some(0) { - try!( - self.formatter - .begin_array(&mut self.writer) - .map_err(Error::io) - ); - try!( - self.formatter - .end_array(&mut self.writer) - .map_err(Error::io) - ); + try!(self + .formatter + .begin_array(&mut self.writer) + .map_err(Error::io)); + try!(self + .formatter + .end_array(&mut self.writer) + .map_err(Error::io)); Ok(Compound::Map { ser: self, state: State::Empty, }) } else { - try!( - self.formatter - .begin_array(&mut self.writer) - .map_err(Error::io) - ); + try!(self + .formatter + .begin_array(&mut self.writer) + .map_err(Error::io)); Ok(Compound::Map { ser: self, state: State::First, @@ -401,53 +378,46 @@ variant: &'static str, len: usize, ) -> Result<Self::SerializeTupleVariant> { - try!( - self.formatter - .begin_object(&mut self.writer) - .map_err(Error::io) - ); - try!( - self.formatter - .begin_object_key(&mut self.writer, true) - .map_err(Error::io) - ); + try!(self + .formatter + .begin_object(&mut self.writer) + .map_err(Error::io)); + try!(self + .formatter + .begin_object_key(&mut self.writer, true) + .map_err(Error::io)); try!(self.serialize_str(variant)); - try!( - self.formatter - .end_object_key(&mut self.writer) - .map_err(Error::io) - ); - try!( - self.formatter - .begin_object_value(&mut self.writer) - .map_err(Error::io) - ); + try!(self + .formatter + .end_object_key(&mut self.writer) + .map_err(Error::io)); + try!(self + .formatter + .begin_object_value(&mut self.writer) + .map_err(Error::io)); self.serialize_seq(Some(len)) } #[inline] fn serialize_map(self, len: Option<usize>) -> Result<Self::SerializeMap> { if len == Some(0) { - try!( - self.formatter - .begin_object(&mut self.writer) - .map_err(Error::io) - ); - try!( - self.formatter - .end_object(&mut self.writer) - .map_err(Error::io) - ); + try!(self + .formatter + .begin_object(&mut self.writer) + .map_err(Error::io)); + try!(self + .formatter + .end_object(&mut self.writer) + .map_err(Error::io)); Ok(Compound::Map { ser: self, state: State::Empty, }) } else { - try!( - self.formatter - .begin_object(&mut self.writer) - .map_err(Error::io) - ); + try!(self + .formatter + .begin_object(&mut self.writer) + .map_err(Error::io)); Ok(Compound::Map { ser: self, state: State::First, @@ -474,27 +444,23 @@ variant: &'static str, len: usize, ) -> Result<Self::SerializeStructVariant> { - try!( - self.formatter - .begin_object(&mut self.writer) - .map_err(Error::io) - ); - try!( - self.formatter - .begin_object_key(&mut self.writer, true) - .map_err(Error::io) - ); + try!(self + .formatter + .begin_object(&mut self.writer) + .map_err(Error::io)); + try!(self + .formatter + .begin_object_key(&mut self.writer, true) + .map_err(Error::io)); try!(self.serialize_str(variant)); - try!( - self.formatter - .end_object_key(&mut self.writer) - .map_err(Error::io) - ); - try!( - self.formatter - .begin_object_value(&mut self.writer) - .map_err(Error::io) - ); + try!(self + .formatter + .end_object_key(&mut self.writer) + .map_err(Error::io)); + try!(self + .formatter + .begin_object_value(&mut self.writer) + .map_err(Error::io)); self.serialize_map(Some(len)) } @@ -527,11 +493,10 @@ } } - try!( - self.formatter - .begin_string(&mut self.writer) - .map_err(Error::io) - ); + try!(self + .formatter + .begin_string(&mut self.writer) + .map_err(Error::io)); { let mut adapter = Adapter { writer: &mut self.writer, @@ -545,11 +510,10 @@ } } } - try!( - self.formatter - .end_string(&mut self.writer) - .map_err(Error::io) - ); + try!(self + .formatter + .end_string(&mut self.writer) + .map_err(Error::io)); Ok(()) } } @@ -594,18 +558,16 @@ ref mut ser, ref mut state, } => { - try!( - ser.formatter - .begin_array_value(&mut ser.writer, *state == State::First) - .map_err(Error::io) - ); + try!(ser + .formatter + .begin_array_value(&mut ser.writer, *state == State::First) + .map_err(Error::io)); *state = State::Rest; try!(value.serialize(&mut **ser)); - try!( - ser.formatter - .end_array_value(&mut ser.writer) - .map_err(Error::io) - ); + try!(ser + .formatter + .end_array_value(&mut ser.writer) + .map_err(Error::io)); Ok(()) } #[cfg(feature = "arbitrary_precision")] @@ -701,11 +663,10 @@ State::Empty => {} _ => try!(ser.formatter.end_array(&mut ser.writer).map_err(Error::io)), } - try!( - ser.formatter - .end_object_value(&mut ser.writer) - .map_err(Error::io) - ); + try!(ser + .formatter + .end_object_value(&mut ser.writer) + .map_err(Error::io)); try!(ser.formatter.end_object(&mut ser.writer).map_err(Error::io)); Ok(()) } @@ -735,20 +696,18 @@ ref mut ser, ref mut state, } => { - try!( - ser.formatter - .begin_object_key(&mut ser.writer, *state == State::First) - .map_err(Error::io) - ); + try!(ser + .formatter + .begin_object_key(&mut ser.writer, *state == State::First) + .map_err(Error::io)); *state = State::Rest; try!(key.serialize(MapKeySerializer { ser: *ser })); - try!( - ser.formatter - .end_object_key(&mut ser.writer) - .map_err(Error::io) - ); + try!(ser + .formatter + .end_object_key(&mut ser.writer) + .map_err(Error::io)); Ok(()) } #[cfg(feature = "arbitrary_precision")] @@ -765,17 +724,15 @@ { match *self { Compound::Map { ref mut ser, .. } => { - try!( - ser.formatter - .begin_object_value(&mut ser.writer) - .map_err(Error::io) - ); + try!(ser + .formatter + .begin_object_value(&mut ser.writer) + .map_err(Error::io)); try!(value.serialize(&mut **ser)); - try!( - ser.formatter - .end_object_value(&mut ser.writer) - .map_err(Error::io) - ); + try!(ser + .formatter + .end_object_value(&mut ser.writer) + .map_err(Error::io)); Ok(()) } #[cfg(feature = "arbitrary_precision")] @@ -884,11 +841,10 @@ State::Empty => {} _ => try!(ser.formatter.end_object(&mut ser.writer).map_err(Error::io)), } - try!( - ser.formatter - .end_object_value(&mut ser.writer) - .map_err(Error::io) - ); + try!(ser + .formatter + .end_object_value(&mut ser.writer) + .map_err(Error::io)); try!(ser.formatter.end_object(&mut ser.writer).map_err(Error::io)); Ok(()) } @@ -962,90 +918,78 @@ } fn serialize_i8(self, value: i8) -> Result<()> { - try!( - self.ser - .formatter - .begin_string(&mut self.ser.writer) - .map_err(Error::io) - ); - try!( - self.ser - .formatter - .write_i8(&mut self.ser.writer, value) - .map_err(Error::io) - ); - try!( - self.ser - .formatter - .end_string(&mut self.ser.writer) - .map_err(Error::io) - ); + try!(self + .ser + .formatter + .begin_string(&mut self.ser.writer) + .map_err(Error::io)); + try!(self + .ser + .formatter + .write_i8(&mut self.ser.writer, value) + .map_err(Error::io)); + try!(self + .ser + .formatter + .end_string(&mut self.ser.writer) + .map_err(Error::io)); Ok(()) } fn serialize_i16(self, value: i16) -> Result<()> { - try!( - self.ser - .formatter - .begin_string(&mut self.ser.writer) - .map_err(Error::io) - ); - try!( - self.ser - .formatter - .write_i16(&mut self.ser.writer, value) - .map_err(Error::io) - ); - try!( - self.ser - .formatter - .end_string(&mut self.ser.writer) - .map_err(Error::io) - ); + try!(self + .ser + .formatter + .begin_string(&mut self.ser.writer) + .map_err(Error::io)); + try!(self + .ser + .formatter + .write_i16(&mut self.ser.writer, value) + .map_err(Error::io)); + try!(self + .ser + .formatter + .end_string(&mut self.ser.writer) + .map_err(Error::io)); Ok(()) } fn serialize_i32(self, value: i32) -> Result<()> { - try!( - self.ser - .formatter - .begin_string(&mut self.ser.writer) - .map_err(Error::io) - ); - try!( - self.ser - .formatter - .write_i32(&mut self.ser.writer, value) - .map_err(Error::io) - ); - try!( - self.ser - .formatter - .end_string(&mut self.ser.writer) - .map_err(Error::io) - ); + try!(self + .ser + .formatter + .begin_string(&mut self.ser.writer) + .map_err(Error::io)); + try!(self + .ser + .formatter + .write_i32(&mut self.ser.writer, value) + .map_err(Error::io)); + try!(self + .ser + .formatter + .end_string(&mut self.ser.writer) + .map_err(Error::io)); Ok(()) } fn serialize_i64(self, value: i64) -> Result<()> { - try!( - self.ser - .formatter - .begin_string(&mut self.ser.writer) - .map_err(Error::io) - ); - try!( - self.ser - .formatter - .write_i64(&mut self.ser.writer, value) - .map_err(Error::io) - ); - try!( - self.ser - .formatter - .end_string(&mut self.ser.writer) - .map_err(Error::io) - ); + try!(self + .ser + .formatter + .begin_string(&mut self.ser.writer) + .map_err(Error::io)); + try!(self + .ser + .formatter + .write_i64(&mut self.ser.writer, value) + .map_err(Error::io)); + try!(self + .ser + .formatter + .end_string(&mut self.ser.writer) + .map_err(Error::io)); Ok(()) } @@ -1059,90 +1003,78 @@ } fn serialize_u8(self, value: u8) -> Result<()> { - try!( - self.ser - .formatter - .begin_string(&mut self.ser.writer) - .map_err(Error::io) - ); - try!( - self.ser - .formatter - .write_u8(&mut self.ser.writer, value) - .map_err(Error::io) - ); - try!( - self.ser - .formatter - .end_string(&mut self.ser.writer) - .map_err(Error::io) - ); + try!(self + .ser + .formatter + .begin_string(&mut self.ser.writer) + .map_err(Error::io)); + try!(self + .ser + .formatter + .write_u8(&mut self.ser.writer, value) + .map_err(Error::io)); + try!(self + .ser + .formatter + .end_string(&mut self.ser.writer) + .map_err(Error::io)); Ok(()) } fn serialize_u16(self, value: u16) -> Result<()> { - try!( - self.ser - .formatter - .begin_string(&mut self.ser.writer) - .map_err(Error::io) - ); - try!( - self.ser - .formatter - .write_u16(&mut self.ser.writer, value) - .map_err(Error::io) - ); - try!( - self.ser - .formatter - .end_string(&mut self.ser.writer) - .map_err(Error::io) - ); + try!(self + .ser + .formatter + .begin_string(&mut self.ser.writer) + .map_err(Error::io)); + try!(self + .ser + .formatter + .write_u16(&mut self.ser.writer, value) + .map_err(Error::io)); + try!(self + .ser + .formatter + .end_string(&mut self.ser.writer) + .map_err(Error::io)); Ok(()) } fn serialize_u32(self, value: u32) -> Result<()> { - try!( - self.ser - .formatter - .begin_string(&mut self.ser.writer) - .map_err(Error::io) - ); - try!( - self.ser - .formatter - .write_u32(&mut self.ser.writer, value) - .map_err(Error::io) - ); - try!( - self.ser - .formatter - .end_string(&mut self.ser.writer) - .map_err(Error::io) - ); + try!(self + .ser + .formatter + .begin_string(&mut self.ser.writer) + .map_err(Error::io)); + try!(self + .ser + .formatter + .write_u32(&mut self.ser.writer, value) + .map_err(Error::io)); + try!(self + .ser + .formatter + .end_string(&mut self.ser.writer) + .map_err(Error::io)); Ok(()) } fn serialize_u64(self, value: u64) -> Result<()> { - try!( - self.ser - .formatter - .begin_string(&mut self.ser.writer) - .map_err(Error::io) - ); - try!( - self.ser - .formatter - .write_u64(&mut self.ser.writer, value) - .map_err(Error::io) - ); - try!( - self.ser - .formatter - .end_string(&mut self.ser.writer) - .map_err(Error::io) - ); + try!(self + .ser + .formatter + .begin_string(&mut self.ser.writer) + .map_err(Error::io)); + try!(self + .ser + .formatter + .write_u64(&mut self.ser.writer, value) + .map_err(Error::io)); + try!(self + .ser + .formatter + .end_string(&mut self.ser.writer) + .map_err(Error::io)); Ok(()) } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde_json/src/value/de.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde_json/src/value/de.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde_json/src/value/de.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde_json/src/value/de.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1253,7 +1253,7 @@ where V: Visitor<'de>, { - self.key.into_deserializer().deserialize_any(visitor) + BorrowedCowStrDeserializer::new(self.key).deserialize_any(visitor) } deserialize_integer_key!(deserialize_i8 => visit_i8); @@ -1387,3 +1387,102 @@ } } } + +struct BorrowedCowStrDeserializer<'de> { + value: Cow<'de, str>, +} + +impl<'de> BorrowedCowStrDeserializer<'de> { + fn new(value: Cow<'de, str>) -> Self { + BorrowedCowStrDeserializer { value: value } + } +} + +impl<'de> de::Deserializer<'de> for BorrowedCowStrDeserializer<'de> { + type Error = Error; + + fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error> + where + V: de::Visitor<'de>, + { + match self.value { + Cow::Borrowed(string) => visitor.visit_borrowed_str(string), + Cow::Owned(string) => visitor.visit_string(string), + } + } + + fn deserialize_enum<V>( + self, + _name: &str, + _variants: &'static [&'static str], + visitor: V, + ) -> Result<V::Value, Self::Error> + where + V: de::Visitor<'de>, + { + visitor.visit_enum(self) + } + + forward_to_deserialize_any! { + bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string + bytes byte_buf option unit unit_struct newtype_struct seq tuple + tuple_struct map struct identifier ignored_any + } +} + +impl<'de> de::EnumAccess<'de> for BorrowedCowStrDeserializer<'de> { + type Error = Error; + type Variant = UnitOnly; + + fn variant_seed<T>(self, seed: T) -> Result<(T::Value, Self::Variant), Self::Error> + where + T: de::DeserializeSeed<'de>, + { + let value = seed.deserialize(self)?; + Ok((value, UnitOnly)) + } +} + +struct UnitOnly; + +impl<'de> de::VariantAccess<'de> for UnitOnly { + type Error = Error; + + fn unit_variant(self) -> Result<(), Self::Error> { + Ok(()) + } + + fn newtype_variant_seed<T>(self, _seed: T) -> Result<T::Value, Self::Error> + where + T: de::DeserializeSeed<'de>, + { + Err(de::Error::invalid_type( + Unexpected::UnitVariant, + &"newtype variant", + )) + } + + fn tuple_variant<V>(self, _len: usize, _visitor: V) -> Result<V::Value, Self::Error> + where + V: de::Visitor<'de>, + { + Err(de::Error::invalid_type( + Unexpected::UnitVariant, + &"tuple variant", + )) + } + + fn struct_variant<V>( + self, + _fields: &'static [&'static str], + _visitor: V, + ) -> Result<V::Value, Self::Error> + where + V: de::Visitor<'de>, + { + Err(de::Error::invalid_type( + Unexpected::UnitVariant, + &"struct variant", + )) + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde_json/src/value/from.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde_json/src/value/from.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde_json/src/value/from.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde_json/src/value/from.rs 2019-01-04 19:47:55.000000000 +0000 @@ -29,6 +29,13 @@ u8 u16 u32 u64 usize } +#[cfg(feature = "arbitrary_precision")] +serde_if_integer128! { + from_integer! { + i128 u128 + } +} + impl From<f32> for Value { /// Convert 32-bit floating point number to `Value` /// @@ -219,7 +226,7 @@ /// # } /// ``` fn from(f: &'a [T]) -> Self { - Value::Array(f.into_iter().cloned().map(Into::into).collect()) + Value::Array(f.iter().cloned().map(Into::into).collect()) } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde_json/src/value/mod.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde_json/src/value/mod.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde_json/src/value/mod.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde_json/src/value/mod.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1018,6 +1018,8 @@ /// Convert a `T` into `serde_json::Value` which is an enum that can represent /// any valid JSON data. /// +/// # Example +/// /// ```rust /// extern crate serde; /// @@ -1087,13 +1089,7 @@ /// Interpret a `serde_json::Value` as an instance of type `T`. /// -/// This conversion can fail if the structure of the Value does not match the -/// structure expected by `T`, for example if `T` is a struct type but the Value -/// contains something other than a JSON map. It can also fail if the structure -/// is correct but `T`'s implementation of `Deserialize` decides that something -/// is wrong with the data, for example required struct fields are missing from -/// the JSON map or some number is too big to fit in the expected primitive -/// type. +/// # Example /// /// ```rust /// #[macro_use] @@ -1121,6 +1117,16 @@ /// println!("{:#?}", u); /// } /// ``` +/// +/// # Errors +/// +/// This conversion can fail if the structure of the Value does not match the +/// structure expected by `T`, for example if `T` is a struct type but the Value +/// contains something other than a JSON map. It can also fail if the structure +/// is correct but `T`'s implementation of `Deserialize` decides that something +/// is wrong with the data, for example required struct fields are missing from +/// the JSON map or some number is too big to fit in the expected primitive +/// type. pub fn from_value<T>(value: Value) -> Result<T, Error> where T: DeserializeOwned, diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde_json/src/value/ser.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde_json/src/value/ser.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/serde_json/src/value/ser.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/serde_json/src/value/ser.rs 2019-01-04 19:47:55.000000000 +0000 @@ -77,6 +77,13 @@ Ok(Value::Number(value.into())) } + #[cfg(feature = "arbitrary_precision")] + serde_if_integer128! { + fn serialize_i128(self, value: i128) -> Result<Value, Error> { + Ok(Value::Number(value.into())) + } + } + #[inline] fn serialize_u8(self, value: u8) -> Result<Value, Error> { self.serialize_u64(value as u64) @@ -97,6 +104,13 @@ Ok(Value::Number(value.into())) } + #[cfg(feature = "arbitrary_precision")] + serde_if_integer128! { + fn serialize_u128(self, value: u128) -> Result<Value, Error> { + Ok(Value::Number(value.into())) + } + } + #[inline] fn serialize_f32(self, value: f32) -> Result<Value, Error> { self.serialize_f64(value as f64) diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/.cargo-checksum.json 2019-01-04 19:47:55.000000000 +0000 @@ -1 +1 @@ -{"files":{".cargo_vcs_info.json":"eb9d2132cbccb7a9cbdebc511084d41f707d0d3f5b514b8fedea38a5c16aef74","Cargo.toml":"57eb9bf7bb8aa6f3fe34eaeec7e72d21f6543bf60e19b3d79528e87702703c95","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"f033c371492a4769d377a8bf1a139adc7bf94ea00595b867a3e234eeab994c8c","README.md":"1665556fa46bacbb28dd68e9deca7bd22ad28351ee2fd9f3691194e7c3d813fa","src/attr.rs":"37f27dacb52110c9ea6d112b6589b504a3b91df60d5d2930422ce25364628e07","src/buffer.rs":"a82b47bb12ec0de4159a7677712db5f4f54c145eb61aa88a1696d32cf143d50e","src/data.rs":"c34df5d623fed7a52be01fc625a4502f6ad97dc8feb25c51f7d57029dbdd91dd","src/derive.rs":"7a2246e8ee03fcbea040363d0b943daac696667ba799218231307c1b7a96aeed","src/error.rs":"93a265306ee6d265feeccb65b64e429ec6b4bb29d825cb52a319ea86e5cc1c11","src/export.rs":"1f7e017dac9426e91c796445e733c390c408c808ba9c21cb7df7799b67352fde","src/expr.rs":"fa82c55b705d34f7a9e770e5bde16540c7183305817473ac49485146ee85ab4b","src/ext.rs":"4902ffc7dc25a1bb5813d5292a3df7cbf72ebad79def578c7cd231cf67e1785c","src/file.rs":"ebd350b5ff548cdbb21a0fadd5572575a216a1b0caef36dd46477ca324c7af6f","src/gen/fold.rs":"bfca5243b4694cc6a9b0d1f34ca53fa90387325fd4ee6bce024adb3ca42f4472","src/gen/visit.rs":"4d13b239db7c38a38f8ce5dfe827317ec4d35df83dd65ad5a350a3c882632bfd","src/gen/visit_mut.rs":"f5c8aea5907084c2425cdb613a07def41735c764022f7549876c9fa4c7170d5a","src/gen_helper.rs":"d128fbd24fadfc5634976bdb9188c649f9905718c9c987a2839c3e6134b155a2","src/generics.rs":"929eaacd293b86389d4b05e03bc1a1cd093ae3925c8d316da4a0c57c8e4f6252","src/group.rs":"7faa0b3701b6e597a5766e316733cd4d88ecc2a24b54b233f33e28c23a7cbad8","src/ident.rs":"61534c48949ebfa03e948874ef64174e1c8111c3b953edd58f79748fe9e00507","src/item.rs":"51280ebf58bb20f62f73d50d1ca10aad123cbe1dafecaa26c4d3915dbd593bee","src/keyword.rs":"0a8fd45d065c56532065f97fb097136b6f1a8efc393a0946e6a95217877616a9","src/lib.rs":"2dfb066fdc16861298173c68edac2280e68dbace7579b531d7cd136d9164ae03","src/lifetime.rs":"3174a81cea3eef0ec1555900b96b1641d6d3ed3609bc17d72b02a1495377ac35","src/lit.rs":"840982f36d37c0fb5c37607059b6a50dd5aa7f423fd8f27221c13c5bf42bc74b","src/lookahead.rs":"04b13c2c34a49344fdf29f712eacac4364ff859a091640f5bf803907320e4fa5","src/mac.rs":"8a7efbdc9498612844c88660312117c401685bf300da7e91bef7effde3026019","src/macros.rs":"518e7943bc5565b9beea75df6a3602c698ee9cb096baf79a36b34f753b97615f","src/op.rs":"83bbe2199946abbf1d4a0bc6eb0d97285439f77e8e02646b8e3b707485e4301e","src/parse.rs":"b58271a3e202c3885d263c75fbfafaaa9270f33712d5dac0f9482b813aceb8a3","src/parse_macro_input.rs":"6c67382816fba92bc6931ebf360fe251460db35c414cc4f8b89d8591978273fd","src/parse_quote.rs":"afbaa9c2af3d20990847add9436111db0e62550261ec1004d970825a31c569ac","src/path.rs":"e666c702d46e2849cdc37fddc2e1950659cd17611ebf988102f2bf0af72b6bd1","src/print.rs":"7ebb68123898f2ebbae12abf028747c05bea7b08f1e96b17164f1dcebdab7355","src/punctuated.rs":"01539dcb51c75e0fe0a4cdfb7716a909ce1bfd0767370c04043159a0a0dec154","src/span.rs":"748c51c6feb223c26d3b1701f5bb98aee823666c775c98106cfa24fe29d8cec1","src/spanned.rs":"c5350463b3ab69cd49ef7afa2688ba3f5e24fc02ef26bf9587afaf3dc60415dd","src/synom.rs":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","src/token.rs":"4280a695bfe5da590bba79b2d2a81d9094d739df6dd7e8f80b908878b9a93484","src/tt.rs":"1272339be3d2ba64c025cba8d08cff7bb7b61770fc6e5da641db4d56c162e066","src/ty.rs":"baf7464aa3b5b0be061c808605352346086a6507a6e84ee9970a5bcb0d02114e"},"package":"90c39a061e2f412a9f869540471ab679e85e50c6b05604daf28bc3060f75c430"} \ No newline at end of file +{"files":{".cargo_vcs_info.json":"da5a33d2cbed994d8728fcf3967a0cef328d3454ca57297277337efdcbb613ec","Cargo.toml":"893edae8243ac9840df99b2931b772c942c0d3448688b3363408e5c24d858368","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"2aea43e1219e72c10347981dc5fb4969b1ec711fb6fb97771d80e0644dc3d334","src/attr.rs":"38e23326a184b1c27564b8797d0d17caafb5b662c9e59d8f11c17666742c3deb","src/buffer.rs":"f233cfe4df3d4298c374258fe4f31bb7dc647f4aca896cbb85984c0b34a6bc64","src/data.rs":"54ee54c3c650bc5e200d4bea947d6e89093a39f2444cd43e8861f5852975e0bc","src/derive.rs":"eb041b47a73bace73c2872cd9a8e190de7e2b3b57cd57213770f088ec19ab3c6","src/error.rs":"36fd3601e024256c5d306f68a1418953be341525ff3355c4951c6a11ce3073af","src/export.rs":"1f7e017dac9426e91c796445e733c390c408c808ba9c21cb7df7799b67352fde","src/expr.rs":"9f007525717955c20260bc803711c5f63ddedf1156279e042baf910bb3a17eba","src/ext.rs":"d86df834f299e16a8e6afbfe62588ecfd18144ad010ba6b579c44e0dc3fb6415","src/file.rs":"a31fee6f3ee5af0fb197ff428aaf91c75aef654e90e8b055417295ad84d1057f","src/gen/fold.rs":"7f7ab907e3c17b503a72707e2f8d9fc29d9139269d810ea9b6511af9de7d3080","src/gen/visit.rs":"0a4543ac9f82d8ab7ccf02c55e8325ff9b859e36ea08d3e187a4836f470eef1c","src/gen/visit_mut.rs":"66441522f544056cd464740e8ba614688a5f417857c649550eeba2b589ef6096","src/gen_helper.rs":"644b1d31987919c0239891d8f90c09f3bf541a71fb85e744438e4814cc6dff89","src/generics.rs":"413b76eddbf76690d1905b383be8369aa8d3137330658d3dd6ab04063a67cb12","src/group.rs":"e1b4336e9cd8f01c139bdb9cd4b3445f37c84f4e2cc64c6503e520eaea8dc937","src/ident.rs":"61534c48949ebfa03e948874ef64174e1c8111c3b953edd58f79748fe9e00507","src/item.rs":"6799adb332bedaa68c3801055e71a5665cc7b9c4ba53960f6b91487408e7e10c","src/keyword.rs":"7fbb01d0aa94a41a5bb1f23e61af1ba0de828d62df4f9356fc012dc7ecced077","src/lib.rs":"544aef42a66b4f26df530cf220562706a3ce5acc6a61d88282aa0bfb5952f2bf","src/lifetime.rs":"9016d4a395abac9f5343e348ddd7f0f4c2c43c9b1be5fd1af85da55f10c75887","src/lit.rs":"5705560b9d59c96147e520f97734a4c368fda5950f6059ee567eda26fa0e6537","src/lookahead.rs":"386fea0113a3fbfcad77183e9c3329a784b81832a3781a482c647fc1e84df059","src/mac.rs":"a91623ed9c1de7b18ef752db79a242002e95156497a52a1790a75069915d22ee","src/macros.rs":"2f91e07a1aec4b385986c0a0f66274e8de1c1aa81f95d398a5cd364b3c451bb4","src/op.rs":"01edb1e07b6d60b266797ca4b30788b0a511452228e04073a11f0b61f106a0e7","src/parse.rs":"4e88a0c943a18edafcd7553e70e696f6dd83db23f7415c47fc938157c9fed8ec","src/parse_macro_input.rs":"b47282bc85d7da7941f6abecbe09f7bf0bb908b66dde793b00b5df7e97c2c7ed","src/parse_quote.rs":"afbaa9c2af3d20990847add9436111db0e62550261ec1004d970825a31c569ac","src/path.rs":"f05b9e2fbb2f1dbe98c5cca7e2a395bbfda8eaded30d9a8f113e445939adcaab","src/print.rs":"7ebb68123898f2ebbae12abf028747c05bea7b08f1e96b17164f1dcebdab7355","src/punctuated.rs":"5ad6885e602cb1c79b49f11e1c739bdb7c33ecfa1ca9c709d711b0778ae48085","src/span.rs":"748c51c6feb223c26d3b1701f5bb98aee823666c775c98106cfa24fe29d8cec1","src/spanned.rs":"9bc7ee3d5a1f11ea810e474a390ace5c861920c0fa5fbeddc1874af377bc8830","src/synom.rs":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","src/thread.rs":"798dd0a6cca7807f1d55c1f79cec967314a75c4e8e2cfdb5644499c22618b307","src/token.rs":"0a5039e3e8a866a45316013ef1eaa6c94f3addf9e7e3489d48cd589b544e7890","src/tt.rs":"b3d99cbd68cd50749f26f4afa138e6366d327099ed566b30c315ccb58fa26ded","src/ty.rs":"4ac9d1b84f9bf269516348e1b923b1c8e3f7562b98ec7ef66174c31fffb8dce5"},"package":"9545a6a093a3f0bd59adb472700acc08cad3776f860f16a897dfce8c88721cbc"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/Cargo.toml 2019-01-04 19:47:55.000000000 +0000 @@ -12,7 +12,7 @@ [package] name = "syn" -version = "0.15.18" +version = "0.15.23" authors = ["David Tolnay <dtolnay@gmail.com>"] include = ["/Cargo.toml", "/src/**/*.rs", "/README.md", "/LICENSE-APACHE", "/LICENSE-MIT"] description = "Parser for Rust source code" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/.cargo_vcs_info.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/.cargo_vcs_info.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/.cargo_vcs_info.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/.cargo_vcs_info.json 2019-01-04 19:47:55.000000000 +0000 @@ -1,5 +1,5 @@ { "git": { - "sha1": "ec0af592a1bedd10ca118d3c985ded9ccfefe790" + "sha1": "ab3ff960ef764cfb6985b48b400729022e0e24d4" } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/LICENSE-MIT distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/LICENSE-MIT --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/LICENSE-MIT 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/LICENSE-MIT 2019-01-04 19:47:55.000000000 +0000 @@ -1,5 +1,3 @@ -Copyright (c) 2018 Syn Developers - 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 diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/README.md distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/README.md --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/README.md 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/README.md 2019-01-04 19:47:55.000000000 +0000 @@ -241,6 +241,8 @@ The proc-macro2 crate will automatically detect and use the compiler's data structures on sufficiently new compilers. +[proc-macro2]: https://github.com/alexcrichton/proc-macro2 + ## License Licensed under either of diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/attr.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/attr.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/attr.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/attr.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2018 Syn Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - use super::*; use punctuated::Punctuated; @@ -57,11 +49,11 @@ /// path tts path tts /// ``` /// - /// Use the [`interpret_meta`] method to try parsing the tokens of an - /// attribute into the structured representation that is used by convention - /// across most Rust libraries. + /// Use the [`parse_meta`] method to try parsing the tokens of an attribute + /// into the structured representation that is used by convention across + /// most Rust libraries. /// - /// [`interpret_meta`]: #method.interpret_meta + /// [`parse_meta`]: #method.parse_meta /// /// # Parsing /// @@ -81,8 +73,8 @@ /// #[macro_use] /// extern crate syn; /// - /// use syn::{Attribute, Ident}; - /// use syn::parse::{Parse, ParseStream, Result}; + /// use syn::{Attribute, Ident, Result}; + /// use syn::parse::{Parse, ParseStream}; /// /// // Parses a unit struct with attributes. /// // @@ -533,6 +525,7 @@ type Ret = iter::Filter<T::IntoIter, fn(&&Attribute) -> bool>; fn outer(self) -> Self::Ret { + #[cfg_attr(feature = "cargo-clippy", allow(trivially_copy_pass_by_ref))] fn is_outer(attr: &&Attribute) -> bool { match attr.style { AttrStyle::Outer => true, @@ -543,6 +536,7 @@ } fn inner(self) -> Self::Ret { + #[cfg_attr(feature = "cargo-clippy", allow(trivially_copy_pass_by_ref))] fn is_inner(attr: &&Attribute) -> bool { match attr.style { AttrStyle::Inner(_) => true, diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/buffer.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/buffer.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/buffer.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/buffer.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2018 Syn Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - //! A stably addressed token buffer supporting efficient traversal based on a //! cheaply copyable cursor. //! diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/data.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/data.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/data.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/data.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2018 Syn Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - use super::*; use punctuated::Punctuated; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/derive.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/derive.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/derive.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/derive.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2018 Syn Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - use super::*; use punctuated::Punctuated; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/error.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/error.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/error.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/error.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2018 Syn Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - use std; use std::fmt::{self, Display}; use std::iter::FromIterator; @@ -13,8 +5,12 @@ use proc_macro2::{ Delimiter, Group, Ident, LexError, Literal, Punct, Spacing, Span, TokenStream, TokenTree, }; +#[cfg(feature = "printing")] +use quote::ToTokens; +#[cfg(feature = "parsing")] use buffer::Cursor; +use thread::ThreadBound; /// The result of a Syn parser. pub type Result<T> = std::result::Result<T, Error>; @@ -26,12 +22,23 @@ /// [module documentation]: index.html /// /// *This type is available if Syn is built with the `"parsing"` feature.* -#[derive(Debug, Clone)] +#[derive(Debug)] pub struct Error { - span: Span, + // Span is implemented as an index into a thread-local interner to keep the + // size small. It is not safe to access from a different thread. We want + // errors to be Send and Sync to play nicely with the Failure crate, so pin + // the span we're given to its original thread and assume it is + // Span::call_site if accessed from any other thread. + start_span: ThreadBound<Span>, + end_span: ThreadBound<Span>, message: String, } +#[cfg(test)] +struct _Test +where + Error: Send + Sync; + impl Error { /// Usually the [`ParseStream::error`] method will be used instead, which /// automatically uses the correct span from the current position of the @@ -48,8 +55,8 @@ /// #[macro_use] /// extern crate syn; /// - /// use syn::{Ident, LitStr}; - /// use syn::parse::{Error, ParseStream, Result}; + /// use syn::{Error, Ident, LitStr, Result}; + /// use syn::parse::ParseStream; /// /// // Parses input that looks like `name = "string"` where the key must be /// // the identifier `name` and the value may be any string literal. @@ -70,13 +77,60 @@ /// ``` pub fn new<T: Display>(span: Span, message: T) -> Self { Error { - span: span, + start_span: ThreadBound::new(span), + end_span: ThreadBound::new(span), message: message.to_string(), } } + /// Creates an error with the specified message spanning the given syntax + /// tree node. + /// + /// Unlike the `Error::new` constructor, this constructor takes an argument + /// `tokens` which is a syntax tree node. This allows the resulting `Error` + /// to attempt to span all tokens inside of `tokens`. While you would + /// typically be able to use the `Spanned` trait with the above `Error::new` + /// constructor, implementation limitations today mean that + /// `Error::new_spanned` may provide a higher-quality error message on + /// stable Rust. + /// + /// When in doubt it's recommended to stick to `Error::new` (or + /// `ParseStream::error`)! + #[cfg(feature = "printing")] + pub fn new_spanned<T: ToTokens, U: Display>(tokens: T, message: U) -> Self { + let mut iter = tokens.into_token_stream().into_iter(); + let start = iter.next().map_or_else(Span::call_site, |t| t.span()); + let end = iter.last().map_or(start, |t| t.span()); + Error { + start_span: ThreadBound::new(start), + end_span: ThreadBound::new(end), + message: message.to_string(), + } + } + + /// The source location of the error. + /// + /// Spans are not thread-safe so this function returns `Span::call_site()` + /// if called from a different thread than the one on which the `Error` was + /// originally created. pub fn span(&self) -> Span { - self.span + let start = match self.start_span.get() { + Some(span) => *span, + None => return Span::call_site(), + }; + + #[cfg(procmacro2_semver_exempt)] + { + let end = match self.end_span.get() { + Some(span) => *span, + None => return Span::call_site(), + }; + start.join(end).unwrap_or(start) + } + #[cfg(not(procmacro2_semver_exempt))] + { + start + } } /// Render the error as an invocation of [`compile_error!`]. @@ -87,29 +141,37 @@ /// [`compile_error!`]: https://doc.rust-lang.org/std/macro.compile_error.html /// [`parse_macro_input!`]: ../macro.parse_macro_input.html pub fn to_compile_error(&self) -> TokenStream { + let start = self + .start_span + .get() + .cloned() + .unwrap_or_else(Span::call_site); + let end = self.end_span.get().cloned().unwrap_or_else(Span::call_site); + // compile_error!($message) TokenStream::from_iter(vec![ - TokenTree::Ident(Ident::new("compile_error", self.span)), + TokenTree::Ident(Ident::new("compile_error", start)), TokenTree::Punct({ let mut punct = Punct::new('!', Spacing::Alone); - punct.set_span(self.span); + punct.set_span(start); punct }), TokenTree::Group({ let mut group = Group::new(Delimiter::Brace, { TokenStream::from_iter(vec![TokenTree::Literal({ let mut string = Literal::string(&self.message); - string.set_span(self.span); + string.set_span(end); string })]) }); - group.set_span(self.span); + group.set_span(end); group }), ]) } } +#[cfg(feature = "parsing")] pub fn new_at<T: Display>(scope: Span, cursor: Cursor, message: T) -> Error { if cursor.eof() { Error::new(scope, format!("unexpected end of input, {}", message)) @@ -124,6 +186,22 @@ } } +impl Clone for Error { + fn clone(&self) -> Self { + let start = self + .start_span + .get() + .cloned() + .unwrap_or_else(Span::call_site); + let end = self.end_span.get().cloned().unwrap_or_else(Span::call_site); + Error { + start_span: ThreadBound::new(start), + end_span: ThreadBound::new(end), + message: self.message.clone(), + } + } +} + impl std::error::Error for Error { fn description(&self) -> &str { "parse error" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/expr.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/expr.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/expr.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/expr.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2018 Syn Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - use super::*; use proc_macro2::{Span, TokenStream}; use punctuated::Punctuated; @@ -768,9 +760,6 @@ /// This type is a [syntax tree enum]. /// /// [syntax tree enum]: enum.Expr.html#syntax-tree-enums - // Clippy false positive - // https://github.com/Manishearth/rust-clippy/issues/1241 - #[cfg_attr(feature = "cargo-clippy", allow(enum_variant_names))] pub enum Pat { /// A pattern that matches any value: `_`. /// @@ -2306,8 +2295,8 @@ /// #[macro_use] /// extern crate syn; /// - /// use syn::{token, Attribute, Block, Ident, Stmt}; - /// use syn::parse::{Parse, ParseStream, Result}; + /// use syn::{token, Attribute, Block, Ident, Result, Stmt}; + /// use syn::parse::{Parse, ParseStream}; /// /// // Parse a function with no generics or parameter list. /// // diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/ext.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/ext.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/ext.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/ext.rs 2019-01-04 19:47:55.000000000 +0000 @@ -21,9 +21,9 @@ /// #[macro_use] /// extern crate syn; /// - /// use syn::Ident; + /// use syn::{Error, Ident, Result}; /// use syn::ext::IdentExt; - /// use syn::parse::{Error, ParseStream, Result}; + /// use syn::parse::ParseStream; /// /// // Parses input that looks like `name = NAME` where `NAME` can be /// // any identifier. diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/file.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/file.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/file.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/file.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2018 Syn Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - use super::*; ast_struct! { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/gen/fold.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/gen/fold.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/gen/fold.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/gen/fold.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,7 +1,6 @@ // THIS FILE IS AUTOMATICALLY GENERATED; DO NOT EDIT #![allow(unreachable_code)] -#![cfg_attr(feature = "cargo-clippy", allow(needless_pass_by_value))] #[cfg(any(feature = "full", feature = "derive"))] use gen::helper::fold::*; use proc_macro2::Span; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/gen/visit_mut.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/gen/visit_mut.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/gen/visit_mut.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/gen/visit_mut.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,6 +1,5 @@ // THIS FILE IS AUTOMATICALLY GENERATED; DO NOT EDIT -#![cfg_attr(feature = "cargo-clippy", allow(match_same_arms))] #[cfg(any(feature = "full", feature = "derive"))] use gen::helper::visit_mut::*; use proc_macro2::Span; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/gen/visit.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/gen/visit.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/gen/visit.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/gen/visit.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,6 +1,6 @@ // THIS FILE IS AUTOMATICALLY GENERATED; DO NOT EDIT -#![cfg_attr(feature = "cargo-clippy", allow(match_same_arms))] +#![cfg_attr(feature = "cargo-clippy", allow(trivially_copy_pass_by_ref))] #[cfg(any(feature = "full", feature = "derive"))] use gen::helper::visit::*; use proc_macro2::Span; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/generics.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/generics.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/generics.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/generics.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2018 Syn Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - use super::*; use punctuated::{Iter, IterMut, Punctuated}; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/gen_helper.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/gen_helper.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/gen_helper.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/gen_helper.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2018 Syn Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - #[cfg(feature = "fold")] pub mod fold { use fold::Fold; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/group.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/group.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/group.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/group.rs 2019-01-04 19:47:55.000000000 +0000 @@ -101,8 +101,8 @@ /// #[macro_use] /// extern crate syn; /// -/// use syn::{token, Ident, Type}; -/// use syn::parse::{Parse, ParseStream, Result}; +/// use syn::{token, Ident, Result, Type}; +/// use syn::parse::{Parse, ParseStream}; /// use syn::punctuated::Punctuated; /// /// // Parse a simplified tuple struct syntax like: @@ -161,8 +161,8 @@ /// # /// #[macro_use] /// extern crate syn; -/// use syn::{token, Ident, Type}; -/// use syn::parse::{Parse, ParseStream, Result}; +/// use syn::{token, Ident, Result, Type}; +/// use syn::parse::{Parse, ParseStream}; /// use syn::punctuated::Punctuated; /// /// // Parse a simplified struct syntax like: @@ -246,8 +246,8 @@ /// extern crate proc_macro2; /// /// use proc_macro2::TokenStream; -/// use syn::token; -/// use syn::parse::{Parse, ParseStream, Result}; +/// use syn::{token, Result}; +/// use syn::parse::{Parse, ParseStream}; /// /// // Parse an outer attribute like: /// // diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/item.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/item.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/item.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/item.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2018 Syn Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - use super::*; use derive::{Data, DeriveInput}; use proc_macro2::TokenStream; @@ -770,6 +762,8 @@ use ext::IdentExt; use parse::{Parse, ParseStream, Result}; + use proc_macro2::{Punct, Spacing, TokenTree}; + use std::iter::FromIterator; impl Parse for Item { fn parse(input: ParseStream) -> Result<Self> { @@ -849,9 +843,9 @@ input.parse().map(Item::Enum) } else if lookahead.peek(Token![union]) && ahead.peek2(Ident) { input.parse().map(Item::Union) - } else if lookahead.peek(Token![trait]) - || lookahead.peek(Token![auto]) && ahead.peek2(Token![trait]) - { + } else if lookahead.peek(Token![trait]) { + input.call(parse_trait_or_trait_alias) + } else if lookahead.peek(Token![auto]) && ahead.peek2(Token![trait]) { input.parse().map(Item::Trait) } else if lookahead.peek(Token![impl ]) || lookahead.peek(Token![default]) && !ahead.peek2(Token![!]) @@ -903,17 +897,54 @@ // TODO: figure out the actual grammar; is body required to be braced? impl Parse for ItemMacro2 { fn parse(input: ParseStream) -> Result<Self> { + let attrs = input.call(Attribute::parse_outer)?; + let vis: Visibility = input.parse()?; + let macro_token: Token![macro] = input.parse()?; + let ident: Ident = input.parse()?; + + let paren_token; let args; + let brace_token; let body; + let lookahead = input.lookahead1(); + if lookahead.peek(token::Paren) { + let paren_content; + paren_token = parenthesized!(paren_content in input); + args = paren_content.parse()?; + + let brace_content; + brace_token = braced!(brace_content in input); + body = brace_content.parse()?; + } else if lookahead.peek(token::Brace) { + // Hack: the ItemMacro2 syntax tree will need to change so that + // we can store None for the args. + // + // https://github.com/dtolnay/syn/issues/548 + // + // For now, store some sentinel tokens that are otherwise + // illegal. + paren_token = token::Paren::default(); + args = TokenStream::from_iter(vec![ + TokenTree::Punct(Punct::new('$', Spacing::Alone)), + TokenTree::Punct(Punct::new('$', Spacing::Alone)), + ]); + + let brace_content; + brace_token = braced!(brace_content in input); + body = brace_content.parse()?; + } else { + return Err(lookahead.error()); + } + Ok(ItemMacro2 { - attrs: input.call(Attribute::parse_outer)?, - vis: input.parse()?, - macro_token: input.parse()?, - ident: input.parse()?, - paren_token: parenthesized!(args in input), - args: args.parse()?, - brace_token: braced!(body in input), - body: body.parse()?, + attrs: attrs, + vis: vis, + macro_token: macro_token, + ident: ident, + paren_token: paren_token, + args: args, + brace_token: brace_token, + body: body, }) } } @@ -925,7 +956,13 @@ vis: input.parse()?, extern_token: input.parse()?, crate_token: input.parse()?, - ident: input.parse()?, + ident: { + if input.peek(Token![self]) { + input.call(Ident::parse_any)? + } else { + input.parse()? + } + }, rename: { if input.peek(Token![as]) { let as_token: Token![as] = input.parse()?; @@ -1445,6 +1482,34 @@ } } + fn parse_trait_or_trait_alias(input: ParseStream) -> Result<Item> { + let (attrs, vis, trait_token, ident, generics) = parse_start_of_trait_alias(input)?; + let lookahead = input.lookahead1(); + if lookahead.peek(token::Brace) + || lookahead.peek(Token![:]) + || lookahead.peek(Token![where]) + { + let unsafety = None; + let auto_token = None; + parse_rest_of_trait( + input, + attrs, + vis, + unsafety, + auto_token, + trait_token, + ident, + generics, + ) + .map(Item::Trait) + } else if lookahead.peek(Token![=]) { + parse_rest_of_trait_alias(input, attrs, vis, trait_token, ident, generics) + .map(Item::TraitAlias) + } else { + Err(lookahead.error()) + } + } + impl Parse for ItemTrait { fn parse(input: ParseStream) -> Result<Self> { let attrs = input.call(Attribute::parse_outer)?; @@ -1453,85 +1518,125 @@ let auto_token: Option<Token![auto]> = input.parse()?; let trait_token: Token![trait] = input.parse()?; let ident: Ident = input.parse()?; - let mut generics: Generics = input.parse()?; - let colon_token: Option<Token![:]> = input.parse()?; - - let mut supertraits = Punctuated::new(); - if colon_token.is_some() { - loop { - supertraits.push_value(input.parse()?); - if input.peek(Token![where]) || input.peek(token::Brace) { - break; - } - supertraits.push_punct(input.parse()?); - if input.peek(Token![where]) || input.peek(token::Brace) { - break; - } - } - } - - generics.where_clause = input.parse()?; - - let content; - let brace_token = braced!(content in input); - let mut items = Vec::new(); - while !content.is_empty() { - items.push(content.parse()?); - } - - Ok(ItemTrait { - attrs: attrs, - vis: vis, - unsafety: unsafety, - auto_token: auto_token, - trait_token: trait_token, - ident: ident, - generics: generics, - colon_token: colon_token, - supertraits: supertraits, - brace_token: brace_token, - items: items, - }) + let generics: Generics = input.parse()?; + parse_rest_of_trait( + input, + attrs, + vis, + unsafety, + auto_token, + trait_token, + ident, + generics, + ) } } - impl Parse for ItemTraitAlias { - fn parse(input: ParseStream) -> Result<Self> { - let attrs = input.call(Attribute::parse_outer)?; - let vis: Visibility = input.parse()?; - let trait_token: Token![trait] = input.parse()?; - let ident: Ident = input.parse()?; - let mut generics: Generics = input.parse()?; - let eq_token: Token![=] = input.parse()?; + fn parse_rest_of_trait( + input: ParseStream, + attrs: Vec<Attribute>, + vis: Visibility, + unsafety: Option<Token![unsafe]>, + auto_token: Option<Token![auto]>, + trait_token: Token![trait], + ident: Ident, + mut generics: Generics, + ) -> Result<ItemTrait> { + let colon_token: Option<Token![:]> = input.parse()?; - let mut bounds = Punctuated::new(); + let mut supertraits = Punctuated::new(); + if colon_token.is_some() { loop { - if input.peek(Token![where]) || input.peek(Token![;]) { + supertraits.push_value(input.parse()?); + if input.peek(Token![where]) || input.peek(token::Brace) { break; } - bounds.push_value(input.parse()?); - if input.peek(Token![where]) || input.peek(Token![;]) { + supertraits.push_punct(input.parse()?); + if input.peek(Token![where]) || input.peek(token::Brace) { break; } - bounds.push_punct(input.parse()?); } + } - generics.where_clause = input.parse()?; - let semi_token: Token![;] = input.parse()?; + generics.where_clause = input.parse()?; - Ok(ItemTraitAlias { - attrs: attrs, - vis: vis, - trait_token: trait_token, - ident: ident, - generics: generics, - eq_token: eq_token, - bounds: bounds, - semi_token: semi_token, - }) + let content; + let brace_token = braced!(content in input); + let mut items = Vec::new(); + while !content.is_empty() { + items.push(content.parse()?); + } + + Ok(ItemTrait { + attrs: attrs, + vis: vis, + unsafety: unsafety, + auto_token: auto_token, + trait_token: trait_token, + ident: ident, + generics: generics, + colon_token: colon_token, + supertraits: supertraits, + brace_token: brace_token, + items: items, + }) + } + + impl Parse for ItemTraitAlias { + fn parse(input: ParseStream) -> Result<Self> { + let (attrs, vis, trait_token, ident, generics) = parse_start_of_trait_alias(input)?; + parse_rest_of_trait_alias(input, attrs, vis, trait_token, ident, generics) } } + fn parse_start_of_trait_alias( + input: ParseStream, + ) -> Result<(Vec<Attribute>, Visibility, Token![trait], Ident, Generics)> { + let attrs = input.call(Attribute::parse_outer)?; + let vis: Visibility = input.parse()?; + let trait_token: Token![trait] = input.parse()?; + let ident: Ident = input.parse()?; + let generics: Generics = input.parse()?; + Ok((attrs, vis, trait_token, ident, generics)) + } + + fn parse_rest_of_trait_alias( + input: ParseStream, + attrs: Vec<Attribute>, + vis: Visibility, + trait_token: Token![trait], + ident: Ident, + mut generics: Generics, + ) -> Result<ItemTraitAlias> { + let eq_token: Token![=] = input.parse()?; + + let mut bounds = Punctuated::new(); + loop { + if input.peek(Token![where]) || input.peek(Token![;]) { + break; + } + bounds.push_value(input.parse()?); + if input.peek(Token![where]) || input.peek(Token![;]) { + break; + } + bounds.push_punct(input.parse()?); + } + + generics.where_clause = input.parse()?; + let semi_token: Token![;] = input.parse()?; + + Ok(ItemTraitAlias { + attrs: attrs, + vis: vis, + trait_token: trait_token, + ident: ident, + generics: generics, + eq_token: eq_token, + bounds: bounds, + semi_token: semi_token, + }) + } + impl Parse for TraitItem { fn parse(input: ParseStream) -> Result<Self> { let ahead = input.fork(); @@ -2251,9 +2356,14 @@ self.vis.to_tokens(tokens); self.macro_token.to_tokens(tokens); self.ident.to_tokens(tokens); - self.paren_token.surround(tokens, |tokens| { - self.args.to_tokens(tokens); - }); + + // Hack: see comment in impl Parse for ItemMacro2. + if self.args.to_string() != "$ $" { + self.paren_token.surround(tokens, |tokens| { + self.args.to_tokens(tokens); + }); + } + self.brace_token.surround(tokens, |tokens| { self.body.to_tokens(tokens); }); diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/keyword.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/keyword.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/keyword.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/keyword.rs 2019-01-04 19:47:55.000000000 +0000 @@ -52,8 +52,8 @@ /// #[macro_use] /// extern crate syn; /// -/// use syn::{LitBool, LitStr}; -/// use syn::parse::{Parse, ParseStream, Result}; +/// use syn::{LitBool, LitStr, Result}; +/// use syn::parse::{Parse, ParseStream}; /// /// mod kw { /// custom_keyword!(bool); diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/lib.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/lib.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/lib.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/lib.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2018 Syn Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - //! Syn is a parsing library for parsing a stream of Rust tokens into a syntax //! tree of Rust source code. //! @@ -236,7 +228,7 @@ //! dynamic library libproc_macro from rustc toolchain. // Syn types in rustdoc of other crates get linked to here. -#![doc(html_root_url = "https://docs.rs/syn/0.15.18")] +#![doc(html_root_url = "https://docs.rs/syn/0.15.23")] #![cfg_attr(feature = "cargo-clippy", allow(renamed_and_removed_lints))] #![cfg_attr(feature = "cargo-clippy", deny(clippy, clippy_pedantic))] // Ignored clippy lints. @@ -246,15 +238,14 @@ block_in_if_condition_stmt, const_static_lifetime, cyclomatic_complexity, + deprecated_cfg_attr, doc_markdown, eval_order_dependence, large_enum_variant, - match_bool, - never_loop, - redundant_closure, needless_pass_by_value, + never_loop, redundant_field_names, - trivially_copy_pass_by_ref + too_many_arguments, ) )] // Ignored clippy_pedantic lints. @@ -265,7 +256,6 @@ cast_possible_wrap, empty_enum, if_not_else, - indexing_slicing, items_after_statements, shadow_unrelated, similar_names, @@ -273,11 +263,9 @@ stutter, unseparated_literal_suffix, use_self, - used_underscore_binding + used_underscore_binding, ) )] -// False positive: https://github.com/rust-lang-nursery/rust-clippy/issues/3274 -#![cfg_attr(feature = "cargo-clippy", allow(map_clone))] #[cfg(all( not(all(target_arch = "wasm32", target_os = "unknown")), @@ -569,6 +557,8 @@ #[cfg(all(any(feature = "full", feature = "derive"), feature = "printing"))] mod print; +mod thread; + //////////////////////////////////////////////////////////////////////////////// #[cfg(any(feature = "parsing", feature = "full", feature = "derive"))] @@ -577,10 +567,8 @@ //////////////////////////////////////////////////////////////////////////////// -#[cfg(feature = "parsing")] mod error; -#[cfg(feature = "parsing")] -use error::Error; +pub use error::{Error, Result}; /// Parse tokens of source code into the chosen syntax tree node. /// @@ -633,7 +621,7 @@ feature = "parsing", feature = "proc-macro" ))] -pub fn parse<T: parse::Parse>(tokens: proc_macro::TokenStream) -> Result<T, Error> { +pub fn parse<T: parse::Parse>(tokens: proc_macro::TokenStream) -> Result<T> { parse::Parser::parse(T::parse, tokens) } @@ -650,7 +638,7 @@ /// /// *This function is available if Syn is built with the `"parsing"` feature.* #[cfg(feature = "parsing")] -pub fn parse2<T: parse::Parse>(tokens: proc_macro2::TokenStream) -> Result<T, Error> { +pub fn parse2<T: parse::Parse>(tokens: proc_macro2::TokenStream) -> Result<T> { parse::Parser::parse2(T::parse, tokens) } @@ -668,8 +656,7 @@ /// ```rust /// # extern crate syn; /// # -/// use syn::Expr; -/// use syn::parse::Result; +/// use syn::{Expr, Result}; /// /// fn run() -> Result<()> { /// let code = "assert_eq!(u8::max_value(), 255)"; @@ -681,7 +668,7 @@ /// # fn main() { run().unwrap() } /// ``` #[cfg(feature = "parsing")] -pub fn parse_str<T: parse::Parse>(s: &str) -> Result<T, Error> { +pub fn parse_str<T: parse::Parse>(s: &str) -> Result<T> { parse::Parser::parse_str(T::parse, s) } @@ -724,7 +711,7 @@ /// # fn main() { run().unwrap() } /// ``` #[cfg(all(feature = "parsing", feature = "full"))] -pub fn parse_file(mut content: &str) -> Result<File, Error> { +pub fn parse_file(mut content: &str) -> Result<File> { // Strip the BOM if it is present const BOM: &'static str = "\u{feff}"; if content.starts_with(BOM) { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/lifetime.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/lifetime.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/lifetime.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/lifetime.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2018 Syn Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - use std::cmp::Ordering; use std::fmt::{self, Display}; use std::hash::{Hash, Hasher}; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/lit.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/lit.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/lit.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/lit.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2018 Syn Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - use proc_macro2::{Literal, Span}; use std::str; @@ -134,30 +126,21 @@ /// # extern crate syn; /// # /// use proc_macro2::Span; - /// use syn::{Attribute, Ident, Lit, Meta, MetaNameValue, Path}; - /// use syn::parse::{Error, Result}; + /// use syn::{Attribute, Error, Ident, Lit, Meta, MetaNameValue, Path, Result}; /// /// // Parses the path from an attribute that looks like: /// // /// // #[path = "a::b::c"] /// // - /// // or returns the path `Self` as a default if the attribute is not of - /// // that form. - /// fn get_path(attr: &Attribute) -> Result<Path> { - /// let default = || Path::from(Ident::new("Self", Span::call_site())); - /// - /// let meta = match attr.interpret_meta() { - /// Some(meta) => meta, - /// None => return Ok(default()), - /// }; - /// - /// if meta.name() != "path" { - /// return Ok(default()); + /// // or returns `None` if the input is some other attribute. + /// fn get_path(attr: &Attribute) -> Result<Option<Path>> { + /// if !attr.path.is_ident("path") { + /// return Ok(None); /// } /// - /// match meta { + /// match attr.parse_meta()? { /// Meta::NameValue(MetaNameValue { lit: Lit::Str(lit_str), .. }) => { - /// lit_str.parse() + /// lit_str.parse().map(Some) /// } /// _ => { /// let error_span = attr.bracket_token.span; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/lookahead.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/lookahead.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/lookahead.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/lookahead.rs 2019-01-04 19:47:55.000000000 +0000 @@ -25,8 +25,8 @@ /// #[macro_use] /// extern crate syn; /// -/// use syn::{ConstParam, Ident, Lifetime, LifetimeDef, TypeParam}; -/// use syn::parse::{Parse, ParseStream, Result}; +/// use syn::{ConstParam, Ident, Lifetime, LifetimeDef, Result, TypeParam}; +/// use syn::parse::{Parse, ParseStream}; /// /// // A generic parameter, a single one of the comma-separated elements inside /// // angle brackets in: diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/macros.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/macros.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/macros.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/macros.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2018 Syn Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - #[cfg(any(feature = "full", feature = "derive"))] macro_rules! ast_struct { ( diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/mac.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/mac.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/mac.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/mac.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2018 Syn Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - use super::*; use proc_macro2::TokenStream; #[cfg(feature = "parsing")] diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/op.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/op.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/op.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/op.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2018 Syn Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - ast_enum! { /// A binary operator: `+`, `+=`, `&`. /// diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/parse_macro_input.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/parse_macro_input.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/parse_macro_input.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/parse_macro_input.rs 2019-01-04 19:47:55.000000000 +0000 @@ -15,7 +15,8 @@ /// extern crate proc_macro; /// /// use proc_macro::TokenStream; -/// use syn::parse::{Parse, ParseStream, Result}; +/// use syn::Result; +/// use syn::parse::{Parse, ParseStream}; /// /// struct MyMacroInput { /// /* ... */ diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/parse.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/parse.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/parse.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/parse.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2018 Syn Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - //! Parsing interface for parsing a token stream into a syntax tree node. //! //! Parsing in Syn is built on parser functions that take in a [`ParseStream`] @@ -40,8 +32,8 @@ //! extern crate proc_macro; //! //! use proc_macro::TokenStream; -//! use syn::{token, Field, Ident}; -//! use syn::parse::{Parse, ParseStream, Result}; +//! use syn::{token, Field, Ident, Result}; +//! use syn::parse::{Parse, ParseStream}; //! use syn::punctuated::Punctuated; //! //! enum Item { @@ -117,7 +109,7 @@ //! ``` //! use syn::Type; //! -//! # fn run_parser() -> Result<(), syn::parse::Error> { +//! # fn run_parser() -> syn::Result<()> { //! let t: Type = syn::parse_str("std::collections::HashMap<String, Value>")?; //! # Ok(()) //! # } @@ -145,10 +137,21 @@ //! The `Parse` trait is not implemented in these cases because there is no good //! behavior to consider the default. //! -//! ```ignore +//! ```compile_fail +//! # extern crate proc_macro; +//! # extern crate syn; +//! # +//! # use syn::punctuated::Punctuated; +//! # use syn::{PathSegment, Result, Token}; +//! # +//! # fn f(tokens: proc_macro::TokenStream) -> Result<()> { +//! # //! // Can't parse `Punctuated` without knowing whether trailing punctuation //! // should be allowed in this context. //! let path: Punctuated<PathSegment, Token![::]> = syn::parse(tokens)?; +//! # +//! # Ok(()) +//! # } //! ``` //! //! In these cases the types provide a choice of parser functions rather than a @@ -168,7 +171,7 @@ //! use syn::punctuated::Punctuated; //! use syn::{Attribute, Expr, PathSegment}; //! -//! # fn run_parsers() -> Result<(), syn::parse::Error> { +//! # fn run_parsers() -> syn::Result<()> { //! # let tokens = TokenStream::new().into(); //! // Parse a nonempty sequence of path segments separated by `::` punctuation //! // with no trailing punctuation. @@ -293,7 +296,8 @@ /// # extern crate syn; /// # /// use proc_macro2::TokenTree; -/// use syn::parse::{ParseStream, Result}; +/// use syn::Result; +/// use syn::parse::ParseStream; /// /// // This function advances the stream past the next occurrence of `@`. If /// // no `@` is present in the stream, the stream position is unchanged and @@ -313,7 +317,21 @@ /// }) /// } /// # -/// # fn main() {} +/// # +/// # fn remainder_after_skipping_past_next_at( +/// # input: ParseStream, +/// # ) -> Result<proc_macro2::TokenStream> { +/// # skip_past_next_at(input)?; +/// # input.parse() +/// # } +/// # +/// # fn main() { +/// # use syn::parse::Parser; +/// # let remainder = remainder_after_skipping_past_next_at +/// # .parse_str("a @ b c") +/// # .unwrap(); +/// # assert_eq!(remainder.to_string(), "b c"); +/// # } /// ``` #[derive(Copy, Clone)] pub struct StepCursor<'c, 'a> { @@ -415,8 +433,8 @@ /// #[macro_use] /// extern crate syn; /// - /// use syn::{Attribute, Ident}; - /// use syn::parse::{Parse, ParseStream, Result}; + /// use syn::{Attribute, Ident, Result}; + /// use syn::parse::{Parse, ParseStream}; /// /// // Parses a unit struct with attributes. /// // @@ -471,8 +489,8 @@ /// #[macro_use] /// extern crate syn; /// - /// use syn::{token, Generics, Ident, TypeParamBound}; - /// use syn::parse::{Parse, ParseStream, Result}; + /// use syn::{token, Generics, Ident, Result, TypeParamBound}; + /// use syn::parse::{Parse, ParseStream}; /// use syn::punctuated::Punctuated; /// /// // Parses a trait definition containing no associated items. @@ -543,8 +561,8 @@ /// #[macro_use] /// extern crate syn; /// - /// use syn::{Ident, ItemUnion, Macro}; - /// use syn::parse::{Parse, ParseStream, Result}; + /// use syn::{Ident, ItemUnion, Macro, Result}; + /// use syn::parse::{Parse, ParseStream}; /// /// // Parses either a union or a macro invocation. /// enum UnionOrMacro { @@ -592,8 +610,8 @@ /// #[macro_use] /// extern crate syn; /// - /// use syn::{token, Ident, Type}; - /// use syn::parse::{Parse, ParseStream, Result}; + /// use syn::{token, Ident, Result, Type}; + /// use syn::parse::{Parse, ParseStream}; /// use syn::punctuated::Punctuated; /// /// // Parse a simplified tuple struct syntax like: @@ -645,8 +663,8 @@ /// #[macro_use] /// extern crate syn; /// - /// use syn::{token, Ident, Item}; - /// use syn::parse::{Parse, ParseStream, Result}; + /// use syn::{token, Ident, Item, Result}; + /// use syn::parse::{Parse, ParseStream}; /// /// // Parses a Rust `mod m { ... }` containing zero or more items. /// struct Mod { @@ -675,6 +693,7 @@ /// } /// # /// # fn main() {} + /// ``` pub fn is_empty(&self) -> bool { self.cursor().eof() } @@ -688,8 +707,8 @@ /// #[macro_use] /// extern crate syn; /// - /// use syn::{ConstParam, Ident, Lifetime, LifetimeDef, TypeParam}; - /// use syn::parse::{Parse, ParseStream, Result}; + /// use syn::{ConstParam, Ident, Lifetime, LifetimeDef, Result, TypeParam}; + /// use syn::parse::{Parse, ParseStream}; /// /// // A generic parameter, a single one of the comma-separated elements inside /// // angle brackets in: @@ -740,8 +759,8 @@ /// once. /// /// ``` - /// # use syn::Expr; - /// # use syn::parse::{ParseStream, Result}; + /// # use syn::{Expr, Result}; + /// # use syn::parse::ParseStream; /// # /// # fn bad(input: ParseStream) -> Result<Expr> { /// // Do not do this. @@ -797,9 +816,9 @@ /// #[macro_use] /// extern crate syn; /// - /// use syn::{token, Ident, Path}; + /// use syn::{token, Ident, Path, Result}; /// use syn::ext::IdentExt; - /// use syn::parse::{Parse, ParseStream, Result}; + /// use syn::parse::{Parse, ParseStream}; /// /// struct PubVisibility { /// pub_token: Token![pub], @@ -873,8 +892,8 @@ /// #[macro_use] /// extern crate syn; /// - /// use syn::Expr; - /// use syn::parse::{Parse, ParseStream, Result}; + /// use syn::{Expr, Result}; + /// use syn::parse::{Parse, ParseStream}; /// /// // Some kind of loop: `while` or `for` or `loop`. /// struct Loop { @@ -916,7 +935,8 @@ /// # extern crate syn; /// # /// use proc_macro2::TokenTree; - /// use syn::parse::{ParseStream, Result}; + /// use syn::Result; + /// use syn::parse::ParseStream; /// /// // This function advances the stream past the next occurrence of `@`. If /// // no `@` is present in the stream, the stream position is unchanged and @@ -924,7 +944,7 @@ /// fn skip_past_next_at(input: ParseStream) -> Result<()> { /// input.step(|cursor| { /// let mut rest = *cursor; - /// while let Some((tt, next)) = cursor.token_tree() { + /// while let Some((tt, next)) = rest.token_tree() { /// match tt { /// TokenTree::Punct(ref punct) if punct.as_char() == '@' => { /// return Ok(((), next)); @@ -936,7 +956,20 @@ /// }) /// } /// # - /// # fn main() {} + /// # fn remainder_after_skipping_past_next_at( + /// # input: ParseStream, + /// # ) -> Result<proc_macro2::TokenStream> { + /// # skip_past_next_at(input)?; + /// # input.parse() + /// # } + /// # + /// # fn main() { + /// # use syn::parse::Parser; + /// # let remainder = remainder_after_skipping_past_next_at + /// # .parse_str("a @ b c") + /// # .unwrap(); + /// # assert_eq!(remainder.to_string(), "b c"); + /// # } /// ``` pub fn step<F, R>(&self, function: F) -> Result<R> where diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/path.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/path.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/path.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/path.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2018 Syn Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - use super::*; use punctuated::Punctuated; @@ -93,6 +85,13 @@ PathArguments::Parenthesized(_) => false, } } + + fn is_none(&self) -> bool { + match *self { + PathArguments::None => true, + PathArguments::AngleBracketed(_) | PathArguments::Parenthesized(_) => false, + } + } } ast_enum! { @@ -363,8 +362,8 @@ /// #[macro_use] /// extern crate syn; /// - /// use syn::Path; - /// use syn::parse::{Parse, ParseStream, Result}; + /// use syn::{Path, Result}; + /// use syn::parse::{Parse, ParseStream}; /// /// // A simplified single `use` statement like: /// // @@ -423,6 +422,26 @@ }) } + /// Determines whether this is a path of length 1 equal to the given + /// ident. + /// + /// For them to compare equal, it must be the case that: + /// + /// - the path has no leading colon, + /// - the number of path segments is 1, + /// - the first path segment has no angle bracketed or parenthesized + /// path arguments + /// - and the ident of the first path segment is equal to the given one. + pub fn is_ident<I>(&self, ident: I) -> bool + where + Ident: PartialEq<I>, + { + self.leading_colon.is_none() + && self.segments.len() == 1 + && self.segments[0].arguments.is_none() + && self.segments[0].ident == ident + } + fn parse_helper(input: ParseStream, expr_style: bool) -> Result<Self> { if input.peek(Token![dyn]) { return Err(input.error("expected path")); diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/punctuated.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/punctuated.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/punctuated.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/punctuated.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2018 Syn Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - //! A punctuated sequence of syntax tree nodes separated by punctuation. //! //! Lots of things in Rust are punctuated sequences. diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/spanned.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/spanned.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/spanned.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/spanned.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2018 Syn Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - //! A trait that can provide the `Span` of the complete contents of a syntax //! tree node. //! diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/thread.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/thread.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/thread.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/thread.rs 2019-01-04 19:47:55.000000000 +0000 @@ -0,0 +1,81 @@ +use std::fmt::{self, Debug}; + +use self::thread_id::ThreadId; + +/// ThreadBound is a Sync-maker and Send-maker that allows accessing a value +/// of type T only from the original thread on which the ThreadBound was +/// constructed. +pub struct ThreadBound<T> { + value: T, + thread_id: ThreadId, +} + +unsafe impl<T> Sync for ThreadBound<T> {} + +// Send bound requires Copy, as otherwise Drop could run in the wrong place. +unsafe impl<T: Copy> Send for ThreadBound<T> {} + +impl<T> ThreadBound<T> { + pub fn new(value: T) -> Self { + ThreadBound { + value: value, + thread_id: thread_id::current(), + } + } + + pub fn get(&self) -> Option<&T> { + if thread_id::current() == self.thread_id { + Some(&self.value) + } else { + None + } + } +} + +impl<T: Debug> Debug for ThreadBound<T> { + fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result { + match self.get() { + Some(value) => Debug::fmt(value, formatter), + None => formatter.write_str("unknown"), + } + } +} + +#[cfg(syn_can_use_thread_id)] +mod thread_id { + use std::thread; + + pub use std::thread::ThreadId; + + pub fn current() -> ThreadId { + thread::current().id() + } +} + +#[cfg(not(syn_can_use_thread_id))] +mod thread_id { + use std::sync::atomic::{AtomicUsize, Ordering, ATOMIC_USIZE_INIT}; + + thread_local! { + static THREAD_ID: usize = { + static NEXT_THREAD_ID: AtomicUsize = ATOMIC_USIZE_INIT; + + // Ordering::Relaxed because our only requirement for the ids is + // that they are unique. It is okay for the compiler to rearrange + // other memory reads around this fetch. It's still an atomic + // fetch_add, so no two threads will be able to read the same value + // from it. + // + // The main thing which these orderings affect is other memory reads + // around the atomic read, which for our case are irrelevant as this + // atomic guards nothing. + NEXT_THREAD_ID.fetch_add(1, Ordering::Relaxed) + }; + } + + pub type ThreadId = usize; + + pub fn current() -> ThreadId { + THREAD_ID.with(|id| *id) + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/token.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/token.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/token.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/token.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2018 Syn Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - //! Tokens representing Rust punctuation, keywords, and delimiters. //! //! The type names in this module can be difficult to keep straight, so we @@ -56,8 +48,8 @@ //! ``` //! # extern crate syn; //! # -//! use syn::Attribute; -//! use syn::parse::{Parse, ParseStream, Result}; +//! use syn::{Attribute, Result}; +//! use syn::parse::{Parse, ParseStream}; //! # //! # enum ItemStatic {} //! @@ -272,7 +264,7 @@ #[cfg(feature = "printing")] impl ToTokens for $name { fn to_tokens(&self, tokens: &mut TokenStream) { - printing::keyword($token, &self.span, tokens); + printing::keyword($token, self.span, tokens); } } @@ -450,7 +442,7 @@ where F: FnOnce(&mut TokenStream), { - printing::delim($token, &self.span, tokens, f); + printing::delim($token, self.span, tokens, f); } } @@ -886,11 +878,11 @@ tokens.append(op); } - pub fn keyword(s: &str, span: &Span, tokens: &mut TokenStream) { - tokens.append(Ident::new(s, *span)); + pub fn keyword(s: &str, span: Span, tokens: &mut TokenStream) { + tokens.append(Ident::new(s, span)); } - pub fn delim<F>(s: &str, span: &Span, tokens: &mut TokenStream, f: F) + pub fn delim<F>(s: &str, span: Span, tokens: &mut TokenStream, f: F) where F: FnOnce(&mut TokenStream), { @@ -904,7 +896,7 @@ let mut inner = TokenStream::new(); f(&mut inner); let mut g = Group::new(delim, inner); - g.set_span(*span); + g.set_span(span); tokens.append(g); } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/tt.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/tt.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/tt.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/tt.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2018 Syn Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - use std::hash::{Hash, Hasher}; use proc_macro2::{Delimiter, TokenStream, TokenTree}; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/ty.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/ty.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/syn/src/ty.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/syn/src/ty.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,11 +1,3 @@ -// Copyright 2018 Syn Developers -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - use super::*; use proc_macro2::TokenStream; use punctuated::Punctuated; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/time/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/time/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/time/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/time/.cargo-checksum.json 2019-01-04 19:47:55.000000000 +0000 @@ -1 +1 @@ -{"files":{".travis.yml":"f820708f76fe75456b05c99b9ee4e9e720e0dd6189da11f3df3d8094111fdf31","Cargo.toml":"3c15858858af40a4cfa78a73cea88ba2e4ff31a59e7c7d2fef17d2282c9aa6e7","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"2c17f942c4a797f6f491c6d40570f904f35047531884ded3244438832b3d6f0a","appveyor.yml":"da991211b72fa6f231af7adb84c9fb72f5a9131d1c0a3d47b8ceffe5a82c8542","benches/precise_time_ns.rs":"06206c16764c6cef71da645ddb1aa7476dff7697e38d0742b3c907be9f00dadf","src/display.rs":"b79a81b4f068e44934ad3398ba0259120cc30cf0855ac5108c4569e320fd7f1d","src/duration.rs":"c227f6809f837996d24145843ba4972650d0fca7e2af7bbb0ebc0dbcec3358d9","src/lib.rs":"a07a09d4955fc92b85eb854e136a2732b94feff1c9be97fcf49accde6e704ee7","src/parse.rs":"717ae5735dfdaaba513f2a54a179e73bb2a48f8d4fb8787740d4662d6ff3389c","src/sys.rs":"14e3f57e7cf63167eda2f2fead3e01e59eb4cf71a5b15ae7563e962a43dbc659"},"package":"d825be0eb33fda1a7e68012d51e9c7f451dc1a69391e7fdc197060bb8c56667b"} \ No newline at end of file +{"files":{".cargo_vcs_info.json":"252d3ab6d8abd8ab71c23c4e38315e3bab7010f01d7d9799b90f31106ae71c69",".travis.yml":"f820708f76fe75456b05c99b9ee4e9e720e0dd6189da11f3df3d8094111fdf31","Cargo.toml":"b3e4cbae9856eac6f3eccc7f8e5e98a6e54319a5a0c3cb5572bdee8a87d15c6d","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"2c17f942c4a797f6f491c6d40570f904f35047531884ded3244438832b3d6f0a","appveyor.yml":"da991211b72fa6f231af7adb84c9fb72f5a9131d1c0a3d47b8ceffe5a82c8542","benches/precise_time_ns.rs":"06206c16764c6cef71da645ddb1aa7476dff7697e38d0742b3c907be9f00dadf","src/display.rs":"b79a81b4f068e44934ad3398ba0259120cc30cf0855ac5108c4569e320fd7f1d","src/duration.rs":"a3661c6618316f2999a7eca53e0da2d06e0a12b6ab990650a68b0d4d094e5f69","src/lib.rs":"a07a09d4955fc92b85eb854e136a2732b94feff1c9be97fcf49accde6e704ee7","src/parse.rs":"717ae5735dfdaaba513f2a54a179e73bb2a48f8d4fb8787740d4662d6ff3389c","src/sys.rs":"4f6bc5c6300c2d49da7d21615152872e16d53c0f02540824f48c45edd4d3140f"},"package":"847da467bf0db05882a9e2375934a8a55cffdc9db0d128af1518200260ba1f6c"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/time/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/time/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/time/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/time/Cargo.toml 2019-01-04 19:47:55.000000000 +0000 @@ -12,7 +12,7 @@ [package] name = "time" -version = "0.1.40" +version = "0.1.41" authors = ["The Rust Project Developers"] description = "Utilities for working with time-related functions in Rust.\n" homepage = "https://github.com/rust-lang/time" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/time/.cargo_vcs_info.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/time/.cargo_vcs_info.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/time/.cargo_vcs_info.json 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/time/.cargo_vcs_info.json 2019-01-04 19:47:55.000000000 +0000 @@ -0,0 +1,5 @@ +{ + "git": { + "sha1": "6d96f0c7dbf9c430e10d90e41d9bea52be4d685d" + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/time/src/duration.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/time/src/duration.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/time/src/duration.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/time/src/duration.rs 2019-01-04 19:47:55.000000000 +0000 @@ -41,7 +41,7 @@ /// ISO 8601 time duration with nanosecond precision. /// This also allows for the negative duration; see individual methods for details. -#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Debug)] +#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Debug, Hash)] pub struct Duration { secs: i64, nanos: i32, // Always 0 <= nanos < NANOS_PER_SEC @@ -285,6 +285,12 @@ } Ok(StdDuration::new(self.secs as u64, self.nanos as u32)) } + + /// Returns the raw value of duration. + #[cfg(target_env = "sgx")] + pub(crate) fn raw(&self) -> (i64, i32) { + (self.secs, self.nanos) + } } impl Neg for Duration { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/time/src/sys.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/time/src/sys.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/time/src/sys.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/time/src/sys.rs 2019-01-04 19:47:55.000000000 +0000 @@ -5,6 +5,7 @@ #[cfg(any( all(target_arch = "wasm32", not(target_os = "emscripten")), target_os = "redox", + target_env = "sgx" ))] mod common { use Tm; @@ -270,6 +271,82 @@ impl Eq for SteadyTime {} } +#[cfg(target_env = "sgx")] +mod inner { + use std::ops::{Add, Sub}; + use Tm; + use Duration; + use super::common::{time_to_tm, tm_to_time}; + use std::time::SystemTime; + + /// The number of nanoseconds in seconds. + const NANOS_PER_SEC: u64 = 1_000_000_000; + + #[derive(Copy, Clone, Debug, PartialOrd, Ord, PartialEq, Eq)] + pub struct SteadyTime { + t: Duration + } + + pub fn time_to_utc_tm(sec: i64, tm: &mut Tm) { + time_to_tm(sec, tm); + } + + pub fn time_to_local_tm(sec: i64, tm: &mut Tm) { + // FIXME: Add timezone logic + time_to_tm(sec, tm); + } + + pub fn utc_tm_to_time(tm: &Tm) -> i64 { + tm_to_time(tm) + } + + pub fn local_tm_to_time(tm: &Tm) -> i64 { + // FIXME: Add timezone logic + tm_to_time(tm) + } + + pub fn get_time() -> (i64, i32) { + SteadyTime::now().t.raw() + } + + pub fn get_precise_ns() -> u64 { + // This unwrap is safe because current time is well ahead of UNIX_EPOCH, unless system clock is adjusted backward. + let std_duration = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH).unwrap(); + std_duration.as_secs() * NANOS_PER_SEC + std_duration.subsec_nanos() as u64 + } + + impl SteadyTime { + pub fn now() -> SteadyTime { + // This unwrap is safe because current time is well ahead of UNIX_EPOCH, unless system clock is adjusted backward. + let std_duration = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH).unwrap(); + // This unwrap is safe because duration is well within the limits of i64. + let duration = Duration::from_std(std_duration).unwrap(); + SteadyTime { t: duration } + } + } + + impl Sub for SteadyTime { + type Output = Duration; + fn sub(self, other: SteadyTime) -> Duration { + self.t - other.t + } + } + + impl Sub<Duration> for SteadyTime { + type Output = SteadyTime; + fn sub(self, other: Duration) -> SteadyTime { + SteadyTime { t: self.t - other } + } + } + + impl Add<Duration> for SteadyTime { + type Output = SteadyTime; + fn add(self, other: Duration) -> SteadyTime { + SteadyTime { t: self.t + other } + } + } +} + #[cfg(unix)] mod inner { use libc::{self, time_t}; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/toml/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/toml/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/toml/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/toml/.cargo-checksum.json 2019-01-04 19:47:55.000000000 +0000 @@ -1 +1 @@ -{"files":{".travis.yml":"c116cd25a6808e7fa2b4c053011ccd98761bec02143ffb0a9bf0e34000afa3a9","Cargo.toml":"ce86fbeaf355b4414561e661a56ecb6f786799844022d2039b3df896639c0291","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"3796dd94977fe7435a2bcd83654f13cff7dd2125693bf5533563b9cc63ea3674","examples/decode.rs":"15eb011e0579f35e6960638151d215123b21d8236a6284169240f09a28efe5d1","examples/toml2json.rs":"eaa9ad85ec19714f6437048ae28b844966225a17055d1a37878f41bcbc2c5e47","src/datetime.rs":"167d2629cc5a1d640d72ac71eeace7370be99f4899054976b8e60ffa9b074815","src/de.rs":"a275e5b0bb15459be87225b716cf0756f8983efa02f6e4ef9202e3e72b7cf3e0","src/lib.rs":"bf7905844def643d15e02e0b2f9f73e9c0abb3544f38a9925a3c3ff2a7228337","src/macros.rs":"f30755f9dbb2b754a77d2777689e1cf90d7ae38c99826b2250940b2a5fea81dd","src/ser.rs":"e447b73c82be3b8aa9fc0ba960e4f081d0c7901d0a0f8e920b8cabafb809139e","src/spanned.rs":"4b6d501c5fad1621ff4163ed5f0a986211a7c20389158b4b67a2e1697bc8f58e","src/tokens.rs":"4ebcc77218f6c399fc6abf8b6b0daca31616470f69f5fe2bcde7c3cbe3b8a9c0","src/value.rs":"959795674aa4989595660a1f66f5f8aee846268b1ea1f4e6eb387802bcafa65b"},"package":"4a2ecc31b0351ea18b3fe11274b8db6e4d82bce861bbb22e6dbed40417902c65"} \ No newline at end of file +{"files":{".cargo_vcs_info.json":"6f8637dffdc907ca9efa9100339e770edf5c0fc77fcda868358117767c051b3c",".travis.yml":"c116cd25a6808e7fa2b4c053011ccd98761bec02143ffb0a9bf0e34000afa3a9","Cargo.toml":"9c2e60c7837a07dd06e24f1f33b5d95367b976d88dad80aa5527b82cdcd30897","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"ec3fb1fd502c4137d7d2e88dd66f5843e78c5f57a3061e78093484e366c9d715","examples/decode.rs":"15eb011e0579f35e6960638151d215123b21d8236a6284169240f09a28efe5d1","examples/enum_external.rs":"e34b78d3c844aa87ad8f13deb9000993802d13d4e07b4b3a0c59000969d8e96d","examples/toml2json.rs":"eaa9ad85ec19714f6437048ae28b844966225a17055d1a37878f41bcbc2c5e47","src/datetime.rs":"167d2629cc5a1d640d72ac71eeace7370be99f4899054976b8e60ffa9b074815","src/de.rs":"f0255f32c4166e9583bb8492aa984ee0fe050d5bdf3c3d106966ad8e8f7c30ce","src/lib.rs":"af586efcc5380efa3c24c32dc14c5462277885bf6369294812f4be1262d2f3b5","src/macros.rs":"f30755f9dbb2b754a77d2777689e1cf90d7ae38c99826b2250940b2a5fea81dd","src/ser.rs":"d51e0eff1f434b2914a7d06845f5f309b35b0ad5a76b1e2c1932025b1edf42e2","src/spanned.rs":"4b6d501c5fad1621ff4163ed5f0a986211a7c20389158b4b67a2e1697bc8f58e","src/tokens.rs":"e8bb370427c9a13f54420308efbbfe5af5f70c66390f4c5895fc9a992bf9ce5c","src/value.rs":"321adb3697c534c6f48bf84a230e84737fb00931f7ee37ca9fd0f67bae31011b","tests/enum_external_deserialize.rs":"acacf03802a68508559c772882577711397bad4a1354248e9c84860752eb19e9"},"package":"758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/toml/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/toml/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/toml/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/toml/Cargo.toml 2019-01-04 19:47:55.000000000 +0000 @@ -12,7 +12,7 @@ [package] name = "toml" -version = "0.4.8" +version = "0.4.10" authors = ["Alex Crichton <alex@alexcrichton.com>"] description = "A native Rust encoder and decoder of TOML-formatted files and streams. Provides\nimplementations of the standard Serialize/Deserialize traits for TOML data to\nfacilitate deserializing and serializing Rust structures.\n" homepage = "https://github.com/alexcrichton/toml-rs" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/toml/.cargo_vcs_info.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/toml/.cargo_vcs_info.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/toml/.cargo_vcs_info.json 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/toml/.cargo_vcs_info.json 2019-01-04 19:47:55.000000000 +0000 @@ -0,0 +1,5 @@ +{ + "git": { + "sha1": "1ef180d06ed4ec207c41b2595feaca84959e709e" + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/toml/examples/enum_external.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/toml/examples/enum_external.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/toml/examples/enum_external.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/toml/examples/enum_external.rs 2019-01-04 19:47:55.000000000 +0000 @@ -0,0 +1,46 @@ +//! An example showing off the usage of `Deserialize` to automatically decode +//! TOML into a Rust `struct`, with enums. + +#![deny(warnings)] + +extern crate toml; +#[macro_use] +extern crate serde_derive; + +/// This is what we're going to decode into. +#[derive(Debug, Deserialize)] +struct Config { + plain: MyEnum, + plain_table: MyEnum, + tuple: MyEnum, + #[serde(rename = "struct")] + structv: MyEnum, + newtype: MyEnum, + my_enum: Vec<MyEnum>, +} + +#[derive(Debug, Deserialize)] +enum MyEnum { + Plain, + Tuple(i64, bool), + NewType(String), + Struct { value: i64 }, +} + +fn main() { + let toml_str = r#" + plain = "Plain" + plain_table = { Plain = {} } + tuple = { Tuple = { 0 = 123, 1 = true } } + struct = { Struct = { value = 123 } } + newtype = { NewType = "value" } + my_enum = [ + { Plain = {} }, + { Tuple = { 0 = 123, 1 = true } }, + { NewType = "value" }, + { Struct = { value = 123 } } + ]"#; + + let decoded: Config = toml::from_str(toml_str).unwrap(); + println!("{:#?}", decoded); +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/toml/README.md distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/toml/README.md --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/toml/README.md 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/toml/README.md 2019-01-04 19:47:55.000000000 +0000 @@ -6,7 +6,7 @@ [![Documentation](https://docs.rs/toml/badge.svg)](https://docs.rs/toml) A [TOML][toml] decoder and encoder for Rust. This library is currently compliant -with the v0.4.0 version of TOML. This library will also likely continue to stay +with the v0.5.0 version of TOML. This library will also likely continue to stay up to date with the TOML specification as changes happen. [toml]: https://github.com/toml-lang/toml diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/toml/src/de.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/toml/src/de.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/toml/src/de.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/toml/src/de.rs 2019-01-04 19:47:55.000000000 +0000 @@ -159,12 +159,35 @@ /// type. Custom, - /// A struct was expected but something else was found - ExpectedString, + /// A tuple with a certain number of elements was expected but something + /// else was found. + ExpectedTuple(usize), + + /// Expected table keys to be in increasing tuple index order, but something + /// else was found. + ExpectedTupleIndex { + /// Expected index. + expected: usize, + /// Key that was specified. + found: String, + }, + + /// An empty table was expected but entries were found + ExpectedEmptyTable, /// Dotted key attempted to extend something that is not a table. DottedKeyInvalidType, + /// An unexpected key was encountered. + /// + /// Used when deserializing a struct with a limited set of fields. + UnexpectedKeys { + /// The unexpected keys. + keys: Vec<String>, + /// Keys that may be specified. + available: &'static [&'static str], + }, + #[doc(hidden)] __Nonexhaustive, } @@ -182,47 +205,8 @@ fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Error> where V: de::Visitor<'de>, { - let mut tables = Vec::new(); - let mut cur_table = Table { - at: 0, - header: Vec::new(), - values: None, - array: false, - }; - while let Some(line) = self.line()? { - match line { - Line::Table { at, mut header, array } => { - if !cur_table.header.is_empty() || cur_table.values.is_some() { - tables.push(cur_table); - } - cur_table = Table { - at: at, - header: Vec::new(), - values: Some(Vec::new()), - array: array, - }; - loop { - let part = header.next().map_err(|e| { - self.token_error(e) - }); - match part? { - Some(part) => cur_table.header.push(part), - None => break, - } - } - } - Line::KeyValue(key, value) => { - if cur_table.values.is_none() { - cur_table.values = Some(Vec::new()); - } - self.add_dotted_key(key, value, cur_table.values.as_mut().unwrap())?; - } - } - } - if !cur_table.header.is_empty() || cur_table.values.is_some() { - tables.push(cur_table); - } + let mut tables = self.tables()?; visitor.visit_map(MapVisitor { values: Vec::new().into_iter(), @@ -237,6 +221,7 @@ }) } + // Called when the type to deserialize is an enum, as opposed to a field in the type. fn deserialize_enum<V>( self, _name: &'static str, @@ -245,15 +230,34 @@ ) -> Result<V::Value, Error> where V: de::Visitor<'de> { - if let Some(next) = self.next()? { - match next { - (_, Token::String { val, .. }) => { - visitor.visit_enum(val.into_deserializer()) - }, - _ => Err(Error::from_kind(ErrorKind::ExpectedString)) + let (value, name) = self.string_or_table()?; + match value.e { + E::String(val) => visitor.visit_enum(val.into_deserializer()), + E::InlineTable(values) => { + if values.len() != 1 { + Err(Error::from_kind(ErrorKind::Wanted { + expected: "exactly 1 element", + found: if values.is_empty() { + "zero elements" + } else { + "more than 1 element" + }, + })) + } else { + visitor.visit_enum(InlineTableDeserializer { + values: values.into_iter(), + next_value: None, + }) + } } - } else { - Err(Error::from_kind(ErrorKind::UnexpectedEof)) + E::DottedTable(_) => visitor.visit_enum(DottedTableDeserializer { + name: name.expect("Expected table header to be passed."), + value: value, + }), + e @ _ => Err(Error::from_kind(ErrorKind::Wanted { + expected: "string or table", + found: e.type_name(), + })), } } @@ -497,14 +501,21 @@ struct ValueDeserializer<'a> { value: Value<'a>, + validate_struct_keys: bool, } impl<'a> ValueDeserializer<'a> { fn new(value: Value<'a>) -> ValueDeserializer<'a> { ValueDeserializer { value: value, + validate_struct_keys: false, } } + + fn with_struct_key_validation(mut self) -> Self { + self.validate_struct_keys = true; + self + } } impl<'de> de::Deserializer<'de> for ValueDeserializer<'de> { @@ -553,6 +564,31 @@ } } + if self.validate_struct_keys { + match &self.value.e { + &E::InlineTable(ref values) | &E::DottedTable(ref values) => { + let extra_fields = values.iter() + .filter_map(|key_value| { + let (ref key, ref _val) = *key_value; + if !fields.contains(&&(**key)) { + Some(key.clone()) + } else { + None + } + }) + .collect::<Vec<Cow<'de, str>>>(); + + if !extra_fields.is_empty() { + return Err(Error::from_kind(ErrorKind::UnexpectedKeys { + keys: extra_fields.iter().map(|k| k.to_string()).collect::<Vec<_>>(), + available: fields, + })); + } + } + _ => {} + } + } + if name == spanned::NAME && fields == &[spanned::START, spanned::END, spanned::VALUE] { let start = self.value.start; let end = self.value.end; @@ -585,7 +621,27 @@ { match self.value.e { E::String(val) => visitor.visit_enum(val.into_deserializer()), - _ => Err(Error::from_kind(ErrorKind::ExpectedString)) + E::InlineTable(values) => { + if values.len() != 1 { + Err(Error::from_kind(ErrorKind::Wanted { + expected: "exactly 1 element", + found: if values.is_empty() { + "zero elements" + } else { + "more than 1 element" + }, + })) + } else { + visitor.visit_enum(InlineTableDeserializer { + values: values.into_iter(), + next_value: None, + }) + } + } + e @ _ => Err(Error::from_kind(ErrorKind::Wanted { + expected: "string or inline table", + found: e.type_name(), + })), } } @@ -697,6 +753,25 @@ } } +struct DottedTableDeserializer<'a> { + name: Cow<'a, str>, + value: Value<'a>, +} + +impl<'de> de::EnumAccess<'de> for DottedTableDeserializer<'de> { + type Error = Error; + type Variant = TableEnumDeserializer<'de>; + + fn variant_seed<V>(self, seed: V) -> Result<(V::Value, Self::Variant), Self::Error> + where + V: de::DeserializeSeed<'de>, + { + let (name, value) = (self.name, self.value); + seed.deserialize(StrDeserializer::new(name)) + .map(|val| (val, TableEnumDeserializer { value: value })) + } +} + struct InlineTableDeserializer<'a> { values: vec::IntoIter<(Cow<'a, str>, Value<'a>)>, next_value: Option<Value<'a>>, @@ -724,6 +799,124 @@ } } +impl<'de> de::EnumAccess<'de> for InlineTableDeserializer<'de> { + type Error = Error; + type Variant = TableEnumDeserializer<'de>; + + fn variant_seed<V>(mut self, seed: V) -> Result<(V::Value, Self::Variant), Self::Error> + where + V: de::DeserializeSeed<'de>, + { + let (key, value) = match self.values.next() { + Some(pair) => pair, + None => { + return Err(Error::from_kind(ErrorKind::Wanted { + expected: "table with exactly 1 entry", + found: "empty table", + })) + } + }; + + seed.deserialize(StrDeserializer::new(key)) + .map(|val| (val, TableEnumDeserializer { value: value })) + } +} + +/// Deserializes table values into enum variants. +struct TableEnumDeserializer<'a> { + value: Value<'a>, +} + +impl<'de> de::VariantAccess<'de> for TableEnumDeserializer<'de> { + type Error = Error; + + fn unit_variant(self) -> Result<(), Self::Error> { + match self.value.e { + E::InlineTable(values) | E::DottedTable(values) => { + if values.len() == 0 { + Ok(()) + } else { + Err(Error::from_kind(ErrorKind::ExpectedEmptyTable)) + } + } + e @ _ => Err(Error::from_kind(ErrorKind::Wanted { + expected: "table", + found: e.type_name(), + })), + } + } + + fn newtype_variant_seed<T>(self, seed: T) -> Result<T::Value, Self::Error> + where + T: de::DeserializeSeed<'de>, + { + seed.deserialize(ValueDeserializer::new(self.value)) + } + + fn tuple_variant<V>(self, len: usize, visitor: V) -> Result<V::Value, Self::Error> + where + V: de::Visitor<'de>, + { + match self.value.e { + E::InlineTable(values) | E::DottedTable(values) => { + let tuple_values = values + .into_iter() + .enumerate() + .map(|(index, (key, value))| match key.parse::<usize>() { + Ok(key_index) if key_index == index => Ok(value), + Ok(_) | Err(_) => Err(Error::from_kind(ErrorKind::ExpectedTupleIndex { + expected: index, + found: key.to_string(), + })), + }) + // Fold all values into a `Vec`, or return the first error. + .fold(Ok(Vec::with_capacity(len)), |result, value_result| { + result.and_then(move |mut tuple_values| match value_result { + Ok(value) => { + tuple_values.push(value); + Ok(tuple_values) + } + // `Result<de::Value, Self::Error>` to `Result<Vec<_>, Self::Error>` + Err(e) => Err(e), + }) + })?; + + if tuple_values.len() == len { + de::Deserializer::deserialize_seq( + ValueDeserializer::new(Value { + e: E::Array(tuple_values), + start: self.value.start, + end: self.value.end, + }), + visitor, + ) + } else { + Err(Error::from_kind(ErrorKind::ExpectedTuple(len))) + } + } + e @ _ => Err(Error::from_kind(ErrorKind::Wanted { + expected: "table", + found: e.type_name(), + })), + } + } + + fn struct_variant<V>( + self, + fields: &'static [&'static str], + visitor: V, + ) -> Result<V::Value, Self::Error> + where + V: de::Visitor<'de>, + { + de::Deserializer::deserialize_struct( + ValueDeserializer::new(self.value).with_struct_key_validation(), + "", // TODO: this should be the variant name + fields, + visitor, + ) + } +} impl<'a> Deserializer<'a> { /// Creates a new deserializer which will be deserializing the string @@ -754,6 +947,53 @@ self.require_newline_after_table = require; } + fn tables(&mut self) -> Result<Vec<Table<'a>>, Error> { + let mut tables = Vec::new(); + let mut cur_table = Table { + at: 0, + header: Vec::new(), + values: None, + array: false, + }; + + while let Some(line) = self.line()? { + match line { + Line::Table { + at, + mut header, + array, + } => { + if !cur_table.header.is_empty() || cur_table.values.is_some() { + tables.push(cur_table); + } + cur_table = Table { + at: at, + header: Vec::new(), + values: Some(Vec::new()), + array: array, + }; + loop { + let part = header.next().map_err(|e| self.token_error(e)); + match part? { + Some(part) => cur_table.header.push(part), + None => break, + } + } + } + Line::KeyValue(key, value) => { + if cur_table.values.is_none() { + cur_table.values = Some(Vec::new()); + } + self.add_dotted_key(key, value, cur_table.values.as_mut().unwrap())?; + } + } + } + if !cur_table.header.is_empty() || cur_table.values.is_some() { + tables.push(cur_table); + } + Ok(tables) + } + fn line(&mut self) -> Result<Option<Line<'a>>, Error> { loop { self.eat_whitespace()?; @@ -876,7 +1116,56 @@ } } - fn number(&mut self, Span { start, end}: Span, s: &'a str) -> Result<Value<'a>, Error> { + /// Returns a string or table value type. + /// + /// Used to deserialize enums. Unit enums may be represented as a string or a table, all other + /// structures (tuple, newtype, struct) must be represented as a table. + fn string_or_table(&mut self) -> Result<(Value<'a>, Option<Cow<'a, str>>), Error> { + match self.peek()? { + Some((_, Token::LeftBracket)) => { + let tables = self.tables()?; + if tables.len() != 1 { + return Err(Error::from_kind(ErrorKind::Wanted { + expected: "exactly 1 table", + found: if tables.is_empty() { + "zero tables" + } else { + "more than 1 table" + }, + })); + } + + let table = tables + .into_iter() + .next() + .expect("Expected exactly one table"); + let header = table + .header + .last() + .expect("Expected at least one header value for table."); + + let start = table.at; + let end = table + .values + .as_ref() + .and_then(|values| values.last()) + .map(|&(_, ref val)| val.end) + .unwrap_or_else(|| header.len()); + Ok(( + Value { + e: E::DottedTable(table.values.unwrap_or_else(Vec::new)), + start: start, + end: end, + }, + Some(header.clone()), + )) + } + Some(_) => self.value().map(|val| (val, None)), + None => Err(self.eof()), + } + } + + fn number(&mut self, Span { start, end }: Span, s: &'a str) -> Result<Value<'a>, Error> { let to_integer = |f| Value { e: E::Integer(f), start: start, end: end }; if s.starts_with("0x") { self.integer(&s[2..], 16).map(to_integer) @@ -1035,13 +1324,12 @@ let start = self.tokens.substr_offset(date); // Check for space separated date and time. - if let Some((_, Token::Whitespace(s))) = self.peek()? { - if s == " " { - self.next()?; - // Skip past the hour. - if let Some((_, Token::Keylike(_))) = self.peek()? { - self.next()?; - } + let mut lookahead = self.tokens.clone(); + if let Ok(Some((_, Token::Whitespace(" ")))) = lookahead.next() { + // Check if hour follows. + if let Ok(Some((_, Token::Keylike(_)))) = lookahead.next() { + self.next()?; // skip space + self.next()?; // skip keylike hour } } @@ -1171,6 +1459,18 @@ Ok(result) } + /// Stores a value in the appropriate hierachical structure positioned based on the dotted key. + /// + /// Given the following definition: `multi.part.key = "value"`, `multi` and `part` are + /// intermediate parts which are mapped to the relevant fields in the deserialized type's data + /// hierarchy. + /// + /// # Parameters + /// + /// * `key_parts`: Each segment of the dotted key, e.g. `part.one` maps to + /// `vec![Cow::Borrowed("part"), Cow::Borrowed("one")].` + /// * `value`: The parsed value. + /// * `values`: The `Vec` to store the value in. fn add_dotted_key( &self, mut key_parts: Vec<Cow<'a, str>>, @@ -1192,12 +1492,12 @@ None => {} } // The start/end value is somewhat misleading here. - let inline_table = Value { + let table_values = Value { e: E::DottedTable(Vec::new()), start: value.start, end: value.end, }; - values.push((key, inline_table)); + values.push((key, table_values)); let last_i = values.len() - 1; if let (_, Value { e: E::DottedTable(ref mut v), .. }) = values[last_i] { self.add_dotted_key(key_parts, value, v)?; @@ -1385,8 +1685,23 @@ ErrorKind::EmptyTableKey => "empty table key found".fmt(f)?, ErrorKind::MultilineStringKey => "multiline strings are not allowed for key".fmt(f)?, ErrorKind::Custom => self.inner.message.fmt(f)?, - ErrorKind::ExpectedString => "expected string".fmt(f)?, - ErrorKind::DottedKeyInvalidType => "dotted key attempted to extend non-table type".fmt(f)?, + ErrorKind::ExpectedTuple(l) => write!(f, "expected table with length {}", l)?, + ErrorKind::ExpectedTupleIndex { + expected, + ref found, + } => write!(f, "expected table key `{}`, but was `{}`", expected, found)?, + ErrorKind::ExpectedEmptyTable => "expected empty table".fmt(f)?, + ErrorKind::DottedKeyInvalidType => { + "dotted key attempted to extend non-table type".fmt(f)? + } + ErrorKind::UnexpectedKeys { ref keys, available } => { + write!( + f, + "unexpected keys in table: `{:?}`, available keys: `{:?}`", + keys, + available + )? + } ErrorKind::__Nonexhaustive => panic!(), } @@ -1430,8 +1745,11 @@ ErrorKind::EmptyTableKey => "empty table key found", ErrorKind::MultilineStringKey => "invalid multiline string for key", ErrorKind::Custom => "a custom error", - ErrorKind::ExpectedString => "expected string", + ErrorKind::ExpectedTuple(_) => "expected table length", + ErrorKind::ExpectedTupleIndex { .. } => "expected table key", + ErrorKind::ExpectedEmptyTable => "expected empty table", ErrorKind::DottedKeyInvalidType => "dotted key invalid type", + ErrorKind::UnexpectedKeys { .. } => "unexpected keys in table", ErrorKind::__Nonexhaustive => panic!(), } } @@ -1510,6 +1828,21 @@ DottedTable(Vec<(Cow<'a, str>, Value<'a>)>), } +impl<'a> E<'a> { + fn type_name(&self) -> &'static str { + match *self { + E::String(..) => "string", + E::Integer(..) => "integer", + E::Float(..) => "float", + E::Boolean(..) => "boolean", + E::Datetime(..) => "datetime", + E::Array(..) => "array", + E::InlineTable(..) => "inline table", + E::DottedTable(..) => "dotted table", + } + } +} + impl<'a> Value<'a> { fn same_type(&self, other: &Value<'a>) -> bool { match (&self.e, &other.e) { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/toml/src/lib.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/toml/src/lib.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/toml/src/lib.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/toml/src/lib.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1,6 +1,6 @@ //! A [TOML]-parsing library //! -//! This library implements a [TOML] v0.4.0 compatible parser, +//! This library implements a [TOML] v0.5.0 compatible parser, //! primarily supporting the [`serde`] library for encoding/decoding //! various types in Rust. //! diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/toml/src/ser.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/toml/src/ser.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/toml/src/ser.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/toml/src/ser.rs 2019-01-04 19:47:55.000000000 +0000 @@ -1420,11 +1420,11 @@ Err(Error::KeyNotString) } - fn serialize_newtype_struct<T: ?Sized>(self, _name: &'static str, _value: &T) + fn serialize_newtype_struct<T: ?Sized>(self, _name: &'static str, value: &T) -> Result<String, Self::Error> where T: ser::Serialize, { - Err(Error::KeyNotString) + value.serialize(self) } fn serialize_newtype_variant<T: ?Sized>(self, diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/toml/src/tokens.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/toml/src/tokens.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/toml/src/tokens.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/toml/src/tokens.rs 2019-01-04 19:47:55.000000000 +0000 @@ -364,7 +364,24 @@ let len = if c == 'u' {4} else {8}; val.push(me.hex(start, i, len)?); } - Some((_, '\n')) if multi => { + Some((i, c @ ' ')) | + Some((i, c @ '\t')) | + Some((i, c @ '\n')) if multi => { + if c != '\n' { + while let Some((_, ch)) = me.chars.clone().next() { + match ch { + ' ' | '\t' => { + me.chars.next(); + continue + }, + '\n' => { + me.chars.next(); + break + }, + _ => return Err(Error::InvalidEscape(i, c)), + } + } + } while let Some((_, ch)) = me.chars.clone().next() { match ch { ' ' | '\t' | '\n' => { diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/toml/src/value.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/toml/src/value.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/toml/src/value.rs 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/toml/src/value.rs 2019-01-04 19:47:55.000000000 +0000 @@ -675,9 +675,9 @@ type Error = ::ser::Error; type SerializeSeq = SerializeVec; - type SerializeTuple = ser::Impossible<Value, ::ser::Error>; - type SerializeTupleStruct = ser::Impossible<Value, ::ser::Error>; - type SerializeTupleVariant = ser::Impossible<Value, ::ser::Error>; + type SerializeTuple = SerializeVec; + type SerializeTupleStruct = SerializeVec; + type SerializeTupleVariant = SerializeVec; type SerializeMap = SerializeMap; type SerializeStruct = SerializeMap; type SerializeStructVariant = ser::Impossible<Value, ::ser::Error>; @@ -800,23 +800,23 @@ }) } - fn serialize_tuple(self, _len: usize) -> Result<Self::SerializeTuple, ::ser::Error> { - Err(::ser::Error::UnsupportedType) + fn serialize_tuple(self, len: usize) -> Result<Self::SerializeTuple, ::ser::Error> { + self.serialize_seq(Some(len)) } - fn serialize_tuple_struct(self, _name: &'static str, _len: usize) + fn serialize_tuple_struct(self, _name: &'static str, len: usize) -> Result<Self::SerializeTupleStruct, ::ser::Error> { - Err(::ser::Error::UnsupportedType) + self.serialize_seq(Some(len)) } fn serialize_tuple_variant(self, _name: &'static str, _variant_index: u32, _variant: &'static str, - _len: usize) + len: usize) -> Result<Self::SerializeTupleVariant, ::ser::Error> { - Err(::ser::Error::UnsupportedType) + self.serialize_seq(Some(len)) } fn serialize_map(self, _len: Option<usize>) @@ -869,6 +869,51 @@ } } +impl ser::SerializeTuple for SerializeVec { + type Ok = Value; + type Error = ::ser::Error; + + fn serialize_element<T: ?Sized>(&mut self, value: &T) -> Result<(), ::ser::Error> + where T: ser::Serialize + { + ser::SerializeSeq::serialize_element(self, value) + } + + fn end(self) -> Result<Value, ::ser::Error> { + ser::SerializeSeq::end(self) + } +} + +impl ser::SerializeTupleStruct for SerializeVec { + type Ok = Value; + type Error = ::ser::Error; + + fn serialize_field<T: ?Sized>(&mut self, value: &T) -> Result<(), ::ser::Error> + where T: ser::Serialize + { + ser::SerializeSeq::serialize_element(self, value) + } + + fn end(self) -> Result<Value, ::ser::Error> { + ser::SerializeSeq::end(self) + } +} + +impl ser::SerializeTupleVariant for SerializeVec { + type Ok = Value; + type Error = ::ser::Error; + + fn serialize_field<T: ?Sized>(&mut self, value: &T) -> Result<(), ::ser::Error> + where T: ser::Serialize + { + ser::SerializeSeq::serialize_element(self, value) + } + + fn end(self) -> Result<Value, ::ser::Error> { + ser::SerializeSeq::end(self) + } +} + impl ser::SerializeMap for SerializeMap { type Ok = Value; type Error = ::ser::Error; diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/toml/tests/enum_external_deserialize.rs distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/toml/tests/enum_external_deserialize.rs --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/toml/tests/enum_external_deserialize.rs 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/toml/tests/enum_external_deserialize.rs 2019-01-04 19:47:55.000000000 +0000 @@ -0,0 +1,238 @@ +#[macro_use] +extern crate serde_derive; +extern crate toml; + +#[derive(Debug, Deserialize, PartialEq)] +enum TheEnum { + Plain, + Tuple(i64, bool), + NewType(String), + Struct { value: i64 }, +} + +#[derive(Debug, Deserialize, PartialEq)] +struct Val { + val: TheEnum, +} + +#[derive(Debug, Deserialize, PartialEq)] +struct Multi { + enums: Vec<TheEnum>, +} + +#[test] +fn invalid_variant_returns_error_with_good_message_string() { + let error = toml::from_str::<TheEnum>("\"NonExistent\"").unwrap_err(); + + assert_eq!( + error.to_string(), + "unknown variant `NonExistent`, expected one of `Plain`, `Tuple`, `NewType`, `Struct`" + ); +} + +#[test] +fn invalid_variant_returns_error_with_good_message_inline_table() { + let error = toml::from_str::<TheEnum>("{ NonExistent = {} }").unwrap_err(); + assert_eq!( + error.to_string(), + "unknown variant `NonExistent`, expected one of `Plain`, `Tuple`, `NewType`, `Struct`" + ); +} + +#[test] +fn extra_field_returns_expected_empty_table_error() { + let error = toml::from_str::<TheEnum>("{ Plain = { extra_field = 404 } }").unwrap_err(); + + assert_eq!(error.to_string(), "expected empty table"); +} + +#[test] +fn extra_field_returns_expected_empty_table_error_struct_variant() { + let error = toml::from_str::<TheEnum>("{ Struct = { value = 123, extra_0 = 0, extra_1 = 1 } }") + .unwrap_err(); + + assert_eq!( + error.to_string(), + r#"unexpected keys in table: `["extra_0", "extra_1"]`, available keys: `["value"]`"# + ); +} + +mod enum_unit { + use super::*; + + #[test] + fn from_str() { + assert_eq!(TheEnum::Plain, toml::from_str("\"Plain\"").unwrap()); + } + + #[test] + fn from_inline_table() { + assert_eq!(TheEnum::Plain, toml::from_str("{ Plain = {} }").unwrap()); + assert_eq!( + Val { + val: TheEnum::Plain + }, + toml::from_str("val = { Plain = {} }").unwrap() + ); + } + + #[test] + fn from_dotted_table() { + assert_eq!(TheEnum::Plain, toml::from_str("[Plain]\n").unwrap()); + } +} + +mod enum_tuple { + use super::*; + + #[test] + fn from_inline_table() { + assert_eq!( + TheEnum::Tuple(-123, true), + toml::from_str("{ Tuple = { 0 = -123, 1 = true } }").unwrap() + ); + assert_eq!( + Val { + val: TheEnum::Tuple(-123, true) + }, + toml::from_str("val = { Tuple = { 0 = -123, 1 = true } }").unwrap() + ); + } + + #[test] + fn from_dotted_table() { + assert_eq!( + TheEnum::Tuple(-123, true), + toml::from_str( + r#"[Tuple] + 0 = -123 + 1 = true + "# + ) + .unwrap() + ); + } +} + +mod enum_newtype { + use super::*; + + #[test] + fn from_inline_table() { + assert_eq!( + TheEnum::NewType("value".to_string()), + toml::from_str(r#"{ NewType = "value" }"#).unwrap() + ); + assert_eq!( + Val { + val: TheEnum::NewType("value".to_string()), + }, + toml::from_str(r#"val = { NewType = "value" }"#).unwrap() + ); + } + + #[test] + #[ignore = "Unimplemented: https://github.com/alexcrichton/toml-rs/pull/264#issuecomment-431707209"] + fn from_dotted_table() { + assert_eq!( + TheEnum::NewType("value".to_string()), + toml::from_str(r#"NewType = "value""#).unwrap() + ); + assert_eq!( + Val { + val: TheEnum::NewType("value".to_string()), + }, + toml::from_str( + r#"[val] + NewType = "value" + "# + ) + .unwrap() + ); + } +} + +mod enum_struct { + use super::*; + + #[test] + fn from_inline_table() { + assert_eq!( + TheEnum::Struct { value: -123 }, + toml::from_str("{ Struct = { value = -123 } }").unwrap() + ); + assert_eq!( + Val { + val: TheEnum::Struct { value: -123 } + }, + toml::from_str("val = { Struct = { value = -123 } }").unwrap() + ); + } + + #[test] + fn from_dotted_table() { + assert_eq!( + TheEnum::Struct { value: -123 }, + toml::from_str( + r#"[Struct] + value = -123 + "# + ) + .unwrap() + ); + } +} + +mod enum_array { + use super::*; + + #[test] + fn from_inline_tables() { + let toml_str = r#" + enums = [ + { Plain = {} }, + { Tuple = { 0 = -123, 1 = true } }, + { NewType = "value" }, + { Struct = { value = -123 } } + ]"#; + assert_eq!( + Multi { + enums: vec![ + TheEnum::Plain, + TheEnum::Tuple(-123, true), + TheEnum::NewType("value".to_string()), + TheEnum::Struct { value: -123 }, + ] + }, + toml::from_str(toml_str).unwrap() + ); + } + + #[test] + #[ignore = "Unimplemented: https://github.com/alexcrichton/toml-rs/pull/264#issuecomment-431707209"] + fn from_dotted_table() { + let toml_str = r#"[[enums]] + Plain = {} + + [[enums]] + Tuple = { 0 = -123, 1 = true } + + [[enums]] + NewType = "value" + + [[enums]] + Struct = { value = -123 } + "#; + assert_eq!( + Multi { + enums: vec![ + TheEnum::Plain, + TheEnum::Tuple(-123, true), + TheEnum::NewType("value".to_string()), + TheEnum::Struct { value: -123 }, + ] + }, + toml::from_str(toml_str).unwrap() + ); + } +} diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ucd-util/.cargo-checksum.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ucd-util/.cargo-checksum.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ucd-util/.cargo-checksum.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ucd-util/.cargo-checksum.json 2019-01-04 19:47:55.000000000 +0000 @@ -1 +1 @@ -{"files":{".cargo_vcs_info.json":"c359910ae0ef93cd22fc34dc292ece8453bbf55cdce7ab9a3f65abba7672f83d","Cargo.toml":"7866151e6608ddd0d0c661abacc8ec55b92b3cfc0abce60a60fc6fe641f92911","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"0f96a83840e146e43c0ec96a22ec1f392e0680e6c1226e6f3ba87e0740af850f","README.md":"147712a0aa07cb69e3635ce7a0e8cee2bc45d35988a7af75d352ee18b4cdf86f","src/hangul.rs":"304c4986a9d9ae2da04a96727294cede38dba412acdb5d70c470ff51627e63ee","src/ideograph.rs":"e14e315a6c800e7962564eeb0c26e1a000f7f90c518aa98b06d7fba3124ec8a7","src/lib.rs":"234fdc5d7d94c4a184fe482ffc28d4f2994905375e4a16a9e011ea7f7df3241c","src/name.rs":"0a772683cf2eb13887ad49207b7241a6c10ffcc9983666f50b3b62e42acdc8d8","src/property.rs":"ff22f15d83bb0d96049d8bd6fef5fdb07d71a612c77cb3fd434f528f01ef953f","src/unicode_tables/jamo_short_name.rs":"f57fc9b5855d855321491b71e4c15d6034af9464e2e788f1739d81665de9af9f","src/unicode_tables/mod.rs":"4aad26e2df3b9611dc7906a814e3dc442b7ca3928ccdd6e2a31173d5e7dbf677","src/unicode_tables/property_names.rs":"3d1a6a69fb2780089e30919504f3b8314c71847bc89be24b98bc3fa96a5e1567","src/unicode_tables/property_values.rs":"cb949a5fa7a6ede35017c544342dabe2d7c91bc8dd64147a6b8a9d693f98751b"},"package":"d0f8bfa9ff0cadcd210129ad9d2c5f145c13e9ced3d3e5d948a6213487d52444"} \ No newline at end of file +{"files":{".cargo_vcs_info.json":"4bcc047b52e482ea954a9fcf1edfd610f23540cb554279ff141d8afe5e8ed7f8","Cargo.toml":"efbc68d846f42094af3cd26bcd17ef969f6816c00a6d5fa41bbaa9da6671bf66","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"0f96a83840e146e43c0ec96a22ec1f392e0680e6c1226e6f3ba87e0740af850f","LICENSE-UNICODE":"ea8df489e83b7674d5c9d50c320bec3b15d2e2eeb7a3a8879a666d91e5640c16","README.md":"fa29344200b6e865c65839cde7951da405b31c34bbcba554a7a2c78a3f35f410","src/hangul.rs":"304c4986a9d9ae2da04a96727294cede38dba412acdb5d70c470ff51627e63ee","src/ideograph.rs":"e14e315a6c800e7962564eeb0c26e1a000f7f90c518aa98b06d7fba3124ec8a7","src/lib.rs":"234fdc5d7d94c4a184fe482ffc28d4f2994905375e4a16a9e011ea7f7df3241c","src/name.rs":"0a772683cf2eb13887ad49207b7241a6c10ffcc9983666f50b3b62e42acdc8d8","src/property.rs":"ff22f15d83bb0d96049d8bd6fef5fdb07d71a612c77cb3fd434f528f01ef953f","src/unicode_tables/jamo_short_name.rs":"f57fc9b5855d855321491b71e4c15d6034af9464e2e788f1739d81665de9af9f","src/unicode_tables/mod.rs":"4aad26e2df3b9611dc7906a814e3dc442b7ca3928ccdd6e2a31173d5e7dbf677","src/unicode_tables/property_names.rs":"3d1a6a69fb2780089e30919504f3b8314c71847bc89be24b98bc3fa96a5e1567","src/unicode_tables/property_values.rs":"cb949a5fa7a6ede35017c544342dabe2d7c91bc8dd64147a6b8a9d693f98751b"},"package":"535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86"} \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ucd-util/Cargo.toml distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ucd-util/Cargo.toml --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ucd-util/Cargo.toml 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ucd-util/Cargo.toml 2019-01-04 19:47:55.000000000 +0000 @@ -12,7 +12,7 @@ [package] name = "ucd-util" -version = "0.1.2" +version = "0.1.3" authors = ["Andrew Gallant <jamslam@gmail.com>"] description = "A small utility library for working with the Unicode character database.\n" homepage = "https://github.com/BurntSushi/ucd-generate" diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ucd-util/.cargo_vcs_info.json distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ucd-util/.cargo_vcs_info.json --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ucd-util/.cargo_vcs_info.json 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ucd-util/.cargo_vcs_info.json 2019-01-04 19:47:55.000000000 +0000 @@ -1,5 +1,5 @@ { "git": { - "sha1": "bbd9ad59c7d83e68f3da371aab79793ff4e58911" + "sha1": "22beb628882e699882620abb8de90eb637473341" } } diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ucd-util/LICENSE-UNICODE distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ucd-util/LICENSE-UNICODE --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ucd-util/LICENSE-UNICODE 1970-01-01 00:00:00.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ucd-util/LICENSE-UNICODE 2019-01-04 19:47:55.000000000 +0000 @@ -0,0 +1,57 @@ +UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE + +Unicode Data Files include all data files under the directories +http://www.unicode.org/Public/, http://www.unicode.org/reports/, +http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and +http://www.unicode.org/utility/trac/browser/. + +Unicode Data Files do not include PDF online code charts under the +directory http://www.unicode.org/Public/. + +Software includes any source code published in the Unicode Standard +or under the directories +http://www.unicode.org/Public/, http://www.unicode.org/reports/, +http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and +http://www.unicode.org/utility/trac/browser/. + +NOTICE TO USER: Carefully read the following legal agreement. +BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S +DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), +YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE +TERMS AND CONDITIONS OF THIS AGREEMENT. +IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE +THE DATA FILES OR SOFTWARE. + +COPYRIGHT AND PERMISSION NOTICE + +Copyright © 1991-2018 Unicode, Inc. All rights reserved. +Distributed under the Terms of Use in http://www.unicode.org/copyright.html. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Unicode data files and any associated documentation +(the "Data Files") or Unicode software and any associated documentation +(the "Software") to deal in the Data Files or Software +without restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, and/or sell copies of +the Data Files or Software, and to permit persons to whom the Data Files +or Software are furnished to do so, provided that either +(a) this copyright and permission notice appear with all copies +of the Data Files or Software, or +(b) this copyright and permission notice appear in associated +Documentation. + +THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS +NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL 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 THE DATA FILES OR SOFTWARE. + +Except as contained in this notice, the name of a copyright holder +shall not be used in advertising or otherwise to promote the sale, +use or other dealings in these Data Files or Software without prior +written authorization of the copyright holder. \ No newline at end of file diff -Nru distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ucd-util/README.md distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ucd-util/README.md --- distinst-0.3.2~1543356464~18.10~ebabaeb~dev/=unpacked-tar1=/ucd-util/README.md 2018-11-27 22:25:51.000000000 +0000 +++ distinst-0.3.2~1546629268~18.10~d20fe0c~dev/=unpacked-tar1=/ucd-util/README.md 2019-01-04 19:47:55.000000000 +0000 @@ -21,3 +21,7 @@ * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) at your option. + +The data in [`src/unicode_tables/`](src/unicode_tables) is licensed inder the Unicode License +Agreement ([LICENSE-UNICODE](LICENSE-UNICODE) or +http://www.unicode.org/copyright.html#License). Binary files /tmp/tmpjmdrww/9AgRxgBdHx/distinst-0.3.2~1543356464~18.10~ebabaeb~dev/vendor.tar.xz and /tmp/tmpjmdrww/Mvxq06jmer/distinst-0.3.2~1546629268~18.10~d20fe0c~dev/vendor.tar.xz differ