On Tuesday, a weekly CI run triggered a Miri failure for a crate I maintain which has some unsafe code. Two days later I had a fix validated, reviewed, and released plus a RustSec advisory published at https://rustsec.org/advisories/RUSTSEC-2023-0048.html. From advisory being published to the dependabot PR was about 16 hours. #rust #artichoke #security
I did my first octopus merge today! #git #artichoke https://github.com/artichoke/project-infrastructure/commit/45b6926ba389ebf0971a6e64e7a5fcfea74bb593
There is no more #webpack in #artichoke. All web properties have been migrated to esbuild, eta template engine, the Node fs API, and custom build scripts. This is simple, this is good. #hypstatic is next but there is a lot to unwind. #win
with the lopopolo IAM user gone, the only ones left were the IAM users in the #artichoke and #hypstatic GitHub organizations used for terraform CI in the project-infrastructure repos. I used the new GitHub Actions OpenID Connect provider to wire up AWS identity federation following this guide – https://scalesec.com/blog/identity-federation-for-github-actions-on-aws/ #security #github #aws #win
It's been a while since I've posted about #artichoke, but I recently landed a #rust implementation of #ruby's `String` class. #win https://github.com/artichoke/artichoke/pull/1222
I got a PR in artichoke suggesting to bump down the frequency of dependabot updates to monthly. I applied this change across all artichoke, hyperbola, and lopopolo repositories. It has been a big quality of life improvement and cuts down on a lot of churn in JS dependencies. Applying dep updates once a month is 👍 #win #artichoke
focaccia and roe are UTF-8 case manipulation crates for implementing parts of `String` and `Symbol` in #artichoke. intaglio is Artichoke's symbol table, boba is an implementation of Bubble Babble Encoding which will be used in the `digest` stdlib package. #rust #patch
There have been over 600 PRs in the last year of Artichoke. https://hyperbo.la/lifestream/737/ https://github.com/artichoke/artichoke/pull/847 #artichoke #git
More #artichoke updates since March: a marketing site at www.artichokeruby.org, prebuilt containers on Docker Hub https://hub.docker.com/r/artichokeruby/artichoke, and prebuilt nightlies https://github.com/artichoke/nightly/releases/latest #win
#vscode and LLDB in VSCode were SO amazing to use. Within a couple of iterations, I was able to track down the use-after-free: https://github.com/artichoke/artichoke/pull/674 #fail #win #artichoke
After repeated attempts of replicating my windows CI setup in a developer VM, I sloppily installed software via web installers. With every VS component, rustup, RubyInstaller, LLVM, choco, and winflexbison, I was running with a reproducer #artichoke
Once GH-670 was merged, I had a segfault that only (and reliably) reproduced on one test in Windows #artichoke #rust #windows
After 50 PRs, I was able to put GH-442 to bed and remove the Rc wrapper from the Artichoke state https://github.com/artichoke/artichoke/pull/670 #win This refactor took 4 months #fail #rust #artichoke
Nightly builds of Artichoke are available via ruby-build: rbenv install artichoke-dev #artichoke #win
Migrated all #artichoke CI to GitHub Actions #github #win Jobs and workflows are so much easier to reason about. And it's free 💪
Pushing errors to the edge and forcing callers to handle them makes for better code #artichoke https://github.com/artichoke/artichoke/pull/434
Nothing like a little build breakage to start the weekend https://github.com/artichoke/artichoke/pull/417 #artichoke #fail
#artichoke RubyConf recording here: https://www.youtube.com/watch?v=QMni48MBqFw
I missed a couple of months posting! I was working on my RubyConf talk about #artichoke. slides here: https://artichoke.github.io/rubyconf/2019/
Also added many more converter implementations with macros. There are 988 TryConvert implementations. #win #fail #artichoke
Led to reporting this #mruby bug: https://github.com/mruby/mruby/issues/4684 #github #fail although I was able to work around it #artichoke
This change added new functionality: Converting to and from byte and string slices #win #artichoke
The converters are central to #artichoke. Changing this core abstraction was painful: 84 files changed, 2000 lines added, 2800 lines removed. #fail #git
The converters allow the runtime to convert between Rust and Ruby types. They are the glue that the entire Ruby Core and Ruby Standard Library implementation is built upon. #artichoke
I'm separating the core of #artichoke from the #mruby backend specific glue. This step involved reimplementing the converters with the new traits in core.
This was a nasty PR https://github.com/artichoke/artichoke/pull/242 #artichoke #fail
I added a macro to oniguruma to enable it to build on clang for #wasm targets #patch #github #artichoke https://github.com/kkos/oniguruma/pull/150
Reported a build issue on #mruby with gperf 3.1 #ci #build #patch #github #artichoke https://github.com/mruby/mruby/issues/4628
#artichoke is the top trending repo on all of #github right now #win
I'm trying to improve Regexp performance in #artichoke by using the regex crate instead of oniguruma in some cases. It turns out not to be faster in all cases #patch #rust #fail https://github.com/rust-lang/regex/issues/604
I built an #artichoke #Wasm playground in the browser https://artichoke.github.io/artichoke/ #win
That is a lot of code #artichoke #github #patch #win
That is a lot of code #artichoke #github #patch #win
Neither mruby-sys nor onig can build with wasm-unknown-unknown or wasm-wasi, so I was stuck with wasm-unknown-emscripten. The linker on mruby-sys would dead code eliminate artichoke_backend::Artichoke #fail #Wasm #artichoke #mruby
One of the goals is to have a #Wasm build target. This is what nerdsniped me this weekend. #artichoke
The biggest accomplishment was redoing the #artichoke README https://github.com/artichoke/artichoke#readme Thought about project goals and differentiators from MRI. Added milestones to track progress in achieving goals #win #ruby #artichoke
With renewed focus of building my own #Ruby instead of extending #mruby, I put in some effort to make mruby an implementation detail of #artichoke. Lots of refactoring with sed. #fail
ferrocarril had different goals than artichoke: it wanted to run Rails. To do that, it had a lot of extra bits in it like gems, a Rack server, and sample apps. Nuked all of it #win #artichoke
Step 3: create the #artichoke repository where the core #ruby development will take place. #artichoke
Step 2: transfer ownership of ferrocarril to artichoke organization #artichoke #github. Not much to do here, updated some links, fixed some branding, got CircleCI building again #artichoke
CactusRef is still an incredibly unsafe crate, but at least it aborts if it detects a use-after-free #fail #artichoke
Extracting cactusref required completely rewriting #git history, updating docs, adding a build, adding benches, importing my blog post, updating links in the blog post #artichoke
Step 1: extract CactusRef from ferrocarril into its own repository https://github.com/artichoke/cactusref #artichoke
This weekend I did the migration, which took place in multiple parts #artichoke #github