Giter VIP home page Giter VIP logo

nightly's Introduction

Artichoke Ruby

GitHub Actions Discord Twitter
Crate API API trunk

Artichoke Ruby logo

Artichoke is a Ruby implementation written in Rust and Ruby. Artichoke intends to be MRI-compatible and targets recent MRI Ruby. Artichoke provides a Ruby runtime implemented in Rust and Ruby.

Try Artichoke

Artichoke Ruby WebAssembly playground
Artichoke Ruby Wasm Playground

You can try Artichoke in your browser. The Artichoke Playground runs a WebAssembly build of Artichoke.

Install Artichoke

Prebuilt nightly binaries

Download a prebuilt binary from artichoke/nightly. Binaries are available for Linux, Linux/musl, macOS, and Windows.

These daily binaries track the latest trunk branch of Artichoke.

Binaries are also distributed through ruby-build. To install with rbenv:

$ rbenv install artichoke-dev

Cargo

You can install a pre-release build of Artichoke using cargo, Rust's package manager, by running:

$ cargo install --git https://github.com/artichoke/artichoke --branch trunk --locked artichoke

To install via cargo install or to checkout and build locally, you'll need Rust and clang. BUILD.md has more detail on how to set up the compiler toolchain.

Docker

Artichoke is available on Docker Hub.

You can launch a REPL by running:

docker run -it docker.io/artichokeruby/artichoke airb

Usage

Artichoke ships with two binaries: airb and artichoke.

airb

airb is the Artichoke implementation of irb and is an interactive Ruby shell and REPL.

airb is a readline-enabled shell, although it does not persist history.

artichoke

artichoke is the ruby binary frontend to Artichoke.

artichoke supports executing programs via files, stdin, or inline with one or more -e flags.

Artichoke can require, require_relative, and load files from the local file system, but otherwise does not yet support local file system access. A temporary workaround is to inject data into the interpreter with the --with-fixture flag, which reads file contents into a $fixture global.

$ artichoke --help
Artichoke is a Ruby made with Rust.

Usage: artichoke [OPTIONS] [programfile] [arguments]...

Arguments:
  [programfile]
  [arguments]...

Options:
      --copyright               print the copyright
  -e <commands>                 one line of script. Several -e's allowed. Omit [programfile]
      --with-fixture <fixture>  file whose contents will be read into the `$fixture` global
  -h, --help                    Print help
  -V, --version                 Print version

Design and Goals

Artichoke is designed to enable experimentation. The top goals of the project are:

Contributing

Artichoke aspires to be an MRI Ruby-compatible implementation of the Ruby programming language. There is lots to do.

If Artichoke does not run Ruby source code in the same way that MRI does, it is a bug and we would appreciate if you filed an issue so we can fix it.

If you would like to contribute code 👩‍💻👨‍💻, find an issue that looks interesting and leave a comment that you're beginning to investigate. If there is no issue, please file one before beginning to work on a PR. Good first issues are labeled E-easy.

Discussion

If you'd like to engage in a discussion outside of GitHub, you can join Artichoke's public Discord server.

License

artichoke is licensed with the MIT License (c) Ryan Lopopolo.

Some portions of Artichoke are derived from third party sources. The READMEs in each workspace crate discuss which third party licenses are applicable to the sources and derived works in Artichoke.

nightly's People

Contributors

artichoke-ci avatar dependabot[bot] avatar lopopolo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

nightly's Issues

flakes when accessing DMG images on macOS nightly builders

Error: failed to invoke command
    Command: ['/usr/bin/hdiutil', 'create', '-volname', 'Artichoke Ruby nightly', '-srcfolder', 'dist/artichoke-nightly-aarch64-apple-darwin', '-ov', '-format', 'UDRW', '-verbose', 'dist/artichoke-nightly-aarch64-apple-darwin-temp.dmg']
    Return Code: 1
Output:
    2023-04-22 00:27:19.284 diskimages-helper[10821:40050] *useEffectiveIDs**** euid/egid changed to 501,20 (uid/gid is 501,20)
    2023-04-22 00:27:19.284 diskimages-helper[10821:40050] *useRealIDs******** euid/egid changed to 501,20 (uid/gid is 501,20)
    Initializing…
    2023-04-22 00:27:19.285 diskimages-helper[10821:40050] *useEffectiveIDs**** euid/egid changed to 501,20 (uid/gid is 501,20)
    2023-04-22 00:27:19.301 copy-helper[10822:40051] estimating /Users/runner/work/nightly/nightly/dist/artichoke-nightly-aarch64-apple-darwin
    2023-04-22 00:27:20.338 diskimages-helper[10821:40050] *useRealIDs******** euid/egid changed to 501,20 (uid/gid is 501,20)
    Creating…
    DIDiskImageCreatorProbe: interface  1, score    -1000, CSparseBundleDiskImage
    DIDiskImageCreatorProbe: interface  2, score    -1000, CSparseDiskImage
    DIDiskImageCreatorProbe: interface  3, score     1000, CRawDiskImage
    DIDiskImageCreatorProbe: interface  4, score    -1000, CWOUDIFDiskImage
    DIDiskImageCreateWithCFURL: CRawDiskImage
    DIFileEncodingCreatorProbe: interface  0, score    -1000, CEncryptedEncoding
    DIBackingStoreCreatorProbe: interface  0, score      300, CBSDBackingStore
    DIBackingStoreCreatorProbe: interface  1, score    -1000, CBundleBackingStore
    DIBackingStoreCreatorProbe: interface  2, score        0, CRAMBackingStore
    DIBackingStoreCreatorProbe: interface  4, score     -100, CCURLBackingStore
    DIBackingStoreCreateWithCFURL: CBSDBackingStore
    DIBackingStoreCreateWithCFURL: creator returned 0
    DIDiskImageCreateWithCFURL: creator returned 0
    DI_kextWaitQuiet: about to call IOServiceWaitQuiet...
    DI_kextWaitQuiet: IOServiceWaitQuiet took 0.000006 seconds
    Finishing…
    2023-04-22 00:27:23.268 diskimages-helper[10821:40050] *useEffectiveIDs**** euid/egid changed to 501,20 (uid/gid is 501,20)
    DIHLDiskImageCreate() returned 49168
    hdiutil: create: returning 49168
    hdiutil: create failed - Resource busy
Traceback (most recent call last):
  File "/Users/runner/work/nightly/nightly/macos_sign_and_notarize.py", line 888, in main
    bundle = create_notarization_bundle(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/runner/work/nightly/nightly/macos_sign_and_notarize.py", line 638, in create_notarization_bundle
    run_command_with_merged_output(
  File "/Users/runner/work/nightly/nightly/macos_sign_and_notarize.py", line 95, in run_command_with_merged_output
    proc = subprocess.run(
           ^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/subprocess.py", line 571, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['/usr/bin/hdiutil', 'create', '-volname', 'Artichoke Ruby nightly', '-srcfolder', 'dist/artichoke-nightly-aarch64-apple-darwin', '-ov', '-format', 'UDRW', '-verbose', 'dist/artichoke-nightly-aarch64-apple-darwin-temp.dmg']' returned non-zero exit status 1.

retry notarytool on flakes

Check for error output and retry this command which executes over the network.

See failed runs for examples:

Error: failed to invoke command
    Command: ['/usr/bin/xcrun', 'notarytool', 'store-credentials', 'artichoke-apple-codesign-notarize', '--apple-id', '[email protected]', '--password', '***', '--team-id', 'VDKP67932G', '--keychain', '/Users/runner/work/_temp/notarization.keychain-db']
    Return Code: 1
Output:
    Error: HTTP status code: 500. Internal Server Error
    
    Request ID: 33MG5MVHH66EFWISZRN2C4FGQ4.0.0
     Please try again at a later time.
    
    This process stores your credentials securely in the Keychain. You reference these credentials later using a profile name.
    
    Validating your credentials...
Traceback (most recent call last):
  File "/Users/runner/work/nightly/nightly/macos_sign_and_notarize.py", line 821, in main
    setup_codesigning_and_notarization_keychain(keychain_password=keychain_password)
  File "/Users/runner/work/nightly/nightly/macos_sign_and_notarize.py", line 458, in setup_codesigning_and_notarization_keychain
    import_notarization_credentials()
  File "/Users/runner/work/nightly/nightly/macos_sign_and_notarize.py", line 354, in import_notarization_credentials
    run_command_with_merged_output(
  File "/Users/runner/work/nightly/nightly/macos_sign_and_notarize.py", line 34, in run_command_with_merged_output
    proc = subprocess.run(
           ^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/subprocess.py", line 571, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['/usr/bin/xcrun', 'notarytool', 'store-credentials', 'artichoke-apple-codesign-notarize', '--apple-id', '[email protected]', '--password', '***', '--team-id', 'VDKP679[32](https://github.com/artichoke/nightly/actions/runs/3963549019/jobs/6791505870#step:15:33)G', '--keychain', '/Users/runner/work/_temp/notarization.keychain-db']' returned non-zero exit status 1.

macOS codesigning failures

Error logs:

Error: HTTP status code: 403. A required agreement is missing or has expired. This request requires an in-effect agreement that has not been signed or has expired. Ensure your team has signed the necessary legal agreements and that they are not expired.

Failing jobs:

Upon logging into the Artichoke Apple Code Signing account on the Apple Developer portal https://developer.apple.com/account:

Note: The program license agreement has been updated.

Accept the latest Apple Developer Program License Agreement to continue integrating new technologies, submitting content to App Review, accessing Certificates, Identifiers, and Profiles, and more.

Apple Developer Program License Agreement

Apple_Developer_Program_License_Agreement_QMSS25KHJ3.pdf

flakes when running `codesign`

Error: failed to invoke command
    Command: ['/usr/bin/codesign', '--keychain', '/Users/runner/work/_temp/notarization.keychain-db', '--sign', 'Developer ID Application: Ryan Lopopolo (VDKP67932G)', '--options=runtime', '--strict=all', '--timestamp', '-vvv', '--force', 'artichoke/target/release/artichoke']
    Return Code: 1
Output:
    artichoke/target/release/artichoke: signed Mach-O thin (x86_64) [artichoke]
    artichoke/target/release/artichoke: timestamps differ by 252 seconds - check your system clock
Traceback (most recent call last):
  File "/Users/runner/work/nightly/nightly/macos_sign_and_notarize.py", line 887, in main
    codesign_binary(binary_path=binary)
  File "/Users/runner/work/nightly/nightly/macos_sign_and_notarize.py", line 545, in codesign_binary
    run_command_with_merged_output(
  File "/Users/runner/work/nightly/nightly/macos_sign_and_notarize.py", line 95, in run_command_with_merged_output
    proc = subprocess.run(
           ^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/subprocess.py", line 571, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['/usr/bin/codesign', '--keychain', '/Users/runner/work/_temp/notarization.keychain-db', '--sign', 'Developer ID Application: Ryan Lopopolo (VDKP67932G)', '--options=runtime', '--strict=all', '--timestamp', '-vvv', '--force', 'artichoke/target/release/artichoke']' returned non-zero exit status 1.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.