Monday, October 27, 2014

Concept 4.0

Two months ago I've decided to start planning for Concept 4.0, just after CAS 3.0 was updated to most of my users. I skipped any intermediated version because is an entire new server and client. The main feature of the CAS 4 is the scalability. For this, the new server is written entirely in Concept (dropping the C/C++ server), and is a single-thread, polling server. It relays on green threads and non-blocking IO for performance.

Here you can see  a memory usage comparison between Concept 3.0 (see the green line) and 4.0 (the blue line) for a small (mobile) application.

For an enterprise application (test was done for a real-world ERP application):

This means that a concept:// application has a very small footprint for each additional user. This is because now, you can choose to put all the users in the same process, sharing the same resources.

You could easily keep tens of thousands (possibly hundreds of thousands) of users on the same server.

This is only half of what CAS 4.0 brings. Concept 4.0 doesn't need a dedicated thin client anymore (you can still use it, but is optional). The new concept:// client is written in JavaScript and is based on web sockets and HTML5.

You can even do real-time communication applications:

Audio and video is supported directly in your browser (as long as it is Firefox, Chrome or Opera). All major browsers are running concept:// client, but Safari and Internet Explorer 11 still don't support microphone and webcam capture.

Now every GyroGears applications runs directly in browser with a very small footprint, being able to handle large amounts of simultaneous users.

I hope to have the first BETA version early January 2015.

Wednesday, July 30, 2014

10 years of Concept

Already 10 years since the first Concept 1.0 release... Countless white nights all for a passion. Is now the most complex project I've been working on. It was fun, sometimes frustrating, and fueled only by my passion. The Concept Book is now almost ready (I hope to find an editor in august).

Concept Client 3.0 is now finally released but available only on Windows. I hope that next week it will be available on Linux and Mac (64bit only).

Between tens of bug-fixes, I managed to add a nice feature to GyroGears: a form designer. Gyro automatically generates all the forms, but in some cases, a manual design may be needed.
 Activating the marked link will open the form designer:

This is very useful for specific layout requests. However, I don't recommend using this feature, because it could provide an inconsistent layout through the application. GyroGears forms all identical in layout for a given application. When adding a custom form, it may interfere with the application usability.

Tuesday, July 15, 2014

Concept 3.0 developing tools

Concept 3.0 is now finally available. The server itself is stable (the engine is available since version 2.6), but now the also Concept Client 3.0 is available.

It comes with a brand new IDE, Concept IDE 2.0.

Glade was dropped in favor of RDesigner, a Concept-native UI designer that can handle both glade and the new Concept UI XML format.

I've started a face-lift for GyroGears. It will also include a "Custom form designer" based on RDesigner that will allow the developer to define specific forms when needed, replacing the gyro auto-generated forms.

The final release is planned on the 10th birthday of Concept, in about two weeks. It will include the Concept Client 3.0 deb package and OS X image.

Saturday, June 14, 2014

Concept 3.0

A lot has happened since the last time I've posted. To start with, I finally written the Concept manual, a 600 pages book describing the Concept programming language and framework. Now I'm looking for an editor that I could afford. I hope that the book will be available in October 2014.

Let's start with the new stuff in Concept 3.0
  • it comes with in .deb packages for i386 and amd64
  • added support for GPU programming
  • added support for libvirt
  • added code profiler
  • added SSH APIs
  • added Modbus protocol support
  • added tls/ssl support via OpenSSL
  • added support for the netflow protocol
  • added new compiler and run-time optimizations that makes Concept run up to two times faster
  • added support for green threads (beside native threads). Note that I prefer calling green threads "cheap" threads.
  • has a brand new client, Concept Client 3.0 that dropped GTK in favor of QT (see bellow)

Lets start with the GPU programming. It uses OpenCL and it automatically converts Concept bytecode to GPU bytecode, for example:

As you see, all the code is written in Concept (no OpenCL code). The Parallel framework may use both concept code and/or OpenCL code. As a note, for Concept functions, all parameters must be declared by type (see foo4 definition).

Now, the Profiler worked miracles for me, making Gyro faster than ever.

It will give you real-time information directly in the application (via ProfilerForm), or you could  use the low-level APIs for background analytic:

Or even simpler, you could just choose "Profiler project" from the Concept IDE.

The green threads are a really cool toy:

These threads are scheduled directly by the Concept Core, not needing semaphores or any kind of synchronization. These threads are really fast, but are limited to one CPU core. You could combine native threads with green threads for maximum performance. Also, green threads run with the regular Concept Core (not needing the multi-threaded core).

The Concept Client was completely rewritten. I have hesitated in forcing the Gtk3 version due to stability problems on MS Windows. I've watched the Qt community, forums and list, and I was impressed by the passion of the developers, unlike the Gtk groups where there were mixed posts, both by professionals and "political" individuals involved in ego wars. So, I've rewritten Concept Client on Qt, I even made a converter from .glade files to Qt code. I like that Qt looks and performs better, supports a lot more platforms, and seems stabler. The only advantages of Gtk are the significantly lower memory usage (for the same test application, Concept Client Qt uses 102 MB of memory while Gtk 63 MB). Since I'm talking of a "Client" 40 MB difference is relatively low comparing to the advantages. Qt is faster, more responsive and behaves consistently on every platform. I find Gtk slightly more flexible on "exotic" operations, for example, adding custom controls in a tab header.

Perhaps the greatest advantage of Qt is the completeness of the framework. It includes webkit, audio, network and event webcam APIs, elements missing in Gtk (I've compiled webkit for gtk, and added OpenCV for webcam support). It also has a sheet control, that Gtk supported only with the additional GtkExtra package. However the GtkExtra developers don't seem to hurry the port to Gtk3.

It actually looks better:

I hope I will manage to post more often in the next month. In August this year, Concept will be 10 years old!