Commit Graph

366 Commits

Author SHA1 Message Date
Wojtek Czekalski
1ed9da86db Fix precision of float to string to max significant decimals
The default precision which is used for converting floating point numbers to strings leads to many confusing results. If we take a Float32 1.00000000 value and 1.00000012 of the same type, these two, obviously are not equal. However, if we log them, we are displayed the same value. So a much more helpful display using 9 decimal digits is thus: [1.00000000 != 1.00000012] showing that the two values are in fact different.
(example taken from: http://www.boost.org/doc/libs/1_59_0/libs/test/doc/html/boost_test/test_output/log_floating_points.html)

I'm by no means a floating point number expert, however having investigated this issue I found numerous sources saying that "magic" numbers 9 and 17 for 32 and 64 bit values respectively are the correct format. Numbers 9 and 17 represent the maximum number of decimal digits that round trips. This means that number 0.100000000000000005 and 0.1000000000000000 are the same as their floating-point representations are concerned.
2015-12-14 13:48:41 +01:00
Dmitri Gribenko
83751888c7 Start porting Swift to Linux on aarch64 (arm64)
Hello world works, a non-trivial part of the testsuite passes.
2015-12-13 17:05:42 -07:00
William Dillon
4bf81e09da Build working on ARMv7l 2015-12-12 22:06:13 -08:00
Chris Willmore
fb6f4be77f Merge pull request #227 from LeoShimonaka/master
Fix typos in docs / comments / method name
2015-12-04 22:44:18 -08:00
Leo Shimonaka
70e66973ee Fix spelling error in documentation / comments / method name 2015-12-05 00:28:08 -05:00
Landon Fuller
d206dcba34 Define malloc_size() support for FreeBSD. 2015-12-04 12:26:06 -07:00
Landon Fuller
30080ae2c4 FreeBSD hides getline()'s prototype by default.
The alternative to _WITH_GETLINE would be to define _POSIX_C_SOURCE
>= 200809.
2015-12-04 12:25:47 -07:00
Landon Fuller
23fee41713 Add missing va_list include. 2015-12-04 12:25:30 -07:00
Joe Groff
5e5cdc6be3 Runtime: Use 'once' instead of static local variable initialization.
The C++ ABI for static locals is a bit heavy compared to dispatch_once; doing this saves more than 1KB in runtime code size. Dispatch_once/call_once is also more likely to be hot because it's also used by Swift and ObjC code.

Alas, llvm::get_execution_seed() from llvm/ADT/Hashing.h still inflicts one static local initialization on us we can't override (without forking Hashing.h, anyway).
2015-11-30 12:08:12 -08:00
Andrew Trick
c1e45d899e Add a shim: swift_stdlib_objcDebugDescription, NFC.
This allows removal of the DebugDescription protocol which is invalid
because no classes actually conform to it. The problem is that we need
to send a debugDescription message to an NSObject without loading
Foundation. This is exactly what shims are for. A very simple shim
solves the problem.
2015-11-18 18:40:45 -08:00
Joe Groff
9d366f78b6 Build libswiftStdlibStubs.a with the same warnings about global ctors/dtors as the runtime.
We don't want unnecessary static constructors or destructors to leak into the stdlib or runtime. Add -Wexit-time-destructors to both targets too.
2015-11-13 19:15:17 -08:00
Joe Groff
a230ab2bfb Move GlobalObjects.cpp to SwiftStubs.
It holds the empty array object used by the array implementation, and isn't needed by the core runtime.
2015-11-13 18:18:23 -08:00
Joe Groff
c6b6d346bd Move the SwiftNativeNSXXXBase classes and stubs to SwiftStubs.
Move the ObjC internal declarations to a public runtime header so they can be shared, and rename _swift_deallocClassInstance to the more descriptive name swift_rootObjCDealloc (and make it only available with ObjC interop).
2015-11-13 08:37:12 -08:00
Joe Groff
87325891a3 Move FoundationHelpers.mm to SwiftStubs. 2015-11-13 08:37:12 -08:00
Joe Groff
7658ec9783 Move Availability.mm to SwiftStubs.
The functionality is exported as part of the standard library, not the core runtime.
2015-11-13 08:37:12 -08:00
Joe Groff
69a206229d Runtime: Start splitting out stubs only needed by the standard library.
Set up a separate libSwiftStubs.a archive for C++ stub functionality that's needed by the standard library but not part of the core runtime interface. Seed it with the Stubs.cpp and LibcShims.cpp files, which consist only of stubs, though a few stubs are still strewn across the runtime code base.
2015-11-11 17:28:57 -08:00