Hello World in Crystal

Published on 28 February 2019 (Updated: 28 February 2019)

Hello World in Crystal

In this article, we’ll cover Hello World in Crystal.

How to Implement the Solution

With the background out of the way, let’s implement Hello World in Crystal:

puts "Hello, World!"

If we think back, we might remember that this syntax is exactly the same in Ruby. Of course, this should come as no surprise as Ruby’s syntax was a major influence on Crystal.

Digging through the API reveals that there are four definitions of puts:

def puts(*objects : _) : Nil
def puts : Nil
def puts(obj) : Nil
def puts(string : String) : Nil

In our case, we’re using option four which simply writes a string to standard output.

Now, puts is pretty interesting because it automatically appends a new line unless a new line already exists. Personally, that’s the first time I’ve heard of a library call doing that kind of string formatting for the user. So, my question becomes: what happens if the string ends with multiple new lines?

Based on the source code:

def puts(string : String) : Nil
self << string
puts unless string.ends_with?('\n')

The puts library appears to only remove the last new line. After running it, I can confirm that’s all this function does. Now, that’s some bizarre behavior:

puts 'Hello, World!' # Writes 'Hello, World!\n'
puts 'Hello, World!\n' # Writes 'Hello, World!\n'
puts 'Hello, World!\n\n' # Writes 'Hello, World!\n\n'

Honestly, I find this a little buggy. If, by default, this function adds a new line, then I would instinctively add a new line to the string (see line 2 above) to create extra space.

Of course, that doesn’t work. I suspect that Crystal style would prefer the following:

puts 'Hello, World!'

Or, something along those lines. At any rate, I’ve gone a bit too far down a rabbit hole. Let’s learn how to run our solution.1

How to Run the Solution

If we want to run our solution, perhaps the easiest thing to do is to copy our solution into the online Crystal editor. After that, we can hit run to see the output.

Alternatively, we can try to install the compiler on our system. However, I won’t bother going into that because I’m using a Windows PC which doesn’t appear to be supported.1


  1. J. Grifski, “Hello World in Crystal,” The Renegade Coder, 26-Apr-2018. [Online]. Available: https://therenegadecoder.com/code/hello-world-in-crystal/. [Accessed: 28-Feb-2019].  2