# SPDX-License-Identifier: CC0-1.0 language = 'Ruby' display = 'Ruby 3.3 (truffleruby 25.0.0)' license = [ { name = '!License-28', url = 'https://www.oracle.com/downloads/licenses/graal-free-license.html' }, # default gems { name = 'Ruby', url = 'https://rubygems.org/gems/abbrev' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/abbrev' }, { name = 'Ruby', url = 'https://rubygems.org/gems/base64' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/base64' }, { name = 'Ruby', url = 'https://rubygems.org/gems/benchmark' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/benchmark' }, { name = 'Ruby', url = 'https://rubygems.org/gems/bigdecimal' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/bigdecimal' }, { name = 'MIT', url = 'https://rubygems.org/gems/bundler' }, { name = 'Ruby', url = 'https://rubygems.org/gems/cgi' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/cgi' }, { name = 'Ruby', url = 'https://rubygems.org/gems/csv' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/csv' }, { name = 'Ruby', url = 'https://rubygems.org/gems/date' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/date' }, { name = 'Ruby', url = 'https://rubygems.org/gems/debug' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/debug' }, { name = 'Ruby', url = 'https://rubygems.org/gems/delegate' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/delegate' }, { name = 'MIT', url = 'https://rubygems.org/gems/did_you_mean' }, { name = 'Ruby', url = 'https://rubygems.org/gems/digest' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/digest' }, { name = 'Ruby', url = 'https://rubygems.org/gems/drb' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/drb' }, { name = 'Ruby', url = 'https://rubygems.org/gems/english' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/english' }, { name = 'Ruby', url = 'https://rubygems.org/gems/erb' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/erb' }, { name = 'MIT', url = 'https://rubygems.org/gems/error_highlight' }, { name = 'Ruby', url = 'https://rubygems.org/gems/etc' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/etc' }, { name = 'Ruby', url = 'https://rubygems.org/gems/fcntl' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/fcntl' }, { name = 'Ruby', url = 'https://rubygems.org/gems/fiddle' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/fiddle' }, { name = 'Ruby', url = 'https://rubygems.org/gems/fileutils' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/fileutils' }, { name = 'Ruby', url = 'https://rubygems.org/gems/find' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/find' }, { name = 'Ruby', url = 'https://rubygems.org/gems/forwardable' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/forwardable' }, { name = 'Ruby', url = 'https://rubygems.org/gems/getoptlong' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/getoptlong' }, { name = 'Ruby', url = 'https://rubygems.org/gems/io-console' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/io-console' }, { name = 'Ruby', url = 'https://rubygems.org/gems/io-nonblock' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/io-nonblock' }, { name = 'Ruby', url = 'https://rubygems.org/gems/io-wait' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/io-wait' }, { name = 'Ruby', url = 'https://rubygems.org/gems/ipaddr' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/ipaddr' }, { name = 'Ruby', url = 'https://rubygems.org/gems/irb' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/irb' }, { name = 'Ruby', url = 'https://rubygems.org/gems/json' }, { name = 'Ruby', url = 'https://rubygems.org/gems/logger' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/logger' }, { name = 'Ruby', url = 'https://rubygems.org/gems/matrix' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/matrix' }, { name = 'MIT', url = 'https://rubygems.org/gems/minitest' }, { name = 'Ruby', url = 'https://rubygems.org/gems/mutex_m' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/mutex_m' }, { name = 'Ruby', url = 'https://rubygems.org/gems/net-ftp' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/net-ftp' }, { name = 'Ruby', url = 'https://rubygems.org/gems/net-http' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/net-http' }, { name = 'Ruby', url = 'https://rubygems.org/gems/net-imap' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/net-imap' }, { name = 'Ruby', url = 'https://rubygems.org/gems/net-pop' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/net-pop' }, { name = 'Ruby', url = 'https://rubygems.org/gems/net-protocol' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/net-protocol' }, { name = 'Ruby', url = 'https://rubygems.org/gems/net-smtp' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/net-smtp' }, { name = 'Ruby', url = 'https://rubygems.org/gems/nkf' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/nkf' }, { name = 'Ruby', url = 'https://rubygems.org/gems/observer' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/observer' }, { name = 'Ruby', url = 'https://rubygems.org/gems/open-uri' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/open-uri' }, { name = 'Ruby', url = 'https://rubygems.org/gems/open3' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/open3' }, { name = 'Ruby', url = 'https://rubygems.org/gems/openssl' }, { name = 'Ruby', url = 'https://rubygems.org/gems/optparse' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/optparse' }, { name = 'Ruby', url = 'https://rubygems.org/gems/ostruct' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/ostruct' }, { name = 'Ruby', url = 'https://rubygems.org/gems/pathname' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/pathname' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/power_assert' }, { name = 'Ruby', url = 'https://rubygems.org/gems/power_assert' }, { name = 'Ruby', url = 'https://rubygems.org/gems/pp' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/pp' }, { name = 'Ruby', url = 'https://rubygems.org/gems/prettyprint' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/prettyprint' }, { name = 'Ruby', url = 'https://rubygems.org/gems/prime' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/prime' }, { name = 'MIT', url = 'https://rubygems.org/gems/prism' }, { name = 'Ruby', url = 'https://rubygems.org/gems/pstore' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/pstore' }, { name = 'MIT', url = 'https://rubygems.org/gems/psych' }, { name = 'Ruby', url = 'https://rubygems.org/gems/racc' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/racc' }, { name = 'MIT', url = 'https://rubygems.org/gems/rake' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/rbs' }, { name = 'Ruby', url = 'https://rubygems.org/gems/rbs' }, { name = 'Ruby', url = 'https://rubygems.org/gems/rdoc' }, { name = 'Ruby', url = 'https://rubygems.org/gems/readline' }, { name = 'Ruby', url = 'https://rubygems.org/gems/reline' }, { name = 'Ruby', url = 'https://rubygems.org/gems/resolv' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/resolv' }, { name = 'Ruby', url = 'https://rubygems.org/gems/resolv-replace' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/resolv-replace' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/rexml' }, { name = 'Ruby', url = 'https://rubygems.org/gems/rinda' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/rinda' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/rss' }, { name = 'Ruby', url = 'https://rubygems.org/gems/ruby2_keywords' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/ruby2_keywords' }, { name = 'Ruby', url = 'https://rubygems.org/gems/securerandom' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/securerandom' }, { name = 'Ruby', url = 'https://rubygems.org/gems/set' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/set' }, { name = 'Ruby', url = 'https://rubygems.org/gems/shellwords' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/shellwords' }, { name = 'Ruby', url = 'https://rubygems.org/gems/singleton' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/singleton' }, { name = 'Ruby', url = 'https://rubygems.org/gems/stringio' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/stringio' }, { name = 'Ruby', url = 'https://rubygems.org/gems/strscan' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/strscan' }, { name = 'MIT', url = 'https://rubygems.org/gems/syntax_suggest' }, { name = 'Ruby', url = 'https://rubygems.org/gems/syslog' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/syslog' }, { name = 'Ruby', url = 'https://rubygems.org/gems/tempfile' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/tempfile' }, { name = 'Ruby', url = 'https://rubygems.org/gems/test-unit' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/test-unit' }, { name = 'PSF-2.0', url = 'https://rubygems.org/gems/test-unit' }, { name = 'Ruby', url = 'https://rubygems.org/gems/time' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/time' }, { name = 'Ruby', url = 'https://rubygems.org/gems/timeout' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/timeout' }, { name = 'Ruby', url = 'https://rubygems.org/gems/tmpdir' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/tmpdir' }, { name = 'Ruby', url = 'https://rubygems.org/gems/tsort' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/tsort' }, { name = 'Ruby', url = 'https://rubygems.org/gems/un' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/un' }, { name = 'Ruby', url = 'https://rubygems.org/gems/uri' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/uri' }, { name = 'Ruby', url = 'https://rubygems.org/gems/weakref' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/weakref' }, { name = 'Ruby', url = 'https://rubygems.org/gems/yaml' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/yaml' }, { name = 'Ruby', url = 'https://rubygems.org/gems/zlib' }, { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/zlib' }, ] library.ac-library-rb = { license = [ { name = 'CC0-1.0', url = 'https://rubygems.org/gems/ac-library-rb' }, ], version = '1.2.0' } library.backports = { license = [ { name = 'MIT', url = 'https://rubygems.org/gems/backports' }, ], indirect = true } library.bit_utils = { license = [ { name = 'MIT', url = 'https://rubygems.org/gems/bit_utils' }, ], version = '0.1.2' } library.bitarray = { license = [ { name = 'MIT', url = 'https://rubygems.org/gems/bitarray' }, ], version = '1.3.1' } library.concurrent-ruby = { license = [ { name = 'MIT', url = 'https://rubygems.org/gems/concurrent-ruby' }, ], indirect = true } library.faster_prime = { license = [ { name = 'MIT', url = 'https://github.com/mame/faster_prime' }, ], version = '1.0.2' } library.ffi = { license = [ { name = 'BSD-3-Clause', url = 'https://rubygems.org/gems/ffi' }, ], indirect = true } library.ffi-geos = { license = [ { name = 'MIT', url = 'https://rubygems.org/gems/ffi-geos' }, ], version = '2.5.0' } library.function_module = { license = [ { name = 'MIT', url = 'https://rubygems.org/gems/function_module' }, ], indirect = true } library.immutable-ruby = { license = [ { name = 'MIT', url = 'https://rubygems.org/gems/immutable-ruby' }, ], version = '0.2.0' } library.lightgbm = { license = [ { name = 'MIT', url = 'https://rubygems.org/gems/lightgbm' }, ], version = '0.4.3' } library.or-tools = { license = [ { name = 'Apache-2.0', url = 'https://rubygems.org/gems/or-tools' }, ], version = '0.16.0' } library.pairing_heap = { license = [ { name = 'MIT', url = 'https://rubygems.org/gems/pairing_heap' }, ], indirect = true } library.rbtree = { license = [ { name = 'MIT', url = 'https://rubygems.org/gems/rbtree' }, ], version = '0.4.6' } library.rgl = { license = [ { name = 'Ruby', url = 'https://rubygems.org/gems/rgl' }, ], version = '0.6.6' } library.rice = { license = [ { name = 'MIT', url = 'https://rubygems.org/gems/rice' }, ], indirect = true } library.sorted_containers = { license = [ { name = 'MIT', url = 'https://rubygems.org/gems/sorted_containers' }, ], version = '1.1.0' } library.sorted_set = { license = [ { name = 'BSD-2-Clause', url = 'https://rubygems.org/gems/sorted_set' }, ], version = '1.0.3' } library.stream = { license = [ { name = 'Ruby', url = 'https://rubygems.org/gems/stream' }, ], indirect = true } library.torch-rb = { license = [ { name = 'BSD-3-Clause', url = 'https://rubygems.org/gems/torch-rb' }, ], version = '0.21.0' } library.z3 = { license = [ { name = 'MIT', url = 'https://rubygems.org/gems/z3' }, ], version = '0.0.20230311' } filename = 'Main.rb' install = ''' AC_GRAAL_VERSION=25.0.0 sudo apt-get update sudo apt-get install -y libssl-dev libyaml-dev zlib1g-dev libz3-dev libgeos-dev pushd /tmp wget -q -O truffleruby.tar.gz https://github.com/oracle/truffleruby/releases/download/graal-${AC_GRAAL_VERSION}/truffleruby-${AC_GRAAL_VERSION}-linux-amd64.tar.gz mkdir -p $HOME/.rubies/truffleruby tar -C $HOME/.rubies/truffleruby --strip-components=1 -xf truffleruby.tar.gz $HOME/.rubies/truffleruby/lib/truffle/post_install_hook.sh export PATH=$HOME/.rubies/truffleruby/bin:$PATH AC_LIBTORCH_VERSION="2.8.0" wget -q -O libtorch.zip https://download.pytorch.org/libtorch/cpu/libtorch-shared-with-deps-"$AC_LIBTORCH_VERSION"%2Bcpu.zip unzip -q libtorch.zip pushd libtorch sudo cp -dR include /usr/local/ sudo cp -dR lib /usr/local/ echo /usr/local/lib/libtorch | sudo tee /etc/ld.so.conf.d/libtorch.conf echo "libtorch $AC_LIBTORCH_VERSION" >> $HOME/library_version popd popd # list default gems for license information gem list -q --no-versions > /tmp/default-gems # create a script to run ruby specifying stack and heap size cat << 'EOF' > ruby.sh #! /bin/sh stack_size=$(($1 * 25 / 100)) heap_size=$(($1 * 90 / 100)) ruby --vm.Xmx"$heap_size"M --vm.Xss"$stack_size"M Main.rb EOF # install libraries export MAKEFLAGS="-j$(nproc)" gem install -N \ ac-library-rb:1.2.0 \ bit_utils:0.1.2 \ bitarray:1.3.1 \ faster_prime:1.0.2 \ ffi-geos:2.5.0 \ immutable-ruby:0.2.0 \ lightgbm:0.4.3 \ or-tools:0.16.0 \ rbtree:0.4.6 \ rgl:0.6.6 \ sorted_containers:1.1.0 \ sorted_set:1.0.3 \ torch-rb:0.21.0 \ z3:0.0.20230311 \ ''' compile = ''' export PATH=$HOME/.rubies/truffleruby/bin:$PATH ruby -c Main.rb && touch syntax_ok && ruby Main.rb ONLINE_JUDGE 2> /dev/null ''' object = 'syntax_ok' environment.PATH = "/home/runner/.rubies/truffleruby/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" execution = [ 'sh', 'ruby.sh', '{memory:mb}', ]