Task for contributors: Ringfmt - Formats Ring programs

462 views
Skip to first unread message

Mahmoud Fayed

unread,
Aug 11, 2025, 10:37:27 AMAug 11
to The Ring Programming Language
Hello

This topic is about a task for interested contributors who would like to contribute a new tool in ring/tools folder (Name: ringfmt)
I hope that one of the leaders in Ring community would start this project then the others could contribute.

Ring comes with the Tokens library that could process source code (In files or strings) and produce Ring tokens (Keywords, Operators, Literal, Identifier, Number, New Line, etc.)

For example,


load "tokenslib.ring"
func main
oTokens = new RingTokens {
fromFile("hello.ring")
PrintTokens()
? Copy("=",50)
}

We get the next output
Keyword     : SEE
Literal     : Hello, World!
EndLine
==================================================

The implementation of the PrintTokens() method exist here: ring/libraries/tokenslib/tokenslib.ring at master · ring-lang/ring

Expected Features

(1) Simple usage
ringfmt file_name.ring    
ringfmt *.ring                      # Think about StdLib - ListAllFiles() function

(2) Format options 
ringfmt file_name.ring -style1   # First style in Ring documentation
ringfmt file_name.ring  -style2 # Second style in Ring documentation
ringfmt file_name.ring -style3   # Third style in Ring documentation

(3) Testing
This tool should be tested against ring/language/tests/scripts files to format the file
And produce correct output that pass all of the tests.

During development try to produce a different output file so you can check the output against the input.

(4) Package

We expect that this tool should be provided as RingPM Package at first
So, we can take time to test it, report issues, etc.
Once it's perfect, we will merge it with the official Ring GitHub project.

(5) Development Tools

We expect that this tool will use only Ring code & stdlibcore.ring (No extra tools/libs)

Greetings,
Mahmoud

Mahmoud Fayed

unread,
Aug 11, 2025, 11:04:21 AMAug 11
to The Ring Programming Language
Hello

This is a related sample that demonstrates how to get the source code tokens (Including comments)

cCode = `// My First Program using Ring
? "Hello, World"  `

pState = ring_state_new()
aTokens = ring_state_stringtokens(pState,cCode,False,True)
ring_state_delete(pState)

for aToken in aTokens
? aToken
? "============="
next

Output:

6
// My First Program using Ring
4

=============
5
2
0

=============
1
?
23

=============
2
Hello, World
0

=============
5
2
0

=============

List Structure:

Each token is a sub list contains three items
1- Token Type
2- Token Value
3- Token Index  (Index inside keywords list or operators list)

# Token Type
C_KEYWORD = 0
C_OPERATOR = 1
C_LITERAL         = 2
C_NUMBER           = 3
C_IDENTIFIER = 4
C_ENDLINE         = 5
C_COMMENT = 6

Greetings,
Mahmoud

Bert Mariani

unread,
Aug 12, 2025, 1:12:37 PMAug 12
to The Ring Programming Language
Hello Mahmoud

Do I understand that this project is the make Ring Files look "Pretty"
Align all the "if-else-ok"  "for-next"  and " {} "  "while-end"  control Indenting etc

UsingTokensLib.ring  -- I tried to analyze this program first (See attached)
       EpochTime.ring
My question is: What do these numbers mean ?
After highlighting them -- Looks like they refer to an Operator List position    (  )   ,   =  [  ]  { }  etc
Where can the List reference be found ?

EndLine
Keyword     : FUNC
Identifier  : epochtime
Operator    : ( (7)
Identifier  : date
Operator    : , (10)
Identifier  : time
Operator    : ) (8)
EndLine
Identifier  : arraydate
Operator    : = (9)
Identifier  : split
Operator    : ( (7)
Identifier  : date
Operator    : , (10)
Literal     : /
Operator    : ) (8)
EndLine


====================================
###-------------------------------------------------------------
# EpochTime()
# Example ---  EpochSec = EpochTime( Date(), Time() )
# Call Format: EpochSec = EpochTime( "15/07/2016", "10:15:30" )
#              EpochSec = 1468577730
#---------------------------------------------------------------

Func EpochTime(Date, Time)

    arrayDate = split(Date, "/")
    arrayTime = split(Time, ":")

    Year = arrayDate[3] ; Month  = arrayDate[2] ; Day    = arrayDate[1]
    Hour = arrayTime[1] ; Minute = arrayTime[2] ; Second = arrayTime[3]

    cDate1    = Day +"/"+ Month +"/"+ Year
    cDate2    = "01/01/" + Year
    DayOfYear = DiffDays( cDate1, cDate2)

    ### Formula
    tm_sec  = Second    * 1
    tm_min  = Minute    * 60
    tm_hour = Hour      * 3600
    tm_yday = DayOfYear * 86400
    tm_year = Year      - 1900

    tm_year1 =         ( tm_year -  70)          * 31536000
    tm_year2 = ( floor(( tm_year -  69) /   4 )) * 86400
    tm_year3 = ( floor(( tm_year -   1) / 100 )) * 86400
    tm_year4 = ( floor(( tm_year + 299) / 400 )) * 86400

    ### Result
    EpochSec = tm_sec + tm_min + tm_hour + tm_yday + tm_year1 + tm_year2 - tm_year3 + tm_year4

return EpochSec
========================
EpochTime.ring

Mahmoud Fayed

unread,
Aug 12, 2025, 2:40:54 PMAug 12
to The Ring Programming Language
Hello Bert

>> "Do I understand that this project is the make Ring Files look "Pretty" Align all the "if-else-ok"  "for-next"  and " {} "  "while-end"  control Indenting etc"

Yes, this includes
(1) Control structures/functions/classes alignment
(2) Picking a specific style (one of the three styles in Ring documentation)

 >> "What do these numbers mean ?"

Each keyword/operator have a specific number

Greetings,
Mahmoud
Message has been deleted
Message has been deleted

Bert Mariani

unread,
Aug 13, 2025, 3:56:36 PMAug 13
to The Ring Programming Language
Hello Mahmoud
An initial attempt using "Start Keywords" and "End Keywords"
To increase or decrease indentation.
Need to expand keyword list and handle comments  #  //  /*  */
     AA-CodeFormater-1.ring

Uses an OpenDialog to choose the *.ring file.
     code.ring

Uses these libraries 
     load "stdlibcore.ring"
     load "dialog.ring"       // ringpm install dialog from ysdragon

=============================
BEFORE

func test
x=5+3

params{
red
green
blue
}
if x=5
see "x=5 is true"
end
end

========================
AFTER set inndent to 4
Selected file: C:\MyStuff\AA-FormatRing\code.ring

1 func test
2     x=5+3
3
4     params{
5         red
6         green
7         blue
8     }
9     if x=5
10         see "x=5 is true"
11     end
12 end
==========================


code.ring
AA-CodeFormatter-1.ring

Mahmoud Fayed

unread,
Aug 13, 2025, 7:43:48 PMAug 13
to The Ring Programming Language
Hello Bert

Thanks for starting the ringfmt project

It's expected from this tool to be used from the command line (similar to Ring2EXE and RingPM)
So no other library should be used (except stdlibcore.ring)

The AppArguments() function could be used to get the parameters:  Stdlib Functions — Ring 1.23.0 documentation

Greetings,
Mahmoud

Azzeddine Remmal

unread,
Aug 14, 2025, 3:12:13 AMAug 14
to The Ring Programming Language
Hello Mahmoud.

I've tried starting a ringfmt project.
I didn't meet all the requirements, and some conversion errors remain.
I hope members can help.

Greetings.
Azzeddine

Mahmoud Fayed

unread,
Aug 14, 2025, 6:01:31 AMAug 14
to The Ring Programming Language
Hello Azzeddine

Thank you very much for sharing your work and creating a RingPM package :D

Since our friend Bert is already started working on this project, He can check your work and decide if some functions/code could be merged with his ongoing implementation or He can achieve the goal in a different way. 

Greetings,
Mahmoud

Message has been deleted

Mahmoud Fayed

unread,
Aug 14, 2025, 7:18:36 AMAug 14
to The Ring Programming Language
Hello Azzeddine

>> "The important thing is to get the job done right."

You can always complete/distribute your work as a package & share it in the group.
Having multiple implementations for the same task provides a choice for the developers and helps in producing a better solution/tool.

Suggestions:
(1) Continue your work as GitHub project
(2) Add a batch file/shell script to use Ring2EXE and produce ringfmt.exe 

Our friend Bert, will check your work while introducing the official ringfmt tool. 
Also, other Ring developers could just install/try your tool using RingPM including me too.

Greetings,
Mahmoud

On Thursday, August 14, 2025 at 1:52:28 PM UTC+3 Azzeddine Remmal wrote:

Hello Mahmoud and Bert.

The important thing is to get the job done right.
This is another implementation that might help Bert complete the task.
Regards.

Bert Mariani

unread,
Aug 14, 2025, 6:24:25 PMAug 14
to The Ring Programming Language
Hello Mahmoud
I looked at the  "tokenslib.ring" 

Question: How can the data be returned to  aList 
with the format shown in == fromString ==
And not in the format shown in == aList == which don't tell me anything
The PrintTokens only outputs to the screen.
Need OutputToFile   and  OutputToList

======================
INPUT
load "tokenslib.ring"
aList = []
myStr = "func test
         y=4+7-3"

func main
oTokens = new RingTokens {

See nl+nl+"===== fromString ====="+nl
fromString(myStr)
aList = GetTokens()
PrintTokensList(aList)

See nl+nl+"===== aList ====="+nl
See aList
}

========================
OUTPUT

===== fromString =====
Keyword     : FUNC
Identifier  : test
EndLine
Identifier  : y
Operator    : = (9)
Number      : 4
Operator    : + (1)
Number      : 7
Operator    : - (2)
Number      : 3
EndLine

===== aList =====
0
9
0
4
test
0
5
2
0
4
y
9
1

Mahmoud Fayed

unread,
Aug 14, 2025, 7:00:37 PMAug 14
to The Ring Programming Language
Hello Bert

>> "And not in the format shown in == aList == which don't tell me anything"

Suggestion: Just write a function for this specific purpose - You can get the code that you need from TokensLib.   

Greetings,
Mahmoud

Mahmoud Fayed

unread,
Aug 14, 2025, 7:14:17 PMAug 14
to The Ring Programming Language
Hello Bert

To avoid repeating constants

Just use
load "tokenslib.ring"

Then you have access to these constants:  Using TokensLib — Ring 1.23.0 documentation

Greetings,
Mahmoud

Mahmoud Fayed

unread,
Aug 14, 2025, 7:22:34 PMAug 14
to The Ring Programming Language
Hello Bert

This is the latest version of the defined constants:  ring/libraries/tokenslib/globals.ring at master · ring-lang/ring

To load only this file

load "../libraries/tokenslib/globals.ring"

When we use the load command
1- Ring search in the current folder
2- If the file is not found in (1) it will search in ring/bin folder
3- if the file is not found in (2) it will search in ring/bin/load folder

So using ../libraries means switch from ring/bin folder to ring/libraries folder

Greetings,
Mahmoud

Bert Mariani

unread,
Aug 15, 2025, 5:23:11 PMAug 15
to The Ring Programming Language
Hello Mahmoud

I made an update to
     tokenslib.ring                  
          func PrintTokensToArray aList    -- Added
          Will return an Array of the  Identifiers and Tokens

This will make it easier adding spaces around conflicting operator, single and double char.
Example:   =   >=   <=   <   >   >>  >>

     UsingTokensLib-2.ring   -- test program

===================================
func PrintTokensToArray aList
    for aToken in aList {
        switch aToken[C_TOKENTYPE] {
       
        case C_KEYWORD
            value = "Keyword    : "+ aKeywords[0+aToken[C_TOKENVALUE]]
            Add(aOutList, value)
        case C_OPERATOR
            value = "Operator   : "+ aToken[C_TOKENVALUE] +" ("+ aToken[C_TOKENINDEX] +")"
            Add(aOutList, value)            
        case C_LITERAL
            value = "Literal    : "+ aToken[C_TOKENVALUE]
            Add(aOutList, value)            
        case C_NUMBER
            value = "Number     : "+ aToken[C_TOKENVALUE]
            Add(aOutList, value)            
        case C_IDENTIFIER
            value = "Identifier : "+ aToken[C_TOKENVALUE]
            Add(aOutList, value)            
        case C_ENDLINE
            value = "EndLine    :"
            Add(aOutList, value)                
        }
    }
    return aOutList
   
========================
Test Results
  
===== aList = fromString ===== Print to Screen

Keyword     : FUNC
Identifier  : test
EndLine
Identifier  : y
Operator    : = (9)
Number      : 4
Operator    : + (1)
Number      : 7
Operator    : - (2)
Number      : 3
EndLine


===== bList = PrintTokensList(aList) =====  
BLANK

===== cList = PrintTokensListToArray =====  to Array

Keyword    : FUNC
Identifier : test
EndLine    :
Identifier : y
Operator   : = (9)
Number     : 4
Operator   : + (1)
Number     : 7
Operator   : - (2)
Number     : 3
EndLine    :
=================================
UsingTokensLib-2.ring
tokenslib.ring

Mahmoud Fayed

unread,
Aug 15, 2025, 5:43:12 PMAug 15
to The Ring Programming Language
Hello Bert

(1) You don't need to modify the library itself

You can use the library and still add methods to the object that you create from the class using meta-programming 


Example:

o1 = new point { x=10 y=20 z=30 } addmethod(o1,"print", func { see x + nl + y + nl + z + nl } ) o1.print() Class point x y z In the previous example, we have the object (o1) then we add the method (print) to this object.(2) It's better (faster) to process the tokens list instead of generating list of strings then processing these strings inside the list.i.e. We have the values directly, no need to add text to these values then process that added text. 
Greetings,
Mahmoud

Bert Mariani

unread,
Aug 21, 2025, 10:46:51 AMAug 21
to The Ring Programming Language
Hello Mahmoud

AA-CodeFormated-6.ring

Implemented   ( although I think it should be part of the Library)
      oTokens = new RingTokens {}
      addmethod(oTokens, "PrintTokensToArray", func  aList{ 

Using it to return  the Tokens :  as   Label - Value
      Func SplitLineTokens(myStr)
               if subStr( Label,"Operator" ) 
Put a space before and after the Operator

Problem:
    Tokens with 2 chars are returned as 2 separate Operators. See below
         >=   <=   !=     etc
   Only one that  is good is the   ++  Operator

  Can this be fixed inside the tokensLib.ring ?

Note:
      Using the Dialog method to pick and  Read a File
      Much easier than using Command line to type in long file name.

     Also noticed that the  Lowercase  Keyword  shows up as Uppercase in the output -- Nice.

===========================
Selected file: C:\MyStuff\AA-FormatRing\code-2.ring

===== Before  =====

1 func test
2 x=5+3
3 z++
4 if a >= b
5 xxy=123
6 ok
7 if a <= b
8 xxy!=123
9 ok
10 end
===== Operators  =====
Op: | = |
Op: | + |
Op: | ++ |      // z++    Looks ok

Op: | > |         //    a  >   =  b    Should be    >=
Op: | = |

Op: | = |

Op: | < |         //   a < = b      Should be    <=
Op: | = |

Op: | ! |           //    xxy  !   =  123  Should be   !=
Op: | = |
===== After =====
1 FUNC test
 2     x  =  5  +  3
 3     z  ++                      // Shows as double char Operator - Good
 4     IF a  >   =  b          // Split Operator
 5         xxy  =  123
 6     OK
 7     IF a  <   =  b             // Split Operator
 8         xxy  !   =  123      // Split Operator
 9     OK
 10 END

========================
code-1.ring
AA-CodeFormatter-6.ring
code-2.ring

Mahmoud Fayed

unread,
Aug 21, 2025, 11:23:47 AMAug 21
to The Ring Programming Language
Hello Bert 

Thanks for sharing :D

(1) I will study your version of RingFmt.  Also, I will study the version developed by our friend Azzeddine.

Then I will present an official version that try to benefit from all of these valuable contributions
This version will be added to Ring (GitHub) and will mention that it's based on your work and Azzeddine work.

(2) Please share the version that you developed as RingPM package as our friend Azzeddine did, so we can have it as a reference and use it at any time.

Greetings,
Mahmoud

Bert Mariani

unread,
Aug 21, 2025, 12:27:57 PMAug 21
to The Ring Programming Language
Hello Mahmoud

Will this problem be fixed ?
    Tokens Type = Operator  of  2 char size  returned as 2 separate Operators instead of one.
         >=   <=   !=     etc

Best Regards
Bert Mariani

Mahmoud Fayed

unread,
Aug 21, 2025, 1:26:33 PMAug 21
to The Ring Programming Language
Hello Bert

>> "Will this problem be fixed ?  Tokens Type = Operator  of  2 char size  returned as 2 separate Operators instead of one."

Thanks for the report :D

I will study the situation first to remember all of the related details

In Ring Scanner we have a table the merge operators: ring/language/src/scanner.c at master · ring-lang/ring

While some operators are merged to be one operator, others stay isolated, and Ring Parser is written according to this behavior.

This is added to my To-Do list; I will do a revision to be sure that this is a mistake (as it appears to be) and not a design decision for specific features. 
Once I am sure about this, it will be considered as a bug (Absence of consistency) and the behaviour will be changed to merge the operators, and this topic will be updated with the related GitHub commits that contains the changes. 

Greetings,
Mahmoud

Mahmoud Fayed

unread,
Aug 23, 2025, 12:16:37 AMAug 23
to The Ring Programming Language
Hello Bert

>> "Will this problem be fixed?"

Thanks for the report :D

Greetings,
Mahmoud

Bert Mariani

unread,
Aug 23, 2025, 12:03:08 PMAug 23
to The Ring Programming Language
Hello Mahmoud

Thanks for the Fix to the Tokens Type Operator
How can I download the update ?

Bert Regards 
Bert Mariani

Mahmoud Fayed

unread,
Aug 23, 2025, 12:16:01 PMAug 23
to The Ring Programming Language
Hello Bert

>> "Thanks for the Fix to the Tokens Type Operator"

You are welcome :D

>> "How can I download the update?"


Greetings,
Mahmoud

Bert Mariani

unread,
Aug 23, 2025, 3:06:26 PMAug 23
to The Ring Programming Language

Hello Mahmoud

======================
Made a backup of  C:\ring  as  C:\ring-23

C:\Users\bert_>cd c:\ring

c:\ring>git clone http://github.com/ring-lang/ring.git
Cloning into 'ring'...
warning: redirecting to https://github.com/ring-lang/ring.git/
remote: Enumerating objects: 346310, done.
remote: Counting objects: 100% (1408/1408), done.
remote: Compressing objects: 100% (468/468), done.
remote: Total 346310 (delta 1068), reused 1007 (delta 937), pack-reused 344902 (from 3)
Receiving objects: 100% (346310/346310), 3.10 GiB | 7.79 MiB/s, done.
Resolving deltas: 100% (232314/232314), done.
Updating files: 100% (25299/25299), done.

c:\ring>

Took > 10 minutes

==============================

Use Windows -- Click on
C:\ring\build\buildvc_x64.bat  /
/ <<<===

Load  Many libraries  etc
Takes about 5 minutes.

=====================
Restarted the computer
Tested Again:
Same problem.


Selected file: C:\MyStuff\AA-FormatRing\code-2.ring

===== Before  =====
1 func test
2 x=5+3
3 z++
4 if a >= b
5 xxy=123
6 ok
7 if a <= b
8 xxy!=123
9 ok
10 end
===== Operators  =====
Op: | = |
Op: | + |
Op: | ++ |
Op: | > |

Op: | = |
Op: | = |
Op: | < |
Op: | = |
Op: | ! |

Op: | = |
===== After =====
1 FUNC test
 2     x  =  5  +  3
 3     z  ++
 4     IF a  >   =  b
 5         xxy  =  123
 6     OK
 7     IF a  <   =  b
 8         xxy  !   =  123
 9     OK
 10 END

Mahmoud Fayed

unread,
Aug 23, 2025, 3:32:23 PMAug 23
to The Ring Programming Language
Hello Bert

>> "Tested Again: Same problem."

(1) Run (ring) and be sure that you see the Ring 1.24 message
i.e. using Ring 1.24 (not Ring 1.23)

(2) Run the ring sample before using code formatter (Do you have syntax errors?)

In Ring 1.24 using a space inside multi-character operators like <=   >=   !=   will lead to syntax errors.

Greetings,
Mahmoud 

Mahmoud Fayed

unread,
Aug 23, 2025, 3:38:07 PMAug 23
to The Ring Programming Language
Hello Bert

I tested AA-CodeFormatter-6.ring that you shared using Ring 1.24

(1) At first it requires the Dialog package
ringpm install dialog

(2) Using it with any file produce runtime error 
Line 20 Error (R24) : Using uninitialized variable: aoutlist
In method printtokenstoarray() in file AA-CodeFormatter-6.ring

Solved by adding
aOutList = []
Inside the anonymous function that is used by AddMethod()

(3) Tried it using code-2.ring that you shared

Output:

===== Before  =====
1 func test
2 x=5+3
3 z++
4 if a >= b
5 xxy=123
6 ok
7 if a <= b
8 xxy!=123
9 ok
10 end
===== Operators  =====
Op: | = |
Op: | + |
Op: | ++ |
Op: | >= |
Op: | = |
Op: | <= |
Op: | != |

===== After =====
1 FUNC test
 2     x  =  5  +  3
 3     z  ++
 4     IF a  >=  b
 5         xxy  =  123
 6     OK
 7     IF a  <=  b
 8         xxy  !=  123
 9     OK
 10 END

So, the multi-character operators works as expected :D

Greetings,
Mahmoud

Bert Mariani

unread,
Aug 23, 2025, 4:35:00 PMAug 23
to The Ring Programming Language
Hello Mahmoud

After update
NotePad Help =>  Ring Verison 1.23.0

===========================
Code-2.ring   // >>> Runs OK standalone

test()
func test()
x=5+3
z=2
z++
a=6
b=5
if a>=b
a=4
ok
b=9
if a <= b
a=12
ok
See ""+ a +" "+ b +" "+ x +" "+ z +nl
return
---------------------------

Output: 12 9 8 3

Mahmoud Fayed

unread,
Aug 23, 2025, 4:37:38 PMAug 23
to The Ring Programming Language
Hello Bert

>> "NotePad Help =>  Ring Verison 1.23.0"

Nice, just use Ring 1.24
After building from source code, check the ring/bin folder and run ring/bin/ring.exe to be sure that you have Ring 1.24
Then add c:/ring/bin to path if this is the path of Ring 1.24

Greetings,
Mahmoud

Bert Mariani

unread,
Aug 23, 2025, 9:55:37 PMAug 23
to The Ring Programming Language
Hello Mahmoud

Started over ....
C:\Users\bert_>cd c:\       // <<<=== Use plain  C:/  NOT  C:/ring
...
Updating files: 100% (25299/25299), done.
c:\>

Created C:/ring  !!

=======================
cd c:/ring/bin
c:\ring\bin>ring.exe

====================
Ring version 1.24.0
2013-2025, Mahmoud Fayed <msfcl...@yahoo.com>
Usage : ring filename.ring [Options]
============================================================

Problem:
   C:/ring/RingNotepad.exe   //  have to run as Admin
   Popup  window ----  Start NotePad  ---  YES  run
   NotePad does not start !   
   Even after reboot.

C:\Users\bert_>path
... C:\WINDOWS\System32\OpenSSH\;C:\Ring\bin;C:\Program Files\Git\cmd;  ...

============================
Switch to C:/ring-23   ( backup)
RingNotepad.exe    // did not have to use Admin
Works !
  
==========

Usual question --- What's different ?  Why is Notepad not starting ?

Mahmoud Fayed

unread,
Aug 23, 2025, 10:15:05 PMAug 23
to The Ring Programming Language
Hello Bert

RingNotepad.exe is copied to ring folder from this subfolder:  ring/tools/ringnotepad/rnoteexe at master · ring-lang/ring


Just copy RingNotepad.exe from ring23 to ring 1.24 folder and accept replacing the files
If I remember correctly, it's about the Visual Studio version used for building RingNotepad.exe

Greetings,
Mahmoud

Bert Mariani

unread,
Aug 23, 2025, 11:02:01 PMAug 23
to The Ring Programming Language
Hello Mahmoud

C:\ring-23   Copied   RingNotepad.exe   To  C:\ring   (1.24)
Still did not start.

Mahmoud Fayed

unread,
Aug 23, 2025, 11:34:01 PMAug 23
to The Ring Programming Language
Hello Bert

(1) Check the dlls in ring/bin folder
Files like ringqt.dll, etc.

(2) Also, try using ringpm like
ringpm run ringnotepad

(3) Try other GUI apps like
ringpm run cards
ringpm run analogclock

Greetings,
Mahmoud

Bert Mariani

unread,
Aug 24, 2025, 10:39:51 AMAug 24
to The Ring Programming Language
Hello Mahmoud

Looks like QT issue
I have C:/QT   5.15.2  for a long time ~ 2 years
It was a hassle when we debugged QT  issues together
I really would like to avoid that.

============================
c:\ring> 
c:\ring>ringpm run ringnotepad
================================================================================
RingNotepad Package
================================================================================
RingNotepad package for the Ring programming language
See the folder : ring/tools/ringnotepad
================================================================================

Library File : ringqt.dll
Line 5 Error (R38) : Runtime Error in loading the dynamic library

In loadlib() In function loadlibfile() in file C:\Ring\libraries\guilib\loadlibfile.ring

Called from line 11 in file rnote.ring
c:\ring>

=============================================

c:\ring>ringpm run analogclock
================================================================================
AnalogClock Package
================================================================================
AnalogClock package for the Ring programming language
See the folder : ring/applications/analogclock
================================================================================

Library File : ringqt_light.dll
Line 5 Error (R38) : Runtime Error in loading the dynamic library

In loadlib() In function loadlibfile() in file C:\Ring\libraries\guilib\loadlibfile.ring

Called from line 11 in file AnalogClock.ring
c:\ring>

===============
c:\ring>\bin   ( Files like ringqt.dll, etc.)

   582,656 ring.dll
    95,744 ring.exe
   897,024 ring2exe.exe
   529,408 ringpm.exe    <<<=== Missing qt
    99,328 ringrepl.exe
    92,160 ringw.exe
   
============================
c:\ring-23\bin>

   580,496 ring.exe
   907,776 ring2exe.exe
   541,696 ringpm.exe
 4,149,760 ringqt.dll             <<< Have qt  in Ring-23
   551,936 ringqt_core.dll
 2,821,120 ringqt_light.dll

 1,244,160 ringregex.dll  
 
 ---------------------------
 cd C:\Qt 
 c:\Qt>dir
 Volume in drive C is Windows
 Volume Serial Number is D693-3EDC

 Directory of c:\Qt

2023-12-02  05:29 PM    <DIR>          .
2023-12-02  05:20 PM    <DIR>          5.15.2
2023-12-02  05:29 PM            56,527 components.xml
2023-08-23  08:36 AM    <DIR>          dist
2020-11-13  03:24 AM    <DIR>          Docs
2020-11-13  03:24 AM    <DIR>          Examples
2023-12-02  05:29 PM           591,458 InstallationLog.txt
2023-12-02  05:29 PM                48 installer.dat
2023-12-02  05:20 PM    <DIR>          installerResources
2023-12-02  05:29 PM                28 licenseInfo.txt
2023-12-02  05:29 PM    <DIR>          Licenses
2023-12-02  05:29 PM           519,037 MaintenanceTool.dat
2023-12-02  05:29 PM        40,430,224 MaintenanceTool.exe
2023-12-02  05:29 PM            27,553 MaintenanceTool.ini
2023-12-02  05:29 PM               460 network.xml
2023-11-22  09:57 AM    <DIR>          Tools
2022-06-10  04:14 AM    <DIR>          vcredist
               8 File(s)     41,625,335 bytes
               9 Dir(s)  287,743,754,240 bytes free

c:\Qt>

=========================

Bert Mariani

unread,
Aug 24, 2025, 10:51:17 AMAug 24
to The Ring Programming Language
Hello Mahmoud

Huge difference in the C:/ring/bin   
Complete dir   below

 Ring-23/bin            237 File(s)    341,456,823 bytes
              36 Dir(s)  287,484,108,800 bytes free
 
 Ring-24/bin            133 File(s)     77,226,003 bytes
               6 Dir(s)  287,483,981,824 bytes free

================================

c:\ring-23\bin>dir

 Volume in drive C is Windows
 Volume Serial Number is D693-3EDC

 Directory of c:\ring-23\bin

2025-07-12  06:11 AM    <DIR>          .
2025-08-23  10:55 PM    <DIR>          ..
2024-07-11  10:05 AM         1,889,792 allegro-5.2.dll
2024-07-11  10:05 AM         1,650,176 allegro_acodec-5.2.dll
2024-07-11  10:05 AM           664,576 allegro_audio-5.2.dll
2024-07-11  10:05 AM           740,864 allegro_color-5.2.dll
2024-07-11  10:05 AM           593,408 allegro_dialog-5.2.dll
2024-07-11  10:05 AM           603,136 allegro_font-5.2.dll
2024-07-11  10:05 AM         2,277,376 allegro_image-5.2.dll
2024-07-11  10:05 AM           561,664 allegro_main-5.2.dll
2024-07-11  10:05 AM           563,712 allegro_memfile-5.2.dll
2024-07-11  10:05 AM           747,008 allegro_physfs-5.2.dll
2024-07-11  10:05 AM           679,424 allegro_primitives-5.2.dll
2024-07-11  10:05 AM         1,615,360 allegro_ttf-5.2.dll
2024-07-11  10:05 AM           931,840 allegro_video-5.2.dll
2025-08-19  07:22 PM             6,275 allpackages.ring
2024-07-11  10:05 AM             3,584 api-ms-win-core-winrt-l1-1-0.dll
2024-07-11  10:05 AM             3,584 api-ms-win-core-winrt-string-l1-1-0.dll
2025-07-12  06:09 AM    <DIR>          assetimporters
2025-07-12  06:09 AM    <DIR>          audio
2025-07-12  06:09 AM    <DIR>          bearer
2024-07-11  10:05 AM                13 buildarch.ring
2025-07-12  06:09 AM    <DIR>          canbus
2024-07-11  10:05 AM               478 cleanbuild.sh
2024-07-11  10:05 AM           327,576 concrt140.dll
2014-03-11  06:54 AM         4,173,928 d3dcompiler_47.dll
2025-07-12  06:09 AM    <DIR>          designer
2024-07-11  10:05 AM           219,136 FLAC.dll
2025-07-12  05:21 AM           317,440 folder2qrc.exe
2024-07-11  10:05 AM           235,008 freeglut.dll
2024-07-11  10:05 AM           560,640 freetype.dll
2025-07-12  06:09 AM    <DIR>          gamepads
2025-07-12  06:09 AM    <DIR>          generic
2025-07-12  06:09 AM    <DIR>          geometryloaders
2025-07-12  06:09 AM    <DIR>          geoservices
2024-07-11  10:05 AM           422,912 glew32.dll
2025-07-12  06:09 AM    <DIR>          iconengines
2024-07-11  10:05 AM           831,134 icudt54.dll
2024-07-11  10:05 AM         3,920,542 icuin54.dll
2024-07-11  10:05 AM         2,177,557 icuuc54.dll
2025-07-12  06:09 AM    <DIR>          imageformats
2024-08-19  09:04 AM               995 install.bat
2024-11-06  05:28 AM            18,541 install.sh
2024-07-11  10:05 AM             1,041 install_x64.bat
2024-07-11  10:05 AM           480,768 jpeg62.dll
2024-07-11  10:05 AM         2,715,136 libcrypto-1_1-x64.dll
2024-07-11  10:05 AM         5,151,232 libcrypto-3-x64.dll
2024-07-11  10:05 AM           290,816 libcurl.dll
2024-07-11  10:05 AM         1,212,928 libeay32.dll
2025-05-07  05:37 PM            30,344 libEGL.dll
2025-05-07  05:37 PM            77,960 libEGLd.dll
2024-07-11  10:05 AM           441,344 libFLAC-8.dll
2024-07-11  10:05 AM           586,240 libfreetype-6.dll
2024-07-11  10:05 AM           119,822 libgcc_s_dw2-1.dll
2025-05-07  05:37 PM         3,383,944 libGLESv2.dll
2025-05-07  05:37 PM        16,865,416 libGLESv2d.dll
2024-07-11  10:05 AM         1,131,607 libiconv-2.dll
2024-07-11  10:05 AM           685,747 libintl-8.dll
2024-07-11  10:05 AM           244,224 libjpeg-9.dll
2024-07-11  10:05 AM           252,928 libmodplug-1.dll
2024-07-11  10:05 AM           337,408 libmpg123-0.dll
2024-07-11  10:05 AM         6,978,560 libmysql.dll
2024-07-11  10:05 AM            52,224 libogg-0.dll
2024-07-11  10:05 AM           124,928 libopus-0.dll
2024-07-11  10:05 AM            46,592 libopusfile-0.dll
2024-07-11  10:05 AM           210,944 libpng16-16.dll
2024-07-11  10:05 AM           155,648 libpng16.dll
2024-07-11  10:05 AM           285,184 libpq.dll
2024-07-11  10:05 AM           647,168 libssl-1_1-x64.dll
2024-07-11  10:05 AM           777,728 libssl-3-x64.dll
2024-07-11  10:05 AM         1,026,062 libstdc++-6.dll
2024-07-11  10:05 AM           432,640 libtiff-5.dll
2024-07-11  10:05 AM           274,944 libui.dll
2024-07-11  10:05 AM           148,992 libuv.dll
2024-07-11  10:05 AM           251,904 libvorbis-0.dll
2024-07-11  10:05 AM            69,632 libvorbisfile-3.dll
2024-07-11  10:05 AM           447,488 libwebp-7.dll
2024-07-11  10:05 AM            49,152 libwinpthread-1.dll
2025-07-12  06:10 AM    <DIR>          load
2025-07-23  11:49 AM                61 markdown.ring
2025-07-12  06:09 AM    <DIR>          mediaservice
2024-07-11  10:05 AM           421,200 msvcp100.dll
2024-07-11  10:05 AM           455,328 msvcp120.dll
2024-07-11  10:05 AM           815,272 msvcp120d.dll
2024-07-11  10:05 AM           536,688 msvcp120_clr0400.dll
2024-07-11  10:05 AM           578,384 msvcp140.dll
2024-07-11  10:05 AM            35,704 msvcp140_1.dll
2024-07-11  10:05 AM           267,160 msvcp140_2.dll
2024-07-11  10:05 AM            50,072 msvcp140_atomic_wait.dll
2024-07-11  10:05 AM            31,640 msvcp140_codecvt_ids.dll
2024-07-11  10:05 AM           773,968 msvcr100.dll
2024-07-11  10:05 AM           970,912 msvcr120.dll
2024-07-11  10:05 AM         1,824,424 msvcr120d.dll
2024-07-11  10:05 AM           875,688 msvcr120_clr0400.dll
2025-07-31  04:04 PM           121,856 mylibTestArrayC-2.dll
2025-07-31  04:04 PM               719 mylibTestArrayC-2.exp
2025-07-31  04:04 PM             1,924 mylibTestArrayC-2.lib
2024-07-11  10:05 AM            31,744 ogg.dll
2022-11-28  09:04 AM        20,639,888 opengl32sw.dll
2024-07-11  10:05 AM           135,168 physfs.dll
2025-07-12  06:09 AM    <DIR>          platforminputcontexts
2025-07-12  06:09 AM    <DIR>          platforms
2025-07-12  06:09 AM    <DIR>          platformthemes
2025-07-12  06:09 AM    <DIR>          playlistformats
2025-07-12  06:09 AM    <DIR>          position
2025-07-12  06:09 AM    <DIR>          printsupport
2025-07-12  06:09 AM    <DIR>          qml
2025-07-12  06:09 AM    <DIR>          qmltooling
2025-05-07  06:52 PM           417,928 Qt53DAnimation.dll
2025-05-07  06:52 PM           424,584 Qt53DCore.dll
2025-05-07  06:52 PM           679,048 Qt53DExtras.dll
2025-05-07  06:52 PM           364,168 Qt53DInput.dll
2025-05-07  06:52 PM            57,480 Qt53DLogic.dll
2025-05-07  06:53 PM           176,776 Qt53DQuick.dll
2025-05-07  06:53 PM            64,136 Qt53DQuickAnimation.dll
2025-05-07  06:53 PM            84,104 Qt53DQuickExtras.dll
2025-05-07  06:53 PM            61,576 Qt53DQuickInput.dll
2025-05-07  06:53 PM           167,560 Qt53DQuickRender.dll
2025-05-07  06:53 PM            94,344 Qt53DQuickScene2D.dll
2025-05-07  06:53 PM         2,279,048 Qt53DRender.dll
2025-05-07  06:16 PM           574,600 Qt5Bluetooth.dll
2025-05-07  06:15 PM           197,768 Qt5Bodymovin.dll
2025-05-07  07:18 PM         1,434,760 Qt5Charts.dll
2025-05-07  05:36 PM            38,536 Qt5Concurrent.dll
2025-05-07  05:37 PM         5,949,576 Qt5Core.dll
2025-05-07  07:17 PM         1,075,848 Qt5DataVisualization.dll
2025-05-07  05:37 PM           446,088 Qt5DBus.dll
2025-05-07  06:18 PM         4,515,464 Qt5Designer.dll
2025-05-07  06:18 PM         1,916,552 Qt5DesignerComponents.dll
2025-05-07  06:14 PM           108,168 Qt5Gamepad.dll
2025-05-07  05:37 PM         7,690,376 Qt5Gui.dll
2025-05-07  06:18 PM           438,408 Qt5Help.dll
2025-05-07  08:08 PM           203,400 Qt5InsightTracker.dll
2025-05-07  08:08 PM            45,704 Qt5InsightTrackerQml.dll
2025-05-07  08:20 PM         1,521,800 Qt5Location.dll
2025-05-07  06:19 PM           756,360 Qt5Multimedia.dll
2025-05-07  06:19 PM           131,720 Qt5MultimediaQuick.dll
2025-05-07  06:19 PM           107,656 Qt5MultimediaWidgets.dll
2025-05-07  05:37 PM         1,364,104 Qt5Network.dll
2025-05-07  05:43 PM           165,512 Qt5NetworkAuth.dll
2025-05-07  06:17 PM           144,520 Qt5Nfc.dll
2025-05-07  05:37 PM           327,816 Qt5OpenGL.dll
2025-05-07  11:52 PM         4,614,280 Qt5Pdf.dll
2025-05-07  11:52 PM            56,968 Qt5PdfWidgets.dll
2025-05-07  08:20 PM           323,720 Qt5Positioning.dll
2025-05-07  08:20 PM           115,848 Qt5PositioningQuick.dll
2025-05-07  05:37 PM           323,720 Qt5PrintSupport.dll
2025-05-07  06:15 PM            49,800 Qt5Purchasing.dll
2025-05-07  05:57 PM         3,630,216 Qt5Qml.dll
2025-05-07  05:57 PM           448,648 Qt5QmlModels.dll
2025-05-07  05:57 PM            62,600 Qt5QmlWorkerScript.dll
2025-05-07  05:57 PM         4,278,920 Qt5Quick.dll
2025-05-07  06:19 PM           528,520 Qt5Quick3D.dll
2025-05-07  06:19 PM           123,016 Qt5Quick3DAssetImport.dll
2025-05-07  06:19 PM           232,584 Qt5Quick3DRender.dll
2025-05-07  06:19 PM         1,259,144 Qt5Quick3DRuntimeRender.dll
2025-05-07  06:19 PM            51,848 Qt5Quick3DUtils.dll
2025-05-07  07:21 PM           179,336 Qt5QuickControls2.dll
2025-05-07  05:58 PM           500,872 Qt5QuickParticles.dll
2025-05-07  05:58 PM           237,704 Qt5QuickShapes.dll
2025-05-07  07:21 PM         1,134,728 Qt5QuickTemplates2.dll
2025-05-07  05:58 PM           127,112 Qt5QuickTest.dll
2025-05-07  05:58 PM            87,688 Qt5QuickWidgets.dll
2025-05-07  06:15 PM           499,336 Qt5RemoteObjects.dll
2025-05-07  06:15 PM           391,816 Qt5Scxml.dll
2025-05-07  06:16 PM           212,616 Qt5Sensors.dll
2025-05-07  05:51 PM           219,784 Qt5SerialBus.dll
2025-05-07  05:45 PM            91,784 Qt5SerialPort.dll
2025-05-07  05:37 PM           216,200 Qt5Sql.dll
2025-05-07  05:45 PM           339,080 Qt5Svg.dll
2025-05-07  05:37 PM           257,672 Qt5Test.dll
2025-05-07  07:15 PM            55,432 Qt5TextToSpeech.dll
2025-05-07  07:33 PM         2,074,248 Qt5VirtualKeyboard.dll
2025-05-07  07:15 PM           140,936 Qt5WebChannel.dll
2025-05-07  11:52 PM           388,232 Qt5WebEngine.dll
2025-05-07  11:52 PM       112,268,424 Qt5WebEngineCore.dll
2025-05-07  11:52 PM           257,160 Qt5WebEngineWidgets.dll
2025-05-07  06:15 PM           157,320 Qt5WebSockets.dll
2025-05-08  12:03 AM            84,616 Qt5WebView.dll
2025-05-07  05:37 PM         5,552,776 Qt5Widgets.dll
2025-05-07  07:16 PM           242,824 Qt5WinExtras.dll
2025-05-07  05:37 PM           223,880 Qt5Xml.dll
2025-05-07  06:16 PM         2,704,008 Qt5XmlPatterns.dll
2025-05-07  11:53 PM           658,056 QtWebEngineProcess.exe
2024-09-01  10:14 AM         1,821,184 raylib.dll
2024-07-11  10:05 AM               366 README.md
2025-07-12  06:09 AM    <DIR>          renderers
2025-07-12  06:09 AM    <DIR>          renderplugins
2025-07-12  06:09 AM    <DIR>          resources
2025-07-12  05:17 AM           593,408 ring.dll
2025-07-12  05:23 AM           580,496 ring.exe
2025-07-12  05:21 AM           907,776 ring2exe.exe
2025-07-12  05:21 AM           541,696 ringpm.exe
2025-07-12  05:20 AM         4,149,760 ringqt.dll
2025-07-12  05:17 AM           551,936 ringqt_core.dll
2025-07-12  05:18 AM         2,821,120 ringqt_light.dll
2025-07-14  03:50 PM         1,244,160 ringregex.dll
2025-07-14  03:50 PM               710 ringregex.exp
2025-07-14  03:50 PM         3,648,368 ringregex.ilk
2025-07-14  03:50 PM             1,746 ringregex.lib
2025-07-14  03:50 PM         7,942,144 ringregex.pdb
2025-07-12  05:21 AM           113,664 ringrepl.exe
2025-07-12  05:17 AM           105,984 ringw.exe
2025-07-12  05:17 AM         1,026,560 ring_allegro.dll
2025-07-12  05:17 AM           888,320 ring_cjson.dll
2025-07-12  05:17 AM           137,728 ring_consolecolors.dll
2025-08-13  02:56 PM           318,976 ring_dialog.dll
2025-07-12  05:21 AM           157,696 ring_fastpro.dll
2025-07-12  05:17 AM           730,624 ring_freeglut.dll
2025-07-12  05:21 AM           764,928 ring_httplib.dll
2025-07-12  05:20 AM           850,432 ring_internet.dll
2025-07-12  05:20 AM           909,824 ring_libcurl.dll
2025-07-12  05:20 AM           306,688 ring_libui.dll
2025-07-12  05:21 AM           927,744 ring_libzip.dll
2025-06-24  12:58 PM           142,848 ring_markdown.dll
2025-07-12  05:21 AM           664,064 ring_murmurhash.dll
2025-07-12  05:21 AM           644,608 ring_mysql.dll
2025-07-12  05:20 AM           646,656 ring_odbc.dll
2024-08-31  03:23 PM           916,992 ring_opengl11.dll
2025-07-12  05:17 AM         1,150,976 ring_opengl21.dll
2024-08-31  03:22 PM         1,179,136 ring_opengl32.dll
2025-07-12  05:20 AM         3,864,576 ring_openssl.dll
2025-07-12  05:21 AM           370,688 ring_pdfgen.dll
2025-07-12  05:21 AM           735,232 ring_pgsql.dll
2025-07-12  05:17 AM           464,896 ring_raylib.dll
2025-07-12  05:21 AM           670,208 ring_rogueutil.dll
2025-07-12  05:21 AM         1,298,944 ring_sdl.dll
2025-07-12  05:21 AM           663,552 ring_sockets.dll
2025-07-12  05:21 AM         2,007,552 ring_sqlite.dll
2025-07-12  05:17 AM           324,096 ring_stbimage.dll
2025-05-06  04:53 AM           599,040 ring_subprocess.dll
2025-07-12  05:17 AM           155,648 ring_threads.dll
2025-07-12  05:21 AM           200,704 ring_tilengine.dll
2025-07-12  05:20 AM         1,111,040 ring_uv.dll
2025-07-23  11:50 AM           412,160 ring_webview.dll
2025-07-12  05:21 AM           673,280 ring_winapi.dll
2025-07-12  05:21 AM           822,272 ring_wincreg.dll
2025-07-12  05:21 AM           637,440 ring_winlib.dll
2025-07-12  06:09 AM    <DIR>          scenegraph
2025-07-12  06:09 AM    <DIR>          sceneparsers
2024-07-11  10:05 AM         2,231,296 SDL2.dll
2024-07-11  10:05 AM           125,440 SDL2_image.dll
2024-07-11  10:05 AM           123,904 SDL2_mixer.dll
2024-07-11  10:05 AM            48,640 SDL2_net.dll
2024-07-11  10:05 AM            33,792 SDL2_ttf.dll
2025-07-12  06:09 AM    <DIR>          sensorgestures
2025-07-12  06:09 AM    <DIR>          sensors
2025-07-12  06:09 AM    <DIR>          sqldrivers
2024-07-11  10:05 AM           276,480 ssleay32.dll
2025-07-12  06:09 AM    <DIR>          styles
2025-07-23  11:49 AM                60 SysInfo.ring
2025-07-12  06:09 AM    <DIR>          texttospeech
2024-07-11  10:05 AM            71,680 theoradec.dll
2024-07-11  10:05 AM           298,496 Tilengine.dll
2025-07-12  06:09 AM    <DIR>          translations
2024-07-11  10:05 AM         1,191,512 ucrtbase.dll
2024-07-11  10:05 AM         1,510,712 ucrtbased.dll
2024-07-11  10:05 AM               385 uninstall.sh
2024-07-11  10:05 AM           414,104 vcamp140.dll
2024-07-11  10:05 AM                14 vccorelib140.dll
2024-07-11  10:05 AM           346,008 vccorlib140.dll
2024-07-11  10:05 AM            51,024 vcomp100.dll
2024-07-11  10:05 AM           191,864 vcomp140.dll
2024-07-11  10:05 AM           109,440 vcruntime140.dll
2024-07-11  10:05 AM           110,416 vcruntime140d.dll
2024-07-11  10:05 AM            49,560 vcruntime140_1.dll
2024-07-11  10:05 AM            83,768 vcruntime140_clr0400.dll
2025-07-12  06:09 AM    <DIR>          virtualkeyboard
2024-07-11  10:05 AM           817,152 vorbis.dll
2024-07-11  10:05 AM            44,544 vorbisfile.dll
2025-07-12  06:09 AM    <DIR>          webview
2024-07-11  10:05 AM            94,208 zlib.dll
2024-07-11  10:05 AM           108,544 zlib1.dll
             237 File(s)    341,456,823 bytes
              36 Dir(s)  287,484,108,800 bytes free


c:\ring-23\bin>

==========================

c:\ring\bin>dir

 Volume in drive C is Windows
 Volume Serial Number is D693-3EDC

 Directory of c:\ring\bin

2025-08-23  09:04 PM    <DIR>          .
2025-08-23  10:56 PM    <DIR>          ..
2025-08-23  08:47 PM         1,889,792 allegro-5.2.dll
2025-08-23  08:47 PM         1,650,176 allegro_acodec-5.2.dll
2025-08-23  08:47 PM           664,576 allegro_audio-5.2.dll
2025-08-23  08:47 PM           740,864 allegro_color-5.2.dll
2025-08-23  08:47 PM           593,408 allegro_dialog-5.2.dll
2025-08-23  08:47 PM           603,136 allegro_font-5.2.dll
2025-08-23  08:47 PM         2,277,376 allegro_image-5.2.dll
2025-08-23  08:47 PM           561,664 allegro_main-5.2.dll
2025-08-23  08:47 PM           563,712 allegro_memfile-5.2.dll
2025-08-23  08:47 PM           747,008 allegro_physfs-5.2.dll
2025-08-23  08:47 PM           679,424 allegro_primitives-5.2.dll
2025-08-23  08:47 PM         1,615,360 allegro_ttf-5.2.dll
2025-08-23  08:47 PM           931,840 allegro_video-5.2.dll
2025-08-24  10:22 AM             6,243 allpackages.ring
2025-08-23  08:47 PM             3,584 api-ms-win-core-winrt-l1-1-0.dll
2025-08-23  08:47 PM             3,584 api-ms-win-core-winrt-string-l1-1-0.dll
2025-08-23  08:46 PM                13 buildarch.ring
2025-08-23  08:46 PM               478 cleanbuild.sh
2025-08-23  08:46 PM                48 cleartemp.bat
2025-08-23  08:47 PM           327,576 concrt140.dll
2025-08-23  08:47 PM           219,136 FLAC.dll
2025-08-23  09:03 PM           303,616 folder2qrc.exe
2025-08-23  08:47 PM           235,008 freeglut.dll
2025-08-23  08:47 PM           560,640 freetype.dll
2025-08-23  08:47 PM           422,912 glew32.dll
2025-08-23  08:47 PM           831,134 icudt54.dll
2025-08-23  08:47 PM         3,920,542 icuin54.dll
2025-08-23  08:47 PM         2,177,557 icuuc54.dll
2025-08-23  08:46 PM               995 install.bat
2025-08-23  08:46 PM            18,793 install.sh
2025-08-23  08:46 PM             1,041 install_x64.bat
2025-08-23  08:47 PM           480,768 jpeg62.dll
2025-08-23  08:47 PM         2,715,136 libcrypto-1_1-x64.dll
2025-08-23  08:47 PM         5,151,232 libcrypto-3-x64.dll
2025-08-23  08:47 PM           441,344 libFLAC-8.dll
2025-08-23  08:47 PM           586,240 libfreetype-6.dll
2025-08-23  08:47 PM           119,822 libgcc_s_dw2-1.dll
2025-08-23  08:47 PM         1,131,607 libiconv-2.dll
2025-08-23  08:47 PM           685,747 libintl-8.dll
2025-08-23  08:47 PM           244,224 libjpeg-9.dll
2025-08-23  08:47 PM           252,928 libmodplug-1.dll
2025-08-23  08:47 PM           337,408 libmpg123-0.dll
2025-08-23  08:47 PM         6,978,560 libmysql.dll
2025-08-23  08:47 PM            52,224 libogg-0.dll
2025-08-23  08:47 PM           124,928 libopus-0.dll
2025-08-23  08:47 PM            46,592 libopusfile-0.dll
2025-08-23  08:47 PM           210,944 libpng16-16.dll
2025-08-23  08:47 PM           155,648 libpng16.dll
2025-08-23  08:47 PM           285,184 libpq.dll
2025-08-23  08:47 PM           647,168 libssl-1_1-x64.dll
2025-08-23  08:47 PM           777,728 libssl-3-x64.dll
2025-08-23  08:47 PM         1,026,062 libstdc++-6.dll
2025-08-23  08:47 PM           432,640 libtiff-5.dll
2025-08-23  08:47 PM           274,944 libui.dll
2025-08-23  08:47 PM           251,904 libvorbis-0.dll
2025-08-23  08:47 PM            69,632 libvorbisfile-3.dll
2025-08-23  08:47 PM           447,488 libwebp-7.dll
2025-08-23  08:47 PM            49,152 libwinpthread-1.dll
2025-08-23  08:46 PM    <DIR>          load
2025-08-23  08:47 PM           421,200 msvcp100.dll
2025-08-23  08:47 PM           455,328 msvcp120.dll
2025-08-23  08:47 PM           815,272 msvcp120d.dll
2025-08-23  08:47 PM           536,688 msvcp120_clr0400.dll
2025-08-23  08:47 PM           578,384 msvcp140.dll
2025-08-23  08:47 PM            35,704 msvcp140_1.dll
2025-08-23  08:47 PM           267,160 msvcp140_2.dll
2025-08-23  08:47 PM            50,072 msvcp140_atomic_wait.dll
2025-08-23  08:47 PM            31,640 msvcp140_codecvt_ids.dll
2025-08-23  08:47 PM           773,968 msvcr100.dll
2025-08-23  08:47 PM           970,912 msvcr120.dll
2025-08-23  08:47 PM         1,824,424 msvcr120d.dll
2025-08-23  08:47 PM           875,688 msvcr120_clr0400.dll
2025-08-23  08:47 PM            31,744 ogg.dll
2025-08-23  08:47 PM           135,168 physfs.dll
2025-08-23  08:52 PM    <DIR>          qml
2025-08-23  08:47 PM         1,821,184 raylib.dll
2025-08-23  08:46 PM               366 README.md
2025-08-23  08:52 PM    <DIR>          resources
2025-08-23  09:02 PM           582,656 ring.dll
2025-08-23  09:01 PM            95,744 ring.exe
2025-08-23  09:03 PM           897,024 ring2exe.exe
2025-08-23  09:03 PM           529,408 ringpm.exe
2025-08-23  09:03 PM            99,328 ringrepl.exe
2025-08-23  09:02 PM            92,160 ringw.exe
2025-08-23  09:02 PM           308,224 ring_allegro.dll
2025-08-23  09:02 PM           210,944 ring_cjson.dll
2025-08-23  09:02 PM           123,392 ring_consolecolors.dll
2025-08-23  09:03 PM           144,896 ring_fastpro.dll
2025-08-23  09:02 PM           139,264 ring_freeglut.dll
2025-08-23  09:02 PM           716,288 ring_httplib.dll
2025-08-23  09:02 PM           770,048 ring_internet.dll
2025-08-23  09:02 PM           818,688 ring_libcurl.dll
2025-08-23  09:02 PM           224,768 ring_libui.dll
2025-08-23  09:03 PM           218,112 ring_libzip.dll
2025-08-23  09:03 PM           131,584 ring_murmurhash.dll
2025-08-23  09:03 PM            99,328 ring_mysql.dll
2025-08-23  09:02 PM           100,352 ring_odbc.dll
2025-08-23  09:02 PM           356,352 ring_opengl21.dll
2025-08-23  09:02 PM         2,122,240 ring_openssl.dll
2025-08-23  09:03 PM           330,240 ring_pdfgen.dll
2025-08-23  09:03 PM           144,384 ring_pgsql.dll
2025-08-23  09:02 PM           451,584 ring_raylib.dll
2025-08-23  09:03 PM           135,680 ring_rogueutil.dll
2025-08-23  09:03 PM           410,624 ring_sdl.dll
2025-08-23  09:03 PM           132,096 ring_sockets.dll
2025-08-23  09:03 PM         1,076,736 ring_sqlite.dll
2025-08-23  09:02 PM           304,640 ring_stbimage.dll
2025-08-23  09:02 PM           141,312 ring_threads.dll
2025-08-23  09:03 PM           187,392 ring_tilengine.dll
2025-08-23  09:02 PM           453,120 ring_uv.dll
2025-08-23  09:03 PM           152,576 ring_winapi.dll
2025-08-23  09:03 PM           221,184 ring_wincreg.dll
2025-08-23  09:03 PM            93,696 ring_winlib.dll
2025-08-23  08:47 PM         2,231,296 SDL2.dll
2025-08-23  08:47 PM           125,440 SDL2_image.dll
2025-08-23  08:47 PM           123,904 SDL2_mixer.dll
2025-08-23  08:47 PM            48,640 SDL2_net.dll
2025-08-23  08:47 PM            33,792 SDL2_ttf.dll
2025-08-23  08:47 PM            71,680 theoradec.dll
2025-08-23  08:47 PM           298,496 Tilengine.dll
2025-08-23  08:52 PM    <DIR>          translations
2025-08-23  08:47 PM         1,191,512 ucrtbase.dll
2025-08-23  08:47 PM         1,510,712 ucrtbased.dll
2025-08-23  08:46 PM               429 uninstall.sh
2025-08-23  08:47 PM           414,104 vcamp140.dll
2025-08-23  08:47 PM                14 vccorelib140.dll
2025-08-23  08:47 PM           346,008 vccorlib140.dll
2025-08-23  08:47 PM            51,024 vcomp100.dll
2025-08-23  08:47 PM           191,864 vcomp140.dll
2025-08-23  08:47 PM           109,440 vcruntime140.dll
2025-08-23  08:47 PM           110,416 vcruntime140d.dll
2025-08-23  08:47 PM            49,560 vcruntime140_1.dll
2025-08-23  08:47 PM            83,768 vcruntime140_clr0400.dll
2025-08-23  08:47 PM           817,152 vorbis.dll
2025-08-23  08:47 PM            44,544 vorbisfile.dll
2025-08-23  08:47 PM            94,208 zlib.dll
2025-08-23  08:47 PM           108,544 zlib1.dll
             133 File(s)     77,226,003 bytes
               6 Dir(s)  287,483,981,824 bytes free


c:\ring\bin>

=================================


The Future of Programming

unread,
Aug 24, 2025, 12:52:05 PMAug 24
to The Ring Programming Language
Hello Bert

The solution is simple since you have Qt 5.15.2 installed on your machine

open ring/build/buildvc_x64.bat using notepad

Update the Qt version from 5.15.19 to 5.15.2 and be sure that the written path is where you have Qt installed

Then run buildvc_x64.bat

Greetings, 
Mahmoud

--

---
You received this message because you are subscribed to the Google Groups "The Ring Programming Language" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ring-lang+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/ring-lang/b39c0723-0110-416b-9fa6-e776e56e700cn%40googlegroups.com.

Bert Mariani

unread,
Aug 24, 2025, 2:03:04 PMAug 24
to The Ring Programming Language
Hello Mahmoud 

Now   RingNotepad.exe    WORKS !!

See output below  ... what does it mean
      The system cannot find the file specified.
     The system cannot find the file specified.

Last time I was only able to download QT 5.15.2 
I think I will leave it alone. It was a headache.
Unless QT 5.15.19 is easy to download

=======================
C:/ ring/build/buildvc_x64.bat 

@echo off
IF "%RING_QT_DIR%"=="" SET RING_QT_DIR=C:\Qt
IF "%RING_QT_VERSION%"=="" SET RING_QT_VERSION=5.15.2

==================

c:\ring\build>buildvc_x64.bat
Building Ring (64bit) for Windows...
Building Compiler/VM...
Building Extensions...
Building RingAllegro...
Building RingOpenGL...
Building RingCJSON...
Building RingConsoleColors...
Building RingFreeGLUT...
Building RingStbImage...
Building RingThreads...
Building RingRayLib...
Building RingQt (Core)...
The system cannot find the file specified.      <<<<<<
The system cannot find the file specified.      <<<<<<

Building RingQt (LightGUILib)...
Building RingQt (GUILib)...
Building RingLibuv...
Building RingInternet...
Building RingCurl...
Building RingOpenSSL...
Building RingLibui...
Building RingBeep...
Building RingODBC...
Building RingHTTPLib...
Building RingMouseEvent...
Building RingMurmurHash...
Building RingSockets...
Building RingSQLite...
Building RingZip...
Building RingWinAPI...
Building RingWinCREG...
Building RingWinLib...
Building RingTilengine...
Building RingLibSDL...
Building RingMySQL...
Building RingPostgreSQL...
Building RingRogueUtil...
Building RingPDFGen...
Building RingFastPro...
Building Tools...
Building Ring2EXE...
Building RingPM...
Building RingREPL...
Building Folder2Qrc...
Building Tests...
Building Extensions\Tutorial...
Prepare Runtime files...
Checking for required DLL files...
Check complete.

c:\ring>

Mahmoud Fayed

unread,
Aug 24, 2025, 2:14:39 PMAug 24
to The Ring Programming Language
Hello Bert

>> "Now   RingNotepad.exe    WORKS !!"

This is very nice

>> "See output below  ... what does it mean  The system cannot find the file specified."

The build script was trying to delete old ring/extensions/ringqt/debug files which doesn't exist

Thanks for the report :D

>> "Last time I was only able to download QT 5.15.2 "

Using Qt 5.15.2 is enough for building RingQt and testing Ring 1.24 during development

When distributing software, you can use Ring 1.24 (after we release it) and it will include Qt 5.15.19 runtime files.

Greetings,
Mahmoud

Bert Mariani

unread,
Aug 25, 2025, 10:52:13 AMAug 25
to The Ring Programming Language
Hello Mahmoud

I added  ALL possible  Keywords for  StartKeywords and EndKeywords
Except:  "SEE","OR","AND","NOT","TO",  --- they should not indent mid-line
For "++" and "--"  it will backspace and not add a leading space. Ex. |  z++  |

AA-Formater-11.ring
Code2.ring

Problems encountered
   "CASE" causes a problem when added as a StartKeyword  It shifts everything baclkto Position 1
   So I left it out. 
   If it did work it would cause   +indenting for following Case - -- Bad

   Quotes " "  do not show up in the SEE statement
     Before
     15 See "Data: "+a+nl
     After
     15     SEE Data:   + a  + nl
-----------------------------------------
DEBUG ON - At Line 211 in Func SplitLineTokens(myStr)

Line nPos: 8 Keyword:SEE
Label: Keyword
Value: SEE                  <<< See "Data: "+a+nl
Line nPos: 8 Literal:Data:
Label: Literal
Value: Data:                <<< Drops the quotes "
Line nPos: 9 Operator:+
Label: Operator
Value: +
Line nPos: 11 Identifier:a
Label: Identifier
Value: a
Line nPos: 9 Operator:+
Label: Operator
Value: +
Line nPos: 11 Identifier:nl
Label: Identifier
Value: nl
Line nPos: 8 EndLine:
Label: EndLine
Value:
code-2.ring
AA-CodeFormatter-11.ring

Mahmoud Fayed

unread,
Aug 25, 2025, 4:31:47 PMAug 25
to The Ring Programming Language
Hello Bert

Thanks for sharing :D

>> "Quotes " "  do not show up in the SEE statement"

By checking the token type, knowning that the token is a literal, then checking the literal content, it could be determined what to add around the text
(1) " "
(2) ' '
(3) ` `

Because the text could contain quotes.

You could stop here with respect to this task, this is a simple yet useful implementation that you could share as RingPM package in GitHub.

I will continue working on this task at some point in the future and will develop a new version based on experience gained from your version and Azzeddine version. I like the simplicity of your implementation, Also, I like the design (many features) provided by Azzeddine implementation. The version that I am going to develop in the future will be something between them with advanced tests that cover all of Ring syntax/styles and could be used with any Ring project/sample.

Thank you very much to you (Bert) and to our friend (Azzeddine) for giving me better vision about how this task should be developed. 

Greetings,
Mahmoud 

Bert Mariani

unread,
Aug 26, 2025, 3:30:01 PMAug 26
to The Ring Programming Language
Hello Mahmoud

I will stop working on  Ringfmt - Formats Ring programs
Lookin forward to your combined version.

Here is my work around for the SEE  command to show the Quotes
Insert the Original Line from the File, by keeping track of the lineNumber
The problem is that the quotes get stripped by Ring when substituting the Values within Quotes

==============
Line 227

//--- Line has SEE quotes - Do Not Parse - Ring Literal problem---
// Keep track of lineNumber  from File to substute in.

if subStr( Value,"SEE" )
    Value = codeLines[lineNumber]  // Insert original line from file
newString += Value +" "
exit 

===============================

Selected file: C:\MyStuff\AA-FormatRing\code-1.ring


===== Before  =====
1 func test
2 x=5+3
3 y=4+7
4 Z++
5 w--
6
7 params{
8 red
9 green
10 blue
11 }
12 if x=5
13 see "x=5 is true"
14 ok
15
16 try
17 x=123
18 see "Operation succeeded!" + nl
19 catch
20 see "An error occurred!" + nl
21 end
22
23 day = "Wednesday"
24 switch day
25 case "Monday"
26 x=8+9
27 see "Back to work!" + nl
28 case "Wednesday"
29 y=7*6
30 see "Midweek grind!" + nl
31 case "Friday"
32 z>>9-8+7
33 see "Almost Finished!" + nl
34 off
35 z=5*6
36 see "Just another day." + nl
37 end
38
39 end

===== After =====
1 FUNC test
2     x  = 5  + 3
3     y  = 4  + 7
4     z++
5     w--
6
7     params  {
8         red
9         green
10         blue
11      }
12     IF x  = 5
13         see "x=5 is true"
14     OK
15
16     TRY
17         x  = 123
18         see "Operation succeeded!" + nl
19     CATCH
20         see "An error occurred!" + nl
21     END
22
23     day  = Wednesday
24     SWITCH day
25         CASE Monday
26         x  = 8  + 9
27         see "Back to work!" + nl
28         CASE Wednesday
29         y  = 7  * 6
30         see "Midweek grind!" + nl
31         CASE Friday
32         z  >> 9  - 8  + 7
33         see "Almost Finished!" + nl
34     OFF
35         z  = 5  * 6
36         see "Just another day." + nl
37     END
38
39 END


code-1.ring
AA-CodeFormatter-11-b.ring

Mahmoud Fayed

unread,
Aug 26, 2025, 6:52:52 PMAug 26
to The Ring Programming Language
Hello Bert

Thank you very much for working on this task and sharing your version of the tool :D

Greetings,
Mahmoud

Reply all
Reply to author
Forward
0 new messages