Virtue downloads

A (preliminary) Virtue languagage manual:

The Virtue of Programming in Virtue



Download the appropriate executable for your processor/operating system combination.

For Win systems download the appropriate 'cygwin1.dll' (32 or 64 bit version)

Rename the downloaded file (UNIX/Linux: 'Virtue', Win: 'Virtue.exe')

Put the executable UNIX/Linux file into appropriate bin directory (e.g. /usr/local/bin, ~/bin ...).

Put the executable Win file in a folder. Put the appropriate 'cygwin1.dll' in the same folder. Execute the Virtue.exe from that folder by double clicking (single processor mode), or use cmd/powershell to use Virtue flags.

See below for Virtue flags (e.g. 'Virtue -c' for SMP execution).

BEWARE: The Virtue interpreter is a work in progress (both linguistical and implementational). Therefore there are quite a few bugs, which may creep up unexpectedly.

Virtue v0.8 build 4:

32 bit

MC68020+MC68881, Sun3, SunOS 4.1.1, Sun cc

Intel i86, Win32, Cygwin NT-6.0, gcc; cygwin1.dll 32-bit

Intel i86, PC, FreeBSD 9.1, gcc

64 bit

MIPS IV.1, SGI IP30, IRIX64 6.5, MIPSpro cc

Sparc v9, Sun4u, SunOS 5.7 (Solaris 7), Sun WS6 cc

AMD x64, Win64, Cygwin NT-10.0, gcc; cygwin1.dll 64-bit

AMD x64, PC, Dragonfly BSD 5.8, gcc

AMD x64, PC, Linux, gcc

AMD x64, Sun i86pc, SunOS 5.10 (Solaris 10), Sun Wspro cc

Virtue v0.6 build 2733:

32 bit

Sparc, Sun4c, SunOS 4.1.3, Sun cc

Sparc v1, Sun4m, SunOS 5.5.1, gcc

Virtue v0.5 build 1866:

64 bit

PowerPC 520, Macintosh, NetBSD, gcc

Virtue examples:

Words and letters: Words.virt.

Count the number of words in input text :

'This is a text with seven words' words.

Give the frequency of each letter in input text:

'This is a slightly longer text with more letters to count their occurences in this test text' letters.

You can also read a text from file: 'Some_file.txt' TEXTREAD letters.

Multidimensional sphere: Sphere.virt.

Try for example: 21i21j21k21 10i10j10k10 9 sphere.

Multidimensional elipsoid: Elipsoid.virt.

Try for example: 21i21j21k21 10i10j10k10 7i3j5k9 elipsoid.

Beware: there is a lot of empty space.

Fibonacci numbers generator: Fibonacci.virt.

Calculate first 1300 Fibonacci numbers : 1300 INTERVAL resfib EACH.

"fib" is an OPERATOR, so you can use it with EACH as: 1300 INTERVAL @fib GET EACH.

Conway's Game of Life: Life.virt.

Mandelbrot and Julia sets generator/visualiser: Mandelbrot.virt.

Portable Pix Map renderer: Render.virt.

Render to a .ppm file:

Set the appropriate colorspace: e.g. default cosmap @colorspace SET.

Generate picture and render to file, for example:

512i512 .. 255i255 - MAGNITUDE 'sphere' ppm.

Open with any picture viewer.

Virtue flags:

Usage: Virtue -h -v -vv -q -u -c<arg> -c -th<arg> -t -p -pp<arg> -i{f,t,s} 

-h    This usage message
-v    Print version information.
-vv   Print version and other (possibly) interesting information.

-q    Quiet, non-interactive mode:
      no copyright notice, or any other text,
      except error messages.

-u    Unconstrain the access to files in directories of higher
      hierarchical position. Any file the user has permissions
      to read/write/append to will be accepted.

-c<number of processors>
-c    for automatic selection of <number of processors>
      Use SMP with <number of processors>.
-th<threads per processor>
      Specify number of threads per processor (SMP only)
      The default is 4.

-t    Print process timing information.
-p    Print performance information.
-pp<processor speed in MHz>
      Print processor performance information.
-i    Print summary of instruction timings when exiting
      (if not quiet).
-if   Print full summary of instruction timings,
      including floating point performance, when exiting
      (if not quiet).
-it   Print terse operations/S per instruction,
      when exiting (if not quiet).
-is   Print just the summary of average operation timings
      when exiting (if not quiet).

Last change: 25/6/2024, 6:58 CEST by Zorislav Shoyat (

Virtue introduction