diff --git a/core/io.carbon b/core/io.carbon index 5cd54ed91ebf..8a916d06b029 100644 --- a/core/io.carbon +++ b/core/io.carbon @@ -13,6 +13,16 @@ import library "prelude"; // TODO: Consider rewriting using native support once library support exists. fn Print(x: i32) = "print.int"; fn PrintChar(x: char) -> i32 = "print.char"; + +fn PrintStr(msg: str) { + let size: i64 = msg.Size() as i64; + var i: i64 = 0; + while (i < size) { + PrintChar(msg[i]); + ++i; + } +} + // TODO: Return an `Optional(char)` instead of `i32`. fn ReadChar() -> i32 = "read.char"; diff --git a/examples/BUILD b/examples/BUILD index 7f0cc800ea63..17180321f9ba 100644 --- a/examples/BUILD +++ b/examples/BUILD @@ -8,3 +8,8 @@ carbon_binary( name = "sieve", srcs = ["sieve.carbon"], ) + +carbon_binary( + name = "hello_world", + srcs = ["hello_world.carbon"], +) diff --git a/examples/hello_world.carbon b/examples/hello_world.carbon new file mode 100644 index 000000000000..51160cc4cf8f --- /dev/null +++ b/examples/hello_world.carbon @@ -0,0 +1,9 @@ +// Part of the Carbon Language project, under the Apache License v2.0 with LLVM +// Exceptions. See /LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +import Core library "io"; + +fn Run() { + Core.PrintStr("Hello world!\n"); +}