ruby-build is a command-line utility that makes it easy to install virtually any version of Ruby, from source.

Overview

ruby-build

ruby-build is a command-line utility that makes it easy to install virtually any version of Ruby, from source.

It is available as a plugin for rbenv that provides the rbenv install command, or as a standalone program.

Installation

# Using Homebrew on macOS
$ brew install ruby-build

# As an rbenv plugin
$ mkdir -p "$(rbenv root)"/plugins
$ git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build

# As a standalone program
$ git clone https://github.com/rbenv/ruby-build.git
$ PREFIX=/usr/local ./ruby-build/install.sh

Upgrading

# Via Homebrew
$ brew update && brew upgrade ruby-build

# As an rbenv plugin
$ git -C "$(rbenv root)"/plugins/ruby-build pull

Usage

Basic Usage

# As an rbenv plugin
$ rbenv install --list                 # lists all available versions of Ruby
$ rbenv install 2.2.0                  # installs Ruby 2.2.0 to ~/.rbenv/versions

# As a standalone program
$ ruby-build --definitions             # lists all available versions of Ruby
$ ruby-build 2.2.0 ~/local/ruby-2.2.0  # installs Ruby 2.2.0 to ~/local/ruby-2.2.0

ruby-build does not check for system dependencies before downloading and attempting to compile the Ruby source. Please ensure that all requisite libraries are available on your system.

Advanced Usage

Custom Build Definitions

If you wish to develop and install a version of Ruby that is not yet supported by ruby-build, you may specify the path to a custom “build definition file” in place of a Ruby version number.

Use the default build definitions as a template for your custom definitions.

Custom Build Configuration

The build process may be configured through the following environment variables:

Variable Function
TMPDIR Where temporary files are stored.
RUBY_BUILD_BUILD_PATH Where sources are downloaded and built. (Default: a timestamped subdirectory of TMPDIR)
RUBY_BUILD_CACHE_PATH Where to cache downloaded package files. (Default: ~/.rbenv/cache if invoked as rbenv plugin)
RUBY_BUILD_HTTP_CLIENT One of aria2c, curl, or wget to use for downloading. (Default: first one found in PATH)
RUBY_BUILD_ARIA2_OPTS Additional options to pass to aria2c for downloading.
RUBY_BUILD_CURL_OPTS Additional options to pass to curl for downloading.
RUBY_BUILD_WGET_OPTS Additional options to pass to wget for downloading.
RUBY_BUILD_MIRROR_URL Custom mirror URL root.
RUBY_BUILD_MIRROR_PACKAGE_URL Custom complete mirror URL (e.g. http://mirror.example.com/package-1.0.0.tar.gz).
RUBY_BUILD_SKIP_MIRROR Bypass the download mirror and fetch all package files from their original URLs.
RUBY_BUILD_ROOT Custom build definition directory. (Default: share/ruby-build)
RUBY_BUILD_DEFINITIONS Additional paths to search for build definitions. (Colon-separated list)
CC Path to the C compiler.
RUBY_CFLAGS Additional CFLAGS options (e.g., to override -O3).
CONFIGURE_OPTS Additional ./configure options.
MAKE Custom make command (e.g., gmake).
MAKE_OPTS / MAKEOPTS Additional make options.
MAKE_INSTALL_OPTS Additional make install options.
RUBY_CONFIGURE_OPTS Additional ./configure options (applies only to Ruby source).
RUBY_MAKE_OPTS Additional make options (applies only to Ruby source).
RUBY_MAKE_INSTALL_OPTS Additional make install options (applies only to Ruby source).

Applying Patches

Both rbenv install and ruby-build support the --patch (-p) flag to apply a patch to the Ruby (/JRuby/Rubinius/TruffleRuby) source code before building. Patches are read from STDIN:

# applying a single patch
$ rbenv install --patch 1.9.3-p429 < /path/to/ruby.patch

# applying a patch from HTTP
$ rbenv install --patch 1.9.3-p429 < <(curl -sSL http://git.io/ruby.patch)

# applying multiple patches
$ cat fix1.patch fix2.patch | rbenv install --patch 1.9.3-p429

Checksum Verification

If you have the shasum, openssl, or sha256sum tool installed, ruby-build will automatically verify the SHA2 checksum of each downloaded package before installing it.

Checksums are optional and specified as anchors on the package URL in each definition. All definitions bundled with ruby-build include checksums.

Package Mirrors

To speed up downloads, ruby-build fetches package files from a mirror hosted on Amazon CloudFront. To benefit from this, the packages must specify their checksum:

"">
# example:
install_package "ruby-2.6.5" "https://ruby-lang.org/ruby-2.6.5.tgz#
   
    "
   

ruby-build will first try to fetch this package from $RUBY_BUILD_MIRROR_URL/ (note: this is the complete URL), where is the checksum for the file. It will fall back to downloading the package from the original location if:

  • the package was not found on the mirror;
  • the mirror is down;
  • the download is corrupt, i.e. the file's checksum doesn't match;
  • no tool is available to calculate the checksum; or
  • RUBY_BUILD_SKIP_MIRROR is enabled.

You may specify a custom mirror by setting RUBY_BUILD_MIRROR_URL.

If a mirror site doesn't conform to the above URL format, you can specify the complete URL by setting RUBY_BUILD_MIRROR_PACKAGE_URL. It behaves the same as RUBY_BUILD_MIRROR_URL except being a complete URL.

The default ruby-build download mirror is sponsored by Basecamp.

Keeping the build directory after installation

Both ruby-build and rbenv install accept the -k or --keep flag, which tells ruby-build to keep the downloaded source after installation. This can be useful if you need to use gdb and memprof with Ruby.

Source code will be kept in a parallel directory tree ~/.rbenv/sources when using --keep with the rbenv install command. You should specify the location of the source code with the RUBY_BUILD_BUILD_PATH environment variable when using --keep with ruby-build.

Getting Help

Please see the ruby-build wiki for solutions to common problems.

If you can't find an answer on the wiki, open an issue on the issue tracker. Be sure to include the full build log for build failures.

Comments
  • The Ruby openssl extension was not compiled. Missing the OpenSSL lib?

    The Ruby openssl extension was not compiled. Missing the OpenSSL lib?

    rbenv install 2.0.0-p247 fails on Mac OS X 10.8.4 with the error:

    The Ruby openssl extension was not compiled. Missing the OpenSSL lib?
    

    I had no problem installing 1.9.3-p448.

    Using ruby-build 20130628 via Homebrew.

    opened by nathany 85
  • Installation issues with Arm Mac (M1 Chip)

    Installation issues with Arm Mac (M1 Chip)

    Hey there!

    I am trying to install Ruby 2.7.2 on my new Apple Silicon Mac but am running into some issues, which I think might be related to ruby-build, but not I am not 100%.

    I have setup an alias on my ~/.zshrc for Homebrew like this:

    alias ibrew="arch -x86_64 /usr/local/bin/brew"
    

    I have run the following commands in order to install rbenv:

    ibrew install rbenv
    
    rbenv init
    

    I have updated my .zshrc file with:

    eval "$(rbenv init -)"
    export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix [email protected])"
    

    And then I ran the following command:

    rbenv install 2.7.2
    

    I have also tried prefixing the rbenv command with arch -x86_64 but that did not work either.

    These are the console logs that I am getting when I am trying to install Ruby:

    Downloading ruby-2.7.2.tar.bz2...
    -> https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.2.tar.bz2
    Installing ruby-2.7.2...
    ruby-build: using readline from homebrew
    
    BUILD FAILED (macOS 11.1 using ruby-build 20201221)
    
    Inspect or clean up the working tree at /var/folders/z1/dm8dx54j1dlgxk4zrq__x22r0000gn/T/ruby-build.20201221160748.90156.i6p4m0
    Results logged to /var/folders/z1/dm8dx54j1dlgxk4zrq__x22r0000gn/T/ruby-build.20201221160748.90156.log
    
    Last 10 log lines:
    installing default nkf libraries
    compiling date_strftime.c
    installing default console libraries
    linking shared-object objspace.bundle
    compiling date_strptime.c
    linking shared-object io/nonblock.bundle
    linking shared-object io/console.bundle
    linking shared-object nkf.bundle
    linking shared-object date_core.bundle
    make: *** [build-ext] Error 2
    

    If you have any ideas for how to make this work, please let me know!

    Thanks.

    opened by jasonsilberman 72
  • Building Ruby 2.x on OS X Mavericks Suddenly Fails

    Building Ruby 2.x on OS X Mavericks Suddenly Fails

    Last 10 log lines:
    compiling ossl_x509ext.c
    1 warning generated.
    compiling ossl_x509name.c
    compiling ossl_x509req.c
    compiling ossl_x509revoked.c
    compiling ossl_x509store.c
    installing default openssl libraries
    linking shared-object openssl.bundle
    ld: warning: directory not found for option '-L/usr/local/var/rbenv/versions/2.0.0-p451/lib'
    make: *** [build-ext] Error 2
    
    opened by nikolay 59
  • Binary packages

    Binary packages

    I'd like to add binary package support to ruby-build. I'd guess that most ruby-build installations are on one of two platforms—Mac OS X x86_64 or Linux x86_64—and most people really don't need to compile their own Ruby runtimes. Binary packages would make it much quicker to get up and running.

    In order to do this, we'll need a command to build a definition into a temporary directory and make a tarball. We'll also need a way to download and install package tarballs from the internet. This implies having package repository sources, an architecture naming system, and an index of packages with checksums.

    opened by sstephenson 58
  • Build failure on 2.x and solution (related to readline)

    Build failure on 2.x and solution (related to readline)

    It seems recent versions of ruby (2.x) have a hard time with readline and fail to build on many systems. The error typically being:

    Installing ruby-2.1.0...
    
    BUILD FAILED
    
    Inspect or clean up the working tree at /tmp/ruby-build.20140317220101.16966
    Results logged to /tmp/ruby-build.20140317220101.16966.log
    
    Last 10 log lines:
    checking ../.././parse.y and ../.././ext/ripper/eventids2.c
    installing default ripper libraries
    installing default openssl libraries
    linking shared-object openssl.so
    make[2]: Leaving directory '/tmp/ruby-build.20140317220101.16966/ruby-2.1.0/ext/openssl'
    linking shared-object ripper.so
    make[2]: Leaving directory '/tmp/ruby-build.20140317220101.16966/ruby-2.1.0/ext/ripper'
    make[1]: Leaving directory '/tmp/ruby-build.20140317220101.16966/ruby-2.1.0'
    uncommon.mk:180: recipe for target 'build-ext' failed
    make: *** [build-ext] Error 2
    

    While it looks like openssl error upon viewing the build log the actual culprit is readline:

    make[2]: Entering directory '/tmp/ruby-build.20140317220101.16966/ruby-2.1.0/ext/ripper'
    compiling ripper.c
    installing default cparse libraries
    linking shared-object racc/cparse.so
    readline.c: In function ‘Init_readline’:
    readline.c:1977:26: error: ‘Function’ undeclared (first use in this function)
         rl_pre_input_hook = (Function *)readline_pre_input_hook;
                              ^
    readline.c:1977:26: note: each undeclared identifier is reported only once for each function it appears in
    readline.c:1977:36: error: expected expression before ‘)’ token
         rl_pre_input_hook = (Function *)readline_pre_input_hook;
                                        ^
    readline.c: At top level:
    readline.c:634:1: warning: ‘readline_pre_input_hook’ defined but not used [-Wunused-function]
     readline_pre_input_hook(void)
     ^
    Makefile:228: recipe for target 'readline.o' failed
    make[2]: *** [readline.o] Error 1
    make[2]: Leaving directory '/tmp/ruby-build.20140317220101.16966/ruby-2.1.0/ext/readline'
    exts.mk:198: recipe for target 'ext/readline/all' failed
    make[1]: *** [ext/readline/all] Error 2
    

    I found the following allows ruby 2.0 variants including 2.1.0 and 2.1.1 to build successfully:

    RUBY_CONFIGURE_OPTS=--with-readline-dir="/usr/lib/libreadline.so" rbenv install 2.1.1
    

    The above worked on Arch Linux and likely works on many systems with readline installed in /usr/lib/libreadline.so and more generally /some/prefix/libreadline.so

    Perhaps you can update the README to cover this error and the solution because there was precious little information on overcoming this problem that I could find.

    x-platform 
    opened by ahacking 54
  • Fails to install 1.9.2 on Yosemite

    Fails to install 1.9.2 on Yosemite

    Running rbenv install 1.9.2-p330:

    Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
    couldn't understand kern.osversion `14.0.0'
    Downloading ruby-1.9.2-p330.tar.gz...
    -> http://dqw8nmjcqpjn7.cloudfront.net/23ef45fdaecc5d6c7b4e9e2d51b23817fc6aa8225a20f123f7fa98760e8b5ca9
    Installing ruby-1.9.2-p330...
    
    BUILD FAILED (OS X 10.10 using ruby-build 20140926)
    
    Inspect or clean up the working tree at /var/folders/f5/10yx8t4j7vx3rx7lff6jfpxr0000gn/T/ruby-build.20141007124752.9733
    Results logged to /var/folders/f5/10yx8t4j7vx3rx7lff6jfpxr0000gn/T/ruby-build.20141007124752.9733.log
    
    Last 10 log lines:
    couldn't understand kern.osversion `14.0.0'
    ld: warning: directory not found for option '-L/Users/chrisedwards/.rbenv/versions/1.9.2-p330/lib'
    ./miniruby -I./lib -I.ext/common -I./- -r./ext/purelib.rb  ./tool/generic_erb.rb -c -o encdb.h ./template/encdb.h.tmpl ./enc enc
    miniruby(17709,0x7fff7c00a300) malloc: *** error for object 0x100801808: incorrect checksum for freed object - object was probably modified after being freed.
    *** set a breakpoint in malloc_error_break to debug
    miniruby(17708,0x7fff7c00a300) malloc: *** error for object 0x100801808: incorrect checksum for freed object - object was probably modified after being freed.
    *** set a breakpoint in malloc_error_break to debug
    make: *** [.rbconfig.time] Abort trap: 6
    make: *** Waiting for unfinished jobs....
    make: *** [encdb.h] Abort trap: 6
    
    x-platform 
    opened by chrise86 52
  • Cannot install Ruby versions < 2.4 because of openssl@1.1 dependency

    Cannot install Ruby versions < 2.4 because of [email protected] dependency

    It seems the most recent change to ruby-build 20191002 homebrew formula to require [email protected] breaks the install of Ruby versions that are < 2.4 (those require openssl 1.0.2q)

    So, for macOS users who install ruby-build via homebrew, they will get [email protected] installed as well.

    If they then try to run rbenv install 2.1.10 for instance, it will fail with:

    Last 10 log lines:
    The Ruby openssl extension was not compiled.
    ERROR: Ruby install aborted due to missing extensions
    Configure options used:
      --prefix=/Users/username/.rbenv/versions/2.1.10
      --with-openssl-dir=/usr/local/opt/[email protected]
      --with-readline-dir=/usr/local/opt/readline
      CC=clang
      CFLAGS= -O3 -Wno-error=shorten-64-to-32 
      LDFLAGS=-L/Users/username/.rbenv/versions/2.1.10/lib 
      CPPFLAGS=-I/Users/username/.rbenv/versions/2.1.10/include 
    

    Yeah, I know older versions are EOL but they still get used in some environments.

    Seems like changing https://github.com/rbenv/ruby-build/blob/master/bin/ruby-build#L1023 to only check for openssl and not `[email protected] could potentially fix this?

    opened by brandonfriess-stripe 50
  • 2.2.0 Build fails on Ubuntu 14.04.1 (x86_64)

    2.2.0 Build fails on Ubuntu 14.04.1 (x86_64)

    ruby-build version:

    20141225-1-g45b75ed

    The acutal error is:

    linking shared-object fiddle.so
    /usr/bin/ld: ./libffi-3.2.1/.libs/libffi.a(raw_api.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
    

    I've included the full build log below, please let me know if you need me to test anything or I can give you better information:

    /tmp/ruby-build.20141225215042.17047 /vagrant
    Downloading ruby-2.2.0.tar.gz...
    HTTP/1.1 200 OK
    Content-Type: binary/octet-stream
    Content-Length: 16494584
    Connection: keep-alive
    Date: Thu, 25 Dec 2014 11:08:01 GMT
    Last-Modified: Thu, 25 Dec 2014 10:02:26 GMT
    ETag: "cd03b28fd0b555970f5c4fd481700852"
    Accept-Ranges: bytes
    Server: AmazonS3
    Age: 38568
    X-Cache: Hit from cloudfront
    Via: 1.1 f4bd0fa1d2fc98fb3b1433c4363b95c5.cloudfront.net (CloudFront)
    X-Amz-Cf-Id: V02lmRmjOiRevHt69a4TLVEnXUV2CrbCthwribvZvRVeZGsN_NAf_Q==
    
    -> http://dqw8nmjcqpjn7.cloudfront.net/7671e394abfb5d262fbcd3b27a71bf78737c7e9347fa21c39e58b0bb9c4840fc
    /tmp/ruby-build.201412252config.guess already exists
    config.sub already exists
    checking build system type... x86_64-unknown-linux-gnu
    (snip)
    compiling conversions.c
    make[3]: Entering directory `/tmp/ruby-build.20141225215042.17047/ruby-2.2.0/ext/fiddle/libffi-3.2.1'
    make 'AR_FLAGS=' 'CC_FOR_BUILD=' 'CFLAGS=-O3 -fno-fast-math -ggdb3  -Wall -fexceptions' 'CXXFLAGS=-O3 -fno-fast-math -ggdb3 ' 'CFLAGS_FOR_BUILD=' 'CFLAGS_FOR_TARGET=' 'INSTALL=/usr/bin/install -c' 'INSTALL_DATA=/usr/bin/install -c -m 644' 'INSTALL_PROGRAM=/usr/bin/install -c' 'INSTALL_SCRIPT=/usr/bin/install -c' 'JC1FLAGS=' 'LDFLAGS=-L. -L/home/vagrant/.rbenv/versions/2.2.0/lib  -fstack-protector -rdynamic -Wl,-export-dynamic  -L../../.. ' 'LIBCFLAGS=' 'LIBCFLAGS_FOR_TARGET=' 'MAKE=make' 'MAKEINFO=/bin/bash /tmp/ruby-build.20141225215042.17047/ruby-2.2.0/ext/fiddle/libffi-3.2.1/missing makeinfo ' 'PICFLAG=' 'PICFLAG_FOR_TARGET=' 'RUNTESTFLAGS=' 'SHELL=/bin/bash' 'exec_prefix=/usr/local' 'infodir=/usr/local/share/info' 'libdir=/home/vagrant/.rbenv/versions/2.2.0/lib' 'mandir=/usr/local/share/man' 'prefix=/usr/local' 'AR=ar' 'AS=as' 'CC=gcc' 'CXX=g++' 'LD=ld -m elf_x86_64' 'NM=/usr/bin/nm -B' 'RANLIB=ranlib' 'DESTDIR=' all-recursive
    make[4]: Entering directory `/tmp/ruby-build.20141225215042.17047/ruby-2.2.0/ext/fiddle/libffi-3.2.1'
    Making all in include
    make[5]: Entering directory `/tmp/ruby-build.20141225215042.17047/ruby-2.2.0/ext/fiddle/libffi-3.2.1/include'
    make[5]: Nothing to be done for `all'.
    make[5]: Leaving directory `/tmp/ruby-build.20141225215042.17047/ruby-2.2.0/ext/fiddle/libffi-3.2.1/include'
    Making all in testsuite
    make[5]: Entering directory `/tmp/ruby-build.20141225215042.17047/ruby-2.2.0/ext/fiddle/libffi-3.2.1/testsuite'
    make[5]: Nothing to be done for `all'.
    make[5]: Leaving directory `/tmp/ruby-build.20141225215042.17047/ruby-2.2.0/ext/fiddle/libffi-3.2.1/testsuite'
    Making all in man
    make[5]: Entering directory `/tmp/ruby-build.20141225215042.17047/ruby-2.2.0/ext/fiddle/libffi-3.2.1/man'
    make[5]: Nothing to be done for `all'.
    make[5]: Leaving directory `/tmp/ruby-build.20141225215042.17047/ruby-2.2.0/ext/fiddle/libffi-3.2.1/man'
    make[5]: Entering directory `/tmp/ruby-build.20141225215042.17047/ruby-2.2.0/ext/fiddle/libffi-3.2.1'
      CC       src/prep_cif.lo
      CC       src/types.lo
      CC       src/raw_api.lo
      CC       src/java_raw_api.lo
      CC       src/closures.lo
    src/closures.c: In function 'dlmmap_locked':
    src/closures.c:488:17: warning: ignoring return value of 'ftruncate', declared with attribute warn_unused_result [-Wunused-result]
           ftruncate (execfd, offset);
                     ^
    src/closures.c:500:17: warning: ignoring return value of 'ftruncate', declared with attribute warn_unused_result [-Wunused-result]
           ftruncate (execfd, offset);
                     ^
      CC       src/x86/ffi64.lo
      CPPAS    src/x86/unix64.lo
      CC       src/x86/ffi.lo
      CPPAS    src/x86/sysv.lo
      CCLD     libffi_convenience.la
      CCLD     libffi.la
    make[5]: Leaving directory `/tmp/ruby-build.20141225215042.17047/ruby-2.2.0/ext/fiddle/libffi-3.2.1'
    make[4]: Leaving directory `/tmp/ruby-build.20141225215042.17047/ruby-2.2.0/ext/fiddle/libffi-3.2.1'
    make[3]: Leaving directory `/tmp/ruby-build.20141225215042.17047/ruby-2.2.0/ext/fiddle/libffi-3.2.1'
    linking shared-object fiddle.so
    
    BUILD FAILED (Ubuntu 14.04 using ruby-build 20141225-1-g45b75ed)
    
    Inspect or clean up the working tree at /tmp/ruby-build.20141225215042.17047
    Results logged to /tmp/ruby-build.20141225215042.17047.log
    
    Last 10 log lines:
    make[3]: Leaving directory `/tmp/ruby-build.20141225215042.17047/ruby-2.2.0/ext/fiddle/libffi-3.2.1'
    linking shared-object fiddle.so
    /usr/bin/ld: ./libffi-3.2.1/.libs/libffi.a(raw_api.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
    ./libffi-3.2.1/.libs/libffi.a: error adding symbols: Bad value
    collect2: error: ld returned 1 exit status
    make[2]: *** [../../.ext/x86_64-linux/fiddle.so] Error 1
    make[2]: Leaving directory `/tmp/ruby-build.20141225215042.17047/ruby-2.2.0/ext/fiddle'
    make[1]: *** [ext/fiddle/all] Error 2
    make[1]: Leaving directory `/tmp/ruby-build.20141225215042.17047/ruby-2.2.0'
    make: *** [build-ext] Error 2
    
    opened by endgame 39
  • Apple M1: `rbenv install 3.1.2` fails but installing ruby 3.1.2 from source succeeds

    Apple M1: `rbenv install 3.1.2` fails but installing ruby 3.1.2 from source succeeds

    Hardware: Apple M1 MacBook Air running Big Sur 11.6.8 OpenSSL: Both 1.1 and 3.0 installed using brew with 3.0 as the linked default

    Step 1: Run rbenv install 3.1.2

    [email protected]:~$ rbenv install 3.1.2
    To follow progress, use 'tail -f /var/folders/y5/vfyf5lqj655g_zbm8pvdgmkr0000gn/T/ruby-build.20221029165815.98770.log' or pass --verbose
    Downloading openssl-3.0.5.tar.gz...
    -> https://dqw8nmjcqpjn7.cloudfront.net/aa7d8d9bef71ad6525c55ba11e5f4397889ce49c2c9349dcea6d3e4f0b024a7a
    Installing openssl-3.0.5...
    Installed openssl-3.0.5 to /Users/milos/.rbenv/versions/3.1.2
    
    Downloading ruby-3.1.2.tar.gz...
    -> https://cache.ruby-lang.org/pub/ruby/3.1/ruby-3.1.2.tar.gz
    Installing ruby-3.1.2...
    ruby-build: using readline from homebrew
    ruby-build: using gmp from homebrew
    
    BUILD FAILED (macOS 11.6.8 using ruby-build 20221004)
    
    Inspect or clean up the working tree at /var/folders/y5/vfyf5lqj655g_zbm8pvdgmkr0000gn/T/ruby-build.20221029165815.98770.ztN4k5
    Results logged to /var/folders/y5/vfyf5lqj655g_zbm8pvdgmkr0000gn/T/ruby-build.20221029165815.98770.log
    
    Last 10 log lines:
            from ./tool/rbinstall.rb:899:in `block in install'
            from ./tool/rbinstall.rb:713:in `no_write'
            from ./tool/rbinstall.rb:899:in `install'
            from ./tool/rbinstall.rb:1068:in `block (2 levels) in <main>'
            from ./tool/rbinstall.rb:1043:in `foreach'
            from ./tool/rbinstall.rb:1043:in `block in <main>'
            from ./tool/rbinstall.rb:1127:in `block in <main>'
            from ./tool/rbinstall.rb:1124:in `each'
            from ./tool/rbinstall.rb:1124:in `<main>'
    make: *** [do-install-all] Error 1
    

    Step 2: Notice that rbenv versions does not show 3.1.2 because it failed to install using ruby-build

    [email protected]:~$ rbenv versions
      system
    * 2.7.4 (set by /Users/milos/.rbenv/version)
      3.0.4
    

    Step 3: Install 3.1.2 manually from source, bypassing ruby-build entirely

    wget https://cache.ruby-lang.org/pub/ruby/3.1/ruby-3.1.2.tar.gz
    tar xf ruby-3.1.2.tar.gz
    cd ruby-3.1.2
    ./configure --prefix=/Users/milos/.rbenv/versions/3.1.2 # add `--with-openssl-dir=/opt/homebrew/opt/openssl\@1.1` or @3 as preferred, if needed
    make -j9
    make install
    

    Step 4: Notice that rbenv versions now shows 3.1.2 successfully installed

    [email protected]:~$ rbenv versions
      system
    * 2.7.4 (set by /Users/milos/.rbenv/version)
      3.0.4
      3.1.2
    [email protected]:~$ rbenv global 3.1.2
    
    [email protected]:~$ ruby -v
    ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [arm64-darwin20]
    
    [email protected]:~$ ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'
    OpenSSL 3.0.5 5 Jul 2022
    

    Please do not move this to the Discussions tab as the installation works when not using ruby-build. This leads me to believe that it is indeed a ruby-build issue.

    For what it's worth, I can install ruby 3.1.2 this way with either OpenSSL 3.0 or OpenSSL 1.1 depending on what I provide in the configure step. I can provide --with-openssl-dir=/opt/homebrew/opt/openssl\@1.1 to override the 3.0 default that brew linked. Both work. However, again, with ruby-build the installation fails as per my report in https://github.com/rbenv/ruby-build/discussions/1961

    Thanks to https://github.com/rbenv/ruby-build/discussions/1961#discussioncomment-3953774 for finding this workaround that makes the source build usable with rbenv.

    bug 
    opened by milosivanovic 38
  • The list `rbenv install -l` is too long, show latest stable releases by default

    The list `rbenv install -l` is too long, show latest stable releases by default

    Background

    As time passes, list of available ruby versions is growing. However, I think ordinary users hardly install ancient versions such as Ruby 1.8 and Ruby 1.9. Now rbenv install -l became too big and is filled up with obsolete unused versions.

    What I did

    I implemented new options to show only supported versions.

    • rbenv install -L (--list-exclude-eol)
    • ruby-build --definitions-exclude-eol

    I used warn_eol warn_unsupported flag to determine if the version is EoL'ed.

    Result

    Now I get significantly compact list.

    % ruby-build --definitions | wc -l
         463
    % ruby-build --definitions-exclude-eol | wc -l
         186
    

    Also I can easily know which versions are supported. I believe this feature is helpful for most users.

    % ruby-build --definitions-exclude-eol |grep ^'[0-9]'
    2.5.0-dev
    2.5.0-preview1
    2.5.0-rc1
    2.5.0
    2.5.1
    2.5.2
    2.5.3
    2.5.4
    2.5.5
    2.5.6
    2.5.7
    2.6.0-dev
    2.6.0-preview1
    2.6.0-preview2
    2.6.0-preview3
    2.6.0-rc1
    2.6.0-rc2
    2.6.0
    2.6.1
    2.6.2
    2.6.3
    2.6.4
    2.6.5
    2.7.0-dev
    2.7.0-preview1
    2.7.0-preview2
    2.7.0-preview3
    2.7.0-rc1
    2.7.0-rc2
    2.7.0
    2.8.0-dev
    
    % ruby-build --definitions |grep ^'[0-9]'|less
    1.8.5-p52
    1.8.5-p113
    1.8.5-p114
    1.8.5-p115
    1.8.5-p231
    1.8.6
    1.8.6-p36
    (snip)
    
    opened by metalefty 38
  • build 1.9.3-p125 build failed

    build 1.9.3-p125 build failed

    I am new to ruby and am trying to install 1.9.3 on a mac 10.7.3 with Xcode 4.3.1 and command line tools installed running a network home directory. When I run rbenv install 1.9.3, I obtain the following output:

    rbenv install 1.9.3-p125
    Downloading http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz...
    Installing yaml-0.1.4...
    
    BUILD FAILED
    
    Inspect or clean up the working tree at /var/folders/mb/y4pkl06167788c4kpgnt9zv0000102/T/ruby-build.20120322182939.42878
    Results logged to /var/folders/mb/y4pkl06167788c4kpgnt9zv0000102/T/ruby-build.20120322182939.42878.log
    
    Last 10 log lines:
    checking for gawk... no
    checking for mawk... no
    checking for nawk... no
    checking for awk... awk
    checking whether make sets $(MAKE)... yes
    checking for gcc... /usr/bin/gcc-4.2
    checking whether the C compiler works... no
    configure: error: in `/var/folders/mb/y4pkl06167788c4kpgnt9zv0000102/T/ruby-build.20120322182939.42878/yaml-0.1.4':
    configure: error: C compiler cannot create executables
    See `config.log' for more details
    

    I have tried changing the script in usr/local/bin/ruby-build as described in another post but that does not make any difference. I have checked that the gcc compiler is installed by typing "which gcc-4.2" and it returns "usr/bin/gcc-4.2".

    Please could anyone help me with the installation

    opened by pdoak 38
  • How do we get actually ruby-build issues and not tons of noise?

    How do we get actually ruby-build issues and not tons of noise?

    cc @mislav @hsbt I'm getting really tired of people reporting so many build issues of CRuby on ruby-build's tracker, e.g., https://github.com/rbenv/ruby-build/discussions/2083#discussioncomment-4077248 I'm happy to help maintaining ruby-build, I'm not happy to get notified about people messing up their build environment and potential issues with building CRuby itself, which cannot be fixed in ruby-build. I just don't have to time to debug people messing their environment or to debug CRuby/openssl problems and it is not my responsibility.

    I see we already have issue templates but they don't seem enough. Maybe we can try Issue Form templates like here to try to ensure only ruby-build issues are actually filed here, and disable blank issues? Maybe we should ask for a Dockerfile reproducing the issue for Linux? Or give a list of commands to build ruby from source manually and tell people to try that and only file an issue if that works but ruby-build doesn't? (otherwise use discussions or link to https://bugs.ruby-lang.org/)

    Short-term I will simply stop watching issues for this repository, so people will need to ping me if they need me.

    opened by eregon 3
  • Compiler invocation not printed with --verbose

    Compiler invocation not printed with --verbose

    Steps to reproduce the behavior

    Apply an incorrect patch to readline.c that causes compilation to fail (to mimic the situation I'm in, I don't have a minimal reproducer yet). Try building with --verbose. You'll see something like:

    readline.c: ... error: <compiler error message>
    
    1 error generated.
    make[2]: *** [readline.o] Error 1
    make[1]: *** [ext/readline/all] Error 2
    
    <other stuff>
    
    Inspect or clean up the working tree at /tmp/ruby-build.20220813172251.84708.XSQCpi
    Results logged to /tmp/ruby-build.20220813172251.84708.log
    

    The failing invocation itself is not printed (I checked the mentioned log as well), perhaps because the verbose is not being passed through to the make invocation.

    Expected vs. actual behavior

    With --verbose, I would expect all compiler invocations to be printed, so that one can narrow down the cause of the failure quickly, and potentially compare the invocation with a successful build in a different configuration.

    Logs

    n/a -- this bug isn't about my specific failure (I'll investigate that), but about --verbose.

    bug 
    opened by varungandhi-src 3
  • ruby-build not utilizing all cores by default

    ruby-build not utilizing all cores by default

    Steps to reproduce the behavior

    ❯ rbenv --version
    rbenv 1.2.0
    ❯ ruby-build --version
    ruby-build 20220726
    
    ❯ env - PATH="/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin" RBENV_ROOT="slow" rbenv install 2.7.2
    # Finishes in 4m 8s
    # CPU usage seems to hover around 60%-70% utilization for 3-4 CPUs and less for others
    
    ❯ env - PATH="/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin" MAKEOPTS="-j 10" RBENV_ROOT="fast" rbenv install 2.7.2
    # Finishes in 2m 44s
    # CPU usage is maxed out during build steps
    

    This is on a 10 core Macbook Pro on a slow-ish network (otherwise the % speed difference would be more dramatic).

    The sysctl in that code does work:

    ❯ sysctl -n hw.ncpu
    10
    

    Expected vs. actual behavior

    It looks like a patch about 9 years ago did add support for detecting number of CPUs. https://github.com/rbenv/ruby-build/commit/6c08c56d3aa0add92c60653744324e7cdb3b24c3

    Is it not getting plumbed through correctly? Or is the CPU usage being limited deliberately?

    Logs

    n/a

    bug 
    opened by varungandhi-src 5
  • Clarification of required dependencies on macOS

    Clarification of required dependencies on macOS

    I’ve gone down a rabbithole of trying to figure out what the actual dependencies of ruby-build are on macOS and I’m seeing conflicting information in different places and I’d like to get some clarification of what the most up-to-date requirements are and then update the documentation and/or Homebrew formula to be consistent if possible.

    The suggested build environment in the wiki lists [email protected], readline, and libyaml from Homebrew as requirements. It also looks like @mislav maintains the Homebrew formula so I assume that this formula is officially supported.

    Also, let me state up front that ruby-build is an amazing tool that has saved me and so many people countless hours, so nothing below is a criticism in any way. It’s mostly fact-finding and I’m definitely not versed enough in of the internals of anything here to be able to give an opinion from a perspective other than that of an end-user Ruby developer. I’d simply love to improve the documentation and/or Homebrew formula so these questions I had might be easier for other people to figure out. Thank you to all the maintainers who have put so much time and effort into developing this phenomenal utility!

    readline

    The Homebrew formula already depends on Homebrew’s readline package, so I think listing the need to install readline on the wiki page is superfluous?

    libyaml

    Since the wiki lists libyaml as a requirement, is there a reason the Homebrew formula isn’t simply listing it as a dependency just as readline is? From #1928/#1929 it looks like libyaml wasn’t being used from Homebrew anyways but this has since been corrected.

    Perhaps unrelated but #1950 has some additional discussion of the libyaml requirement on Ubuntu/Debian/Mint and suggests removing it from the list of requirements in the wiki.

    Unless I’m missing something, it looks to me like the suggested course of action here should be to add a dependency on libyaml to the Homebrew formula and remove the suggestion to install it manually from the wiki.

    OpenSSL

    This is the one that seems to have the most conflicting information and I’m not sure what is incorrect or simply outdated.

    The wiki states that the [email protected] Homebrew formula is a requirement and also mentions setting the RUBY_CONFIGURE_OPTS environment variable to cause Ruby to be built using Homebrew’s version. However, the formula states that each Ruby version packages its own non-Homebrew version of OpenSSL that’s never upgraded. So, I’m assuming the suggestion to use Homebrew’s version is made from a security vulnerability standpoint?

    But installing Ruby 3.1.2 with ruby-build shows it installing OpenSSL 3.0.5 as part of the installation. So why are we pinning to OpenSSL 1.1 when newer Ruby versions need an OpenSSL version that’s two major versions ahead? It appears #2000 might confirm that suspicion. The Homebrew formula also mentions that this version pinning causes problems with Ruby versions below 2.4 that require a version of OpenSSL less than 1.1.

    It seems like there are lots of interlocking issues at play here that I’m probably ignorant of, so I don’t pretend to know what the “correct” answer is—if, in fact, it’s even any different than what the documentation already states. But I’m going to take a guess that perhaps the best thing to do would be to update the documentation to point out that, instead of using OpenSSL 1.1 in all cases (which causes problems with old versions of Ruby and might be stale for newer versions), that instead different versions of Ruby require different versions of OpenSSL, e.g.

    | Ruby | OpenSSL | | --- | --- | | Ruby < 2.2 | [email protected] | | Ruby 2.2–2.4 | [email protected] | | Ruby 2.4–3 | [email protected] | | Ruby > 3 | [email protected] |

    I just made up those numbers as an example because I can’t actually seem to find a list anywhere that lays out what versions of Ruby require which versions of OpenSSL. In fact, I’m not even sure what in Ruby needs OpenSSL—is it because of openssl in the standard library?

    And perhaps this is a can of worms, but shouldn’t the Homebrew formula just install all of these required formula and then worry about using the correct version of the lib for the particular version of Ruby being installed? That’s probably an obvious observation so I’m guessing it’s either impossible for some reason or easier said than done. But if it’s possible then it would basically sidestep the entire issue and allow all requirements to simply be listed as dependencies in the Homebrew formula and everything would happen automagically.

    And finally, if it’s the case that the Homebrew version of OpenSSL is being suggested because of security, it would be good to update the documentation to point out that the packaged version is fine in environments where security is not a real concern, e.g. local development. Then developers could skip worrying about this at all and just use the packaged version where it doesn’t matter.

    enhancement 
    opened by codyrobbins 2
  • support libyaml from homebrew

    support libyaml from homebrew

    closes #1928

    turns out there already was a test for this behaviour but it was falsely passing due to needs_yaml (that was run only from tests) was calling use_homebrew_yaml (which was otherwise not called in production)

    Bash is not my native language and I've had very limited experience with BATS framework so there might be things I've done wrong :)

    opened by dreyks 5
  • Use yaml from homebrew

    Use yaml from homebrew

    Homebrew is no longer located in /usr/local on Apple Silicon. It is now in /opt/homebrew. This leads to brew-originated yaml not being picked up during the build

    We should probably manage yaml the same way we do it with readline. Looking at the code there's already a function that should do what is needed but it's not being called anywhere

    https://github.com/rbenv/ruby-build/blob/cbdbc6e44be4756df3fc526ee97c1a5ce0632b74/bin/ruby-build#L1029-L1037

    should we call it here? https://github.com/rbenv/ruby-build/blob/cbdbc6e44be4756df3fc526ee97c1a5ce0632b74/bin/ruby-build#L581-L583

    enhancement 
    opened by dreyks 3
Releases(v20221225)
  • v20221225(Dec 25, 2022)

    What's Changed

    • Added 3.2.0 by @hsbt in https://github.com/rbenv/ruby-build/pull/2115

    Full Changelog: https://github.com/rbenv/ruby-build/compare/v20221206...v20221225

    Source code(tar.gz)
    Source code(zip)
  • v20221206(Dec 6, 2022)

    What's Changed

    • Add definition for Ruby 3.2.0 RC 1 by @koic in https://github.com/rbenv/ruby-build/pull/2110

    Full Changelog: https://github.com/rbenv/ruby-build/compare/v20221124...v20221206

    Source code(tar.gz)
    Source code(zip)
  • v20221124(Nov 24, 2022)

    What's Changed

    • Add definition for Ruby 3.1.3, 3.0.5, and 2.7.7 by @koic in https://github.com/rbenv/ruby-build/pull/2096

    Full Changelog: https://github.com/rbenv/ruby-build/compare/v20221123...v20221124

    Source code(tar.gz)
    Source code(zip)
  • v20221123(Nov 23, 2022)

    What's Changed

    • JRuby 9.4.0.0 by @headius in https://github.com/rbenv/ruby-build/pull/2095

    Full Changelog: https://github.com/rbenv/ruby-build/compare/v20221121...v20221123

    Source code(tar.gz)
    Source code(zip)
  • v20221121(Nov 21, 2022)

    What's Changed

    • truffleruby+graalvm-dev builds are now based on Java 17 by @eregon in https://github.com/rbenv/ruby-build/pull/2093

    Full Changelog: https://github.com/rbenv/ruby-build/compare/v20221116...v20221121

    Source code(tar.gz)
    Source code(zip)
  • v20221116(Nov 16, 2022)

    What's Changed

    • Add definition for Ruby 3.2.0-preview3 by @koic in https://github.com/rbenv/ruby-build/pull/2087
    • Update to OpenSSL 1.1.1s by @mislav in https://github.com/rbenv/ruby-build/pull/2088
    • Do not automatically enable YJIT nor attempt to detect rustc, as Ruby 3.2 now does that automatically by @mislav in https://github.com/rbenv/ruby-build/pull/2091
    • Mark Ruby 2.6 as EOL and 2.7 as "unsupported" by @mislav in https://github.com/rbenv/ruby-build/pull/2077

    Full Changelog: https://github.com/rbenv/ruby-build/compare/v20221101...v20221116

    Source code(tar.gz)
    Source code(zip)
  • v20221101(Nov 1, 2022)

    What's Changed

    • Use OpenSSL 3.0.7 for ruby 3.1 by @richardTowers in https://github.com/rbenv/ruby-build/pull/2075

    New Contributors

    • @richardTowers made their first contribution in https://github.com/rbenv/ruby-build/pull/2075

    Full Changelog: https://github.com/rbenv/ruby-build/compare/v20221026...v20221101

    Source code(tar.gz)
    Source code(zip)
  • v20221026(Oct 25, 2022)

    What's Changed

    • Add TruffleRuby and TruffleRuby GraalVM 22.3.0 by @eregon in https://github.com/rbenv/ruby-build/pull/2070

    Full Changelog: https://github.com/rbenv/ruby-build/compare/v20221025...v20221026

    Source code(tar.gz)
    Source code(zip)
  • v20221025(Oct 24, 2022)

    What's Changed

    • Add JRuby 9.3.9.0 by @headius in https://github.com/rbenv/ruby-build/pull/2068

    Full Changelog: https://github.com/rbenv/ruby-build/compare/v20221004...v20221025

    Source code(tar.gz)
    Source code(zip)
  • v20221004(Oct 4, 2022)

    What's Changed

    • Fix rbenv install --list exit status by @mislav in https://github.com/rbenv/ruby-build/pull/2059

    Full Changelog: https://github.com/rbenv/ruby-build/compare/v20220930...v20221004

    Source code(tar.gz)
    Source code(zip)
  • v20220930(Sep 30, 2022)

    What's New

    • Add JRuby 9.3.8.0 by @headius in https://github.com/rbenv/ruby-build/pull/2045
    • Use GMP from Homebrew if available by @casperisfine in https://github.com/rbenv/ruby-build/pull/2044
    • Fix linking to system OpenSSL on OpenSUSE by @hsbt in https://github.com/rbenv/ruby-build/pull/2049
    • rbenv-install: suggest rbenv global if there is no explicit global setting by @mislav in https://github.com/rbenv/ruby-build/pull/2052
    • rbenv-install: only print stderr notice if printing list output to a terminal by @mislav in https://github.com/rbenv/ruby-build/pull/2055

    What's Changed

    • Touch up README for comprehension and clarity by @mislav in https://github.com/rbenv/ruby-build/pull/2051
    • Add minimum GitHub token permissions for workflows by @varunsh-coder in https://github.com/rbenv/ruby-build/pull/2041
    • Add Differential ShellCheck as shell linter by @jamacku in https://github.com/rbenv/ruby-build/pull/2042
    • Release with gh instead of with hub by @mislav in https://github.com/rbenv/ruby-build/pull/2056

    New Contributors

    • @varunsh-coder made their first contribution in https://github.com/rbenv/ruby-build/pull/2041
    • @jamacku made their first contribution in https://github.com/rbenv/ruby-build/pull/2042

    Full Changelog: https://github.com/rbenv/ruby-build/compare/v20220910.1...v20220930

    Source code(tar.gz)
    Source code(zip)
  • v20220910.1(Sep 10, 2022)

  • v20220910(Sep 10, 2022)

  • v20220909(Sep 9, 2022)

  • v20220825(Aug 25, 2022)

  • v20220726(Jul 26, 2022)

  • v20220725(Jul 25, 2022)

    • Only check the opensslv.h header to find the system openssl version

      • openssl version can be another version than the header, for instance with apt-get install --no-install-recommends ca-certificates libssl1.0-dev on Ubuntu 18.04: https://github.com/rbenv/ruby-build/discussions/2014#discussioncomment-3224237
    Source code(tar.gz)
    Source code(zip)
  • v20220721(Jul 21, 2022)

    • For Ruby 3.2.0-dev, install YJIT by default if rustc 1.60+ is available

    • Don't auto-enable YJIT except on x86_64

    • Restructure build_package_enable_yjit to be cleaner and to exit before later checks if possible.

    • Apply patch for implicitly declaration error of OpenSSL 1.1.1q

    • Use inline patch instead of curl download

    Source code(tar.gz)
    Source code(zip)
  • v20220713(Jul 13, 2022)

  • v20220710(Jul 10, 2022)

    • Use OpenSSL 3.0.5

    • Use OpenSSL 1.1.1q

    • Install openssl 1 when openssl is 3

    • Install openssl whenever the system version does not match

      • Make supported openssl versions explicit per definition.
    Source code(tar.gz)
    Source code(zip)
  • v20220630(Jun 29, 2022)

  • v20220610(Jun 10, 2022)

    • Add Darwin-arm64 and Linux-aarch64 for truffleruby-dev and truffleruby+graalvm-dev

    • Speed up building OpenSSL by skipping building openssl docs

    Source code(tar.gz)
    Source code(zip)
  • v20220426(Apr 26, 2022)

  • v20220415(Apr 15, 2022)

  • v20220412(Apr 12, 2022)

    • Add definition for Ruby 3.2.0-preview1

      Ruby 3.2.0-preview1 has been released. https://www.ruby-lang.org/en/news/2022/04/03/ruby-3-2-0-preview1-released/

      This PR specifies the same OpenSSL version (3.0.2) as 3.2.0-dev. https://github.com/rbenv/ruby-build/blob/v20220324/share/ruby-build/3.2.0-dev#L1

    • Add Ruby 3.1.2, 3.0.4, 2.7.6, 2.6.10

      • https://www.ruby-lang.org/en/news/2022/04/12/ruby-3-1-2-released/
      • https://www.ruby-lang.org/en/news/2022/04/12/ruby-3-0-4-released/
      • https://www.ruby-lang.org/en/news/2022/04/12/ruby-2-7-6-released/
      • https://www.ruby-lang.org/en/news/2022/04/12/ruby-2-6-10-released/
    Source code(tar.gz)
    Source code(zip)
  • v20220324(Mar 23, 2022)

  • v20220218(Feb 18, 2022)

  • v20220125(Jan 25, 2022)

  • v20211227(Dec 27, 2021)

  • v20211225(Dec 25, 2021)

Owner
null
Native Ruby extensions written in Rust

Ruru (Rust + Ruby) Native Ruby extensions in Rust Documentation Website Have you ever considered rewriting some parts of your slow Ruby application? J

Dmitry Gritsay 812 Dec 26, 2022
“The Tie Between Ruby and Rust.”

Rutie Rutie — /ro͞oˈˌtī/rOOˈˌtI/rüˈˌtaI/ Integrate Ruby with your Rust application. Or integrate Rust with your Ruby application. This project allows

Daniel P. Clark 726 Jan 2, 2023
Native Ruby extensions without fear

Helix ⚠️ Deprecated ⚠️ Sadly, we have made the decision to deprecate this project. While we had hoped to bootstrap the project to a point where it cou

Tilde 2k Jan 1, 2023
Fast state-of-the-art tokenizers for Ruby

Fast state-of-the-art tokenizers for Ruby

Andrew Kane 34 Dec 15, 2022
🚀 Fast and simple Node.js version manager, built in Rust

Fast Node Manager (fnm) ?? Fast and simple Node.js version manager, built in Rust Features ?? Cross-platform support (macOS, Windows, Linux) ✨ Single

Gal Schlezinger 9.8k Jan 2, 2023
Version of Clue made to be compilable in WebAssembly (WIP)

Clue is a programming language that compiles into Lua code with a syntax similar to languages like C or Rust. Clue tries to be almost as simple as Lua

Clue 2 Jun 16, 2022
DEF CON 30 Version of the PACMAN Attack ("PACMAN II")

The PACMAN Attack PACMAN except in rust! Experiments Experiments are launched from src/main.rs. You can uncomment the experiment you'd like to run in

Joseph Ravichandran 16 Nov 14, 2022
Build a python wheel from a dynamic library

build_wheel Small utility to create a Python wheel given a pre-built dynamic library (.so, .dylib, .dll). If you are just trying to produce a wheel fr

Tangram 1 Dec 2, 2021
Build frontend browser apps with Rust + WebAssembly. Supports server side rendering.

Percy Build frontend browser apps with Rust + WebAssembly. Supports server side rendering. The Percy Book This README gives a light introduction to Pe

Chinedu Francis Nwafili 2.1k Jan 1, 2023
Rust - Empowering everyone to build reliable and efficient software.

The Rust Programming Language This is the main source code repository for Rust. It contains the compiler, standard library, and documentation. Note: t

The Rust Programming Language 75.9k Dec 28, 2022
Rust library for build scripts to compile C/C++ code into a Rust library

A library to compile C/C++/assembly into a Rust library/application.

Alex Crichton 1.3k Dec 21, 2022
A notebook app integrated with todo lists utility. Developed with Rust, WebAssembly, Yew and Trunk.

Flow.er A notebook app integrated with todo-list utility. Project flow.er is a Rust WASM app running in browser. Taking advantage of Yew and Trunk, it

null 45 Dec 31, 2022
A rust library containing typings and utility functions dealing with the Public specification of the Internet Computer.

IC Types Contributing Please follow the guidelines in the CONTRIBUTING.md document. Goal This library contains typings and utility functions dealing w

DFINITY 5 Nov 28, 2022
A Rust crate for automatically generating C header files from Rust source file.

Please be aware that this crate is no longer actively maintained, please look into the much more feature rich cbindgen instead. rusty-cheddar rusty-ch

Sean Marshallsay 190 Nov 12, 2022
Easy way to write Node.js module using Rust

node-bindgen Easy way to write native Node.js module using idiomatic Rust Features Easy: Just write idiomatic Rust code, node-bindgen take care of gen

InfinyOn 346 Jan 3, 2023
A simple library to allow for easy use of python from rust.

Rustpy A simple library to allow for easy use of python from rust. Status Currently this library has not received much love (pull requests welcome for

Luke 74 Jun 20, 2022
Squirt is a easy-to-use programming language.

Squirt is a easy-to-use programming language.

QuqqU 5 Nov 30, 2022
A dialect of Lisp that designed for Minecraft bedrock command.

Command Lisp Document Command Lisp是一门为Minecraft Bedrock设计的简化语言,拥有这非常高的抽象程度。同时,它也是Lisp的一门方言。 Lisp 与众不同的部分原因是,它被设计成能够自己进化。你能用 Lisp 定义新的 Lisp 操作符。

CAIMEO 5 Jul 21, 2022
Standard Graphics is a command-line tool for printing 2D graphics from any language to any screen.

2D graphics in any programming language with just print statements!

Caleb Winston 123 Nov 20, 2022