November 10th > GeneXus 18 released
Build 165925 - October 25th, 2022
- New GetInternalURI() method for image objects. This method is recommended when the image varies by Design System, Design System Option, Language, Density, Layer, etc
- Overall polishing & fixes, specially in everything related to images
October 9th, 2022
- Preview Channel for GeneXus 18 has been opened! Build 165349
- Although It is a feature-complete Build, GeneXus 18 now requires a lot of polishing before it gets released by the end of October.
- You can download the preview from genexus.com/betatesters or from the download center
- Disclaimer: It requires GeneXus 18 Licenses. This version requires a full license non-beta of GeneXus 18. Depending on your contract, your licenses may be automatically upgraded to GeneXus 18 once you open GeneXus. You can also upgrade centralized licenses by downloading Protection Server from here. For other license scenarios please follow this guide.
- Most important features to test
- Technology Update: Testing of your existing KBs
- New Java Build System (based on Gradle, integrated with Maven)
- Angular 14
- etc
- Unanimo
- DynamoDB
- Secure APIs
- Release Notes are being prepared at http://genexus.com/v18
- IDE has a new Launchpad for easier prototyping Web objects, Native Mobile Apps, and APIs. It opens on 'Run Developer Menu' automatically or you can find it under View > Other Toolwindows > Launchpad
- GXflow / Java flavor support added
- Export via MSBuild can be with 'only structures'
- Important fix related to floating point calculations with decimals
- iOS: MacOS Ventura support
- APIs: Generate OpenAPI is now True by default
- overall fixes and improvements
- The first bits for GAM Java flavor with Unanimo are ready for beta testing too.
Compatibility warnings
- In Web Development: The way that CSS is referenced in the generated code has changed when using Design System Object. Now CSS layers are used. This may create compatibility issues in the custom code you wrote to include external CSS or in your User Controls.
- The out of the box GAM backoffice and GXflow inbox now are basing their UI on Unanimo.
- Java uses a new build system, this affects the custom code you may have written for Java programs compilation or the place where you have to copy external libraries.
- Note: GAM Java and GXflow Java platforms are not ready yet. Upcoming...
New features and improvements
- Unanimo is the default Design System in New KBs.
- Work with for Web and Work With patterns apply layouts accordingly
- GAM, GXflow, Charts, Pivots, Dashboards, and Chatbots come out of the box with Unanimo too
- The pre-compiled out-of-the-box UI of the GAM Backend and GXflow can be customized
- Unanimo can be adopted gradually in a KB (form layout could be according to Carmine or to Unanimo in the same KB )
- Pattern Workwith for Web: Start event can contain user-defined code
- IDE:
- GeneXus objects have renewed Icons (now based on Gemini)
- Improved warning message when opening a KB with a different installation than the last time
- Export MSbuild task supports properties ExportKBProperties, ExportVersionProperties y ExportEnvironmentProperties to export those properties.
- Java
- New build system
- Gradle is used to compile applications
- Maven repo integration: Standard classes are declared in .pom as dependencies and taken from a public Maven repository
- The folder structure of the generated code, classes, libs, etc is as if you wrote it by hand. It also is according to the modules defined in the KB
- .NET
- External Objects can have references to packages in Nuget repositories
- Support for ReadReplicas
- For performance reasons, you may want to access read replicas instead of the main database. To do so, there is now a convention in GeneXus.
- Steps:
- Create a Data Store named <MyDataStore> (eg.: ReadReplica) that points to a read replica of some of the other Data Stores.
- Create aData Selector object named <MyDataSstore>_ReadOnly (eg.: ReadReplica_ReadOnly)
- Now use that Data Selector in a for each and GeneXus will make the for each access the corresponding data store.
for each using ReadReplica_ReadOnly()
msg(format(!'Cli:%1 - %2 - %3', CliCod, CliNom, CliDato1), status)
endfor
- API Objects and other REST services now generate the necessary code for Options (Allow) and CORS
- AWS Lambda functions can be triggered by HTTP
- Angular
- GAM Support for external OAUTH2 or OpenId Identity Providers (Azure Active Directory, etc )
- Image manipulation API implemented
- Chatbots
- Support for Scripted dynamic Chatbots. Definition of a conversational flow can be taken from a data provider (ie.: a database)
- Import from external design
- Support for rotations, gradients, static images, etc
-
- User Control object
- They can have sub-templates, that is, now they support recursivity (a tree view or a multi-level menu could be defined recursively)
- Properties can have a scope (they can be defined as meant to be set in design-time or run-time)
- GAM
- Several security improvements
- + All that has been released in GeneXus 17 Upgrade 11
- Support for Internet Explorer has been discontinued in Web in this Beta (and will so in GeneXus 18)
- IDE
- If you open a KB with a different version than the one with which you opened it the last time, a dialog will appear and ask you whether you really want to open the KB.
The complete message question is:
"The Knowledge Base was previously opened with a different GeneXus version.
The previously used version was <GeneXus Edition> version <build number>"
- If you open a KB from a different location than the one from which you opened it the last time, a dialog will appear and ask you whether you really want to open the KB.
The complete message question is:
"The Knowledge Base was previously opened with a GeneXus version from a different location, with a possibly different set of extensions, patterns and controls.
The previously used version of GeneXus was <GeneXus Edition> located at <path>"
- Several improvements to import from sketch / figma
- Create tests for Rest objects
- Apple generation: Minimum iOS & tvOS version: 12. See Apple Requirements.
- Import from design: SVG support (Web, Angular )
- Android: new document scanner API
- GAM:
- IDP can initialize SAML auth
- New property Status in GAMUser
- built-in re-authentication when email changes (OWASP recommendation)
- MSBuild Export task has new properties ExportKBProperties, ExportVersionProperties y ExportEnvironmentProperties
- New Queue API (Azure, AWS)
- Deploy Angular app to Docker
- Support to deploy option "only package" for docker
- Java generator: Code is generated in UTF8 for compatibility with JDK 18
- (amendment: this is already available in build of May 18th) New methods to read environment variables in Runtime External Object: GetEnvironmentVariable, HasEnvironmentVariable, GetEnviromentVariables
- API Object: OpenAPI specification of REST Services contains security information (oauth2 securitySchemes)
- China: Dameng database support in Java generator
- .NET: new msbuild task to get all references so that the build process does not require internet connnection
C:\Program Files\GeneXus>msbuild GXDevTools.msbuild /t:GoOfflineNetGenerator
- AWS Lambda functions support to be triggered from an AWS SQS Event
- Web performance: New Image loading policy property for images, so that images support lazy loading
- The WeChat MiniProgram Generator graduated to Beta status! We continue its development to support all GeneXus features.
- IDE: Design System Styles editor has now semantic checks
- Error on invalid token group al utilizar token group no válido
- Error on multiple include of same class
- Warning on non-existing token usage
- Warning on non-existing class usage
- Warning/Error on include cycles
- Warning on import of o a non-existing DS
- Depending on the Style property of the Workwith for Web Pattern settings, the generated objects by the pattern take the Style from the Transaction or from the pattern settings
- Isolation level property has 2 new values: Repeatable Read and Serializable. Changes to them imply changes to the connection string.
- Java: Some debug info was only written when JDBC log was enabled, now those messages are sent to the client.log, some when level is DEBUG and others when level is ERROR
- Angular: Improved Design System Object support:
- Vertical alignment default changed from Top to Middle for compatibility with Native Mobile
- Support for all CSS native properties added
- Improved support for multiple CSS classes on the same UI control
- Color transitions and consistency improved in UI controls
- Styling support improved for Button, Chronometer, Group, Image and Rating controls
- Improved CSS generation: Less code is written, and code is similar to code written by hand
- Stencil object has slots. Slots allow you to define its content in the object where Stencil is used. Any UI control that is a container, can be a slot.
- Improvements to deployment using 'Only Package' option
- Support for defaults in design system tokens
- eg.: tokens Unanimo (color-scheme:[light]|dark)
- Apple Generator
- Generated projects use XCFrameworks. Apple defines XCFrameworks as a distributable binary package created by Xcode that contains variants of a framework or library so that it can be used on multiple platforms (iOS, macOS, tvOS, and watchOS), including Simulator builds.
- Modules are generated as XCFrameworks
- Main objects have a new property: Required Xcode version, which defines the minimum XCode version to be required when compiling Apps and modules.
- Those who create UI controls / Extension Libraries should start using XCFramewors too (the previous mechanism is now deprecated and will be discontinued in some months)
- .NET : Updated httpclient library
- Now you can add body in an HTTP GET (use AddString() )
- IDE: List of KB Platforms is shorter in new KBs (you can add others if you need)
- DesignOps - First bits and docs for Figma Integration
- Java: The default JDBC driver for SQL Server is now the latest mssql-jdbc
- .NET generator standard classes and third-party libraries are taken from nexus repositories (are not shipped with GX)
- GAM support in deploy to AWS Serverless
- GXtest: Database mocking improved
- Angular: Property default platform hint has been removed
- Android compatibility: GroupId changed from com.genexus to com.genexus.android. External libraries must be updated. More information at SAC 50943
- First bits of DynamoDB support in .NET environments
- GAM: First bits of Integrated security by domain (SSO in iframes, apps integrated to GXportal)
- Angular: ClientInformation.DeviceType = SmartDeviceType.Web
- Chatbot: Send device location
- API: RestPath annotation in API Object
- Allows to customize path per service method
- Allows to include parameters in path
RestPath("/Clientes/{&CliId}")
getCliente(in:&CliId, Out:&CliInfo) => PCliente(&CliId, &CliInfo)
- Testing: Database Mocking in Java
- IDE & modeling
- Modularization:
- Object Icons have a new overlay when they are Internal or Private
- Public Objects that are not main do not need to be referenced in order to be packaged
- New dialog to create KB enables setting frontend generators
- New dialog to insert image in a layout
- A Query object can be opened from Dashboard
- Improvements in import from sketch
- Prototyping
- Deployment
- New deployment target for deploying static content to Azure Object Storage or AWS S3
- Deploy to Azure serverless supports backend with GAM
- msbuid task for creating offline database
- Chatbots - security token for botmaker
- GeneXus.exe /NoRecentObjects
- New property XML Schema validation for native SOAP Services (Java only)
- Deploy Angular frontend to AWS S3 or any cloud provider
- Apple
- XCode 13.2 supported
- You can use Cocoapods installed via Homebrew
- fixes and improvements
- Support for File.XsltApply() in .NET 6
- GAM platform for .NET 6 and iSeries added
- Import and export module references are less verbose
- You can deploy folders with <IncludeDirectory></IncludeDirectory> in _user.gxdproj
- Composite command is now optional
- Important rename according to Microsoft's rename:
- .NET Generator renamed to .NET Framework Generator
- This one generates .NET 4.x, minimum 4.6.2, and will not evolve (same as .NET Framework)
- .NET Core Generator renamed to .NET Generator
- This one generates now .NET 6 (LTS) and will be evolving together with .NET
- Pattern WorkWith for Smart Devices renamed to WorkWith (As it generates Panels that are not only for Smart Devices but also por Desktop Browsers given that Angular generator generates from Panels)
- Native Mobile: New property 'Services URL Configuration Panel' to customize the screen to configure the services URL when Dynamic Services URL is on
- Generation for .NET 6 is now supported. .NET 6 required for generating with .NET Core generator. Download SDK from https://dotnet.microsoft.com/download/dotnet/6.0
- Create KB improvements on SQL Server 2019 instance
- Uses UTF8 collation
- Reduces the time required to create KB to some seconds (it creates KB from an existing mdf)
- Session state can be configured when deploying to Azure functions
- Rest Services can be exposed using OpenAPI 3.0.
- New requirement for Android: Android 12 SDK, so you need to execute Update Android SDK
- Deployment
- New property to choose to deploy the GXflow backend
- Import from sketch supports files from URLs
- fixes to deploy to Azure API Management
- .NET Core generator supports DB2 and iSeries and completes so the support for DBMSes
- Several fixes to Design Systems, in IDE, Mobile and Web generators
- iOS
- Xcode 13: Add support and compile with the iOS 15 SDK
- New functions and controls for native mobile
- Files.SaveToFolder( &fileUrl, DeviceFolder.Documents)
- ShareFile( &fileUrl )
- Control.ScrollIntoView(&VerticalPosition, &HorizontalPosition)
- New Toggle Button Group control
- Deployment
- Backend of a Native or Angular app can be deployed as Azure functions and to Azure API Management (* still not if it uses GAM)
- Azure Redis cache can be used for session state management
- Angular frontend can be deployed to cloud for prototyping purposes. Set the Backend generator Deploy To Cloud property to True, and the Angular generator property Run Target = GeneXus DeployToCloud
- Import from Sketch
- Support for gradients in Web (Linear, Radial, Conic or Angular)
- Support for spacing (letter-spacing, line-height )
- Support for gx-content-mode (object-fit) in variables of Image type
- GAM
- Nested Identity Provider support added
- OpenID Connect support added
-
warning: If you open a KB with this version (or higher), your images will be converted: Root Module will be assigned to them. This has one side effect: if you open with older versions, those images will be shown in the root module (your kb might look ''unclean")
- Modules
- Images can be modularized (In fact, they always belong to a module. By default, to the root module )
- Images, Files, Design Systems, User Controls can be packaged and shared
- IDE:
- Images and Files are shown in Work With Objects
- Images and Files are shown in modules as Domains do
- Default Datastore can be renamed. This is useful when packaging modules that access data
- Angular
- External objects can reference npm packages
- Import from Sketch supports .sketchcloud extension
- .NET Core (.NET 5) supports Informix. Requires:
- CSDK 4.50.xC4 or higher
- Configure environment variable
SET INFORMIXDIR="C:\Program Files\IBM Informix Client-SDK" (and restart GeneXus)
- or copy "C:\Program Files\IBM Informix Client-SDK\bin\Informix.Net.Core.dll" to web\bin
- .NET Core generator:
- Support for Google cloud storage
- Improvement in developer experience: Kestrel window is closed before compilation starts
- Plus all that what is already in GeneXus 17 Upgrade 5
- Import Form Sketch: Big improvements on controls positioning according to design definition
- .NET & mails with Exchange Server: Authentication OAuth "AppOnly" support added (used by apps that run without a signed-in user present; for example, apps that run as background services or daemons and can access multiple mailboxes)
- Java: Tomcat 10 / Jakarta support also for native SOAP web services
- Android: Migrated to new API of Google play billing library (AIDL)
- iOS & Android: Scanner now allows to show the camera viewport inline, in the Panel’s layout. It can also scan several codes without user interaction
- Security API updated to .NET 5
- Housekeeping
- Category Pattern has been removed
- Theme and Default Theme properties have been renamed to Style and Default Style (Note that they support both: Themes and Design Systems)
- Base Style property has been renamed to Base CSS
- Client.Socket External Object is now available in web (front end)
- iOS >= 12 and Android
- In the Main object's properties now you can define a "Notifications Panel", the place where the user can configure notification settings of your app.
- External storage enhancements in .NET (as in Java)
- Support For private storage
- Support for: Minio or any other S3 compatible SDK.
- Full Support for Storage Configuration through Environment Variables
- Support Encrypted or not encrypted sensitive properties (as Access Key, Secret Key, bucket name, etc)
- Deleted IBM Bluemix deprecated provider
- Blobs, files are now served as private resources
- .NET Core generator supports SAP Hana
- IDE
- Grid columns of 'Open Object' (ctrl+O) and 'Work with Objects' now remember user settings related to the position, size, etc.
- A selector is used in places where high cardinality is expected (eg.: Folder, module, attribute, etc)
- Variables in API Objects have a new property: External Name, which defines the name in the URI of the service (and is case sensitive)
- Design System:
- Theme supports 'Save as Design System...' option
- Several fixes in references handling
- fixes in Java EE & Jakarta EE support
- .NET and .NET 5: Fixes to prototyping on https How to configure Https when prototyping .NET applications
- API Object: New 'External Name' property of variables allows to set the real name (even considering casing) that will be used and accepted in the URL.
- Import from Sketch: Using a specific new convention, it is possible that several forms generate different layouts on the same Panel. So from one Sketch file you can generate Panels with layouts that fit best for each device type, size, etc.
- Java: New httpclient implementation which improves performance is now enabled by default
- GAM:
- First bits to support One Time Password (OTP) and Two Factor Authentication (2FA). It requires/executes a reorganization of the GAM database
- Information of connection.gam can be in the database (you can prescind from connection.gam; this is good for PaaS environments and multitenant scenarios)
- .NET Core: .NET 5 support added. Applications generated with .NET Core generators require .NET 5.0. More infomation: .NET Generator Requirements
- Java, new properties:
- Now Java generator supports Tomcat 10
- New HttpClient implementation based on httpclient-4.5.13.jar, httpcore-4.4.13.jar. It improves performance and security.
- Chatbot Channels API: First bits to support Telegram
- IDE: Selectors in places where combo boxes where being used but are not suitable for high cardinality
- Impact Analysis: Improvement for scenarios of miniservices
- New message 'nfo0003 'The reorganization for this table makes the schema not backward compatible.'. This is useful for scenarios where you need to know (or take actions like stopping the DB impact) what kind of impact the reorganization has on existing programs. E.g: Changing PK, renaming or deleting tables or attributes, etc.
- Remote Configuration in Native Mobile apps using Firebase, useful for A/B Testing: A new RemoteConfig API has been added.
- Reporting: New chart type: Maps. Query Viewer can show data on a map.
- Applications generated with .NET require .Net Framework 4.6.2 or higher (previous versions required 4.6 or 4.6.1 as a minimum)
- Design System Object improvements
- Import from Sketch generates DS object
- Android supports DS object
- SVG format support added
- Native Mobile
- syntax
- Properties data type supported in client events
- &BC.Success() supported in client events
- MapBox provider supported in Andriod
- Testing: New object: Test Suite object
- + all of GeneXus 17 upgrade 3
As of this build you need to ask for a license to generate Angular
- Improvements to sketch import
- Caching: .NET and .NET Core now use StackExchange.Redis (MIT License) instead of ServiceStack.Redis
- Back end
- Breaking change: Serverside endpoint for uploading files has been changed for security reasons. This affects integration with third party systems that upload files to your system. It does not affect internal consistency (Native Mobile generators already use the new mechanism, File Upload Control too, etc.)
- Design System Object
- Now each class in Design System Styles shows its references
- Notes:
- Classes of Design systems are not 'objects' as Theme classes were.
- To view references in already saved DS Objects, you must save again the objects that reference it.
- It can be modularized
- Several fixes and other minor improvements
- Native Mobile
- A custom Panel object can be configured for setting notification configurations
- iOS specific
- Support for Firebase crashlitics
- Minimum deployment target version can be set in extension libraries
- Chatbots - Dialogflow
- Authentication to Dialogflow in IDE is now 'service to service' instead via UI. New property Google Cloud JSON Credentials is available to set the credentials.
- Support for disambiguations added
- Back end generators
- Support for PostgreSQL 13 added
- Security Scanner
- Several improvements to UI
- Database
- Descendant indexes support in MySQL 8
- Angular generator, several fixes and improvements
- New properties in GAM API to customize configuration on and with Identity Providers
- GAMAuthenticationOAuth20.RedirectURL_isCustom
- GAMApplication.ClientCallbackURLisCustom
- GAMApplication.ClientCallbackURLStateName
- GAMAuthenticationGAMRemote.SiteURLCallbackIsCustom
- Apple
- Support for XCode 12.4
- tvOS
- Android & Apple
- Interop.SendEmailAdvanced supports attachments
- Cache in GAM is now based on Cache API to support multidb / multitentant scenarios
- New IncludeCookies Property for httpclient datatype
- IDE
- Export Dialog shows object count
- Work With Attributes dialog improved (consistent with WW Objects)
- Apple / Android: improvements in metadata, metadata only includes platfrom-specific info
- other bug fixes and improvements
- Concurrent generation performance improvement in the following build of a cancelled build (build with leading .spc from previous build)
- Android:
- add property to allow add ACCESS_BACKGROUND_LOCATION permission to manifest (UseBackgroundLocation)
- Java: SOAP Services can be native or not in the same Environment. So the feature of using soap native is now at object level (consumed web services, and provided web services)
- Android:
- Security API PrivateKey supports PKCS8 encrypted keys
- Angular
- Grids are now implemented with CSS grid
- Nested grids support added
- Tab control events and properties support added
- Maps improved (ActivePageChanged)
- Other minor fixes in maps and geography data type
- GeneXus support for Huawei Mobile Services Platform (specifically designed for those that do not support Google Play Services)
- Apple
- New properties to set minimum iOS, watchOS, tvOS version supported in an app (some features of the app may require higher versions than the absolute minimum)
- UI of Multiwheel control updated
- API Object
- &RestCode standard variable added, to return custom HTTP Status code in services
- Angular
- Improved algorithm for choosing the right layout of the Web Platform
- Dynamic properties in a grid
- Conditions in dynamic combo boxes
- Progress bar performance improved (async)
- New MySQL driver support: MySQL Connector. It is a managed MySQL ADO.NET provider, with community support
- MySQL Connector is now used in .NET Core (50% performance improvement)
- New property ADO.NET provider with values 'MySQLDriverCS' (Default) 'MySQL Connector'.
In .NET Generator, using this driver avoids several troubles related to 32 vs 64 bits, 'libmysql not found' issues, etc.
Important: On the other side, this driver does not supports multiple server cursors, so a nested for each command loads in memory all the records of the outer for each, which may lead to memory consumption issues. Recommendation: Use better conditions for the outer for each command, and test thoroughly your solution before changing the ADO.NET Provider.
- XCode 12.2 supported
- Android 11 supported / API 30 required, new requirements for Android; you must run Tools > Update Android SDK
- Improvements to File Upload control (SACs 44015, 46554)
- Improvements to UC Object (SAC 48398)
- Reporting
- Query Objects in Native Mobile Chatbots
- BPM
- New property "Generate Metadata Domains" for generating Enumerated Domains for relevant data and activities.
- Query Viewer in Android and iOS
- QueryViewer1.Object = MyQuery(parm1,parm2,..) syntax support
- Import from sketch
- Deploy to AWS ECS (Elastic Container Service)
- User Control Object
- Improvements to Definition auto = true
- GXflow
- Performance improvement in inbox (worklist)
- Back end
- External Storage on Minio.io and any AWS S3 compatible provider
- New properties 'Privacy' and 'URL Expiration' at the generator level to set whether external storage is by default Private or Public and the expiration lapse of the private URLs.
- Angular
- Support for ClientInformation.DeviceType = SmartDeviceType.Web
- iOS
- Android
- iOS & Android
- New video control (UI control with autoplay, play in full screen + methods to stop, pause, start, etc)
- Dynamic call options
DynamicCall.SetOption(&DynCallObjectLink, DynamicCallOption.Type, CallType.Popup)
Call(&DynCallObjectLink)
- IDE
- The security scanner is now built-in in IDE and can also be run via MSBuild
Older log at GeneXus Beta Updates Log (Archive - until 20 October 2020)