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 rustsec.org/advisories/RUSTSEC-2023-0048.html. From advisory being published to the dependabot PR was about 16 hours. #rust #artichoke #security
permalinkI did my first octopus merge today! #git #artichoke github.com/artichoke/project-infrastructure/commit/45b6926ba3…
permalinkThere 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
permalinkwith 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 – scalesec.com/blog/identity-federation-for-github-actions-on-aws #security #github #aws #win
permalinkIt's been a while since I've posted about #artichoke, but I recently landed a #rust implementation of #ruby's `String` class. #win github.com/artichoke/artichoke/pull/1222
permalinkI 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
permalinkfocaccia 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
permalinkThere have been over 600 PRs in the last year of Artichoke. hyperbo.la/lifestream/737 github.com/artichoke/artichoke/pull/847 #artichoke #git
permalinkMore #artichoke updates since March: a marketing site at artichokeruby.org, prebuilt containers on Docker Hub hub.docker.com/r/artichokeruby/artichoke, and prebuilt nightlies github.com/artichoke/nightly/releases/latest #win
permalink#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: github.com/artichoke/artichoke/pull/674 #fail #win #artichoke
permalinkAfter 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
permalinkOnce GH-670 was merged, I had a segfault that only (and reliably) reproduced on one test in Windows #artichoke #rust #windows
permalinkAfter 50 PRs, I was able to put GH-442 to bed and remove the Rc wrapper from the Artichoke state github.com/artichoke/artichoke/pull/670 #win This refactor took 4 months #fail #rust #artichoke
permalinkNightly builds of Artichoke are available via ruby-build: rbenv install artichoke-dev #artichoke #win
permalinkMigrated all #artichoke CI to GitHub Actions #github #win Jobs and workflows are so much easier to reason about. And it's free 💪
permalinkPushing errors to the edge and forcing callers to handle them makes for better code #artichoke github.com/artichoke/artichoke/pull/434
permalinkNothing like a little build breakage to start the weekend github.com/artichoke/artichoke/pull/417 #artichoke #fail
permalink#artichoke RubyConf recording here: youtube.com/watch?v=QMni48MBqFw
permalinkI missed a couple of months posting! I was working on my RubyConf talk about #artichoke. slides here: artichoke.github.io/rubyconf/2019
permalinkAlso added many more converter implementations with macros. There are 988 TryConvert implementations. #win #fail #artichoke
permalinkLed to reporting this #mruby bug: github.com/mruby/mruby/issues/4684 #github #fail although I was able to work around it #artichoke
permalinkThis change added new functionality: Converting to and from byte and string slices #win #artichoke
permalinkThe converters are central to #artichoke. Changing this core abstraction was painful: 84 files changed, 2000 lines added, 2800 lines removed. #fail #git
permalinkThe 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
permalinkI'm separating the core of #artichoke from the #mruby backend specific glue. This step involved reimplementing the converters with the new traits in core.
permalinkThis was a nasty PR github.com/artichoke/artichoke/pull/242 #artichoke #fail
permalinkI added a macro to oniguruma to enable it to build on clang for #wasm targets #patch #github #artichoke github.com/kkos/oniguruma/pull/150
permalinkReported a build issue on #mruby with gperf 3.1 #ci #build #patch #github #artichoke github.com/mruby/mruby/issues/4628
permalink#artichoke is the top trending repo on all of #github right now #win
permalinkI'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 github.com/rust-lang/regex/issues/604
permalinkI built an #artichoke #Wasm playground in the browser artichoke.github.io/artichoke #win
permalinkThat is a lot of code #artichoke #github #patch #win
permalinkThat is a lot of code #artichoke #github #patch #win
permalinkNeither 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
permalinkOne of the goals is to have a #Wasm build target. This is what nerdsniped me this weekend. #artichoke
permalinkThe biggest accomplishment was redoing the #artichoke README github.com/artichoke/artichoke#readme Thought about project goals and differentiators from MRI. Added milestones to track progress in achieving goals #win #ruby #artichoke
permalinkWith 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
permalinkferrocarril 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
permalinkStep 3: create the #artichoke repository where the core #ruby development will take place. #artichoke
permalinkStep 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
permalinkCactusRef is still an incredibly unsafe crate, but at least it aborts if it detects a use-after-free #fail #artichoke
permalinkExtracting cactusref required completely rewriting #git history, updating docs, adding a build, adding benches, importing my blog post, updating links in the blog post #artichoke
permalinkStep 1: extract CactusRef from ferrocarril into its own repository github.com/artichoke/cactusref #artichoke
permalinkThis weekend I did the migration, which took place in multiple parts #artichoke #github
permalink