Clarion 12 - What's New - What Have You Found?

I’m setting up this topic to list and discuss What is New that we can find in Clarion 12. Also what has been announced for Clarion 12 in the Blog that we cannot find. Maybe @RZaunere Bob from Soft Velocity can post here to help.

The new Clarion 12 emails went out May 15, 2025 and included the Clarion 12 is released link that I would summarized with these:

  • 65% of the Runtime Library has been refactored, optimized and adjusted in preparation for the move away from the Topspeed compiler technologies and into a modern compiler architecture
  • Improved Unicode Support with a Refactored STRING Type
  • Compiler Performance Improvements
  • Check for Updates - On the IDE “Start Page” you’ll find a new Check for Updates button

I have not been able to get a STRING containing a Unicode Character to compile. The compiler does not like the Unicode CLW file that worked fine as ANSI. it errors that it cannot find the “PROGRAM” which is there. There is nothing in the Help for STRING. There is no Encoding in the Project Settings as described in this Unicode Blog Post.

In the LibSrc\win folder find I no significant changes from 11.1. I would think that BuiltIns.CLW would have changed. I compared the Exports in ClaRun.DLL and they are identical to 11.1, so confirms nothing new in RTL like the previously mentioned ToUncode() and ToANSI() functions. The Templates folder has no significant changes since 11.1.

There was no Link to an Examples Install which I would expect some to show what’s new.


What I can see that is New is a “Check for Update” button. So are the major changes for 12 coming in the future using Check for Update?

2 Likes

Here are some tests for Unicode. None of the Clarion instructions show the expected value. Only the direct api call works.

                    PROGRAM
                    MAP
                        MODULE('')
!int MessageBoxW(  [in, optional] HWND    hWnd,  [in, optional] LPCWSTR lpText,  [in, optional]LPCWSTR lpCaption,  [in]           UINT    uType);
MessageBoxW                 PROCEDURE(SIGNED hWnd,SIGNED lpText,SIGNED lpCaption,UNSIGNED uType),PASCAL
                        END
                    END

str                 STRING(500)

    CODE
        
        !utf8
              !123456789012                    34
        str = 'Thumbs up: <0F0h,09Fh,091h,08Dh> Alpha: <0CEh,0B1h>'
        MESSAGE(str,str,,,,MSGMODE:CANCOPY) !Thumbs up: 👍 Alpha: α
        MESSAGE(SUB(str,14,1),,,,,MSGMODE:CANCOPY) !‘
        
        !utf8bom
        str = '<0EFh,0BBh,0BFh>Thumbs up: <0F0h,09Fh,091h,08Dh> Alpha: <0CEh,0B1h>'
        MESSAGE(str,str,,,,MSGMODE:CANCOPY) !Thumbs up: 👍 Alpha: α
        MESSAGE(SUB(str,14,1),,,,,MSGMODE:CANCOPY) !
       
        !utf16lebom
        str = '<0FFh,0FEh,054h,000h,068h,000h,075h,000h,06Dh,000h,062h,000h,073h,000h,020h,000h,075h,000h,070h,000h,03Ah,000h,020h,000h,03Dh,0D8h,04Dh,0DCh,020h,000h,041h,000h,06Ch,000h,070h,000h,068h,000h,061h,000h,03Ah,000h,020h,000h,0B1h,003h>'
        MESSAGE(str,str,,,,MSGMODE:CANCOPY) !
        MESSAGE(SUB(str,14,1),,,,,MSGMODE:CANCOPY) !T
        
        !utf16le
        str = '<054h,000h,068h,000h,075h,000h,06Dh,000h,062h,000h,073h,000h,020h,000h,075h,000h,070h,000h,03Ah,000h,020h,000h,03Dh,0D8h,04Dh,0DCh,020h,000h,041h,000h,06Ch,000h,070h,000h,068h,000h,061h,000h,03Ah,000h,020h,000h,0B1h,003h>'
        MESSAGE(str,str,,,,MSGMODE:CANCOPY) !
        MESSAGE(SUB(str,14,1),,,,,MSGMODE:CANCOPY) !
        
        !utf16le00 api 
        str = '<054h,000h,068h,000h,075h,000h,06Dh,000h,062h,000h,073h,000h,020h,000h,075h,000h,070h,000h,03Ah,000h,020h,000h,03Dh,0D8h,04Dh,0DCh,020h,000h,041h,000h,06Ch,000h,070h,000h,068h,000h,061h,000h,03Ah,000h,020h,000h,0B1h,003h,0h,0h>'
        MessageBoxW(0,ADDRESS(str),ADDRESS(str),0)

This is what the Win Api call to MessageBoxW() displays:

1 Like

The prior blog post on January 20 titled Clarion 12 News mentions SQLite:

SQLite Updates

And we’re working on new SQLite features:

  • In-memory database support
  • Improved transaction handling
  • Better concurrent connection management

I’d like to see a simple example from SV on how to create an In-Memory SQLite database. One idea would be take the School SQLite example and allow it to run from memory, it already loads the SQLite database from the TPS files.

According the the SQLite docs it should work with simply a database name of :memory: so in Clarion OWNER(':memory:') or various forms of 'file::memory:' or 'file:memdb1?mode=memory&cache=shared'.

4 posts were merged into an existing topic: Clarion 12 - What Problems or Issues have you found?

In DiscussSV Clarion 12 Paul Sivak reports the Dictionary Editor works much better with his large DCT

-------- Forwarded Message --------
Subject: Re: DCT editor
Date: 17 May 2025 13:19:34 -0400
From: Paul Sivak [email protected]
Newsgroups: sv.clarion.clarion12

using a DCT with about 900 tables… some tables are large, 300+ fields
(have been working on this project, for 30 years… and have added a few features during that time)

speed is outstanding..
can open a table and scroll thru the fields without errors.
just over, much, much experience.

3 Likes

SQLite driver is new (dll file)

Please post more details that just “is new”.

I’d guess you were talking about the SQLite3.DLL file in the Bin folder has changed?
In 11.1 it had Version 3.35.5.0 dated 05/17/2021.
In 12.0 it’s now Version 3.47.2.0 dated 12/07/2024 so is much newer.
On SQList.org the most recent is 3.49.2 dated 05/07/2025.

The Clarion SQLite Driver ClaLIT.DLL is about 20KB smaller. Have you tried anything with it? The Blog post said it would have: In-memory database support; Improved transaction handling; Better concurrent connection management.

Sorry, I have not tested the new SQLite yet, I am dissapointed with Clarion 12 , because I need unicode support , and I was waiting for it, and found out that it is missing from this release…

1 Like

SQL lite is now much more useful. I had a mini test app to simulate concurrent use. Four windows are opened in separate thread, and they start writing to the tables. In Clarion 11 there was a lot of errors during insert. With version 12, there are non of them. All data are written.

This is wrong.

4 Likes

2 posts were merged into an existing topic: Clarion 12 - What Problems or Issues have you found?

2 posts were merged into an existing topic: Clarion 12 is released

Apologies for my previous misinforming post. In a hurry, I did not done test correctly. I did not start another instance of the application, to simulate multiple users. Everything is OK when only one user is using database.

Thanks @Bruce for requesting app. When I wanted to send it, then I remembered to need start more than one instance. Then I saw that there are the same problems like in Clarion 11.

Once again apologies.

Id still like to get s copy if i can. Id like to test it against the new SQLite driver.