MonoRing 1.17 release with Qt package and other feedbacks

59 views
Skip to first unread message

Mounir IDRASSI

unread,
May 24, 2022, 4:20:03 AM5/24/22
to The Ring Programming Language
Hello,

I have published new MonoRing release under version 1.17 that brings updates to several underlying libraries (e.g OpenSSL) but also provides a package with RingQt included (alongside RingNotepad).

RingQt is not builtin like other extensions, nevertheless MonoRing Qt package has some advantages compared to standard Ring package:
  1. It supports native Windows 64-bit development
  2. Reliable and easy standalone distribution thanks to limited runtime dependencies
  3. Qt updated to 5.15.2
  4. RingNotepad has new entry under "Distribute" menu to build Windows UI applications (usefull for LibUI based applications)

This release is in line with the original objective of MonoRing which is making deployment and distribution of Ring based application easier.

The main feedback that I hear around me from people trying Ring language is that they cannot easily figure out which dependencies are requires at runtime when deploying their sample application and they end up copying the while "bin" folder of Ring to make it run. This of course discourages many people from continuing with Ring which is unfortunate.

The other issue that is encountered in Windows with Ring with the fact that the provided libraries used by the extensions are built using different versions of Visual C++ and so they depend on different C++ runtime dlls. For example, here are the runtime version used by popular extensions:
  1. RingCurl: msvcr100.dll from VC++ 2010
  2. RingOpenSSL: msvcr120.dll from VC++2012
  3. RingQt: vcruntime140.dll from VC++ 2019
  4. RingTileengine: vcruntim140d.dll from DEBUG VC++ 2019
Mixing different VC++ runtime version is known to create stability issues.
Of course, managing such large number of extensions in the standard Ring package is not easy and for me I see them as a showcase of the capabilities of Ring more than officially maintained libraries.

Hopefully, MonoRing approach of handling binary distribution will ease adoption of Ring programming language and possibly give ideas to others to create similar projects dedicated to specific fields (e.g. gaming, database...).


Mansour Ayouni

unread,
May 24, 2022, 4:41:08 AM5/24/22
to Mounir IDRASSI, The Ring Programming Language
Hello Mounir,

A very nice contribution that adds to the adoption of Ring in the ecosystem.

Bravo!

Best,
Mansour

--

---
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 on the web visit https://groups.google.com/d/msgid/ring-lang/866791fb-c75a-46c8-9fa4-94dfbaf46976n%40googlegroups.com.

Azzeddine Remmal

unread,
May 24, 2022, 5:07:38 AM5/24/22
to The Ring Programming Language
hello mounir
I worked with the previous Monoring version with Notepad Plus Plus it works smoothly and 
after yesterday's update It is not executing programs
I downloaded the Monoring Qt64  version and installed it in  section C and when I started Ring Notepad it gave me an error that had tired me before
Qt.qpa.plugen: Could not find the Qt platform plugin "windows
This application failed to start because no Qt platform plugin be initialized . Reinstalling the application may fix this problem

I solved this problem by adding  the environment variables QT_QPA_PLATFORM_PLUGIN_PATH = C:\ring\bin
Now the official version is in section G and monoring in section C, but in order to work with it, I must change the path to the installation path?:\ring\bin
  and QT_QPA_PLATFORM_PLUGIN_PATH to ?:\ring\bin
The question is how can I convert between them without having to change the paths of the environment variables?

stefano cerbioni

unread,
May 24, 2022, 1:15:21 PM5/24/22
to The Ring Programming Language
Hi nice project 2  questions 
1. work also in linux ?
2. have GRoupBox ?
thanks

Mounir IDRASSI

unread,
May 24, 2022, 3:58:44 PM5/24/22
to The Ring Programming Language
@Mansour: Thank you for the kind words.

@lemsantah.2013:  I don't have this issue on my side but maybe this is because I don't have any QT related environment variable on my system. I think the easiest way to void such conflict between different Qt root folders is to modify the file "tools\ringnotepad\rnote.ring" by adding the following at the very top of the file:

SysSet ("QT_QPA_PLATFORM_PLUGIN_PATH", exefolder())

This will ensure that ring binary will pick up the correct Qt dlls based on its own location.
I think this like should be directly put into guilib.ring and lightguilib.ring. I will propose this change for the official Ring repository if it is confirmed to solve your problem.

Mounir IDRASSI

unread,
May 24, 2022, 4:56:52 PM5/24/22
to The Ring Programming Language
Thank you Stefano.
For now there is no Linux version of MonoRing. Static linking is less important on Linux thanks to the availability of libraries in all Linux distribution but it would still make sens to remove the need to recompiling/packaging for different Linux flavors. Not sure I will have time for it but I will put it in my TODO list.
Concerning GroupBox, I don't have any plans to enhance current RingQt  implementation by supporting new classes.

Azzeddine Remmal

unread,
May 24, 2022, 7:46:19 PM5/24/22
to The Ring Programming Language
hello mounir
Thank you, the conflict between the two programs has been resolvedSketch.png

Thank you so much

Mahmoud Fayed

unread,
May 24, 2022, 10:18:00 PM5/24/22
to The Ring Programming Language
Hello Mounir

>> "This release is in line with the original objective of MonoRing which is making deployment and distribution of Ring based application easier"

MonoRing is a very nice project in the right direction
Keep up the GREAT WORK :D

Greetings,
Mahmoud

Mounir IDRASSI

unread,
May 25, 2022, 4:13:47 AM5/25/22
to The Ring Programming Language
Hi,

@Azzeddine: thank you for the confirmation. I have created a PR on official Ring to add this line in guilib.ring and lightguilib.ring for Windows only (since this is where we distribute our own Qt). This will automatically benefit to all applications without specific change to their code. Moreover, this change makes sens since we can have machines with existing Qt installation not compatible with the one from Ring and so we need to ensure that we are using the Qt version that we are shipping.

@Mahmoud: thank you for the kind words.
Reply all
Reply to author
Forward
0 new messages