HPCC-8030 Java/Python/Javascript language support in ECL

Added support in code generator for pluggable external language support.

New syntax: EMBED(module, 'script'), or EMBED(module) script ENDEMBED

A module for embedding Javascript using the v8 engine is provided in the plugin
v8embed - this can be imported using IMPORT javascript;

Additional plugins to support embedding Python and possibly Java will follow.

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
HPCC-8030 Java/Python/Javascript language support in ECL

Added plugin to support Python.

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
HPCC-8030 Java/Python/Javascript language support in ECL

Reworked python embed manager to support functions, imports, etc.

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
HPCC-8030 Java/Python/Javascript language support in ECL

Added java import plugin, and further cleanup on the others

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
HPCC-8030 Java/Python/Javascript language support in ECL

Added boolean parameters/results. Also added an additional test for Java
case (including multithreading).

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
HPCC-8030 Java/Python/Javascript language support in ECL

Fix some threading/signal issues in the java embed plugin.

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
HPCC-8030 Java/Python/Javascript language support in ECL

Fix some threading issues in the Python embed plugin.

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
HPCC-8030 Java/Python/Javascript language support in ECL

Remove SONAME from these 'module' plugins, so that installers don't complain
about missing dependencies. That way they will be available IFF the
corresponding language they interface to is installed, but not require that it
is for the HPCC-Platform to be installed.

Also clean up the build process to use proper CMake mechanism for finding
includes and libraries, and to add flags to disable building these plugins.

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
HPCC-8030 R/Java/Python/Javascript language support in ECL

Added R embedding support.

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
HPCC-8030 R/Java/JavaScript/Python language support in ECL

Changes in response to code review

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
HPCC-8030 R/Java/JavaScript/Python language support in ECL

More Java threading/signal issues.

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
HPCC-8030 R/Java/JavaScript/Python language support in ECL

More changes in response to code review

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
HPCC-8030 R/Java/JavaScript/Python language support in ECL

Added support for unicode/utf8 parameters and results.

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
HPCC-8030 R/Java/JavaScript/Python language support in ECL

Fixes to support for unicode/utf8 parameters and results, after code review.

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
HPCC-8030 R/Java/JavaScript/Python language support in ECL

Add tests for exception marshalling, and corresponding fixes in the
exception marshalling implementations.

Check and adjust Java parameters according to the types in the supplied
signature, including handling parameters and results of type char.

Other changes in response to code review.

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
HPCC-8030 R/Java/JavaScript/Python language support in ECL

Use utf8 for the script body (including when supplied as an expression).

Other changes as suggested by code review.

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
HPCC-8030 R/Java/JavaScript/Python language support in ECL

Add support for DATA params and return values.

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Merge pull request #3845 from richardkchapman/embedding

HPCC-8030 JavaScript/Python language support in ECL

Reviewed-by: Gavin Halliday <ghalliday@hpccsystems.com>