Language-based Techniques for Practical and Trustworthy Secure Multi-party Computations