Introduction
As a major release, eKuiper v1.4.0 brings many exciting features into the product. We introduce `portable` plugin system to ease the development. build and deployment of plugin in addition to the native go plugin. Users can now use both go and python to compose a plugin and the system will be extended to more languages support in the future. We enable the built-in support of flexible rule pipeline by in-memory source and sink. Additionally, we extract a standalone connection layer(mqtt and edgeX now) so that the source, sink or user's plugin can share a connection instance to avoid connection overhead, which is required to connect to secure edgeX message bus.
Features
- Add portable plugin support, user can develop plugins in multiple languages
- portable plugin [intrduction](https://github.com/lf-edge/ekuiper/blob/master/docs/en_US/extension/portable/overview.md)
- go [sdk](https://github.com/lf-edge/ekuiper/blob/master/docs/en_US/extension/portable/go_sdk.md)
- python [sdk](https://github.com/lf-edge/ekuiper/blob/master/docs/en_US/extension/portable/python_sdk.md)
- plugin develop help [tool](https://github.com/lf-edge/ekuiper/blob/master/docs/en_US/extension/portable/overview.md#debugging)
- Support source/sink to share connections for mqtt or edgeX, please check this for [more info](https://github.com/lf-edge/ekuiper/blob/master/docs/en_US/rules/sources/mqtt.md#connectionselector)
- Support secured edgeX sink by shared connection configuration since edgeX Jakarta, please check this for [more info](https://github.com/lf-edge/ekuiper/blob/master/docs/en_US/edgex/edgex_rule_engine_tutorial.md#connection-reuse)
- Add memory source and sink, please check this for [more info](https://github.com/lf-edge/ekuiper/blob/master/docs/en_US/rules/rule_pipeline.md)
- KV storage implementation is now configurable. Provide redis as an alternative KV storage option in addition to default sqlite, please check the [doc](https://github.com/lf-edge/ekuiper/blob/master/docs/en_US/operation/configuration_file.md#store-configurations) for how to configure the storage.
- eKuiper configuration can be overridden via environment variables, please check the [doc](https://github.com/lf-edge/ekuiper/blob/master/docs/en_US/operation/configuration_file.md#basic-configurations) for more info.
- Support JWT RSA256 Token authentication for rest API
- Support dynamic properties for some sinks such as [mqtt sink dynamic topic](https://github.com/lf-edge/ekuiper/blob/master/docs/en_US/rules/sinks/mqtt.md#dynamic-topic), [rest sink dynamic properties](https://github.com/lf-edge/ekuiper/blob/master/docs/en_US/rules/sinks/rest.md#configure-dynamic-properties) etc. Also export the context function to support [dynamic properties](https://github.com/lf-edge/ekuiper/blob/master/docs/en_US/extension/native/sink.md#parse-dynamic-properties) so that customized plugin can also use dynamic properties.
- Retry mechanism now works for all sinks
Fixes
- Mqtt source should stop executing after errors
- Update tdengine client version to 2.2.0.5
- Fix certification authentication bug in mqtt and http
- Clean up the json description files of shipped sources, sinks and functions
- Fix some SQL syntax validation issue
- Return more message for get status when error happen
- EdgeX sink support all type when meta is not specified
Docs
- [Rule pipeline](https://github.com/lf-edge/ekuiper/blob/master/docs/en_US/rules/rule_pipeline.md)
- [Portable Plugin](https://github.com/lf-edge/ekuiper/blob/master/docs/en_US/extension/portable/overview.md)
- [Fix the typo in plugin management rest api](https://github.com/lf-edge/ekuiper/blob/master/docs/en_US/restapi/plugins.md#drop-a-plugin)
- [Add connectionSelector property for mqtt/edgex source/sink](https://github.com/lf-edge/ekuiper/blob/master/docs/en_US/rules/sources/mqtt.md#connectionselector)
- [Correct data compatibility comparison table](https://github.com/lf-edge/ekuiper/blob/master/docs/en_US/sqls/data_types.md#compatibility-of-comparison-and-calculation)
- [Use JWT RSA256 Token authentication for rest api](https://github.com/lf-edge/ekuiper/blob/master/docs/en_US/operation/configuration_file.md#authentication)
- [Add instructions on how to use share connection feature for edgeX Jakarta release](https://github.com/lf-edge/ekuiper/blob/master/docs/en_US/edgex/edgex_rule_engine_tutorial.md#connection-reuse)
Thanks
- rwadowski provides redis kv storage
- rwadowski provides initial memory source/sink type
- rwadowski provides config eKuiper by env variables