Sunday, September 22, 2013

9 years and one month of Concept Application Server

It's been 9 years since I've started this project. Now is mature, tested in high load environments, over a hundred end-user solutions implemented by myself. There's a lot of new stuff, both in Concept Application Server and GyroGears.

For start, Concept 3.0 is almost here, with lots of new features. The main star is the new Concept Client for iOS.

For Gyro, lots of bug fixes and a new UI model for child entities was added. Now, you can show all the info using the same window (without opening new child windows). It's a tab-bar style view.

Also, drag-and-drop of files/images is now cleaner.
Mobile applications generated by GyroGears are now read/write, and use the same source code and binary for both Android and iOS.

DRM API's are available in beta, as a new feature in Concept 3.0.

Concept Client for OS X 10.8 is now up-to-date, and soon a binary packet for Concept Application Server will be available for OS X.

Sunday, March 17, 2013

Concept 2.4

Concept 2.4 now available for download. As the main feature is the new JIT (sljit), and some basic code optimization (like dead-code elimination).

It almost tripled its speed since the first version with JIT. Here is an example for a basic benchmark for arrays + basic operations (lower the better):

About 6 times faster than PHP 5.4 and about the same speed with C (gcc, no optimizations).

I've also ran a Sieve benchmark (higher, the better):

The slight advantage for gcc comes from the fact that Concept core must call a function for accessing array elements, instead of a direct access (like in C/C++).

For now is fast enough for Concept to be a reasonable choice for CPU-intensive computations.

Average speed optimization for Concept/JIT is about 800%, but in some particular cases it is more than 2000%.

Wednesday, February 27, 2013

Concept Application Server 2.4 with 3.0 core

I've made a few tests with various programming and scripting languages (C/C++, IonMonkey, Chrome V8, Java, PHP 5.4). I've used an implementation for the sieve of Eratosthenes algorithm for the benchmark. As an unexpected result, IonMonkey (Firefox 18 javascript engine) was insanely fast (around C speed).

As a result, Concept now has a JIT compiler, that fully compiles a function upon the second run. For the standard benchmark (strings + arrays + arithmetic operations + objects) some impressive improvements were noticed. For example, arithmetic operations are about 2000% faster. Function call (context create and free) about 50% faster. Array operations are slightly faster for numbers, the same for strings. String operations already optimized remain the same. Object method call (including constructor call) about 25% faster by reusing memory (instead of freeing the memory, is conserved for the next call, same with objects). So, for the Sieve of Erathostenes repeated 900 times, these are the results (lower, the better):

As you can see, the benefits for using JIT are massive. I've chosen to use an existing JIT (Stack-less JIT compiler). It's incredibly simple and clean, and it took me about 2 days to link it to the Concept Core.
As a note, for PHP, if the Sieve interval is extended from 8193 to 1,000,000 primes, the execution time raises exponentially (v5.4 about 580 seconds, Concept with JIT about 30 seconds). A low interval was chosen as representative for real-life situations.

For GyroGears, bug fixes and a new feature: import from CSV for related members and export to Excel.

For now, Concept 2.4 with JIT compiler is available for download.

Tuesday, January 29, 2013

GyroGears and new driver

A new "old" database server is supported (without ODBC) both by Concept Application Server and GyroGears: Firebird. It's been a while since I've tested Firebird (and then, it was 1.5 I think) and there were some problems, especially with the "hard-to-use" driver. Now, 2.5 it works great. It still has some limitations, for example maximum column and table name length is only 31. That's now fine with Gyro (it automatically removes characters from the table names).

Now, Gyro has lots of goodies for the end-user:

For example, the nagging "You forgot to enter Name, Email, etc." window, has been replaced with a red ribbon and highlighting the field. A "switch to fullscreen" button was added that enables you to hide the toolbar. You can also see the new "Single pane" layout, that enables you to use the same space for views and actual forms avoiding opening a new window.

A feature search panel eases the menu access. The use can just search all the features in an application.

In Gyro, in all numeric members (integer and decimal) you can now enter formulas, for example, if you enter: 2+2*2 it will be automatically evaluated to 6.

The server now compiles on Windows 64-bit. Due to some differences, it didn't compile on 64bit Windows. However, on FreeBSD 64 and Linux 64 worked just fine.