ringenv

138 views
Skip to first unread message

Azzeddine Remmal

unread,
Sep 28, 2026, 4:38:12 PM (11 days ago) Sep 28
to The Ring Programming Language
Hello Mahmoud

 ringenv is an isolated virtual environment and version manager for the Ring Programming Language.

Built natively in Ring, ringenv enables developers to download and manage multiple Ring language versions, create lightweight project-specific virtual environments with isolated binaries, runtime libraries, and shell activation scripts across Windows, Linux, and macOS.


======================================================================                  
  ringenv - Isolated Virtual Environment & Version Manager for Ring                    
======================================================================                  
                                                                                       
Usage:                                                                                  
  ringenv <command> [arguments] [options]                                              
  ring main.ring <command> [arguments] [options]                                        
                                                                                       
Commands:                                                                              
  install <version> [--light]    Download and install a Ring version                    
  remove  <version>              Uninstall and remove an installed version              
  list                           Display all installed Ring versions                    
  venv create <path> [-v <ver>]  Create an isolated virtual environment                
  version                        Display ringenv version and platform info              
  help                           Display this help manual                              
                                                                                       
Command Details & Examples:                                                            
                                                                                       
  1. Install Ring version:                                                              
     ringenv install 1.27                                                              
     ringenv install 1.26 --light                                                      
                                                                                       
  2. Remove installed Ring version:                                                    
     ringenv remove 1.27                                                                
     ringenv uninstall 1.26                                                            
                                                                                       
  3. List installed versions:                                                          
     ringenv list                                                                      
                                                                                       
  4. Create virtual environment:                                                        
     ringenv venv create .rvenv --version 1.27                                          
     ringenv venv create myproject_env -v 1.26                                          
     ringenv venv create .rvenv                                                        
                                                                                       
  5. Activating virtual environment:                                                    
     Windows CMD:         <path>\Scripts\activate.bat                                  
     Windows PowerShell:  <path>\Scripts\activate.ps1                                  
     Linux / macOS:       source <path>/bin/activate                                    
                                                                                       
  6. Deactivating virtual environment:                                                  
     deactivate                                                                        
                                                                                       
Online Repository:                                                                      
  https://github.com/Azzeddine2017/ringenv                                              
======================================================================                  
                                                                                        
my regards,
Azzeddine

Mahmoud Fayed

unread,
Sep 28, 2026, 6:24:07 PM (11 days ago) Sep 28
to The Ring Programming Language
Hello Azzeddine

Thanks for sharing your tool/package :D


Greetings,
Mahmoud

Bert Mariani

unread,
Sep 30, 2026, 11:11:38 AM (9 days ago) Sep 30
to The Ring Programming Language
Hello Azzeddine
Another welcomed Addition !!

Can it also select the External Libraries you want to Install
       ringpm refresh
       ringpm search
Gives a List of everything available,
but I am more interested in Libraries that are not in Ring

=========================
Package : analogclock (Analog Clock application for th
Package : calculator (Calculator application for the R
Package : checkers (Checkers game for the Ring program
Package : chess (Chess game for the Ring programming l
...
Package : ring-cffi (Foreign Function Interface (FFI)
Package : piano (Musical Notes, Chords and WAV Generat
Package : emoji (lightweight and efficient emoji proce
Package : bolt (Blazing-fast web framework for the Rin
Package : dbflib (DBF/FPT library for the Ring Program
Package : ringquantum (Our ringquantum package using t
Package : svglib (SVG (Scalable Vector Graphics) libra
Package : pdflib (PDF library for the Ring Programming
Package : pptxlib (PPTX (PowerPoint) library for the R
Package : xlsxlib (XLSX (Excel) library for the Ring P
Package : docxlib (DOCX (Word) library for the Ring Pr
Package : ringscript (Run Ring in the browser (Ring VM
Package : ringserv (A modern application server in one
Package : ring2apk (Build Android APKs from Ring appli
Package : steamlib (Support Steam Achievements (for Wi
Package : ringenv (Download and manage multiple Ring l
Package : ringqr (QR Code generator (ISO/IEC 18004 Mod
Package : ringbc (Barcode generator (EAN-13 and CODE12
Package : ringfm (Text measurement (Real font metrics
Package : ascii2label (Label layout tool (An ASCII dra

Regards
Bert Mariani

Azzeddine Remmal

unread,
Sep 30, 2026, 6:15:27 PM (9 days ago) Sep 30
to The Ring Programming Language
Hello  Bert 

 Community Libraries Hub (External Packages)
Discover and install external libraries developed by the Ring community (Excel, Word, PowerPoint, PDF, QR Code, Barcode, Web Frameworks, FFI, LibSQL, etc.):

# List community-developed external libraries (Default View - compact & clean)
ringenv hub
# Or:
ringenv libs

# List all 250+ packages in the registry (including core extensions, samples & games)
ringenv hub --all

# List official Ring packages and samples only (@ringpackages)
ringenv hub --official

# Search across all packages (community & official) by keyword:
ringenv hub search excel
ringenv hub search sql

# View library details and live overview extracted from the repository README.md:
# (Specify by package name or by table row number #)
ringenv hub info xlsxlib
ringenv hub info 1
ringenv hub info ring-libsql

# Install a community library into current environment via ringpm:
# (Specify by package name or by table row number #)
ringenv hub install xlsxlib
ringenv hub install 1

Key Features of the Hub:
Smart Community Filtering: Displays curated, community-developed libraries by default (ideal for finding productivity libraries without scrolling through 200+ demo games).
Fast Silent Caching: Automatically caches registry data locally with zero delay and no progress bar clutter.
Numbered Library Table: Every package is assigned an index number # so you can install or inspect packages without typing long names.
Repository README Extraction: ringenv hub info automatically fetches and parses the live README.md directly from the library's GitHub repository, displaying a formatted summary of what the library does.
ANSI Terminal Styling: Full ANSI color highlighting with automatic detection and --no-color / NO_COLOR support.



my regards,
Azzeddine

Bert Mariani

unread,
Sep 30, 2026, 9:07:15 PM (9 days ago) Sep 30
to The Ring Programming Language
Hello Azzedine

Thanks for the details and explanations, and commands to use for the External Libraries.

Best Regards
Bert Mariani

Azzeddine Remmal

unread,
Oct 1, 2026, 6:48:54 AM (8 days ago) Oct 1
to The Ring Programming Language
Hello Mahmoud Bert and everyone.

 [Announcement] ringenv v1.1.0: Virtual Environments, Host Library Harvester, Zero-Config Desktop Bundling, and Dynamic Android Engine for Ring!
Hello Ring Community & Developers! 

We are thrilled to announce the release of ringenv v1.1.0, a major upgrade that turns ringenv from a virtual environment and multi-version manager into a complete modern workflow, packaging, and deployment toolchain for the Ring programming language.

What is ringenv?
ringenv is a native, cross-platform tool developed entirely in Ring (libcurl.ring, stdlibcore.ring) that brings modern project isolation, package sandboxing, and version management to Ring developers across Windows, Linux, and macOS.

With ringenv, you can:

Install and switch between multiple Ring runtimes (ringenv install 1.27, ringenv install 1.26).
Create isolated virtual environments (ringenv venv create .rvenv).
Activate environments across any shell (cmd, PowerShell, bash, zsh).
Explore and install from Bert's 250+ community packages (ringenv hub).

What's New in v1.1.0?
In version 1.1.0, we focused on solving the biggest pain points in application distribution: dependency harvesting, missing DLLs in desktop deployments, and native C-extension auto-linking for Android APKs.

1.  The Host Library Harvester (ringenv harvest)
Previously, when creating an isolated environment, accessing heavy host-bundled libraries (like guilib, raylib, threads, libuv, etc.) required manual copying of files and DLLs.

Now, ringenv harvest can automatically copy, organize, and patch official host libraries directly into your project's virtual environment:

bash
# Harvest Qt GUI library (code, DLLs, plugins, and MVC parent controllers)
ringenv harvest guilib
# Harvest Raylib game engine
ringenv harvest raylib
# Harvest background multithreading
ringenv harvest threads

 1 Smart Static Scanner (ringenv harvest scan)
Don't know what libraries your code needs? Run:

bash
ringenv harvest scan
ringenv statically analyzes all load "..." statements in your .ring files, identifies any missing standard libraries, and offers to harvest them automatically!

2. Zero-Config Desktop Bundling (ringenv build desktop)
Creating a standalone .exe with ring2exe is great, but GUI applications traditionally fail when run on a machine without Ring installed because Qt plugins and DLLs are missing.

ringenv build desktop provides a complete, one-step distribution pipeline:

bash
ringenv build desktop
What it does automatically:
Compiles your app via ring2exe-plus into a native standalone executable.
Harvests all runtime DLLs from your active virtual environment (ringqt.dll, Qt5Core.dll, Qt5Gui.dll, Qt5Widgets.dll, etc.).
Bundles Qt Platform Plugins: Copies platforms/qwindows.dll, imageformats/, and styles/ directly into the release folder.
Generates qt.conf: Configures Qt plugin discovery paths so the executable runs portably from any folder or USB drive.
Collects Assets: Copies assets/, icons, and resources into build/desktop/release/.
Result: A 100% self-contained, portable folder ready for distribution or NSIS installer creation!

3.Dynamic Android Engine (ringenv build apk)
Building Android applications with native C extensions using ring2apk often required manual CMake hacking. ringenv build apk now features an automated dynamic dependency resolution engine:

bash
ringenv build apk
Key Android capabilities:
Dynamic C-Extension Auto-Harvesting: Scans your project for C-based Ring libraries (e.g. ring_libuv, ring_threads, ring_sqlite) and extracts their native C wrapper code into src/cpp/ext/.
Automatic libmain.so Compilation: Integrates with RingExtensions.cmake to compile all C sources directly into the shared library loaded by Android's NativeActivity.
Automatic Runtime Patching: Protects .ring wrappers with if isandroid() guards, completely eliminating Android LoadLib() dynamic loading crashes.
Architectural Guidance: Detects desktop-only frameworks (like guilib/Qt Widgets) and guides developers toward mobile-ready GUI options (WebView/HTML5 or Raylib OpenGL ES).

4. RingQt Mobile Exporter (ringenv scaffold qtmobile)
For developers building full Qt Widgets or QML applications for Android or iOS, ringenv introduces the Qt Creator project generator:

bash
ringenv scaffold qtmobile
Scaffolds a complete turnkey Qt Creator project referencing the official RingQt mobile templates (ringqt/project).
Automatically compiles your Ring source code into bytecode (ringapp.ringo).
Packages all media, assets, and source code into the Qt Resource file (project.qrc).
Open ringqt.pro in Qt Creator and press Run to deploy directly to your device!
Quick Command Reference
Command Action
ringenv venv create <dir> Create an isolated virtual environment
ringenv harvest <library> Harvest official runtime libraries (guilib, raylib, etc.)
ringenv harvest scan         Scan project dependencies and harvest missing ones
ringenv build desktop         Build self-contained portable desktop release
ringenv build apk                  dynamic Android APK package

ringenv scaffold qtmobile Export ready-to-run Qt Creator Mobile project
ringenv hub Browse community packages
ringenv hub info <name> View live GitHub README and library details

How to Install / Upgrade
You can install or update ringenv directly using ringpm:

ringpm install ringenv from Azzeddine2017
ringpm  update  ringenv

Or clone the repository:

bash
git clone https://github.com/azzeddine2017/ringenv.git
cd ringenv
setup.bat     # On Windows
./setup.sh    # On Linux / macOS
We would love to hear your feedback, ideas, and test reports across different operating systems!

my regards,
Azzeddine

Mahmoud Fayed

unread,
Oct 1, 2026, 8:49:47 AM (8 days ago) Oct 1
to The Ring Programming Language
Hello Azzeddine

Thank you very much for the updates :D

Greetings,
Mahmoud

Gaiamap

unread,
Oct 1, 2026, 8:56:23 AM (8 days ago) Oct 1
to The Ring Programming Language
Impressive!

Bert Mariani

unread,
Oct 1, 2026, 4:30:01 PM (8 days ago) Oct 1
to The Ring Programming Language
Hello Azzeddine

On Windows
The commands you showed me on your previous post Work.
Below in your examples ...
The "bash" is a  Unix/Linux  script  command

===========================================
c:\ring>ringpm install ringenv from Azzeddine2017
Installing ringenv (master) ---> ringenv (1.1.0)
....
Download File : docs/packaging_and_distribution.md
Download File : bin/ringenv.bat
===========================================
c:\ring>bash
'bash' is not recognized as an internal or external command,
operable program or batch file.

c:\ring>ringenv harvest scan
No active virtual environment detected.
c:\ring>

================================
Regards
Bert Mariani


Azzeddine Remmal

unread,
Oct 1, 2026, 6:17:16 PM (8 days ago) Oct 1
to The Ring Programming Language
Hello Bert,

Thank you very much for testing ringenv and reporting these issues! Here's a summary of what happened and what has been fixed:

About ringenv harvest scan — "No active virtual environment detected"
This is correct behavior. The harvest command imports libraries from the host Ring installation into a project-specific virtual environment. You need to:

Create a project directory
Create a virtual environment inside it
Activate it
Then run harvest

Example (Windows):
mkdir myproject
cd myproject
ringenv venv create .rvenv
.rvenv\Scripts\activate.bat
ringenv harvest scan

Example (Linux):
mkdir myproject
cd myproject
ringenv venv create .rvenv
source .rvenv/bin/activate
ringenv harvest scan

 Verifying Installation on Linux
Step 1: Install Ring on Linux
Make sure Ring is installed and the ring binary is in your PATH:

which ring
ring --version

Step 2: Install ringenv

ringpm install ringenv from Azzeddine2017
Step 3: Verify the launcher script
After installation, check that the launcher exists and is executable:

which ringenv
ls -la $(which ringenv)
You should see something like:

-rwxr-xr-x 1 user user 940 Oct 1 12:00 /usr/local/bin/ringenv
If the file exists but is not executable, fix it with:

chmod +x $(which ringenv)
Step 4: Check for Windows line endings (CRLF)
If you get errors like $'\r': command not found, the file has Windows line endings. Fix it with:

sed -i 's/\r$//' $(which ringenv)
Note: The latest version includes a .gitattributes file that forces LF endings for all .sh and shell scripts, so this issue should not occur with fresh installs.

Step 5: Test basic commands
ringenv version
ringenv help
ringenv list-remote

Step 6: Full workflow test
# Install a Ring version
ringenv install 1.27
# Create a project with virtual environment
mkdir ~/test-ringenv
cd ~/test-ringenv

ringenv venv create .rvenv --version 1.27
# Activate
source .rvenv/bin/activate
# Verify isolation
which ring
echo $RINGPATH
# Create a test script
echo '? "Hello from ringenv virtual environment!"' > test.ring
ring test.ring
# Deactivate
deactivate

my regards,
Azzeddine

Youssef Saeed

unread,
Oct 5, 2026, 12:54:13 AM (5 days ago) Oct 5
to The Ring Programming Language
Hello Azzeddine,

Thanks for sharing such a great project!

One quick note:
you don't need to use shell scripts at all, you can do everything directly in Ring itself.

Best regards,
Youssef

Azzeddine Remmal

unread,
Oct 5, 2026, 3:03:33 AM (4 days ago) Oct 5
to The Ring Programming Language
Hello Youssef,

Thank you very much for your kind words and valuable feedback!
Following your recommendation, I have completely transitioned both projects (ringenv and ringtest) to 100% pure Ring:
1. Removed all Shell/Batch scripts: Completely eliminated `setup.bat`, `setup.sh`, and the pre-bundled `bin/` wrapper files.
2. Unified `setup.ring` installer: Created a single, cross-platform installer script in Ring for each project that handles local setup, file deployment into `tools/ringpm/packages/`, load stubs, and launcher generation automatically across Windows, Linux, and macOS.
3. Native RingPM integration: Configured `package.ring` with `:setup = "ring setup.ring"` and `:remove = "ring setup.ring remove"`.
4. Pure runtime path handling: Cleaned up the codebase to rely directly on Ring's built-in `exefolder()`, `currentdir()`, and `chdir()` functions.
Everything now runs cleanly and natively within the Ring ecosystem. Thanks again for your guidance and continuous support!

Best regards,
Azzeddine

Mahmoud Fayed

unread,
Oct 5, 2026, 12:25:26 PM (4 days ago) Oct 5
to The Ring Programming Language
Hello Azzeddine

Please write the about section for each of your projects in GitHub
This helps in finding your projects in search operations 

about_section.png

Greetings,
Mahmoud

On Monday, September 28, 2026 at 11:38:12 PM UTC+3 Azzeddine Remmal wrote:
Reply all
Reply to author
Forward
0 new messages