igor-petruk/scriptisto

A language-agnostic "shebang interpreter" that enables you to write scripts in compiled languages.

Rust

1,092

338 commits

updated Feb 8, 2025

See the code

README

Scriptisto

Latest Version Build Status Crates.io License Libraries.io dependency status for latest release GitHub top language

Crates.io GitHub All Releases

Packaging status

It is tool to enable writing one file scripts in languages that require compilation, dependencies fetching or preprocessing.

It works as a "shebang" for those scripts, extracting build instructions from comments. If a script is changed, scriptisto rebuilds it and caches the result. If a script was already built, scriptisto immediately delegates to a binary with only <1 ms overhead.

Builds in Docker without installing a compiler on a host system are possible.

Advantages and use-cases are listed in the Wiki.

Demo

#!/usr/bin/env scriptisto

#include <stdio.h>
#include <glib.h>

// scriptisto-begin
// script_src: main.c
// build_cmd: clang -O2 main.c `pkg-config --libs --cflags glib-2.0` -o ./script
// scriptisto-end

int main(int argc, char *argv[]) {
  gchar* user = g_getenv("USER");
  printf("Hello, C! Current user: %s\n", user);
  return 0;
}
$ chmod +x ./script.c
$ ./script.c
Hello, C! Current user: username

Note: some templates such as rust take more time to build during the first time. The default behaviour is to supress the build logs, so do not be discouraged that you do not immediately see any output. More info in the wiki.

Installation

Scriptisto is available as a prebuilt statically-linked standalone binary or distributions packages at Releases or at Crates.io.

Please proceed to the Installation for instructions.

Documentation

Proceed to our Wiki.

Disclaimer

This is not an officially supported Google product.

linux
rust
scripting
unix

igor-petruk/scriptisto

A language-agnostic "shebang interpreter" that enables you to write scripts in compiled languages.

Rust

1,092

338 commits

updated Feb 8, 2025

See the code

README

Scriptisto

Latest Version Build Status Crates.io License Libraries.io dependency status for latest release GitHub top language

Crates.io GitHub All Releases

Packaging status

It is tool to enable writing one file scripts in languages that require compilation, dependencies fetching or preprocessing.

It works as a "shebang" for those scripts, extracting build instructions from comments. If a script is changed, scriptisto rebuilds it and caches the result. If a script was already built, scriptisto immediately delegates to a binary with only <1 ms overhead.

Builds in Docker without installing a compiler on a host system are possible.

Advantages and use-cases are listed in the Wiki.

Demo

#!/usr/bin/env scriptisto

#include <stdio.h>
#include <glib.h>

// scriptisto-begin
// script_src: main.c
// build_cmd: clang -O2 main.c `pkg-config --libs --cflags glib-2.0` -o ./script
// scriptisto-end

int main(int argc, char *argv[]) {
  gchar* user = g_getenv("USER");
  printf("Hello, C! Current user: %s\n", user);
  return 0;
}
$ chmod +x ./script.c
$ ./script.c
Hello, C! Current user: username

Note: some templates such as rust take more time to build during the first time. The default behaviour is to supress the build logs, so do not be discouraged that you do not immediately see any output. More info in the wiki.

Installation

Scriptisto is available as a prebuilt statically-linked standalone binary or distributions packages at Releases or at Crates.io.

Please proceed to the Installation for instructions.

Documentation

Proceed to our Wiki.

Disclaimer

This is not an officially supported Google product.

linux
rust
scripting
unix

Project health

Overall

2.8/10

Maintained

0/10

Code review

3/10
OpenSSF Scorecard

crates.io

Latest release

2.2.0 · Jun 8, 2024

Releases this year

0

Significant stargazers

(top 24 of 29)

André Arko

1,223 followers · starred Feb 2024

larpon

169 followers · starred Oct 2024

Stephan Renatus

136 followers · starred Apr 2026

rami3l

341 followers · starred Sep 2024