use advanced compilation flags, add ^:export tags to externally-called functions so names are preserved