Write an algorithm to reverse a string without using built-in utility functions.
Implement def reverse_string(s):, accepting a string and returning a new string with its characters in reverse order. Do not use reversed, slicing, or built-in methods that directly reverse the input. Preserve spaces, punctuation, repeated characters, and Unicode characters.
def reverse_string(s):