We introduce a Julia package for nonlinear optimization that guarantees feasibility with respect to the imposed primal equality and inequality constraints at each step. The code is based on the theory of optimization on Riemannian manifolds and takes advantage of Julia's ability to perform fast numerical linear algebra and automatic differentiation (including mixed-mode automatic differentiation for Hessian-vector products).

Nonlinear optimization algorithms that only take feasible steps are sometimes desirable. For example, objective functions may not be defined outside of the domain determined by the constraints. Feasible steps also eliminate the need for specially constructed merit functions. Using theory established for optimization on Riemannian manifolds, we have developed a general high-performance numerical code for feasible sequential quadratic programming with smooth nonlinear equality and/or inequality constraints. Each step of the algorithm is dominated by an O(Nm^2)-flop factorization, where N is the number of variables and m is the number of constraints. Subroutines for retractions and fast truncated Newton steps that exploit automatic differentiation and Krylov subspace methods will be discussed.