That seems like an ok approach. Using scheme_register_process_global()
to record the type registration might be better, especially if you're
concerned about conflicts.
i dont think so. there still can be race, because type_names is not "protected' by any semaphore.