Clarion 10 gold released

After over 4 months of beta testing, and 10 beta releases, today Clarion 10 gold is being released. In my previous post I listed some highlights for this release. When you get your email notification be sure to download the install and back it up. Then head over to our new store site and renew your subscription. Like all software, the work on maintaining and evolving Clarion never comes to an end. And our developers and support team send thanks to everyone who has helped shape this release!

Some highlights for the C10 release

These are highlights of new features in 10.0, for the complete list of fixes, changes and enhancements please refer to the readme text file as its always up to date with all of the latest new features, changes and fixes. All of this information is in the main Help file under the “What’s New in this Version” topic with links to the related topic content.

Compiler:
Big performance boost – in most cases your build time will be cut in half (or better).

  • New scanner for the Clarion (CLW) compiler
  • Support of nested OMIT/COMPILE blocks. Every source/include file
    can have nested OMIT/COMPILE blocks with a maximum nesting equal to 8 with a condition that when evaluated does not omit source, plus one additional OMIT/COMPILE with condition evaluated to omit source code.
  • The compiiler’s scanner uses the OS settings to determine the type of characters to expect. That allows for local national language alphanumerics to be used in identifiers (LABEL).

Dictionary Global Search and Replace
Powerful global Search and Replace for all the settings/attributes of FILEs, FIELDs.and KEYs.

TCP Networking – Client/Server communications
Drop-in a template to put network communications into your applications (using TCP/IP over a LAN/WAN or the Internet). You can pass messages (or files) between applications running on the same computer, and from one computer to another. You can also broadcast messages to all connected computers or processes. The templates and underlying QuickAppConnect class handles all the difficulties associated with socket programming.

The associated Code templates listed below provide support for the following
Socket “Actions” without writing any code:

  • Connect to Server
  • Disconnect from Server
  • Start Server
  • Stop Server
  • Initialize IP and Name
  • Send Message
  • Send Notification
  • Broadcast Notification (broadcasts a message to all connected apps)
  • Broadcast Shutdown (tells all connected apps to shutdown)

Language extensions – templates for Sending Emails, Emailing Reports, and Sending SMS (Text) messages
The new implementation for emails supersedes the prior implementation, and provides many more features, and is far easier to use. Based on the latest support implemented in the Microsoft .Net Framework.
(The original email implementation continues to ship for backward compatibility.)

Use HTTP or HTTPS to download web pages, or any other type of file. You can also post form data to web servers. Very easy way to send HTTP web requests (and receive responses) to Web Servers, REST Web Services, or standard Web Services, with the most commonly used HTTP verbs; POST, GET, PUT, and DELETE.

Web Requests (PUT, GET, POST, DELETE) via HTTP/HTTPS
HTTPWebRequest()
HTTPWebRequestToFile()

Amazon Simple Storage Service (Amazon S3)
Easily provide secure cloud server access in your App using the Amazon Simple Storage Service (Amazon S3).  Use it for backing up data, sharing files amongst remote clients, news feeds, etc.

JSON Support

JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write, and easy for computer languages to parse and generate. JSON is an easier to use alternative to XML. JSON can be fetched or uploaded with an HttpWebRequest.

Image manipulation functions;
ImageToPNG, ImageRotateFlip, ImageSaveThumbnail

Background Threads

The WorkingThreadManager class allows you to run a PROCEDURE on a background thread without any UI, and receive events on its status. The implementation is by a template and the class design is thread-safe.

Exception log viewer

The exception log viewer will read the map files created when you built your project and use these to turn the stack trace in the exception log into a list of procedures so that you can quickly and easily find the point of failure.

Project System

Support for the – #file copy srcfile dstfile – command.  If the command is included via the PRAGMA command in a source file, the copy occurs directly after the compilation of the source file.  If the source file does not need recompiling, the copy occurs directly after the source file would have been compiled.

The project language supports the – #file copy srcfile – command.  This comand copies the srcfile to the destination directory for the current project.  The copy only occurs if the build is successful.  The copy occurs after the destination binary (the exe, dll or lib) has been built.

Application Options

Now you can choose to have the %FILE Template symbol return files in the same order that they are displayed in the dictionary editor.  This means that some lists of files inside the application generator will appear the same as the dictionary editor.  However, take note, the File sort order also affects the order of code generation, so that files will be generated in a different order to what they were previously. To turn this feature on you need to go to Tools/Application Options/Generation tab and check the “Sort %FILE the same as the Dictionary editor” check box. Note: If you use LIKE in your file structures the changed order of generated FILEs could possibly cause compiler errors.

Lock Retries
You can now set how many times generator tries to gain access to a file in the Application Options window. This option can be useful in situations where automatic backups are running and briefly locking files.

Template Registry
The Application Generator now supports product version identifiers in the naming convention for the TemplateRegistry.trf file.  For example, Clarion 10 by default uses the name TemplateRegistry10.trf.
If the Application Generator does not find a registry .trf file with the version appended name, it then looks for TemplateRegistry.trf (without the version identifier).  By default when a new .trf is created it is created using the version number as part of the file name.

Dictionary Editor

  • The Dictionary Editor now remembers dialog sizes and positions
  • The Dictionary Editor now stops you from adding GROUP fields to keys of SQL tables
  • The Dictionary Editor now stops you from adding dimensioned fields to a KEY

ClarionCL
Now you can trace the location of a file and the folders search order used by the Redirection system from ClarionCL using the /rt switch.

MSSQL Driver
Now you can get the MSSQL driver to use SCOPE_IDENTITY to retrieve server identity values by adding /AUTOINCUSESSCOPEIDENTITY=TRUE in the driver string

SQL Drivers (all)
The SQL drivers now set FILEERROR() and FILEERRORCODE() to give more details when you try to define a KEY who’s component is a GROUP

IDE
When you select “Open Containing Folder” from the context menu of the tab for a document in the IDE it now highlights the file in the opened folder

Open File Dialogs
New option to use the Redirection System File Open Dialog as the default.

Text Editor
Find All in the text editor now runs in the background allowing you to do other things while the search is continuing.

Clarion10 – beta 10

Yesterday we released the 10th beta – and very likely the last before the gold release.  One of the changes was the addition of two exports in Win32.lib; GetProcessID and SetProcessorAffinityMask.  From emails sent into support we know that at least 1 (possibly more) 3rd party tools ship a .lib file with those same exports.  That means you’ll get duplicate symbol errors if you use one of the 3rd party tools that export those symbols.  We are getting in touch with all 3rd party devs to alert them those entries need to be removed from their .lib files.

In the meantime, if you run into the errors it is very easy to use LibMaker to remove them.  Support staff made a ~1 minute video that walks you through it.

Clarion 10 – beta 5

Clarion 10 – beta 5 is on its way out.  In addition to bug fixes this release has the new template support for the TCP/IP Sockets class.  So now you can easily create a socket server and clients, and communicate by sending messages or data to individual stations or broadcast to all connected clients. (EE only)

The examples install was also updated and includes a sample ‘Chat’ app, that uses the new sockets templates. If you previously installed the new C10 examples, please uninstall the old examples as we have revamped the folder structure and removed some older examples (for email and SMS) that referenced INCLUDE files that had been renamed (hence they will fail to compile).

The JSON class is also updated and adds new some new functionality for nested GROUPs and conversion of empty strings to the JSON keyword value ‘null’. (JSON class is EE only)

We also corrected a problem in the Amazon S3 example. (S3 support is EE only)

Clarion 10 beta is out!

Clarion 10 was released today (beta 3) to all users!  Most accessory vendors have already announced that they have C10 compatible versions of their products ready for download.  Check the C10 Help file topic: What’s New in this version->What’s new in Clarion 10 for the highlights and the readme file for a more complete list.

Clarion 9.1 update

We released an update for 9.1 today (build .11457), including an important fix for Docked windows and some tweaks in the IDE.  You can view the changes here.

We plan to release an alpha build of Clarion 10 next week.  I’ll be writing separate posts on what’s new in C10 in the coming days.

 

Digging deeper into Touch

Clarion developers don’t need to add any code to support touch input. The C9 Templates generate all the code needed to respond to touch gestures, so existing Apps just need a regenerate with C9 to become touch-enabled. But its easy for Clarion devs to add more specialized responses and touch “features” to their apps by working with these new additions to the RTL –

  • new event; EVENT:Pointer
  • new built-in function; POINTERDATA()
  • new SYSTEM property; PROP:PointerInterface

For more details on what the RTL exposes to your apps I refer you to this previous post.  If you don’t have the time to read it right now then I’d just like to point out this one excerpt:

They (Gartner) predict that Windows will grab 39 percent of the tablet market in 2016. You can be sure that you’ll have many users wanting to run your Clarion apps on their (Win8 Pro – x86 based) tablet. 

So roughly speaking they are predicting there will be about 5 million users on Windows tablets.  Even if they are off by a million or so, its inevitable that touch and tablets are in your future, and its a good bet that some of those tablet users will be your end users.

If those numbers catch your interest then you probably should download and build this example

The example shows how to use the interfaces contained in the touch.* source files (located in your .\libsrc folder).  It provides a nice look at some of the new features your apps can now support for an optimal “touch” experience (above and beyond the support the RTL provides automatically).

touchMode

 

Clarion 9.1 updated

An update to 9.1 is being released today, there are a few important fixes;

FIX: A random “missing pure virtual” exception could be thrown by the evaluator
FIX: Possible lockup if Listbox height is enough to show only one record but the row is multiple lines
FIX: SETDROPID could work incorrectly on dragging between 2 Clarion applications
FIX: The application generator could not open an app after you edited its dct and deleted a file that had aliases.

The complete list is here.

Clarion 9.1 update is out today

An update to 9.1 is being released today, here are a few of the more important fixes;
FIX: OLE Automation could be treated as side-by-side instead of an OLE server in a separate process

This fixes OLE server automation, such as automating MS Office components, and came about as a result of the support added for registration-free COM.  Surprisingly even after months of beta testing this wasn’t found until after the 9.1 gold release.

And these two, related to problems with either unusually large amounts of Procedure data, or .APPs where templates have been unregistered without removing the associated embed code:

FIX: Possible IDE lockup when there is very large number (hundreds) of local/global variables/tables in the Procedure and the IDE is processing the closing of an embed.
FIX: Possible failure on closing APP if embed tree with orphan embeds has been touched.

There are many other fixes and changes, you can see the full list here.

And of note for those using SQL backends;
FEATURE: The Clarion to SQL converter now converts the following operators for the specific drivers –
% (Modulo) All drivers
^ (Power) Pervasive SQL, Oracle
& (Concatenate) All drivers. *Note that ODBC uses the ANSI standard ||
XOR (Exclusive OR) SQLAnywhere, MSSQL