Hey Community, I’d like to initiate a discussion about the next release of MiNiFi C++. The last release was in October, and I believe it is time to officially propose our *first stable 1.0.0 release*.
I would be happy to take on RM duties for this release. This is a major milestone for the project. The most significant highlight is the introduction of a *stable API with a full backward compatibility guarantee*. This API (written in C) allows developers to write processors and controller services in C/C++, Rust, or any FFI-capable language with guaranteed ABI compatibility. *Notable features and improvements:* - *Stable C API:* A single C header API that allows any FFI-capable language to interoperate with MiNiFi C++ with minimal overhead. Any extension built using the API will load with newer MiNiFi builds without needing to be rebuilt - *C++ bindings based on Stable API: *GCP, Kafka, Llamacpp extensions (7 processors and 1 controller service) have already been ported to use the stable API - *Rust bindings based on Stable API: *We've also implemented the stable API in Rust and reimagined several standard processors to showcase it. There are already new Rust-based extensions in PRs waiting to be merged - *Revamped Site-to-Site:* Added Zlib compression, optional input ports, output-port fixes, and robust error handling. - *Expanded Cloud Auth & Support:* Introduced Azure Credential Configuration Strategy (Managed/Workload/Default), GCP Application Default Credentials, and HTTP proxy controller service support for AWS, Azure, and GCP - *Python Enhancements:* Python NiFi-API processors can now run in parallel via @concurrentTasks - *Safer Configuration Handling:* Runtime configuration files are no longer modified directly; overrides now live safely in *.properties.d/ - *RunLlamaCppInference* now accepts images alongside text prompts Changes and Improvements - Record Reader/Writer support has been added to MQTT processors - AWS S3 now uses the AWS CRT S3 client for improved performance - RocksDB small-DB memory optimization is now enabled by default - C2 assets now stream directly to disk with a configurable HTTP timeout - Python Expression Language (EL) improvements - Separated state managers for schedule and trigger threads to avoid race conditions in stateful processors - Fixed deadlocks and crashes occurring during concurrent C2 flow updates and start/stop commands Breaking Changes - SSL contexts can no longer be loaded from the flow config; users must use an SSL controller service - Azure Managed Identity Credentials property has been replaced by the Credential Configuration Strategy - AWS S3 multipart upload behavior may differ slightly due to the switch to the CRT client Removed - Unused and unmaintened OpenCV extension (CaptureRTSPFrame and MotionDetector) - ExecutePythonProcessor (superseded by NiFi-API Python processors) - Legacy bootstrap.sh and per-distro shell scripts (use Python bootstrap or Conan instead). Do you agree it is time for our 1.0.0 release? Are there any blockers or open PRs that we should definitely include in this release? Thanks, Martin Zink [email protected]
