C++20 Modules, .NET Assemblies, D modules, Ada packages, and plenty of other othes.
Also, Turbo Pascal did indeed allow for circular dependencies between units, as long as the related uses statements were written in the implementation section of the unit, and there were no public dependencies.
Thanks to bitsavers, Turbo Pascal 5 manual, page 97,
http://bitsavers.informatik.uni-stuttgart.de/pdf/borland/tur...