Leaky Abstraction
Leaky abstraction
An interface or other abstraction which inadvertently exposes implemantion details.
As systems become more complex, software developers must rely upon more abstractions. Each abstraction tries to hide complexity, letting a developer write software that "handles" the many variations of modern computing.
However in reality abstractions are imperfect, and to write reliable and/or performant code developers must learn the details underlying the abstraction.