Portable stdlib

Hey,

I'm currently looking at building a portable version of the standard
library (for targeting microcontrollers, kernel dev, etc).

The easiest way to cross compile Swift at the moment (that I can find) is
to get swiftc to generate LLVM IR (-emit-ir), and use clang to build and
cross compile. This obviously leaves the problem that there won't be a
standard lib to link against on the target.

I figured that the best way to accomplish this would probably be to
implement whatever stubs are necessary for the target (e.g. all the libc
calls).

I am struggling to find the best way to build the standard library though.
I've got a copy of the stdlib files, have run gyb over all of the
templates, and am attempting to get swiftc to compile everything and output
a giant IR file.

I was wondering if there was an easier way to go about building a custom
libswiftcore?

It would obviously be great to be able to use Swift in this way without an
OS, as it would open up a lot of opportunities for use of the language
(embedded development, etc).

Thanks,

Andy

Hey,

I'm currently looking at building a portable version of the standard library (for targeting microcontrollers, kernel dev, etc).

I’m a bit confused about your terminology. By “portable” do you mean no dependencies on libc or POSIX?

The easiest way to cross compile Swift at the moment (that I can find) is to get swiftc to generate LLVM IR (-emit-ir), and use clang to build and cross compile. This obviously leaves the problem that there won't be a standard lib to link against on the target.

There’s a PR open to add cross-compilation support to the build system: Enable cross-compiling by froody · Pull Request #1398 · apple/swift · GitHub It would be great if you or someone else would dust it off and get it merged in.

I figured that the best way to accomplish this would probably be to implement whatever stubs are necessary for the target (e.g. all the libc calls).

I am struggling to find the best way to build the standard library though. I've got a copy of the stdlib files, have run gyb over all of the templates, and am attempting to get swiftc to compile everything and output a giant IR file.

I was wondering if there was an easier way to go about building a custom libswiftcore?

It would obviously be great to be able to use Swift in this way without an OS, as it would open up a lot of opportunities for use of the language (embedded development, etc).

Slava

···

On Aug 14, 2017, at 9:44 AM, Andy Best via swift-dev <swift-dev@swift.org> wrote:

Thanks,

Andy
_______________________________________________
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev

Yes, exactly. Obviously you'd have to provide the necessary functionality
for your own platform (e.g. malloc, free, putc, etc.)

···

On Mon, 14 Aug 2017 at 6:54 pm, Slava Pestov <spestov@apple.com> wrote:

On Aug 14, 2017, at 9:44 AM, Andy Best via swift-dev <swift-dev@swift.org> > wrote:

Hey,

I'm currently looking at building a portable version of the standard
library (for targeting microcontrollers, kernel dev, etc).

I’m a bit confused about your terminology. By “portable” do you mean no
dependencies on libc or POSIX?

The easiest way to cross compile Swift at the moment (that I can find) is
to get swiftc to generate LLVM IR (-emit-ir), and use clang to build and
cross compile. This obviously leaves the problem that there won't be a
standard lib to link against on the target.

There’s a PR open to add cross-compilation support to the build system:
Enable cross-compiling by froody · Pull Request #1398 · apple/swift · GitHub It would be great if you or
someone else would dust it off and get it merged in.

I figured that the best way to accomplish this would probably be to
implement whatever stubs are necessary for the target (e.g. all the libc
calls).

I am struggling to find the best way to build the standard library though.
I've got a copy of the stdlib files, have run gyb over all of the
templates, and am attempting to get swiftc to compile everything and output
a giant IR file.

I was wondering if there was an easier way to go about building a custom
libswiftcore?

It would obviously be great to be able to use Swift in this way without an
OS, as it would open up a lot of opportunities for use of the language
(embedded development, etc).

Slava

Thanks,

Andy
_______________________________________________
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev