i suspect that's because the Pascal language took the novel approach of providing neither guaranteed garbage collection nor a portable operator to free memory without it. there were several platform-specific methods, including stack like heap allocation (which i think was used by one compiler). `dispose' ended up in the standard (but did not preclude implementing garbage collection).