====== RFC: Always available hash extension ====== * Version: 1.0 * Date: 2018-09-04 * Author: Kalle Sommer Nielsen, kalle@php.net * Status: Implemented * First Published at: http://wiki.php.net/rfc/permanent_hash_ext ===== Introduction ===== This RFC proposes to make the hash extension (`ext/hash`) always available, similar to the `date`, `spl` & `pcre` extensions. ===== Proposal ===== The hash extension provides a very rich utility with many hashing algorithms which is extremely useful in modern day applications, not only in userland code but also very much in internals. After a recent discussion on Github[1], Johannes proposed that the hash extension should be treated as special extension which cannot be disabled. ===== Backward Incompatible Changes ===== Build configurations that contain `--enable-hash` will have to be updated, as the argument will cease to exists. The `--with-mhash` argument will continue to stay. ===== Proposed PHP Version(s) ===== Target PHP version is the next master, which at the time of writing is most likely 7.4. ===== RFC Impact ===== ==== To SAPIs and Existing Extensions ==== The only impact on SAPIs, Extensions and PECL extensions is that they can now always rely on the `hash` extension to be available and utilize its API without having external dependencies for such. This naturally also means that minimal builds of PHP will slightly grow in size. ===== Unaffected PHP Functionality ===== Any already existing userland code will continue to work as before. Userland may remove calls to `extension_loaded('hash')` as they will now always return true. The hash extension does not have any external dependencies, so this will not add any more dependencies for a minimal build of PHP. ===== Proposed Voting Choices ===== Since this touches a major component in the php-src source, the voting will require a 2/3 majority to pass. ===== Vote ===== As this is a language change, a 2/3 majority is required. * Yes * No ===== Patches and Tests ===== * Patch: https://gist.github.com/KalleZ/f9e50b36db608478617868057d2b9e77 * Docs: http://svn.php.net/viewvc?view=revision&revision=346033 ===== References ===== * [1] https://github.com/php/php-src/commit/d6e81f0bfd0cb90586dd83d4fd47a4302605261a#commitcomment-29654178