With each programming environment, a standard library is provided. This library implements most of the procedures commonly required and isolates the calling program from the platform dependent system libraries. It usually contains procedures to operate on the primitive types (integer, real, characters, text), support for common data structures (vectors, lists, trees), access to input/output facilities, access to other system services (memory allocation, creating new processes) and access to run time support (garbage collection, performance statistics).
A well defined and standardized language without a corresponding standard library will not achieve the portability goals since any useful program must interact with the underlying operating system, at least to perform input/output operations. The difficulty lies in coming up with a complete and easy to use library running efficiently on a large number of platforms. Indeed, when many different platforms are supported, a least common denominator must often be selected.