I used this one on 32-bit EC2 instance types to save memory back in 2011.
With halfword emulator I was able to pack twice more Erlang processes and thus concurrent sockets per EC2 instance.
Also it was useful for Erlang software (like older versions of ejabberd) which used Erlang character lists instead of binaries for strings. On 64-bit BEAM each character was expanded into 16 bytes (8 bytes for UTF codepoint + 8 byte for the pointer to the next character), but on 32-bit emulator it was "only" 8 bytes. All these while processing already verbose XML used in XMPP stanzas.
Much much later ejabberd and MongooseIM where modified to use binaries with UTF8 strings, where each Latin character was represented by a single byte.
But later AWS advised not to use 32-bit instance types and deprecated them.
With halfword emulator I was able to pack twice more Erlang processes and thus concurrent sockets per EC2 instance.
Also it was useful for Erlang software (like older versions of ejabberd) which used Erlang character lists instead of binaries for strings. On 64-bit BEAM each character was expanded into 16 bytes (8 bytes for UTF codepoint + 8 byte for the pointer to the next character), but on 32-bit emulator it was "only" 8 bytes. All these while processing already verbose XML used in XMPP stanzas.
Much much later ejabberd and MongooseIM where modified to use binaries with UTF8 strings, where each Latin character was represented by a single byte.
But later AWS advised not to use 32-bit instance types and deprecated them.