Skip to content

Commit 2e099f9

Browse files
authored
chore: add @internalapi to binary compatibility checks; introduce new PR check to verify no API-breaking changes (#1030)
1 parent b235044 commit 2e099f9

File tree

20 files changed

+2593
-2
lines changed

20 files changed

+2593
-2
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: API compatibility verification
2+
3+
on:
4+
pull_request:
5+
types: [ opened, synchronize, reopened, labeled, unlabeled ]
6+
branches: [ main ]
7+
8+
jobs:
9+
api-compat-verification:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@v2
13+
- name: Check for API compatibility
14+
if: ${{ !contains(github.event.pull_request.labels.*.name, 'acknowledge-api-break') }}
15+
run: |
16+
git fetch origin ${{ github.base_ref }} --depth 1 && \
17+
git diff remotes/origin/${{ github.base_ref }} --numstat "*.api" | awk '
18+
BEGIN { s = 0 }
19+
20+
# git diff numstat shows lines deleted in field 2, hence sum up field 2 across all items
21+
{ s += $2 }
22+
23+
# exit with the number of lines deleted as the result code so that `if failure()` works below
24+
END { exit s }
25+
'
26+
- name: Error message
27+
if: ${{ failure() }}
28+
run: |
29+
echo "::error ::This change modifies the public API in a way that may be backwards-incompatible. Carefully review this pull request and either:"
30+
echo "::error ::* Revert the changes which caused the API incompatibility –or–"
31+
echo "::error ::* Add the 'acknowledge-api-break' label to this PR (in rare cases warranting an API breakage)"
32+
exit 1

build.gradle.kts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,6 @@ configureLinting(lintPaths)
116116

117117
// Binary compatibility
118118
apiValidation {
119-
nonPublicMarkers.add("aws.smithy.kotlin.runtime.InternalApi")
120-
121119
ignoredProjects.addAll(
122120
setOf(
123121
"dokka-smithy",

runtime/auth/aws-signing-common/api/aws-signing-common.api

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,21 @@
1+
public final class aws/smithy/kotlin/runtime/auth/awssigning/AwsChunkedByteReadChannel : aws/smithy/kotlin/runtime/io/SdkByteReadChannel {
2+
public fun <init> (Laws/smithy/kotlin/runtime/io/SdkByteReadChannel;Laws/smithy/kotlin/runtime/auth/awssigning/AwsSigner;Laws/smithy/kotlin/runtime/auth/awssigning/AwsSigningConfig;[BLaws/smithy/kotlin/runtime/http/DeferredHeaders;)V
3+
public synthetic fun <init> (Laws/smithy/kotlin/runtime/io/SdkByteReadChannel;Laws/smithy/kotlin/runtime/auth/awssigning/AwsSigner;Laws/smithy/kotlin/runtime/auth/awssigning/AwsSigningConfig;[BLaws/smithy/kotlin/runtime/http/DeferredHeaders;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
4+
public fun cancel (Ljava/lang/Throwable;)Z
5+
public fun getAvailableForRead ()I
6+
public fun getClosedCause ()Ljava/lang/Throwable;
7+
public fun isClosedForRead ()Z
8+
public fun isClosedForWrite ()Z
9+
public fun read (Laws/smithy/kotlin/runtime/io/SdkBuffer;JLkotlin/coroutines/Continuation;)Ljava/lang/Object;
10+
}
11+
12+
public final class aws/smithy/kotlin/runtime/auth/awssigning/AwsChunkedSource : aws/smithy/kotlin/runtime/io/SdkSource {
13+
public fun <init> (Laws/smithy/kotlin/runtime/io/SdkSource;Laws/smithy/kotlin/runtime/auth/awssigning/AwsSigner;Laws/smithy/kotlin/runtime/auth/awssigning/AwsSigningConfig;[BLaws/smithy/kotlin/runtime/http/DeferredHeaders;)V
14+
public synthetic fun <init> (Laws/smithy/kotlin/runtime/io/SdkSource;Laws/smithy/kotlin/runtime/auth/awssigning/AwsSigner;Laws/smithy/kotlin/runtime/auth/awssigning/AwsSigningConfig;[BLaws/smithy/kotlin/runtime/http/DeferredHeaders;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
15+
public fun close ()V
16+
public fun read (Laws/smithy/kotlin/runtime/io/SdkBuffer;J)J
17+
}
18+
119
public final class aws/smithy/kotlin/runtime/auth/awssigning/AwsSignatureType : java/lang/Enum {
220
public static final field HTTP_REQUEST_CHUNK Laws/smithy/kotlin/runtime/auth/awssigning/AwsSignatureType;
321
public static final field HTTP_REQUEST_EVENT Laws/smithy/kotlin/runtime/auth/awssigning/AwsSignatureType;
@@ -103,6 +121,19 @@ public final class aws/smithy/kotlin/runtime/auth/awssigning/AwsSigningConfig$Co
103121
public final fun invoke (Lkotlin/jvm/functions/Function1;)Laws/smithy/kotlin/runtime/auth/awssigning/AwsSigningConfig;
104122
}
105123

124+
public final class aws/smithy/kotlin/runtime/auth/awssigning/AwsSigningResult {
125+
public fun <init> (Ljava/lang/Object;[B)V
126+
public final fun component1 ()Ljava/lang/Object;
127+
public final fun component2 ()[B
128+
public final fun copy (Ljava/lang/Object;[B)Laws/smithy/kotlin/runtime/auth/awssigning/AwsSigningResult;
129+
public static synthetic fun copy$default (Laws/smithy/kotlin/runtime/auth/awssigning/AwsSigningResult;Ljava/lang/Object;[BILjava/lang/Object;)Laws/smithy/kotlin/runtime/auth/awssigning/AwsSigningResult;
130+
public fun equals (Ljava/lang/Object;)Z
131+
public final fun getOutput ()Ljava/lang/Object;
132+
public final fun getSignature ()[B
133+
public fun hashCode ()I
134+
public fun toString ()Ljava/lang/String;
135+
}
136+
106137
public abstract class aws/smithy/kotlin/runtime/auth/awssigning/HashSpecification {
107138
}
108139

@@ -151,10 +182,20 @@ public final class aws/smithy/kotlin/runtime/auth/awssigning/HashSpecification$U
151182
}
152183

153184
public final class aws/smithy/kotlin/runtime/auth/awssigning/PresignerKt {
185+
public static final fun presignRequest (Laws/smithy/kotlin/runtime/http/request/HttpRequestBuilder;Laws/smithy/kotlin/runtime/operation/ExecutionContext;Laws/smithy/kotlin/runtime/auth/awscredentials/CredentialsProvider;Laws/smithy/kotlin/runtime/http/operation/EndpointResolver;Laws/smithy/kotlin/runtime/auth/awssigning/AwsSigner;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
186+
}
187+
188+
public final class aws/smithy/kotlin/runtime/auth/awssigning/UnsupportedSigningAlgorithmException : aws/smithy/kotlin/runtime/ClientException {
189+
public fun <init> (Ljava/lang/String;Laws/smithy/kotlin/runtime/auth/awssigning/AwsSigningAlgorithm;)V
190+
public final fun getSigningAlgorithm ()Laws/smithy/kotlin/runtime/auth/awssigning/AwsSigningAlgorithm;
154191
}
155192

156193
public final class aws/smithy/kotlin/runtime/auth/awssigning/internal/AwsChunkedUtilKt {
157194
public static final field AWS_CHUNKED_THRESHOLD I
158195
public static final field CHUNK_SIZE_BYTES I
196+
public static final fun getUseAwsChunkedEncoding (Laws/smithy/kotlin/runtime/auth/awssigning/AwsSigningConfig;)Z
197+
public static final fun isEligibleForAwsChunkedStreaming (Laws/smithy/kotlin/runtime/http/HttpBody;)Z
198+
public static final fun setAwsChunkedBody (Laws/smithy/kotlin/runtime/http/request/HttpRequestBuilder;Laws/smithy/kotlin/runtime/auth/awssigning/AwsSigner;Laws/smithy/kotlin/runtime/auth/awssigning/AwsSigningConfig;[BLaws/smithy/kotlin/runtime/http/DeferredHeaders;)V
199+
public static final fun setAwsChunkedHeaders (Laws/smithy/kotlin/runtime/http/request/HttpRequestBuilder;)V
159200
}
160201

runtime/auth/http-auth-aws/api/http-auth-aws.api

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,41 @@
1+
public final class aws/smithy/kotlin/runtime/http/auth/AwsHttpSigner : aws/smithy/kotlin/runtime/http/auth/HttpSigner {
2+
public static final field Companion Laws/smithy/kotlin/runtime/http/auth/AwsHttpSigner$Companion;
3+
public fun <init> (Laws/smithy/kotlin/runtime/http/auth/AwsHttpSigner$Config;)V
4+
public fun sign (Laws/smithy/kotlin/runtime/http/auth/SignHttpRequest;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
5+
}
6+
7+
public final class aws/smithy/kotlin/runtime/http/auth/AwsHttpSigner$Companion {
8+
public final fun invoke (Lkotlin/jvm/functions/Function1;)Laws/smithy/kotlin/runtime/http/auth/AwsHttpSigner;
9+
}
10+
11+
public final class aws/smithy/kotlin/runtime/http/auth/AwsHttpSigner$Config {
12+
public fun <init> ()V
13+
public final fun getAlgorithm ()Laws/smithy/kotlin/runtime/auth/awssigning/AwsSigningAlgorithm;
14+
public final fun getExpiresAfter-FghU774 ()Lkotlin/time/Duration;
15+
public final fun getNormalizeUriPath ()Z
16+
public final fun getOmitSessionToken ()Z
17+
public final fun getService ()Ljava/lang/String;
18+
public final fun getShouldSignHeader ()Lkotlin/jvm/functions/Function1;
19+
public final fun getSignatureType ()Laws/smithy/kotlin/runtime/auth/awssigning/AwsSignatureType;
20+
public final fun getSignedBodyHeader ()Laws/smithy/kotlin/runtime/auth/awssigning/AwsSignedBodyHeader;
21+
public final fun getSigner ()Laws/smithy/kotlin/runtime/auth/awssigning/AwsSigner;
22+
public final fun getUseDoubleUriEncode ()Z
23+
public final fun isUnsignedPayload ()Z
24+
public final fun setAlgorithm (Laws/smithy/kotlin/runtime/auth/awssigning/AwsSigningAlgorithm;)V
25+
public final fun setExpiresAfter-BwNAW2A (Lkotlin/time/Duration;)V
26+
public final fun setNormalizeUriPath (Z)V
27+
public final fun setOmitSessionToken (Z)V
28+
public final fun setService (Ljava/lang/String;)V
29+
public final fun setShouldSignHeader (Lkotlin/jvm/functions/Function1;)V
30+
public final fun setSignatureType (Laws/smithy/kotlin/runtime/auth/awssigning/AwsSignatureType;)V
31+
public final fun setSignedBodyHeader (Laws/smithy/kotlin/runtime/auth/awssigning/AwsSignedBodyHeader;)V
32+
public final fun setSigner (Laws/smithy/kotlin/runtime/auth/awssigning/AwsSigner;)V
33+
public final fun setUnsignedPayload (Z)V
34+
public final fun setUseDoubleUriEncode (Z)V
35+
}
36+
137
public final class aws/smithy/kotlin/runtime/http/auth/EndpointAuthKt {
38+
public static final fun mergeAuthOptions (Ljava/util/List;Ljava/util/List;)Ljava/util/List;
239
}
340

441
public final class aws/smithy/kotlin/runtime/http/auth/SigV4AsymmetricAuthScheme : aws/smithy/kotlin/runtime/http/auth/AuthScheme {
@@ -12,6 +49,8 @@ public final class aws/smithy/kotlin/runtime/http/auth/SigV4AsymmetricAuthScheme
1249
}
1350

1451
public final class aws/smithy/kotlin/runtime/http/auth/SigV4AsymmetricAuthSchemeKt {
52+
public static final fun sigV4A (ZLjava/lang/String;Ljava/util/List;Ljava/lang/Boolean;Ljava/lang/Boolean;)Laws/smithy/kotlin/runtime/auth/AuthOption;
53+
public static synthetic fun sigV4A$default (ZLjava/lang/String;Ljava/util/List;Ljava/lang/Boolean;Ljava/lang/Boolean;ILjava/lang/Object;)Laws/smithy/kotlin/runtime/auth/AuthOption;
1554
}
1655

1756
public final class aws/smithy/kotlin/runtime/http/auth/SigV4AuthScheme : aws/smithy/kotlin/runtime/http/auth/AuthScheme {
@@ -25,5 +64,7 @@ public final class aws/smithy/kotlin/runtime/http/auth/SigV4AuthScheme : aws/smi
2564
}
2665

2766
public final class aws/smithy/kotlin/runtime/http/auth/SigV4AuthSchemeKt {
67+
public static final fun sigV4 (ZLjava/lang/String;Ljava/lang/String;Ljava/lang/Boolean;Ljava/lang/Boolean;)Laws/smithy/kotlin/runtime/auth/AuthOption;
68+
public static synthetic fun sigV4$default (ZLjava/lang/String;Ljava/lang/String;Ljava/lang/Boolean;Ljava/lang/Boolean;ILjava/lang/Object;)Laws/smithy/kotlin/runtime/auth/AuthOption;
2869
}
2970

runtime/auth/identity-api/api/identity-api.api

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,20 @@ public final class aws/smithy/kotlin/runtime/identity/IdentityProvider$DefaultIm
6262
public static synthetic fun resolve$default (Laws/smithy/kotlin/runtime/identity/IdentityProvider;Laws/smithy/kotlin/runtime/collections/Attributes;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
6363
}
6464

65+
public abstract class aws/smithy/kotlin/runtime/identity/IdentityProviderChain : aws/smithy/kotlin/runtime/identity/CloseableIdentityProvider {
66+
public fun <init> ([Laws/smithy/kotlin/runtime/identity/IdentityProvider;)V
67+
public fun close ()V
68+
protected final fun getProviders ()[Laws/smithy/kotlin/runtime/identity/IdentityProvider;
69+
public fun resolve (Laws/smithy/kotlin/runtime/collections/Attributes;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
70+
public fun toString ()Ljava/lang/String;
71+
}
72+
6573
public abstract interface class aws/smithy/kotlin/runtime/identity/IdentityProviderConfig {
6674
public abstract fun identityProviderForScheme-kHcdgsI (Ljava/lang/String;)Laws/smithy/kotlin/runtime/identity/IdentityProvider;
6775
}
6876

6977
public final class aws/smithy/kotlin/runtime/identity/IdentityProviderConfigKt {
78+
public static final fun asIdentityProviderConfig (Laws/smithy/kotlin/runtime/identity/IdentityProvider;)Laws/smithy/kotlin/runtime/identity/IdentityProviderConfig;
7079
}
7180

7281
public final class aws/smithy/kotlin/runtime/identity/IdentityProviderException : aws/smithy/kotlin/runtime/ClientException {

runtime/crt-util/api/crt-util.api

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,31 @@
11
public final class aws/smithy/kotlin/runtime/crt/HttpKt {
2+
public static final fun path (Laws/sdk/kotlin/crt/http/HttpRequest;)Ljava/lang/String;
3+
public static final fun queryParameters (Laws/sdk/kotlin/crt/http/HttpRequest;)Laws/smithy/kotlin/runtime/net/url/QueryParameters;
4+
public static final fun toCrtHeaders (Laws/smithy/kotlin/runtime/http/Headers;)Laws/sdk/kotlin/crt/http/Headers;
5+
public static final fun toSdkHeaders (Laws/sdk/kotlin/crt/http/Headers;)Laws/smithy/kotlin/runtime/http/Headers;
6+
public static final fun toSignableCrtRequest (Laws/smithy/kotlin/runtime/http/request/HttpRequest;ZZLkotlin/coroutines/Continuation;)Ljava/lang/Object;
7+
public static synthetic fun toSignableCrtRequest$default (Laws/smithy/kotlin/runtime/http/request/HttpRequest;ZZLkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
8+
public static final fun update (Laws/smithy/kotlin/runtime/http/request/HttpRequestBuilder;Laws/sdk/kotlin/crt/http/HttpRequest;)V
9+
}
10+
11+
public final class aws/smithy/kotlin/runtime/crt/ReadChannelBodyStream : aws/sdk/kotlin/crt/http/HttpRequestBodyStream, kotlinx/coroutines/CoroutineScope {
12+
public fun <init> (Laws/smithy/kotlin/runtime/io/SdkByteReadChannel;Lkotlin/coroutines/CoroutineContext;)V
13+
public fun getCoroutineContext ()Lkotlin/coroutines/CoroutineContext;
14+
public fun resetPosition ()Z
15+
public fun sendRequestBody (Laws/sdk/kotlin/crt/io/MutableBuffer;)Z
16+
}
17+
18+
public final class aws/smithy/kotlin/runtime/crt/SdkDefaultIO {
19+
public static final field INSTANCE Laws/smithy/kotlin/runtime/crt/SdkDefaultIO;
20+
public final fun getClientBootstrap ()Laws/sdk/kotlin/crt/io/ClientBootstrap;
21+
public final fun getEventLoop ()Laws/sdk/kotlin/crt/io/EventLoopGroup;
22+
public final fun getHostResolver ()Laws/sdk/kotlin/crt/io/HostResolver;
23+
public final fun getTlsContext ()Laws/sdk/kotlin/crt/io/TlsContext;
24+
}
25+
26+
public final class aws/smithy/kotlin/runtime/crt/SdkSourceBodyStream : aws/sdk/kotlin/crt/http/HttpRequestBodyStream {
27+
public fun <init> (Laws/smithy/kotlin/runtime/io/SdkSource;)V
28+
public fun resetPosition ()Z
29+
public fun sendRequestBody (Laws/sdk/kotlin/crt/io/MutableBuffer;)Z
230
}
331

0 commit comments

Comments
 (0)