Qarnot computing