Range lets you open a Linux environment of any size without downloading it first.
Let me just show you what i mean by that.
Example 1. Any docker image.
Say i want to test something with Python 3.12
$ range shell python:3.12
This will download the image and index all the layers, but this happens only once (same as docker pull).
The fun part is the second run: $ range shell python:3.12
Range environment
Artifact python:3.12
Logical size 1.35 GB
Runtime darwin/arm64
Workload interactive
Profile 4 prior sessions
Ready 2.82 s
root@range:/# python3 --version
Python 3.12.14
You are inside in 2.82 seconds. Now, say you want python:3.13 after that. Since 3.12 and 3.13 have common layers: $ range shell python:3.13
Indexing python:3.13, layer 5/7, 6.20 MB, once
Indexing python:3.13, layer 6/7, 26.89 MB, once
Indexing python:3.13, layer 7/7, 249 B, once
...
root@range:/# python3 --version
Python 3.13.15
You are in! We only downloaded 30MB out of 400MB simply because Python 3.12 and 3.13 share the first 4 layers.Example 2. I don't want to download at all.
$ range shell https://github.com/andreygrehov/range/releases/download/demo/go1.23-arm64.range
[1.85 second later]
root@range:/go# go version
go version go1.23.12 linux/arm64
.range is my own format. The filesystem is already indexed, so there is nothing for you to index, therefore almost nothing to download (above example - 6MB out of 1GB). I plan to index top NN docker images so that you don't have to download anything on the first run ever.See https://getrange.sh to learn more :)