Pufferfish2
Pufferfish2 is an adaptive, cache-hard password hashing function that attempts to improve upon bcrypt. Pufferfish2 uses a modified version of the Blowfish key setup, and improves some of the drawbacks of bcrypt's original Eksblowfish algorithm.

Note: Pufferfish, like bcrypt, is not a key derivation function - it is a password hashing function. The difference is that bcrypt and pufferfish have no capability to be asked to generate an n-bit (e.g. 256-bit) key (suitable for example for encryption). It is meant for password hashing. All key-derivation functions can be used to hash passwords, but not all password hashing functions can be used to generate keys. PBKDF2, scrypt, and Argon2 are all key derivation functions that are repurposed as password hashing functions.

Pufferfish2 is based on the Password Hashing Competition candidate Pufferfish, which was selected as a finalist, but was not selected as the winner. Pufferfish2 includes several bug fixes and general improvements over Pufferfish, as well as incorporates feedback received on Pufferfish during the PHC review and selection process.

Pufferfish is immune to garbage collector attacks.

Features 

 Supports passwords of any length (vs. bcrypt's max of 72 characters), any encoding, any character (0x00 - 0xff).
 Dynamic s-boxes scale to fill L2 or L3 cache (and well beyond), forcing GPU attacker to use global memory.
 Inherits bcrypt's cache hardness via small-but-frequent pseudo-random reads, but performs many more reads than bcrypt for the same target runtimes. Pufferfish2 also adds several larger, less-frequent memory read-hash-write operations.
 Supports up to 263 iterations.
 Upgrades Blowfish to 64-bit integers, resulting in improved performance vs. bcrypt for 64-bit defenders, and decreased performance for 32-bit attackers (e.g., GPUs.)

Further reading

 Password Hashing Competition: Pufferfish submission paper
 Examination of Pufferfish's resistance to (weak) garbage collector attacks

References