Commit Graph

3048 Commits

Author SHA1 Message Date
Bogdan Mukvich 926af575f9 Native: calculate and publish bundle artifacts' checksums
* Fix native publication creation

^Related to KTI-1479
2023-12-18 11:59:16 +00:00
Vladimir Sukharev df2dcccbf7 [Tests] Removed moved tests from old testing
^KT-64256 Fixed
2023-12-18 11:15:15 +00:00
Vladimir Sukharev a5f3d5b737 [K/N][Tests] Move some codegen tests to new infra: annotations..coroutines
^KT-61259
2023-12-18 11:15:15 +00:00
Anastasiia Spaseeva 212b8487ee Native: calculate and publish bundle artifacts' checksums
^Related to KTI-1479
2023-12-17 20:46:46 +00:00
Troels Bjerre Lund 6161f44d91 Remove needsProfileLibrary argument
Second phase of removing LLVM coverage. This had to wait until after the
bootstrap advance.


Co-authored-by: Troels Lund <troels@google.com>


Merge-request: KOTLIN-MR-838
Merged-by: Alexander Shabalin <alexander.shabalin@jetbrains.com>
2023-12-15 16:44:12 +00:00
Pavel Punegov fc1d7df0bc [K/N][build] Simplify stdlib build
Build stdlib with a single task that also sets all supported targets
to the manifest file.
Remove manifest merging as it is not needed anymore.
2023-12-14 11:33:20 +00:00
Pavel Punegov 2d2714c8de [K/N] Move runtime bitcode files out of stdlib
Native bitcode files were moved out of the stdlib to the default
location of bitcode files in the dist.
Now it is possible to build stdlib separately and once as a klib
without bitcode files inside.
2023-12-14 11:33:20 +00:00
Dmitriy Novozhilov 28f0f1ea88 [FIR2IR] Properly set isAssignable flag for parameters of tailrec functions
^KT-63973 Fixed
2023-12-14 09:58:03 +00:00
Svyatoslav Scherbina 2cdf8cd7b1 Native: support Objective-C instancetype in more cases in cinterop
Objective-C has a special type, "instancetype". Generally, it is a type
that matches the method receiver type. So, if `Foo.foo` method returns
`instancetype`, then `Foo.foo()` would be of type `Foo`, while
`Bar.foo()` would be of type `Bar` (where `Bar` is a subclass of `Foo`).

Surprisingly, `instancetype` can be used not only as a return type, but
also somewhere inside a return type. cinterop wasn't ready for this.

This commit expands implementation of `instancetype` in cinterop to
cover more cases.

^KT-59597 Fixed
2023-12-14 08:57:29 +00:00
Ilya Gorbunov 35aa17e1d0 Pack K/N stdlib sources into single zip
With the directory structure similar to one of a multiplatform library,
where each source set sources are placed into the directory
named after this source set.

Do not use legacy projects for building relative paths
2023-12-13 15:40:25 +00:00
Ilya Gorbunov d2aae67e03 Replace kotlin-test project dependencies in the project
Use dependency helper function that chooses whether to take them
from the bootstrap repository or from a configuration of kotlin-test

KT-61969
2023-12-13 15:40:25 +00:00
Pavel Punegov 7398f9e4e0 [K/N][perf] Return doLast
This fixes failures in performance builds caused by the KT-MR-13291 "Update Gradle to 8.4"
doLast { } block here is necessary as soon as it should be run during the task execution, while without it is a configuration time. Performance builds invoke Gradle several times with different tasks and parameters. The change in the mentioned MR made one of the invocations remove the nativeReports.json file produced earlier.

Merge-request: KT-MR-13496
Merged-by: Pavel Punegov <Pavel.Punegov@jetbrains.com>
2023-12-13 13:35:53 +00:00
Troels Bjerre Lund f2cb0f1407 [K/N] Fix gep for local array header
This corrects the type given to GEP2 when initializing a stacklocal
array. This issue only cause problems when bitcode gets written before
any of the optimization passes, in which case it will fail on LLVM
validation when reading the bitcode back in on a subsequent pass.
2023-12-12 11:06:26 +00:00
Sergey Bogolepov ce4eecebf4 KT-63264: Introduce a new ExportedBridge annotation
Swift Export Frontend generates a Kotlin file/library that contains a
set of simple bridging functions that connect Swift wrappers to their
Kotlin counterparts.
There are certain requirements for these wrappers:
1. They should not be DCEd when compiling a binary library.
In other words, these functions are roots.
2. They should provide a stable simple binary name.
3. Their signatures should be much simpler and restricted comparing to
other Kotlin functions.

Altogether, these requirements should be covered by introducing the new
ExportedBridge annotation.

Note: Frontend checks of ExportedBridge functions are not implemented
yet.
2023-12-12 07:03:25 +00:00
Sergey Bogolepov 8be547b834 KT-63264: Add a compiler flag that disables C interface generation
We can reuse existing static/dynamic library output kinds for
the Swift Export. The only change we have to make is to make generation
of C interface opt-out by moving it under the binary option.
As a side effect, it allows evolving C Export in the future by
introducing new option variants.
2023-12-12 07:03:25 +00:00
Aleksei.Glushko 569d37028f [K/N] Mark barriers implementation
Merge-request: KT-MR-13409
Merged-by: Alexey Glushko <aleksei.glushko@jetbrains.com>
2023-12-08 17:52:14 +00:00
Troels Bjerre Lund f1b6c2df45 Native: add missing stubs for objc for non-objc targets
Kotlin code for Objective-C interop is always included to stdlib.
It depends on some C++ code. The latter is compiled conditionally -
only for targets supporting Objective-C interop. That might cause
undefined symbols problems when DCE is not enabled.

To deal with it, we usually have trivial stubs in C++ code, used
for targets not supporting Objective-C interop.

This commit adds a couple of such missing stubs.
2023-12-08 11:43:45 +00:00
Martin Kretzschmar 12905858fc [debug][bindings][python] Let lldb narrow list of symbols
Marshalling the full list of symbols to Python and filtering that was
slow for binaries with large numbers of symbols.

^KT-63749
2023-12-08 09:36:41 +00:00
Alexander.Likhachev 28dad289b3 [Build] Remove attributes setup for the dependency scope configurations
This behaviour makes no sense and is deprecated: https://docs.gradle.org/8.4/userguide/upgrading_version_8.html#deprecated_configuration_usage
^KTI-1473 In Progress
2023-12-07 18:31:07 +00:00
Alexander.Likhachev 5e51826050 [Build, K/N] Remove registration and usages of convention.plugins.platformInfo
The entire concept of conventions is deprecated in Gradle. Here it was making the build logic implicit and hard for understanding
^KTI-1473 In Progress
2023-12-07 18:31:07 +00:00
Alexander.Likhachev ad677cb573 [Build] Use dependencies.create instead of dependencies.module
It seems there was no actual need for a call to `dependencies.module`.Also, it's going to be deprecated in Gradle 8.3
^KTI-1473 In Progress
2023-12-07 18:31:06 +00:00
Alexander.Likhachev a19bd2ed2e [Build] Migrate most of the build logic from Project.buildDir usage
It's going to be deprecated in Gradle 8.3

There's currently no way to pass a `org.gradle.api.provider.Provider` to the JavaExec.systemProperty or Test.systemProperty. There's a workaround using `org.gradle.process.CommandLineArgumentProvider`, but I intentionally don't rework these calls as Gradle is going to allow passing providers to configure system properties: https://github.com/gradle/gradle/issues/12247#issuecomment-1568427242
^KTI-1473 In Progress
2023-12-07 18:31:06 +00:00
Svyatoslav Scherbina dd55ca6ed0 Native: fix Swift compilation in tests for tvos_simulator_arm64
e5ae32c removed bitcode embedding from tests. In particular, that commit
disabled bitcode embedding when compiling Swift code (e.g. in ObjCExport
tests).

It seems that bitcode embedding also enables adhoc codesigning in the
linker.
The linker doesn't seem to do adhoc codesigning by default for tvOS
arm64 simulator target, and without a signature the binaries can't run
on the simulator.

So disabling bitcode embedding also disabled adhoc codesigning and made
the tests fail on that target.

Fix this by explicitly passing `-Xlinker -adhoc_codesign` when compiling
Swift code in tests.
2023-12-07 15:10:04 +00:00
Timofey Solonin a03f0ef4ee Generate CMakeLists for convenient DevX in llvmDebugInfoC
^KT-63598
2023-12-06 18:56:28 +00:00
Troels Bjerre Lund 4f77434ea5 [K/N] Remove LLVM coverage
The -Xcoverage feature has not worked and has been disabled for a while.
This fix removes it, and all of its uses.


Co-authored-by: Troels Lund <troels@google.com>


Merge-request: KOTLIN-MR-821
Merged-by: Alexander Shabalin <alexander.shabalin@jetbrains.com>
2023-12-06 14:07:16 +00:00
Troels Bjerre Lund b059754f64 [K/N] LLVM: Transition to opaque pointers 2023-12-05 15:26:27 +00:00
Troels Bjerre Lund c1f72de6e5 [K/N] LLVM: Add missing opaque pointer API
LLVMConstGEP2 and LLVMConstInBoundsGEP2 were forward declared in
LLVM-11, but not implemented until LLVM-14. This patch adds these along
with the missing LLVMAddAlias2. All three implementations are copied
from llvm branch release/14.x
2023-12-05 15:26:27 +00:00
Dmitriy Novozhilov 159bc1b435 [IR] Introduce API to register generated IR declaration to be present in metatada
KT-63881
2023-12-05 10:21:38 +02:00
Dmitriy Novozhilov 1cdc8361d6 [IR] Rename IrAnnotationsFromPluginRegistrar to IrGeneratedDeclarationsRegistrar
In further commits, this service will be used not only for registering
  annotations, but newly generated IR declarations too
2023-12-05 10:21:27 +02:00
Sebastian Sellmair 0713866c1e [K/N] Modularise :kotlin-native:native.backend to extract objc header generation (2/2)
^KT-63905 Fixed
2023-12-04 18:52:08 +00:00
Sebastian Sellmair ae9f3d66c2 [K/N] Modularise :kotlin-native:native.backend to extract objc header generation (1/2)
^KT-63905
2023-12-04 18:52:08 +00:00
Timofey Solonin 04dec2769b Step through the <compiler-generated> functions via a stop hook in konan_lldb.py
^KT-63598
2023-12-04 10:20:54 +00:00
Vladimir Sukharev c5248fc5f4 [K/N] Migrate some cinterop tests to new test infra 2023-12-04 08:43:28 +00:00
Timofey Solonin 22b2c1a587 Move konan_lldb.py with from the KMM plugin
This version of the konan_lldb.py has scripted breakpoints to avoid
stepping into <compiler-generated> routines.

^KT-63598
2023-12-04 07:33:21 +00:00
Alexander Shabalin 340103098f [K/N][tests] Migrate entry point runtime tests to new testing infra ^KT-61259 2023-12-01 12:07:25 +00:00
Aleksei.Glushko 7eccfe969c [K/N] Runtime reference accessors
Encapsulate reference-access-related logic,
    such as GC barriers and tsan workarounds
    inside (Direct)RefAccessor classes.
2023-11-30 11:04:21 +00:00
Aleksei.Glushko 24becdad7e [K/N] Backport std::atomic_ref from C++20 2023-11-30 11:04:21 +00:00
Alexander Shabalin 6ca8f546fe [K/N][tests] Migrate console runtime tests to new testing infra ^KT-61259 2023-11-29 16:22:28 +00:00
Svyatoslav Scherbina d15ee71b6c Native: get rid of __NSCFBoolean references in ObjCExport
ObjCExport accessed `__NSCFBoolean` using
`objc_getClass("__NSCFBoolean")`. This class is a private API.
Remove this private API usage by getting the same class from
`[[NSNumber numberWithBool:YES] class]` instead.

Also remove `__NSCFBoolean` from the related error messages.

`__NSCFBoolean` didn't cause Kotlin-compiled apps to be rejected by
Apple, but this commit reduces the risk that this might happen in the
future, and addresses related user concerns.

^KT-62091
2023-11-28 17:57:47 +00:00
Svyatoslav Scherbina 707a650de1 Native: improve tests for __NSCFBoolean RTTI conversion
- ObjCExport tests for numbers RTTI conversions didn't really check
  RTTI, because of a compiler optimization. Fix this by converting to
  Any.
- Also add more tests that specifically check that bool `NSNumber` get
  dynamically converted to `kotlin.Boolean` box. Those tests can't be
  affected by possible future compiler optimizations.
2023-11-28 17:57:47 +00:00
Igor Chevdar 1805f322f8 [K/N] Do not use LazyIr for per-file caches
#KT-63789 Fixed
2023-11-28 09:22:36 +00:00
Igor Chevdar b264cf2119 [K/N] Reformat 2023-11-28 09:22:36 +00:00
Sebastian Sellmair 977d1c0e41 [K/N] Implement objc export header test: functionWithErrorType 2023-11-27 16:39:15 +00:00
Sebastian Sellmair 04df33eec1 [K/N] Implement ObjCExportNamerTest and ObjCExportMapperTest
... to provide simple and quick validation
for their corresponding entities.

Those tests can also act as convenient entry points
for debugging.
2023-11-27 16:39:15 +00:00
Dmitriy Novozhilov e38b25c278 [FIR2IR] Make convertAndActualize method the only entrypoint to fir2ir
Fir2Ir conversion consists of multiple steps with complex logic (like
  conversion of each module, actualization, plugins application, constant
  evaluation), and to ensure that they all are executed correctly it's
  convenient to have the single entry point for all this machinery
2023-11-27 10:17:54 +00:00
Sebastian Sellmair ddd97e84b9 [K/N] Implement lightweight tests for ObjC header generation 2023-11-27 09:08:54 +00:00
Ilya Gorbunov 88bbe8d92d [stdlib] Enable explicit API mode 2023-11-24 01:45:45 +00:00
Pavel Punegov adf4f823ae [K/N][perf] Fix the fallback framework path in swift performance
After bootstrap update and the change that added /usr subdir to
absoluteTargetToolchain


Merge-request: KT-MR-13212
Merged-by: Pavel Punegov <Pavel.Punegov@jetbrains.com>
2023-11-23 18:37:18 +00:00
Svyatoslav Scherbina e5ae32c37a Native: remove bitcode embedding from tests
Xcode 14 deprecates bitcode embedding, and Xcode 15 removes support
for it. Therefore, testing bitcode embedding in Kotlin doesn't make
much sense.

This commit removes most of test code that enables bitcode.

^KT-61875
2023-11-23 18:36:59 +00:00
Sebastian Sellmair 59c4c83ed5 [K/N] Samples: Update samples default Kotlin version to 1.9.20 2023-11-23 13:19:04 +00:00