Lazarus 2.2.0 release notes

From Lazarus wiki
Revision as of 17:33, 3 May 2019 by Martin (talk | contribs)
Jump to navigationJump to search

Lazarus 2.2.0 is not yet released. This page is under construction!

Statistics:

  1. commits: xxx
  2. log: svn log -r xxxx:xxxx
  3. resolved bug tracker issues: xxx

LCL Interfaces Changes

LCL Changes

TLazIntfImage.Create with size and description flags need no CreateData anymore

  • Old: After creating of a TLazIntfImage with size and flags CreateData has to be called
  • New: Creating of a TLazIntfImage with size and flags internal calls CreateData
  • Reason: Simplify, see Issue #35035

IDE Changes

  • Added IDE macro $(OutputFile) for the outputfile of the project. This usually corresponds to $(TargetFile), except when having a host application, in which case $(TargetFile) is the host application, while $(OutputFile) is the project executable (or library).
  • Codetools support for anonymous functions
  • "Close tabs to the right" in Source-Notebook
  • Extension of master PO files (a.k.a. templates) is changed from .po to .pot.
    • Example for IDE translation:
Previously we had:
Template: lazaruside.po
German: lazaruside.de.po
Russian: lazaruside.ru.po
Spanish: lazaruside.es.po
Now we have (note extension of the template):
Template: lazaruside.pot
German: lazaruside.de.po
Russian: lazaruside.ru.po
Spanish: lazaruside.es.po
  • Reasons:
    • .pot is 'industry standard' extension for PO template files. As a consequence, PO editors can now open our templates 'out of the box' and automate creation of translations.
    • It is much simpler to detect template files now that dotted unit names are allowed.
  • Remedy: You can safely remove .po template files from your project after you rebuild your project with the new IDE (at this point .pot files should be generated).

Debugger (gdb based)

On Windows some improvements to the speed of the gdbmi-based debugger(s) were made. Those changes

  • can speed up the debug experience
  • lead to a huge increase in CPU usage during debugging

If the latter is of no concern, then you should leave the new setting for the feature as it is. If you are on laptop and depend on battery live, or you have a single core cpu, or you have other reasons for wanting the CPU usage reduced, there is a new setting AggressiveWaitTime (in Tools > Options > Debugger). Set the value to:

  • 0 for the old behaviour
  • 15 to 25 for small speed improvements, with moderate/medium CPU usage. Which value to use will depend on the overall performance of your system.

The value can also be increased up to 500. On normal systems this should not be needed (and will give no extra speed), but if your system has some bottleneck then you may try this.

IDE Interface Changes

Components

AnchorDocking

  • New button to minimize a docked site.

Spotter

  • New IDE addon, showing a search list of all IDE commands.

TAChart

  • New chart tools "TAxisClickTool", "TTitleFootClickTool" and "TLegendClickTool": Create OnClick events when the user clicks on a chart axis or its title, the chart title or footer, or the chart legend, respectively. Good for creating an interactive GUI for formatting charts.
  • New property "AllowPanning" to turn built-in panning on/off.
  • New property "LimitToExtent" for zooming tools, avoids zooming out of the chart's full extent.
  • Property editor for TSeriesPointerStyle.
  • TBarSeries:
    • New property "BarShape" for drawing alternative shapes (cylinder, hexagonal prism, pyramid or cone) instead of rectangular bar.
  • TPieSeries:
    • Impoved painting of 3D pie series due to new properties: "DepthBrightnessDelta" allowing to darken or brighten the sides of the pie slices, "Orientation" and "ViewAngle" for different views of the series
    • New property "InnerRadiusPercent" allowing to draw a ring chart.
    • New property "MarkPositionCentered" for attaching data point labels to the pie center instead of the pie perimeter.
    • New property "StartAngle" to define the position of the first pie slice.
  • TListChartSource can be sorted by X, Y, XList, YList, Color, Text, or in a user-specific way defined by the event OnCompare.

Changes affecting compatibility

LazUtils

  • Trailing lineendings are not forcibly added to multiline strings in PO files anymore. Now multiline strings in PO files match exactly corresponding resource strings.
  • Reasons:
    • PO format does not prohibit multiline strings without trailing lineendings (and e.g. recent versions of Poedit do not complain about them).
    • New behavior unbreaks loading multiline translations from MO files.
  • Note that all multiline strings with mismatching trailing lineendings will be marked as fuzzy during translation update.

LCL incompatibilities

TMaskEdit: hexadecimal and binary characters

Mask support for hexadecimal and binary characters was added (this is a Lazarus extension, Delphi does not support this).

  • Old behavior: the characters 'h', 'H', 'b' and 'B' had no special meaning in the EditMask property
  • New behavior: these characters now are mask characters for hexadecimal and binary input respectively.
  • Reason: nice to have feature (QT5 supports it natively).
  • Remedy: if you need one of these characters as a literal in your EditMask: escape them with a '\'.

Components incompatibilities

TAChart: Chart.AllowZoom changed

The property AllowZoom of TChart is meant to give the user the chance to turn the builtin zooming feature on or off.

  • Old behavior: AllowZoom operates also on an external toolset.
  • New behavior: AllowZoom is effective only for the built-in toolset.
  • Reason: More consistent handling of properties
  • Remedy: Use the property Enabled of the external zoom tool to switch zooming off, or don't add a zoom tool at all.

TAChart: DataPointDrawTool.OnDraw deprecated

The event OnDraw of the data point draw tools (TDataPointCrosshairTool, TDataPointDistanceTool) will be removed and replaced by the new event OnCustomDraw.

  • Old behavior: OnDraw uses the chart's Drawer for painting the crosshair or distance bars.
  • New behavior: the Drawer to be used is passed as a parameter.
  • Reason: When a chart is painted to an external file the chart's Drawer still refers to the screen; therefore, the datapoint cross hair or distance bars are missing in the external file.
  • Remedy: Copy the old OnDraw event handler code to the new OnCustomDraw handler, but replace "Chart.Drawer" by the "ADrawer" given as a event parameter.

VirtualTreeViews: Renamed to "laz." prefix

VirtualTreeViews is essentially needed by OnlinePackageManager. Having this original package within the Lazarus installation makes is impossible for users to install a different version of this package.

  • Old behavior: Projects with VirtualTreeViews required the "virtualtreeview_package" and had the unit "virtualtrees" in the uses clause. The registered component classes were named "TVirtualStringTree", "TVirtualDrawTree", "TVTHeaderPopup".
  • New behavior: The package was renamed to "laz.virtualtreeview_package". All file names were changed to have a "laz." prefix, i.e. the uses clause will have to contain "laz.virtualtrees". The registered components are named "TLazVirtualStringTree", "TLazVirtualDrawTree", and "TLazVTHeaderPopup".
  • Reason: Avoid naming conflicts when another version of VirtualTreeViews is installed
  • Remedy: For existing projects requiring the VirtualTreeViews distributed with Lazarus,
    • open the lfm file in an external editor and replace "TVirtualStringTree" by "TLazVirtualStringTree", as well as - if available - "TVirtualDrawTree" by "TLazVirtualDrawTree" and "TVTHeaderPopup" by "TLazVTHeaderPopup".
    • open the project in the IDE, remove package "VirtualTreeView_package" from the project requirements and replace it by "laz.virtualtreeview_package"
    • in the pas file's "uses" clause, replace "virtualtrees" by "laz.virtualtrees"
    • in the pas file replace "TVirtualStringTree" by "TLazVirtualStringTree" (and accordingly for the other VTV components).

IDE incompatibilities

Previous release notes