tag:blogger.com,1999:blog-70050512024-03-07T05:30:31.103+01:00Fast-Forward »Software Tools To GoOndrej Kellehttp://www.blogger.com/profile/11973677794354930454noreply@blogger.comBlogger109125tag:blogger.com,1999:blog-7005051.post-78283759523376535122020-10-30T14:56:00.000+01:002020-10-30T14:56:36.686+01:00Variant support in chakracore-delphiThe new experimental/variants branch of chakracore-delphi introduces some experimental support for Variants.
It's now possible to write code similar to the following:
The example above is using Javascript built-in JSON object and its methods: parse and stringify.
On Windows, it's possible to expose an Automation object to your script, using late (IDispatch) binding. An example of this is Ondrej Kellehttp://www.blogger.com/profile/11973677794354930454noreply@blogger.com0tag:blogger.com,1999:blog-7005051.post-55474490905315843882020-04-30T10:59:00.000+02:002020-04-30T10:59:17.150+02:00FastMM5 releasedCheck it out:
First non-beta release of FastMM version 5 (a complete rewrite) has just been made public on GitHub.Ondrej Kellehttp://www.blogger.com/profile/11973677794354930454noreply@blogger.com0tag:blogger.com,1999:blog-7005051.post-62708963031837729812020-04-16T10:38:00.000+02:002020-04-16T10:41:25.338+02:00Lazarus 2.0.8 releasedLazarus 2.0.8 has been announced today.
Also see:
Release notes
Fixes
Happy coding :-)Ondrej Kellehttp://www.blogger.com/profile/11973677794354930454noreply@blogger.com0tag:blogger.com,1999:blog-7005051.post-63854101664675399652019-11-01T12:47:00.001+01:002019-11-01T12:53:04.057+01:00Lazarus 2.0.6 releasedLazarus 2.0.6 has been announced today.
Also see:
Release notes
Fixes
Happy coding :-)Ondrej Kellehttp://www.blogger.com/profile/11973677794354930454noreply@blogger.com0tag:blogger.com,1999:blog-7005051.post-49708345154174427472019-01-20T02:55:00.001+01:002019-01-20T02:55:52.994+01:00Node modules with Delphi and Free Pascalchakracore-delphi now comes with NodeSample, a new sample console application showing (as of now very limited) support for Node modules. Included are:
commonmark
graphql
json-query
lodash
moment
The sample only shows how Node modules can be resolved and used in Delphi and Free Pascal applications. It doesn't implement Node's event loop or any of its internal modules or native bindings like path,Ondrej Kellehttp://www.blogger.com/profile/11973677794354930454noreply@blogger.com0tag:blogger.com,1999:blog-7005051.post-30622027925205579812019-01-15T00:03:00.001+01:002019-01-15T00:03:41.663+01:00WebAssembly with Delphi and ChakraCorechakracore-delphi now contains WasmSample, a new sample project using ChakraCore to load and run a WebAssembly module (in this case, an implementation of Conway's Game of Life).
It's based on Colin Eberhardt's blog post Writing WebAssembly By Hand (you can run the code in your browser here).
Ondrej Kellehttp://www.blogger.com/profile/11973677794354930454noreply@blogger.com0tag:blogger.com,1999:blog-7005051.post-59141748733056350602018-11-11T22:33:00.000+01:002018-11-11T22:33:01.796+01:00Inheritance with chakracore-delphiI've just pushed some updates to chakracore-delphi.
A new feature worth mentioning is support for inheritance (I mean Javascript-style, "prototypical inheritance") in both directions. Suppose the following hierarchy:
First, here is Shape the "superclass", defined in Javascript:
Next comes Circle, a "subclass" of Shape, defined in Javascript as well:
The following is Rectangle, defined in Ondrej Kellehttp://www.blogger.com/profile/11973677794354930454noreply@blogger.com0tag:blogger.com,1999:blog-7005051.post-80957899528338035722018-10-29T18:11:00.001+01:002018-10-30T08:53:56.876+01:00My Lazarus External ToolsSimilar to My Delphi Tools blog post (wow, many years ago), here's my Lazarus External Tools configuration.
Linux (Mint)
Title: Explore to Source Directory
Program Filename: caja
Parameters: $Path($EdFile())
Working Directory:
Title: Explore to Target Directory
Program Filename: caja
Parameters: $Path($TargetFile())
Working Directory:
Title: Console in Source Directory
Program Filename: Ondrej Kellehttp://www.blogger.com/profile/11973677794354930454noreply@blogger.com0tag:blogger.com,1999:blog-7005051.post-56960126175695407872018-09-16T16:36:00.004+02:002021-02-01T17:56:23.626+01:00Project Page IDE extension for RAD Studio XEIn a response to this question on G+, I just published projpage-xe, an IDE extension for RAD Studio XE (Delphi and C++Builder) as open source on GitHub.
This IDE extension is targeting RAD Studio XE version (ie. BDS 15.0 released in August 2010) specifically. It can hopefully serve as a work-around for the problem that the official Project Page IDE functionality mysteriously disappeared in that Ondrej Kellehttp://www.blogger.com/profile/11973677794354930454noreply@blogger.com0tag:blogger.com,1999:blog-7005051.post-80620509204700206432018-08-23T11:24:00.001+02:002018-08-23T11:24:54.137+02:00chakracore-delphi included in fpcupdeluxechakracore-delphi is now included (as an installable module) in fpcupdeluxe. :-)
Cheers!
Ondrej Kellehttp://www.blogger.com/profile/11973677794354930454noreply@blogger.com0tag:blogger.com,1999:blog-7005051.post-89170014544837784042018-07-19T22:05:00.003+02:002018-07-22T21:15:39.221+02:00Delphi Free for Some - Lazarus Free for Everyone!Embarcadero has announced the Community Edition releases for Delphi and C++Builder. Sounds like a reason to celebrate. But reading the "fine print" is rather sobering, as the license agreement practically excludes anyone but some students and hobbyists, perhaps:
"The Community Edition license applies solely if Licensee cumulative annual revenue (of the for-profit organization, the government Ondrej Kellehttp://www.blogger.com/profile/11973677794354930454noreply@blogger.com0tag:blogger.com,1999:blog-7005051.post-3481839488387581242018-06-23T12:05:00.000+02:002018-06-23T12:05:01.507+02:00FastText follow-upJust a quick follow-up for those of you who showed interest.
My proof-of-concept with FastText has been a success. The C# class library has been integrated with a product and staged for a future release.
The product provides a web-based conversational user interface, accepting natural language as user input and performing configurable actions, possibly interacting with other (external or Ondrej Kellehttp://www.blogger.com/profile/11973677794354930454noreply@blogger.com0tag:blogger.com,1999:blog-7005051.post-26796702201534482362018-05-20T16:16:00.000+02:002018-05-20T16:16:50.226+02:00One of my favourite ways of multi-threading on WindowsHaving blogged about a few bugs in multi-threading libraries recently, I want to show an easy and convenient alternative. It's minimalistic but it works.
On Windows, the I/O completion port offers a way to use a thread pool for your multi-threaded application. Designed primarily for efficient processing of asynchronous I/O, it supports files, named pipes, sockets and device control.
In additionOndrej Kellehttp://www.blogger.com/profile/11973677794354930454noreply@blogger.com0tag:blogger.com,1999:blog-7005051.post-75813176720488026692018-04-28T10:57:00.001+02:002018-04-28T10:58:24.677+02:00Another BugSo you've put in the time and effort to refactor your code and data for parallel execution and are eager to see some parallel action. Unfortunately, you might be disappointed; in some cases your tasks might get serialized, performed sequentially in a single thread. With the overhead you've just introduced, your code probably performs a little bit worse than before.
If you thought TParallel.Join Ondrej Kellehttp://www.blogger.com/profile/11973677794354930454noreply@blogger.com0tag:blogger.com,1999:blog-7005051.post-62615343492860128432018-04-22T15:28:00.000+02:002018-04-22T15:34:17.326+02:00Don't lose time with a known Delphi bug affecting TParallel.JoinWriting multi-threaded code is hard and takes a lot of time. That's why it's especially annoying to waste time with bugs like this.
Reading (and enjoying) Primož Gabrijelčič's book Delphi High Performance, I've come across this paragraph in Chapter 7: Exploring Parallel Practices:
There's not much to say about Join, except that in current Delphi it doesn't work correctly. A bug in the 10.1 Ondrej Kellehttp://www.blogger.com/profile/11973677794354930454noreply@blogger.com0tag:blogger.com,1999:blog-7005051.post-12646044415150238872018-04-15T19:13:00.000+02:002018-04-18T18:22:17.458+02:00Artificial Intelligence Transgender: Kings and QueensResearching for some Natural Language Processing tasks for a .NET application recently, I've come across Facebook's FastText library.
FastText is an open-source, free, lightweight library that allows users to learn text representations and text classifiers. It works on standard, generic hardware. Models can later be reduced in size to even fit on mobile devices.
It's written in C++ and builds onOndrej Kellehttp://www.blogger.com/profile/11973677794354930454noreply@blogger.com0tag:blogger.com,1999:blog-7005051.post-23146112306004498052018-04-02T10:05:00.000+02:002018-04-02T13:01:27.734+02:00First steps with Lazarus Qt5 interfaceSteps for building and installing Qt5 for Lazarus
Using a quick test project with relevant code shown here: unit1.pas
I'm using Qt 5.6.2 because that's the version with which Lazarus qt5 interface has been tested. You can experiment with later versions, too.
Windows 32-bitUsing MinGW$(LazarusDir): C:\fpcupdeluxe\lazarus
$(QtDir): C:\Qt\Qt5.6.2
- download: Ondrej Kellehttp://www.blogger.com/profile/11973677794354930454noreply@blogger.com0tag:blogger.com,1999:blog-7005051.post-91109919339110271892018-02-11T16:01:00.002+01:002018-02-11T19:24:37.542+01:00Not interested in improving your product?This morning I've found some sad news over at The Wiert Corner.
Apparently, Jeroen Wiert Pluimers - a valued member of the Delphi community, whose work I appreciate a lot - got his MVP status and technical partner licenses revoked. Jeroen won't be able to support Delphi community and open source projects as much as before because the latest licenses of his own are Delphi 2007 and XE4.
Jeroen's Ondrej Kellehttp://www.blogger.com/profile/11973677794354930454noreply@blogger.com0tag:blogger.com,1999:blog-7005051.post-66828112324121379522018-02-04T19:09:00.001+01:002018-02-04T19:09:39.544+01:00Updated chakracore-delphi exampleschakracore-delphi has been updated to show some (still rather crude) example implementations of:
setTimeout
setInterval
native Promise
Ondrej Kellehttp://www.blogger.com/profile/11973677794354930454noreply@blogger.com0tag:blogger.com,1999:blog-7005051.post-65957855337610582232018-01-12T18:12:00.000+01:002018-01-12T18:12:52.963+01:00chakracore-delphi initial releaseThe initial release of chakracore-delphi is out, published under the MIT license.
Short summary:
Comments, ideas and of course pull requests are very welcome. Cheers!Ondrej Kellehttp://www.blogger.com/profile/11973677794354930454noreply@blogger.com0tag:blogger.com,1999:blog-7005051.post-34534803579207697202018-01-06T15:19:00.000+01:002018-01-06T15:19:39.620+01:00chakracore-delphiWith the initial release coming up soon, here are a few teaser screenshots of chakracore-delphi, a new opensource library with Delphi and Free Pascal bindings and classes for Microsoft's ChakraCore Javascript engine:
FPC 3.0.4 and Lazarus 1.8 build (win64):
FPC 3.0.4 and Lazarus 1.8 build (linux64):
FPC 3.0.4 and Lazarus 1.8 build (macosx64):
Delphi XE 10.2 Tokyo build (win64):
Delphi 2009 Ondrej Kellehttp://www.blogger.com/profile/11973677794354930454noreply@blogger.com0tag:blogger.com,1999:blog-7005051.post-7865856851157680722017-12-20T16:41:00.000+01:002017-12-20T16:41:00.292+01:00pas2js Public Beta releasedA few days ago, first public Beta of pas2js has been released.
See the demo (code).
Happy holidays! :-)Ondrej Kellehttp://www.blogger.com/profile/11973677794354930454noreply@blogger.com0tag:blogger.com,1999:blog-7005051.post-49953109506256924102017-12-10T19:57:00.002+01:002017-12-11T22:34:23.021+01:00fpcupdeluxeIf you use Free Pascal and/or Lazarus and update them often to follow the development in trunk, or if you just need to use multiple versions side by side, have a look at fpcupdeluxe (GitHub).
It's a GUI front-end which lets you easily select a release and build it, including cross-compilers, with a click of a button. The result is installed into its own directory where it doesn't interfere with Ondrej Kellehttp://www.blogger.com/profile/11973677794354930454noreply@blogger.com0tag:blogger.com,1999:blog-7005051.post-27503305279079006542017-05-19T18:00:00.000+02:002017-05-19T18:00:00.131+02:00Big Ball of MudRecently I've spoken to people at quite a few companies where Delphi is used to develop their software. There's a pattern which is very hard to miss or ignore: Every one of them so far wants to get away from Delphi. They are all very dependent on it and still need it to continue running their businesses but they are unhappy about it and their long-term plan is unequivocally to move away from it. Ondrej Kellehttp://www.blogger.com/profile/11973677794354930454noreply@blogger.com0tag:blogger.com,1999:blog-7005051.post-24970045529396007502016-12-24T08:26:00.001+01:002016-12-24T08:26:30.690+01:00Colours on my keyboardA few days ago I had to consider reinstalling Windows on my notebook. Instead I decided to switch to Linux Mint. I've been using Linux Mint in virtual machines for a few years and it worked very well for me. This is the first time I run Linux directly on the host. For development I keep a few Windows virtual machines. I'm very happy with it so far. Everything just worked without much ado, except Ondrej Kellehttp://www.blogger.com/profile/11973677794354930454noreply@blogger.com0