compile returns a string. In the past we have been bitten because we wanted to extend the result type of a function, but were unable to do so because changing str to e.g. {"compiled_program": ..., "metadata": ...} would have been a breaking change. We could avoid that headache sooner rather than later.