A better developer experience and improved productivity are some of the key benefits of GeneXus X Evolution 1.
Debugging and profiling
We are proud to tell you that GeneXus X Evolution 1 is the first code generator that has an integrated debugger!
Debugging and Profiling capabilities help the developer to quickly identify and fix either application misbehaviour or performance degradation issues.
See Debugging in GeneXus and Profiling in GeneXus (GeneXus 16 Upgrade 7 or prior) for further details.
Windows, Mobile and Text Forms have been added in order to support the development of applications for Windows, Windows Mobile and iSeries platforms. Regarding web application development a standalone Theme Editor has been developed, which facilitates team work between designers and developers.
Build Process Improvements
Build or prototyping cycle times are substantially reduced thanks to parallel specification and generation. After an object is specified, and while others are being specified, the generator starts its work in a separate process. You will see a significant improvement in machines with multiple processors (multicore). You may not want this feature in single-core machines and that's why there is an option under Tools->Build>Concurrent Generation to set this feature OFF. With or without the feature, internal changes have been done to the generators in order to speed up generation.
Besides, these other major improvements have been made in the Build proccess.
For Java aplications, compile time has been dramatically reduced. See New performance's improvements compiling in Java for details.
More intelligence to determine the objects list that need to be re-generated, specifyng just those objects that are affected (directly or indirectly) by the user's changes. See here for more details.
The DeveloperMenu.xml file is not generated when you have set a Startup Object.
During build, the status bar shows build information: time elapsed, time remaining, objects with warning, with error, total. Click changes info, Double Click shows navigation views.
During the specification process, the Navigation pane will be automatically refreshed. This allows you to check the object's navigation as soon as it is specified while the process continues.
The "Pattern Generation" process is noticeably faster (up to 10x in some cases) than previous versions.
Text editors and structure editors and the IDE in general have been updated to enhance developer experience. Here some of the usability improvements:
Automatic variable definition
Now you just write the variable directly in the code and GeneXus automatically defines it if possible. The criteria used to determine the type are:
Based on: If you have for example a "Name" Domain (or Attribute) and you mention &CountryName in the source, the variable CountryName is defined based on the Domain (Attribute) "Name". If the attribute "CountryName" exists, it will be based on it instead.
Boolean: If the variable has the prefix "&is","&Is","&has" or "&Has", followed by a string starting with a capital letter, it will be defined as Boolean.
Collection: If the variable has this format: "&xx[<Attribute Name>|<Domain Name>|<SDT Name>]Collection", being "xx" a free text, it will be defined as a collection based on the attribute|domain|sdt (provided there isn't an attribute, domain, or sdt with that full name). For instance, suppose we have an SDT named "Customer". If we write &MyCustomerCollection, the variable is defined as a collection of Customer data type.
Boolean Collection: 3 components are required to automatically define a variable as a Boolean Collection: "&is" + <free text starting with capital letter> +"Collection". For instance: &isAvailableCollection.
With this feature you code much faster!
The Output Window now has Find functions (CTRL+F) like the other text editors and also a contextual menu with Copy/Select All/Find/Save to File options.
Multiple Generators support has been added, you can add or delete Generators in your Environment. You can also delete Environments.
A bunch of new code snippets have been added.
You can have more than one at a time open, it refreshes the info automatically and it has back and forward buttons
Inline filters are easier to define. Example: average(sales) where (year = 2008) > average(sales) where (year = 2007)
Insert Attribute (Ctrl+Shift+A) depends on the node. It will insert an attribute when it is called from the node "Attribute", but it adds parameters based on the selected attributes when it's called from node "Parameters".
New layout options in the Preview section.
Performance Improvements in Subtype Definition
In some Knowledge Bases (mainly those using a "muti-company" schema)sometimes defining or importing new Subtype Groups took several minutes. This process has been improved and the time consumed has dropped dramatically.
See here for more details.
New Methods for DataTime Attributes/Variables
New methods have been added for DateTime:
<DateTimeField>.AddSeconds( Number) corresponding to the existing function TADD( <DateTimeField>, Number)
<DateTimeField>.Difference( <DateTimeField2>) corresponding to the existing function TDIFF( <DateTimeField>, <DateTimeField2>)
Using the method notation (<attribute>.<method>) instead of the function one (<function>(<attribute>) the GeneXus Developer automatically gets the benefits of the tooltips in the Development Environment.
Pattern for Smart Devices
The work with pattern has been enhanced so that it also generates the right forms for smart devices. Now creating web mobile applications is a much easier task.
New limits of a Knowledge Base:
Models (i.e.: environments + versions): 999
For a complete list of constraints in a Knowledge Base see GeneXus Knowledge Base Limits
.Net Mobile doesn't require Visual Studio .NET anymore
Now you can create an application without the requirement of Visual Studio, which facilitates the setup of the environment and eliminates the need for licensing.
Data Provider Generator
A new tool was released in GeneXus X Evolution 1: Data Provider Generator. Data Provider Generator can read from different data sources (e.g. FreeBase) and automatically creates Data Provider Objects in order to provide that data.
Some Sum/Count formulas were not being evaluated in two level Transaction, neither as the user entered lines, nor after the Transaction was confirmed. This could lead some problems if you had rules that depended on the formula's returning value.
Now these formulas are automatically triggered on the "After Level" event. So, at least you get the formulas value on the server side and therefore the rules works as expected. There also some improvements to refresh the formula value while the user enters the information using ajax. More information in SAC 26921.
Data Selectors Improvements
New syntax in the Where clause of For Each command using Data Selector object. More information in SAC 27562.