What about using variable arguments instead of PHALCON_DO_SOMETHING_PARAMS_[1-10] macros and functions?
What about passing null for "return_value" to PHALCON_DO_SOMETHING macros/functions to get rid of PHALCON_DO_SOMETHING_NORETURN?
Examples:
Definition: PHALCON_CALL_FUNC(return_value, func_name, ...)
PHALCON_CALL_FUNC(upper_case_string, "strtoupper", string); // return value and accepts variable arguments
PHALCON_CALL_FUNC(null, "session_start"); // return no value