Skip to content

1.93.0

Choose a tag to compare

@linic linic released this 14 Feb 11:14

I'm publishing the artifacts on github releases and on a partial mirror on http://tcz.facedebouc.sbs/.

Details

The docker image which built this can be found here
Note that it is big. Once pulled and uncompressed, it can take 40 GB or more.
I included the interesting files (build-log.txt, bootstrap.toml) in this release.

rust-x.y.z-i586-unknown-linux-gnu.tar.gz contains the toolchain which can run
on an i686 CPU.

Technically, it should be running on an i586, but see the
README for the rust-i586 repository
which explains why it may not be possible.

I'm using it for retro-computing in the rust-i586 git repo
and with a ThinkPad 560z. There, I build the .tcz files that can be used
with Tiny Core Linux to load rust and use it.

Download from github releases

Copy the script below and run it with ./github-release-download.sh 1.93.0

#!/bin/sh
wget https://github.com/linic/rust-i586/releases/download/$1/rust-$1-2026-01-31_111117-rust-i586-build-log.txt
wget https://github.com/linic/rust-i586/releases/download/$1/rust-$1-i586-unknown-linux-gnu.tar.gz
wget https://github.com/linic/rust-i586/releases/download/$1/rust-$1-i586-unknown-linux-gnu.tar.gz.bootstrap.toml
wget https://github.com/linic/rust-i586/releases/download/$1/rust-$1-i586-unknown-linux-gnu.tar.gz.md5.txt
wget https://github.com/linic/rust-i586/releases/download/$1/rust-$1-i586-unknown-linux-gnu.tar.gz.sha512.txt
wget https://github.com/linic/rust-i586/releases/download/$1/rust-$1-i586-unknown-linux-gnu.tar.gz.sig
wget https://github.com/linic/rust-i586/releases/download/$1/linic.asc
md5sum -c rust-$1-i586-unknown-linux-gnu.tar.gz.md5.txt
md5sum -c rust-$1-i586-unknown-linux-gnu.tar.gz.sha512.txt
gpg --verify rust-$1-i586-unknown-linux-gnu.tar.gz.sig

The artifacts at http://tcz.facedebouc.sbs/artifacts/artifacts.html might not always download

The artifacts at http://tcz.facedebouc.sbs/artifacts/artifacts.html
can be downloaded with a script at http://tcz.facedebouc.sbs/navigate.sh.
They may not always download because of limitations
Here's a copy of the navigate.sh script:

#!/bin/sh

##############################################################
# Copyright (C) 2026 linic@hotmail.ca under GPL-3.0 license. #
# https://github.com/linic/tcz.facedebouc.sbs                #
##############################################################

usage()
{
  echo "./navigate.sh [list | download [artifact_name]] [url]"
  echo "example: ./navigate.sh list https://tcz.facedebouc.sbs"
}

get_artifacts_lst()
{
  ARTIFACTS_LST=`wget -qO- "$BASE_URL/artifacts.lst"`
  return $?
}

get_download_info()
{
  ORGANIZATION=`wget -qO- "$BASE_URL/organization.txt"`
  #ORGANIZATION=`wget -qO- "$BASE_URL/16.x/x86/tcz/organization.txt"`
  if [ $? != 0 ] || [ -z "$ORGANIZATION" ]; then
    return 20
  fi
  REPOSITORY=`wget -qO- "$BASE_URL/repository.txt"`
  #REPOSITORY=`wget -qO- "$BASE_URL/16.x/x86/tcz/repository.txt"`
  if [ $? != 0 ] || [ -z "$REPOSITORY" ]; then
    return 21
  fi
  URL=https://github.com/$ORGANIZATION/$REPOSITORY.git/info/lfs/objects/batch
  H1="Accept: application/vnd.git-lfs+json"
  H2="Content-type: application/json"
  BODY="{\"operation\": \"download\", \"transfers\": [\"basic\"], \"ref\": {\"name\": \"refs/heads/main\"}, \"objects\": [{\"oid\": \"$SHA\", \"size\": $SIZE}], \"hash_algo\": \"sha256\"}"
  DOWNLOAD_INFO=`curl -s -X POST -H "$H1" -H "$H2" -d "$BODY" $URL`
  if [ $? != 0 ] || [ -z "$REPOSITORY" ]; then
    return 22
  fi
}

regular_download()
{
  wget -c -O "$ARTIFACT_NAME" "$BASE_URL/$ARTIFACT_RELATIVE_PATH"
  if [ $? != 0 ]; then
    echo "Failed to download $BASE_URL/$ARTIFACT_RELATIVE_PATH."
    return 50
  else
    echo "Downloaded $BASE_URL/$ARTIFACT_RELATIVE_PATH directly."
    echo "Maybe it is not in the github lfs."
    echo "When a file is not in the github lfs, download it directly."
    echo "Please inspect the file $ARTIFACT_NAME."
    return 0
  fi
}

download()
{
  get_artifacts_lst
  ARTIFACT_RELATIVE_PATH=`echo "$ARTIFACTS_LST" | grep --text "$ARTIFACT_NAME" | head -1`
  if [ ! -z "$ARTIFACT_RELATIVE_PATH" ]; then
    pointer=`wget -qO- "$BASE_URL/$ARTIFACT_RELATIVE_PATH"`
    if [ $? != 0 ] || [ -z "$pointer" ]; then
      echo "Failed to get pointer: $pointer"
      regular_download
      return 10
    fi
    SHA=`echo "$pointer" | grep -o 'sha256:[^"]*' | cut -d':' -f2 | head -1`
    if [ $? != 0 ] || [ -z "$SHA" ]; then
      echo "Failed to extract SHA: $SHA"
      regular_download
      return 11
    fi
    SIZE=`echo "$pointer" | grep -o 'size [^"]*' | cut -d' ' -f2 | head -1`
    if [ $? != 0 ] || [ -z "$SIZE"  ]; then
      echo "Failed to extract SIZE: $SIZE"
      regular_download
      return 12
    fi
    get_download_info
    HREF=`echo "$DOWNLOAD_INFO" | grep -o '"href":.*"[^"]*"' | cut -d'"' -f4 | head -1`
    ARTIFACT_NAME=`echo "$ARTIFACT_RELATIVE_PATH" | rev | cut -d'/' -f1 | rev`
    wget -c -O "$ARTIFACT_NAME" "$HREF"
    if [ $? != 0 ]; then
      regular_download
      return 13
    fi
    return $?
  else
    echo "$ARTIFACT_NAME not found in $BASE_URL/artifacts.lst"
    return 1
  fi
}

main()
{
  case "$1" in
    list)
      BASE_URL=$2
      if [ -z "$BASE_URL" ]; then
        usage
        exit 3
      fi
      get_artifacts_lst
      result=$?
      echo "$ARTIFACTS_LST"
      exit $result
      ;;
    download)
      BASE_URL=$3
      if [ -z "$BASE_URL" ]; then
        usage
        exit 4
      fi
      ARTIFACT_NAME=$2
      if [ -z "$ARTIFACT_NAME" ]; then
        usage
        exit 5
      fi
      download
      exit $?
      ;;
    *)
      usage
      exit $?
      ;;
  esac
}

main "$@"