Skip to content

chore(blog): Blog on rustyscript implementation in superposition#1064

Open
Datron wants to merge 2 commits into
mainfrom
rustyscript-blog-post
Open

chore(blog): Blog on rustyscript implementation in superposition#1064
Datron wants to merge 2 commits into
mainfrom
rustyscript-blog-post

Conversation

@Datron

@Datron Datron commented Jun 23, 2026

Copy link
Copy Markdown
Collaborator

Add a blog post about rustyscript

Summary by CodeRabbit

Documentation

  • Added an in-depth blog post covering the design and implementation of sandboxed JavaScript validation and computation functions, including syntax validation approaches, runtime execution mechanisms, logging integration, and technical architecture for executing user-defined code securely within the application.

@Datron Datron requested a review from a team as a code owner June 23, 2026 12:34
@semanticdiff-com

Copy link
Copy Markdown

Review changes with  SemanticDiff

@coderabbitai

coderabbitai Bot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 8cdb777a-4859-4803-878d-ec2b76d04023

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Walkthrough

A new blog post (docs/blog/2026-06-22-rustyscript.md) is added, documenting the design and implementation of sandboxed JavaScript execution inside a Rust application using RustyScript, covering motivation, an initial NodeJS/isolate approach, and the RustyScript-based solution including syntax validation, runtime setup, console-log buffering, and Rust-side execution.

Changes

RustyScript Blog Post

Layer / File(s) Summary
Blog post: front matter and full article content
docs/blog/2026-06-22-rustyscript.md
Adds the blog post slug, title, description, and tags in front matter, followed by the complete article covering the problem statement, execute(payload) user function model, NodeJS isolate-based implementation, RustyScript syntax validation via rustyscript::validate, runtime/module setup, typeCheck execution via call_function_async, console-log buffering wrapper, and Rust-side retrieval of logs via getLogBuffer/clearLogBuffer.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Poem

🐇 A sandbox of JS, wrapped tight in Rust's arms,
execute(payload) — no runtime alarms!
Logs buffered in Deno, returned safe and neat,
RustyScript hops along, making validation complete.
The rabbit approves — this blog post's a treat! 🎉

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately reflects the main change: adding a blog post about rustyscript implementation in superposition.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch rustyscript-blog-post

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@Datron Datron added the P0 label Jun 29, 2026
Comment thread docs/blog/2026-06-22-rustyscript.md Outdated
tags: [technical deepdive, rust, js, functions]
---

TL;DR - We used RustyScript to sandbox user submitted JS code inside our rust application

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
TL;DR - We used RustyScript to sandbox user submitted JS code inside our rust application
TL;DR - We use RustyScript to execute user submitted JS code in a sandboxed fashion inside our rust application.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will replace this with We use RustyScript to sandbox and execute user submitted JS code inside our rust application

Comment thread docs/blog/2026-06-22-rustyscript.md Outdated

When a function is being edited/created, we also ensured that the function the user provided is valid.

This was a simple solution we tried initially and it worked well - until users wanted more capabilities. One capability was **Value Compute Functions** - functions that returned a vector of values. Users wanted to select a value from a dynamic list of potential values that changed often which was fetched from internal systems at Juspay. Another downside to our nodeJS isolate solution was a lot of wrapper code to ensure that we properly isolated user code. We didn't validate if the code that was being stored was valid syntatically, and if node could not execute it we didn't return that error to the user.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just internal systems is sufficient - need not refer to company name unless absolutely needed.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any reason to not mention Juspay? Would help contextualize internal systems and helps readers understand that this is used somewhere

Comment thread docs/blog/2026-06-22-rustyscript.md Outdated

# Running Javascript in Rust with Rustyscript

Rustyscript is powerful and extremely customizable for running user code - it has a permissions model, functions that you can expose from rust to use in JS land and some very nice built in functionality like console, crypto, http, etc.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Rustyscript is powerful and extremely customizable for running user code - it has a permissions model, functions that you can expose from rust to use in JS land and some very nice built in functionality like console, crypto, http, etc.
Rustyscript is powerful and extremely customizable for running user submitted JS code - it has a permissions model, functions that you can expose from rust to use in JS land and some very nice built in functionality like console, crypto, http, etc.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The title mentions javascript so I don't want to repeat it too many times and the word submitted is implied

Comment thread docs/blog/2026-06-22-rustyscript.md Outdated

- Create a basic runtime
- Load a javascript module,
- Call a function and the resulting value

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This point seems incomplete - did you mean and

consume the resulting value ?

Comment thread docs/blog/2026-06-22-rustyscript.md Outdated
@@ -0,0 +1,236 @@
---
slug: js-sandbox-in-rust
title: Rust JS Sandbox - Running Untrusted JavaScript Inside Superposition

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we change untrusted to user defined ?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The meaning is the same - we want to isolate and execute the code.

description: The design and implementation of validation and value compute functions - running user defined JS functions inside rust that is seamless and isolated
tags: [technical deepdive, rust, js, functions]
---

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we add a section for what all we sandboxed ?

@Datron Datron Jun 29, 2026

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We sandboxed functions only is my understanding, can you give an example of what this section would be

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think @sauraww means to ask what all capabilities are available for functions to execute (basically the rest of the world is denied right) ?

Is that right @sauraww ?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes @knutties

TL;DR - We used RustyScript to sandbox user submitted JS code inside our rust application

[Superposition](https://github.com/juspay/superposition) is a context-aware configuration management system that ensures correct, safe and reliable config changes. One of the ways we've achieved this goal is with jsonschema types for all configuration values with a default value. We call this concept [Default Configs](/docs/basic-concepts/context-aware-config/default-config). We soon realized an issue - though the type is right; that does not guarantee the correctness of the actual value.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we add example of URL to make the argument stronger ?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Its in the example below

Comment thread docs/blog/2026-06-22-rustyscript.md Outdated
We came up with functions - a way for any end user to write validation functions and link it to a Default Config or [Dimension](/docs/basic-concepts/context-aware-config/dimensions) to ensure the correctness of that value (should they want to do that). These functions are written in our frontend monaco editor and saved to a database with some other information. The function definition looks like this:

```
async function execute(payload) -> boolean

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is wrong js syntax

async function execute(payload) {
  return true; // boolean
}

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a function definition, not JS code. Its an example

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But example can be valid JS code right - just don't want to introduce custom code representations which an average reader might not be familiar with or can get confused.

We don't control readers - but we can afford to be clear from get go is what the broader spirit of the comment is.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just want to define the function inputs and outputs, the code representation would need a bit more cognitive effort to read this

Comment thread docs/blog/2026-06-22-rustyscript.md Outdated

# First implementation - NodeJS isolates

Since we just needed a boolean return value, we wrapped the user code with Isolates and ran it as a nodeJS script. If the function returned false, the code forced the script to terminate with an custom exit code. When this was run through Rust's `std::process::Command`, we checked the exit code and deciphered the return value of the function. Users also asked for logs, so console.log would output to stdout, which we also read and returned to the user. Since this was NodeJS, any npm package like axios for HTTP requests we wanted to make available to the user could just be installed and used along with the script we we're running.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isolates makes it a little confusing.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is the technical term

Comment thread docs/blog/2026-06-22-rustyscript.md
Comment thread docs/blog/2026-06-22-rustyscript.md Outdated

# First implementation - NodeJS isolates

Since we just needed a boolean return value, we wrapped the user code with Isolates and ran it as a nodeJS script. If the function returned false, the code forced the script to terminate with an custom exit code. When this was run through Rust's `std::process::Command`, we checked the exit code and deciphered the return value of the function. Users also asked for logs, so console.log would output to stdout, which we also read and returned to the user. Since this was NodeJS, any npm package like axios for HTTP requests we wanted to make available to the user could just be installed and used along with the script we we're running.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

with a custom exit code

Comment thread docs/blog/2026-06-22-rustyscript.md Outdated
// value_validate is an object that contains all arguments a validation function would need
const { key, value, type, environment } = value_validate;
let response = await fetch(value);
return response.status == '200';

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

return response.status == 200;

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both work

Comment on lines +79 to +83
export function typeCheck() {
if (typeof execute === "undefined") {
throw new Error("execute function is not defined");
}
}

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

export function typeCheck() {
if (typeof execute !== "function") {
throw new Error("execute must be a function");
}
}

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is what is in superposition

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should then fix it in superposition then ideally.

Comment thread docs/blog/2026-06-22-rustyscript.md Outdated

Rustyscript can do a lot more than what we've shared here - I recommend taking a look at the [documentation](https://rscarson.github.io/rustyscript-book/index.html) if you've never used it before. For Superposition, its ability to run isolated javascript seamlessly from within rust has enabled our team to provide more useful features to customers.

If you like the idea of Superposition, do take a look at our [docs](https://juspay.io/superposition/docs) to learn more. Have questions? Join our [slack](superpositionjp.slack.com) to interact with the team. No newline at end of file

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Slack link is broken. Can you fix it ?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Broken how? This is what we have in readme

@knutties knutties left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Grammar and flow pass on the blog post. Inline comments include suggestion blocks where a concrete replacement is appropriate. A few higher-level notes that don't map cleanly to single lines:

1. Naming consistency (highest-impact single fix). Across the post you have RustyScript / Rustyscript / rustyscript, rust / Rust, nodeJS / NodeJS / Node.js, and javascript / JavaScript / JS. Pick one canonical form for each and do a global pass — the inconsistency is the most distracting thing about the current draft.

2. "First implementation" section buries the most interesting drawback. The strongest motivation for moving off Node isolates — limited capabilities (compute functions returning lists), no syntax pre-validation, heavy wrapper code, process-spawn overhead — is condensed into one dense paragraph (L47). Consider splitting into "What worked" (1–2 sentences) and "Why we outgrew it" (a short bulleted list).

3. "Other options" is a single sentence. Naming why mlua was dropped and what you concretely compared between rquickjs and rustyscript would make this section much more useful to readers evaluating their own embedding choices.

4. Code-heavy middle reads as redundant. The Rust snippets at L100–137 and L184–230 are nearly identical in structure (create runtime → load module → call function → handle error). Consider showing the first one fully, then for the second highlighting only what's new (the log capture, the wrapper) instead of re-printing the whole pattern.

5. Missing transitions. "Other options" jumps straight into "Running JavaScript in Rust with Rustyscript" — a one-line lead-in like "Here's how we wired it up" softens the section break.

Happy to follow up with a second pass once these are addressed.

Comment thread docs/blog/2026-06-22-rustyscript.md Outdated
@@ -0,0 +1,236 @@
---
slug: js-sandbox-in-rust
title: Rust JS Sandbox - Running Untrusted JavaScript Inside Superposition

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Double space after title:.

Suggested change
title: Rust JS Sandbox - Running Untrusted JavaScript Inside Superposition
title: Rust JS Sandbox - Running Untrusted JavaScript Inside Superposition

Comment thread docs/blog/2026-06-22-rustyscript.md Outdated
---
slug: js-sandbox-in-rust
title: Rust JS Sandbox - Running Untrusted JavaScript Inside Superposition
description: The design and implementation of validation and value compute functions - running user defined JS functions inside rust that is seamless and isolated

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

user defined should be hyphenated, rust should be capitalised, and the that is seamless and isolated clause is grammatically ambiguous (what does that refer to?).

Suggested change
description: The design and implementation of validation and value compute functions - running user defined JS functions inside rust that is seamless and isolated
description: Designing and implementing validation and value-compute functions: how we run user-defined JS inside Rust, seamlessly and in isolation.

Comment thread docs/blog/2026-06-22-rustyscript.md Outdated
tags: [technical deepdive, rust, js, functions]
---

TL;DR - We used RustyScript to sandbox user submitted JS code inside our rust application

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

user-submitted, Rust, and the crate is consistently Rustyscript/rustyscript (not RustyScript) in its own docs — pick one form and apply globally.

Suggested change
TL;DR - We used RustyScript to sandbox user submitted JS code inside our rust application
TL;DR - We used Rustyscript to sandbox user-submitted JS code inside our Rust application

Comment thread docs/blog/2026-06-22-rustyscript.md Outdated

TL;DR - We used RustyScript to sandbox user submitted JS code inside our rust application

[Superposition](https://github.com/juspay/superposition) is a context-aware configuration management system that ensures correct, safe and reliable config changes. One of the ways we've achieved this goal is with jsonschema types for all configuration values with a default value. We call this concept [Default Configs](/docs/basic-concepts/context-aware-config/default-config). We soon realized an issue - though the type is right; that does not guarantee the correctness of the actual value.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few issues:

  • Missing Oxford comma (correct, safe, and reliable) — used inconsistently elsewhere in the post.
  • One of the ways we've achieved this goal is with … with … double-with reads awkwardly.
  • The semicolon in though the type is right; that does not guarantee … is incorrect — should be a comma or em-dash.
  • Trailing whitespace.
Suggested change
[Superposition](https://github.com/juspay/superposition) is a context-aware configuration management system that ensures correct, safe and reliable config changes. One of the ways we've achieved this goal is with jsonschema types for all configuration values with a default value. We call this concept [Default Configs](/docs/basic-concepts/context-aware-config/default-config). We soon realized an issue - though the type is right; that does not guarantee the correctness of the actual value.
[Superposition](https://github.com/juspay/superposition) is a context-aware configuration management system that ensures correct, safe, and reliable config changes. One of the ways we achieve this is by requiring a JSON Schema and a default for every configuration value. We call this concept [Default Configs](/docs/basic-concepts/context-aware-config/default-config). We soon realized an issue though the type is right, that does not guarantee the correctness of the actual value.

Comment thread docs/blog/2026-06-22-rustyscript.md Outdated
}
```

The most strict JSON schema for the value of image_url would be:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

most strictstrictest.

Suggested change
The most strict JSON schema for the value of image_url would be:
The strictest JSON schema for the value of image_url would be:

Comment thread docs/blog/2026-06-22-rustyscript.md Outdated
}
}
```
We validate this with `rustyscript::validate`, which takes a string and tells you if its valid JS syntax:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

itsit's.

Suggested change
We validate this with `rustyscript::validate`, which takes a string and tells you if its valid JS syntax:
We validate this with `rustyscript::validate`, which takes a string and tells you if it's valid JS syntax:

Comment thread docs/blog/2026-06-22-rustyscript.md Outdated
Comment on lines +95 to +97
- Create a basic runtime
- Load a javascript module,
- Call a function and the resulting value

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

List items aren't parallel: L96 ends with a comma, L97 is missing a verb (Call a function and the resulting value). Also javascriptJavaScript.

Suggested change
- Create a basic runtime
- Load a javascript module,
- Call a function and the resulting value
- Create a basic runtime
- Load a JavaScript module
- Call a function and get the resulting value

Comment thread docs/blog/2026-06-22-rustyscript.md Outdated
Ok(())
```

Now when this function needs to be run to validate any input or change, it is wrapped in the below JS code. Our wrapper code for user functions in rustyscript looks like this, we override console so that it can output logs to an array:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comma splice (looks like this, we override …) and the sentence is doing two things at once. Suggest splitting and leading with what the wrapper actually does so the reader knows what to look for in the snippet.

Suggested change
Now when this function needs to be run to validate any input or change, it is wrapped in the below JS code. Our wrapper code for user functions in rustyscript looks like this, we override console so that it can output logs to an array:
Now when this function needs to be run to validate any input or change, it is wrapped in the JS code below. Note the console override — it routes every log call into an in-memory buffer that we expose via `getLogBuffer`:

Comment thread docs/blog/2026-06-22-rustyscript.md Outdated

# Conclusion

Rustyscript can do a lot more than what we've shared here - I recommend taking a look at the [documentation](https://rscarson.github.io/rustyscript-book/index.html) if you've never used it before. For Superposition, its ability to run isolated javascript seamlessly from within rust has enabled our team to provide more useful features to customers.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The conclusion is thin and doesn't tie back to the opening pain point (correctness beyond types). Quantifying/qualifying the win lands harder.

Suggested change
Rustyscript can do a lot more than what we've shared here - I recommend taking a look at the [documentation](https://rscarson.github.io/rustyscript-book/index.html) if you've never used it before. For Superposition, its ability to run isolated javascript seamlessly from within rust has enabled our team to provide more useful features to customers.
Rustyscript can do a lot more than what we've shared here - I recommend taking a look at the [documentation](https://rscarson.github.io/rustyscript-book/index.html) if you've never used it before. For Superposition, Rustyscript's ability to run isolated JavaScript seamlessly from within Rust has unlocked richer correctness guarantees — we now support both validation and value-compute functions with full syntax checking and captured logs, without spawning a subprocess.

Comment thread docs/blog/2026-06-22-rustyscript.md Outdated

Rustyscript can do a lot more than what we've shared here - I recommend taking a look at the [documentation](https://rscarson.github.io/rustyscript-book/index.html) if you've never used it before. For Superposition, its ability to run isolated javascript seamlessly from within rust has enabled our team to provide more useful features to customers.

If you like the idea of Superposition, do take a look at our [docs](https://juspay.io/superposition/docs) to learn more. Have questions? Join our [slack](superpositionjp.slack.com) to interact with the team. No newline at end of file

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[slack](superpositionjp.slack.com) — link is missing the https:// scheme so it renders as a relative path; also capitalise Slack.

Suggested change
If you like the idea of Superposition, do take a look at our [docs](https://juspay.io/superposition/docs) to learn more. Have questions? Join our [slack](superpositionjp.slack.com) to interact with the team.
If you like the idea of Superposition, do take a look at our [docs](https://juspay.io/superposition/docs) to learn more. Have questions? Join our [Slack](https://superpositionjp.slack.com) to interact with the team.

@knutties

Copy link
Copy Markdown
Collaborator
Screenshot 2026-06-29 at 4 49 17 PM @Datron - in case you are wondering what Oxford Comma is :) TIL as well.

@Datron Datron force-pushed the rustyscript-blog-post branch from 7816d68 to 96d284d Compare June 29, 2026 12:27
@Datron

Datron commented Jun 29, 2026

Copy link
Copy Markdown
Collaborator Author

@knutties @sauraww Can you take a look again, comments addressed

@knutties

knutties commented Jun 29, 2026

Copy link
Copy Markdown
Collaborator

@knutties @sauraww Can you take a look again, comments addressed

Left minor comments on the code examples - I think we can afford to write actual working examples even if they are trivial. Many folks and AI might use those snippets verbatim sometimes.

@Datron Datron force-pushed the rustyscript-blog-post branch from 96d284d to e38f4a3 Compare June 30, 2026 06:25
@Datron Datron requested review from knutties and sauraww June 30, 2026 06:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants