ob64 0.1.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/main.yml +20 -4
- data/.gitignore +2 -0
- data/CHANGELOG.md +18 -1
- data/{LICENSE.txt → LICENSE} +1 -1
- data/README.md +34 -2
- data/benchmark.rb +42 -3
- data/ext/ob64/ob64_ext.c +5 -3
- data/lib/ob64/core_ext.rb +2 -0
- data/lib/ob64/version.rb +1 -1
- data/lib/ob64.rb +52 -0
- data/ob64.gemspec +12 -6
- data/vendor/libbase64/.gitignore +12 -0
- data/vendor/libbase64/.travis.yml +71 -0
- data/vendor/libbase64/CMakeLists.txt +264 -0
- data/vendor/libbase64/LICENSE +28 -0
- data/vendor/libbase64/Makefile +93 -0
- data/vendor/libbase64/README.md +474 -0
- data/vendor/libbase64/base64-benchmarks.png +0 -0
- data/vendor/libbase64/bin/base64.c +132 -0
- data/vendor/libbase64/cmake/Modules/TargetArch.cmake +29 -0
- data/vendor/libbase64/cmake/Modules/TargetSIMDInstructionSet.cmake +34 -0
- data/vendor/libbase64/cmake/base64-config.cmake.in +5 -0
- data/vendor/libbase64/cmake/config.h.in +25 -0
- data/vendor/libbase64/cmake/test-arch.c +35 -0
- data/vendor/libbase64/include/libbase64.h +145 -0
- data/vendor/libbase64/lib/arch/avx/codec.c +42 -0
- data/vendor/libbase64/lib/arch/avx2/codec.c +42 -0
- data/vendor/libbase64/lib/arch/avx2/dec_loop.c +110 -0
- data/vendor/libbase64/lib/arch/avx2/dec_reshuffle.c +34 -0
- data/vendor/libbase64/lib/arch/avx2/enc_loop.c +89 -0
- data/vendor/libbase64/lib/arch/avx2/enc_reshuffle.c +83 -0
- data/vendor/libbase64/lib/arch/avx2/enc_translate.c +30 -0
- data/vendor/libbase64/lib/arch/generic/32/dec_loop.c +86 -0
- data/vendor/libbase64/lib/arch/generic/32/enc_loop.c +73 -0
- data/vendor/libbase64/lib/arch/generic/64/enc_loop.c +77 -0
- data/vendor/libbase64/lib/arch/generic/codec.c +39 -0
- data/vendor/libbase64/lib/arch/generic/dec_head.c +37 -0
- data/vendor/libbase64/lib/arch/generic/dec_tail.c +91 -0
- data/vendor/libbase64/lib/arch/generic/enc_head.c +24 -0
- data/vendor/libbase64/lib/arch/generic/enc_tail.c +34 -0
- data/vendor/libbase64/lib/arch/neon32/codec.c +72 -0
- data/vendor/libbase64/lib/arch/neon32/dec_loop.c +106 -0
- data/vendor/libbase64/lib/arch/neon32/enc_loop.c +58 -0
- data/vendor/libbase64/lib/arch/neon32/enc_reshuffle.c +54 -0
- data/vendor/libbase64/lib/arch/neon32/enc_translate.c +57 -0
- data/vendor/libbase64/lib/arch/neon64/codec.c +70 -0
- data/vendor/libbase64/lib/arch/neon64/dec_loop.c +129 -0
- data/vendor/libbase64/lib/arch/neon64/enc_loop.c +66 -0
- data/vendor/libbase64/lib/arch/neon64/enc_reshuffle.c +54 -0
- data/vendor/libbase64/lib/arch/sse41/codec.c +42 -0
- data/vendor/libbase64/lib/arch/sse42/codec.c +42 -0
- data/vendor/libbase64/lib/arch/ssse3/codec.c +42 -0
- data/vendor/libbase64/lib/arch/ssse3/dec_loop.c +173 -0
- data/vendor/libbase64/lib/arch/ssse3/dec_reshuffle.c +33 -0
- data/vendor/libbase64/lib/arch/ssse3/enc_loop.c +67 -0
- data/vendor/libbase64/lib/arch/ssse3/enc_reshuffle.c +48 -0
- data/vendor/libbase64/lib/arch/ssse3/enc_translate.c +33 -0
- data/vendor/libbase64/lib/codec_choose.c +281 -0
- data/vendor/libbase64/lib/codecs.h +65 -0
- data/vendor/libbase64/lib/env.h +67 -0
- data/vendor/libbase64/lib/exports.txt +7 -0
- data/vendor/libbase64/lib/lib.c +164 -0
- data/vendor/libbase64/lib/lib_openmp.c +149 -0
- data/vendor/libbase64/lib/tables/.gitignore +1 -0
- data/vendor/libbase64/lib/tables/Makefile +17 -0
- data/vendor/libbase64/lib/tables/table_dec_32bit.h +393 -0
- data/vendor/libbase64/lib/tables/table_enc_12bit.h +1031 -0
- data/vendor/libbase64/lib/tables/table_enc_12bit.py +45 -0
- data/vendor/libbase64/lib/tables/table_generator.c +184 -0
- data/vendor/libbase64/lib/tables/tables.c +40 -0
- data/vendor/libbase64/lib/tables/tables.h +23 -0
- metadata +67 -6
- data/.byebug_history +0 -72
- data/.envrc +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf866c04fac9e6cf9d4f8c98741f17e2109e0bd5fd545d2d0482b4c28a6dd61a
|
4
|
+
data.tar.gz: e6ee12aebbece01e6e1ce8181aafdfe9b32b7fbd2d1307c07d7af02d46b73f4e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 280e35ae08985662cc05a26c5f30ef5e9897b8d7a641a83e7a0bc8bf91a1790dbf8c36f5129ff7dface1e5eeb8d286ef43387688202b26a254a6bad860faa65d
|
7
|
+
data.tar.gz: f246fed35467cce900ffb7664ca62012c6d0e7bda5c2180a99814fba558331f83ab33d21a1868a0d850fa39b59eec223e39445584703f0302f339e159ce9be83
|
data/.github/workflows/main.yml
CHANGED
@@ -10,9 +10,25 @@ jobs:
|
|
10
10
|
ruby: ['2.5', '2.6', '2.7', '3.0']
|
11
11
|
runs-on: ubuntu-latest
|
12
12
|
steps:
|
13
|
-
-
|
14
|
-
|
13
|
+
- name: repository checkout
|
14
|
+
uses: actions/checkout@v2
|
15
|
+
with:
|
16
|
+
submodules: true
|
17
|
+
|
18
|
+
- name: load ruby
|
19
|
+
uses: ruby/setup-ruby@v1
|
15
20
|
with:
|
16
21
|
ruby-version: ${{ matrix.ruby }}
|
17
|
-
|
18
|
-
-
|
22
|
+
|
23
|
+
- name: RubyGems, Bundler Update
|
24
|
+
run: gem update --system --no-document --conservative
|
25
|
+
|
26
|
+
- name: bundle install
|
27
|
+
run: bundle install --path .bundle/gems --without development
|
28
|
+
|
29
|
+
- name: compile
|
30
|
+
run: bundle exec rake compile
|
31
|
+
|
32
|
+
- name: test
|
33
|
+
run: bundle exec rake spec
|
34
|
+
timeout-minutes: 10
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,22 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
|
3
|
-
|
3
|
+
# [0.5.0] - 2021-09-29
|
4
|
+
|
5
|
+
- Ignore all previous versions as they weren't including libbase64 (:
|
6
|
+
|
7
|
+
# [0.4.0] - 2021-09-28
|
8
|
+
|
9
|
+
- Detail gemspec. Ignore.
|
10
|
+
|
11
|
+
## [0.3.0] - 2021-09-28
|
12
|
+
|
13
|
+
- Raise error when attempting to get the base64-decoded length of an invalid (in
|
14
|
+
length) base64-encoded payload.
|
15
|
+
|
16
|
+
## [0.2.0] - 2021-09-26
|
17
|
+
|
18
|
+
- Add yard documention
|
19
|
+
|
20
|
+
## [0.1.0] - 2021-09-25
|
4
21
|
|
5
22
|
- Initial release
|
data/{LICENSE.txt → LICENSE}
RENAMED
data/README.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# Ob64 gem
|
2
2
|
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/ob64.svg)](http://rubygems.org/gems/ob64)
|
4
|
+
[![Build Status](https://github.com/jcmfernandes/ob64/workflows/Test/badge.svg?branch=master&event=push)](https://github.com/jcmfernandes/ob64/actions?query=workflow:Test)
|
5
|
+
[![Yard Docs](https://img.shields.io/badge/yard-docs-blue.svg)](http://www.rubydoc.info/gems/ob64/0.5.0)
|
6
|
+
|
3
7
|
A *fast* Base64 encoder and decoder as a Ruby gem.
|
4
8
|
|
5
9
|
How fast? Try it yourself, execute:
|
@@ -39,7 +43,6 @@ require "ob64"
|
|
39
43
|
|
40
44
|
bin1 = "This is data!"
|
41
45
|
string = Ob64.encode(bin1)
|
42
|
-
|
43
46
|
# string = "VGhpcyBpcyBkYXRhIQ=="
|
44
47
|
|
45
48
|
bin2 = Ob64.decode(string)
|
@@ -82,7 +85,36 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/jcmfer
|
|
82
85
|
|
83
86
|
## License
|
84
87
|
|
85
|
-
|
88
|
+
Released under the MIT License. See [{file:LICENSE}](LICENSE).
|
89
|
+
|
90
|
+
Copyright (c) 2021, João Fernandes
|
91
|
+
|
92
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
93
|
+
of this software and associated documentation files (the "Software"), to deal
|
94
|
+
in the Software without restriction, including without limitation the rights
|
95
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
96
|
+
copies of the Software, and to permit persons to whom the Software is
|
97
|
+
furnished to do so, subject to the following conditions:
|
98
|
+
|
99
|
+
The above copyright notice and this permission notice shall be included in
|
100
|
+
all copies or substantial portions of the Software.
|
101
|
+
|
102
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
103
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
104
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
105
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
106
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
107
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
108
|
+
THE SOFTWARE.
|
109
|
+
|
110
|
+
### libbase64
|
111
|
+
|
112
|
+
Released under the BSD 2-clause License. See [LICENSE](https://github.com/jcmfernandes/base64-cmake/blob/feature/cmake/LICENSE).
|
113
|
+
|
114
|
+
Copyright (c) 2005-2007, Nick Galbreath
|
115
|
+
Copyright (c) 2013-2019, Alfred Klomp
|
116
|
+
Copyright (c) 2015-2017, Wojciech Mula
|
117
|
+
Copyright (c) 2016-2017, Matthieu Darbois
|
86
118
|
|
87
119
|
## Code of Conduct
|
88
120
|
|
data/benchmark.rb
CHANGED
@@ -4,6 +4,11 @@ require "securerandom"
|
|
4
4
|
require "ob64"
|
5
5
|
require "base64"
|
6
6
|
|
7
|
+
$run_encode_benchmark = true
|
8
|
+
$run_decode_benchmark = true
|
9
|
+
$run_urlsafe_encode_benchmark = true
|
10
|
+
$run_urlsafe_decode_benchmark = true
|
11
|
+
|
7
12
|
def to_size(bytes)
|
8
13
|
bytes >= 2**20 ? "#{bytes / 2**20} MB" : "#{bytes / 2**10} kB"
|
9
14
|
end
|
@@ -59,7 +64,7 @@ encode_benchmark do
|
|
59
64
|
|
60
65
|
x.compare!
|
61
66
|
end
|
62
|
-
end
|
67
|
+
end if $run_encode_benchmark
|
63
68
|
|
64
69
|
decode_benchmark do
|
65
70
|
Benchmark.ips do |x|
|
@@ -71,9 +76,43 @@ decode_benchmark do
|
|
71
76
|
end
|
72
77
|
|
73
78
|
x.report("ob64 .decode") do
|
74
|
-
Ob64.
|
79
|
+
Ob64.decode($encoded)
|
75
80
|
end
|
76
81
|
|
77
82
|
x.compare!
|
78
83
|
end
|
79
|
-
end
|
84
|
+
end if $run_decode_benchmark
|
85
|
+
|
86
|
+
encode_benchmark do
|
87
|
+
Benchmark.ips do |x|
|
88
|
+
x.time = 5
|
89
|
+
x.warmup = 2
|
90
|
+
|
91
|
+
x.report("base64 .urlsafe_encode64") do
|
92
|
+
Base64.urlsafe_encode64($unencoded)
|
93
|
+
end
|
94
|
+
|
95
|
+
x.report("ob64 .urlsafe_encode") do
|
96
|
+
Ob64.urlsafe_encode($unencoded)
|
97
|
+
end
|
98
|
+
|
99
|
+
x.compare!
|
100
|
+
end
|
101
|
+
end if $run_urlsafe_encode_benchmark
|
102
|
+
|
103
|
+
decode_benchmark do
|
104
|
+
Benchmark.ips do |x|
|
105
|
+
x.time = 5
|
106
|
+
x.warmup = 2
|
107
|
+
|
108
|
+
x.report("base64 .urlsafe_decode64") do
|
109
|
+
Base64.urlsafe_decode64($encoded)
|
110
|
+
end
|
111
|
+
|
112
|
+
x.report("ob64 .urlsafe_decode") do
|
113
|
+
Ob64.urlsafe_decode($encoded)
|
114
|
+
end
|
115
|
+
|
116
|
+
x.compare!
|
117
|
+
end
|
118
|
+
end if $run_urlsafe_decode_benchmark
|
data/ext/ob64/ob64_ext.c
CHANGED
@@ -69,13 +69,15 @@ size_t __encoded_length_of(VALUE bin, bool withPadding)
|
|
69
69
|
|
70
70
|
size_t __decoded_length_of(VALUE string)
|
71
71
|
{
|
72
|
+
char *string_ptr = StringValuePtr(string);
|
72
73
|
size_t string_len = RSTRING_LEN(string);
|
73
|
-
if (string_len < 2) return 0;
|
74
|
-
|
75
74
|
size_t padding = 0;
|
76
|
-
char* string_ptr = StringValuePtr(string);
|
77
75
|
if (string_ptr[string_len - 1] == '=') padding++;
|
78
76
|
if (string_ptr[string_len - 2] == '=') padding++;
|
79
77
|
|
78
|
+
if ((string_len - padding) % 4 == 1) {
|
79
|
+
rb_raise(rb_eArgError, "invalid base64");
|
80
|
+
}
|
81
|
+
|
80
82
|
return (3 * (string_len - padding)) / 4;
|
81
83
|
}
|
data/lib/ob64/core_ext.rb
CHANGED
data/lib/ob64/version.rb
CHANGED
data/lib/ob64.rb
CHANGED
@@ -3,20 +3,48 @@
|
|
3
3
|
require_relative "ob64/version"
|
4
4
|
require_relative "ob64_ext"
|
5
5
|
|
6
|
+
# Methods for base64-encoding and -decoding strings.
|
6
7
|
module Ob64
|
8
|
+
# The glue between Ruby and libbase64. See +../ext/libbase64/ob64/ob64_ext.c+.
|
9
|
+
module LibBase64; end
|
10
|
+
|
7
11
|
include LibBase64
|
8
12
|
extend LibBase64
|
9
13
|
|
10
14
|
module_function
|
11
15
|
|
16
|
+
# Returns the Base64-encoded version of +bin+.
|
17
|
+
# This method complies with RFC 4648.
|
18
|
+
# No line feeds are added.
|
19
|
+
#
|
20
|
+
# @param bin [String]
|
21
|
+
# @return [String]
|
12
22
|
def encode(bin)
|
13
23
|
__encode(bin)
|
14
24
|
end
|
15
25
|
|
26
|
+
# Returns the Base64-decoded version of +string+.
|
27
|
+
# This method complies with RFC 4648.
|
28
|
+
# ArgumentError is raised if +string+ is incorrectly padded or contains
|
29
|
+
# non-alphabet characters. Note that CR or LF are also rejected.
|
30
|
+
#
|
31
|
+
# @param string [String]
|
32
|
+
# @return [String]
|
33
|
+
# @raise [ArgumentError] if +string+ cannot be decoded
|
16
34
|
def decode(string)
|
17
35
|
__decode(string)
|
18
36
|
end
|
19
37
|
|
38
|
+
# Returns the Base64-encoded version of +bin+.
|
39
|
+
# This method complies with ``Base 64 Encoding with URL and Filename Safe
|
40
|
+
# Alphabet'' in RFC 4648.
|
41
|
+
# The alphabet uses '-' instead of '+' and '_' instead of '/'.
|
42
|
+
# Note that the result can still contain '='.
|
43
|
+
# You can remove the padding by setting +padding+ as false.
|
44
|
+
#
|
45
|
+
# @param bin [String]
|
46
|
+
# @param padding [Boolean] - if the output must be padded
|
47
|
+
# @return [String]
|
20
48
|
def urlsafe_encode(bin, padding: true)
|
21
49
|
string = __encode(bin)
|
22
50
|
string.chomp!("==") || string.chomp!("=") unless padding
|
@@ -24,6 +52,18 @@ module Ob64
|
|
24
52
|
string
|
25
53
|
end
|
26
54
|
|
55
|
+
# Returns the Base64-decoded version of +string+.
|
56
|
+
# This method complies with ``Base 64 Encoding with URL and Filename Safe
|
57
|
+
# Alphabet'' in RFC 4648.
|
58
|
+
# The alphabet uses '-' instead of '+' and '_' instead of '/'.
|
59
|
+
#
|
60
|
+
# The padding character is optional.
|
61
|
+
# This method accepts both correctly-padded and unpadded input.
|
62
|
+
# Note that it still rejects incorrectly-padded input.
|
63
|
+
#
|
64
|
+
# @param string [String]
|
65
|
+
# @return [String]
|
66
|
+
# @raise [ArgumentError] if +string+ cannot be decoded
|
27
67
|
def urlsafe_decode(string)
|
28
68
|
if !string.end_with?("=") && string.length % 4 != 0
|
29
69
|
string = string.ljust((string.length + 3) & ~3, "=")
|
@@ -34,10 +74,22 @@ module Ob64
|
|
34
74
|
__decode(string)
|
35
75
|
end
|
36
76
|
|
77
|
+
# Returns the length of the Base64-encoded version of +bin+.
|
78
|
+
#
|
79
|
+
# @param bin [String]
|
80
|
+
# @param padding [Boolean] - if the Base64-encoded version of +bin+ will be padded
|
81
|
+
# @return [Integer]
|
37
82
|
def encoded_length_of(bin, padding: true)
|
38
83
|
__encoded_length_of(bin, padding)
|
39
84
|
end
|
40
85
|
|
86
|
+
# Returns the length of the Base64-decoded version of +string+.
|
87
|
+
#
|
88
|
+
# ArgumentError is raised if +string+ has an invalid length.
|
89
|
+
#
|
90
|
+
# @param string [String]
|
91
|
+
# @return [Integer]
|
92
|
+
# @raise [ArgumentError] if +string+ has an invalid length
|
41
93
|
def decoded_length_of(string)
|
42
94
|
__decoded_length_of(string)
|
43
95
|
end
|
data/ob64.gemspec
CHANGED
@@ -9,20 +9,26 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.authors = ["João Fernandes"]
|
10
10
|
spec.email = ["joao.fernandes@ist.utl.pt"]
|
11
11
|
spec.homepage = "https://github.com/jcmfernandes/ob64"
|
12
|
-
|
12
|
+
spec.license = "MIT"
|
13
13
|
spec.summary = "A fast Base64 encoder and decoder."
|
14
14
|
spec.description = "A fast Base64 encoder and decoder that makes use of SIMD extensions."
|
15
15
|
|
16
|
-
spec.license = "MIT"
|
17
|
-
spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
|
18
|
-
|
19
|
-
spec.metadata["homepage_uri"] = spec.homepage
|
20
|
-
|
21
16
|
# Specify which files should be added to the gem when it is released.
|
22
17
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
23
18
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
24
19
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
|
20
|
+
end + Dir.chdir(File.join(File.expand_path(__dir__), "vendor", "libbase64")) do
|
21
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }.map! { |f| "vendor/libbase64/#{f}" }
|
25
22
|
end
|
26
23
|
spec.require_paths = ["lib"]
|
27
24
|
spec.extensions = ["ext/ob64/extconf.rb"]
|
25
|
+
|
26
|
+
spec.metadata = {
|
27
|
+
"homepage_uri" => spec.homepage,
|
28
|
+
"changelog_uri" => spec.homepage + "/blob/master/CHANGELOG.md",
|
29
|
+
"documentation_uri" => "https://www.rubydoc.info/gems/ob64/#{spec.version}",
|
30
|
+
"source_code_uri" => spec.homepage + "/tree/v#{spec.version}"
|
31
|
+
}
|
32
|
+
|
33
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
|
28
34
|
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
language: c
|
2
|
+
services: docker
|
3
|
+
|
4
|
+
jobs:
|
5
|
+
allow_failures:
|
6
|
+
- os: osx
|
7
|
+
- arch: ppc64le
|
8
|
+
|
9
|
+
include:
|
10
|
+
- name: linux-amd64-gcc
|
11
|
+
os: linux
|
12
|
+
arch: amd64
|
13
|
+
compiler: gcc
|
14
|
+
script: test/ci/amd64.sh
|
15
|
+
|
16
|
+
- name: linux-amd64-gcc +openmp
|
17
|
+
os: linux
|
18
|
+
arch: amd64
|
19
|
+
compiler: gcc
|
20
|
+
env: OPENMP=1 OMP_NUM_THREADS=4
|
21
|
+
script: test/ci/amd64.sh
|
22
|
+
|
23
|
+
- name: linux-amd64-clang
|
24
|
+
os: linux
|
25
|
+
arch: amd64
|
26
|
+
compiler: clang
|
27
|
+
script: test/ci/amd64.sh
|
28
|
+
|
29
|
+
- name: linux-arm32-gcc
|
30
|
+
compiler: gcc
|
31
|
+
script: test/ci/docker-arm32.sh
|
32
|
+
|
33
|
+
- name: linux-arm32-clang
|
34
|
+
compiler: clang
|
35
|
+
script: test/ci/docker-arm32.sh
|
36
|
+
|
37
|
+
- name: linux-powerpc-gcc
|
38
|
+
compiler: gcc
|
39
|
+
script: test/ci/docker-powerpc.sh
|
40
|
+
|
41
|
+
- name: linux-arm64-gcc
|
42
|
+
os: linux
|
43
|
+
arch: arm64
|
44
|
+
compiler: gcc
|
45
|
+
env: NEON64_CFLAGS="-march=armv8-a"
|
46
|
+
script: test/ci/generic.sh
|
47
|
+
|
48
|
+
- name: linux-arm64-clang
|
49
|
+
os: linux
|
50
|
+
arch: arm64
|
51
|
+
compiler: clang
|
52
|
+
env: NEON64_CFLAGS="-march=armv8-a"
|
53
|
+
script: test/ci/generic.sh
|
54
|
+
|
55
|
+
- name: linux-s390x-gcc
|
56
|
+
os: linux
|
57
|
+
arch: s390x
|
58
|
+
compiler: gcc
|
59
|
+
script: test/ci/generic.sh
|
60
|
+
|
61
|
+
- name: linux-ppc64le-gcc
|
62
|
+
os: linux
|
63
|
+
arch: ppc64le
|
64
|
+
compiler: gcc
|
65
|
+
script: test/ci/generic.sh
|
66
|
+
|
67
|
+
- name: osx-amd64-clang
|
68
|
+
os: osx
|
69
|
+
arch: amd64
|
70
|
+
compiler: clang
|
71
|
+
script: test/ci/amd64.sh
|