Hi, Alex, and thank you so much for such a throroughly reply!
> The "Builtin" comes from a number of different places, e.g.:
>
> https://github.com/apple/swift/blob/master/include/swift/AST/Builtins.def
> https://github.com/apple/swift/blob/master/lib/AST/Builtins.cpp
>
> They aren't directly implemented in LLVM IR as such, but rather the parser
> replaces uses of Builtin.Word with the appropriate type via
> SILType::getBuiltinWordType and BuiltinIntegerType::getWordType.
>
> Normally these aren't accessible to Swift programs, but if you compile with
> -parse-stdlib you can see what effect it has on the generated output. Looking
> at the -emit-sil is an interesting way of seeing what is produced. (You can
> also use a GUI tool I wrote called SILInspector, which runs the commands and
> hosts them in a text field for ease of use.)
It looks I was mistaken then. Thanks for the clarification.
> The SwiftShims are a set of additional functions that allow C functions to be
> exposed as platform-independent Swift functions:
>
> https://github.com/apple/swift/tree/9354a93b1861efe14c4a72fd581c746b48334ccc/stdlib/public/SwiftShims
>
> https://github.com/apple/swift/blob/9354a93b1861efe14c4a72fd581c746b48334ccc/stdlib/public/SwiftShims/LibcShims.h
I get it. Again, I was getting only part of the picture here. I thought
LibcShims was not intended for that purpose but just "happened" to be
implemented in C more than not.
>> 2) Are you aware of any project out there that aims to minimize, or at least
>> make more consistent (...)
>
> I'm not sure what question you are asking here. If you are asking "Is there a
> desire or goal to move away from C based functions into Swift functions" then
> the answer is likely to be no; some of the functions need to be implemented
> in C because they are platform specific or use e.g. C++ like namespaces, and
> the bulk of the compiler and intrinsics are written in C++ already.
>
> Alex
I was partially mistaken. Before your clarifications above, I was wrongly
perceiving what seemed like a lot of "embedded C code" here and there, and so I
was wondering whether in the future that would be somehow taken together into a
one central C/C++ external library or runtime (e.g. into a BuiltIn-like class
or some other). But I see now there is no such lack of consistency, so my
question is not valid anymore.
Abusing your good will, let me ask you yet another question. I understand, as
you've pointed out, that certain parts of functionality shall always be
implemented in low-level language with direct access to syscalls, such as
C/C++. Are you able to suggest me a way to find all, or at least most of those
parts? I'd like to estimate what they represent - what they build and provide
on top of syscalls and libc.
Thanks again!
David
_______________________________________________
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev