Skip to content

.tsbuildinfo output is non-deterministic #37156

Closed
@TimvdLippe

Description

@TimvdLippe

TypeScript Version: 3.9.0-dev.20200219

Search Terms: tsbuildinfo

Code

index.ts

console.log('test');

tsconfig.json

{
  "compilerOptions": {
    "composite": true,
    "outDir": "lib/"
  },
  "files": [
    "index.ts"
  ]
}

Execute the following commands:

tsc -p tsconfig.json
mv lib/tsconfig.tsbuildinfo lib/tsconfig.tsbuildinfo.backup
tsc -p tsconfig.json
diff lib/tsconfig.tsbuildinfo lib/tsconfig.tsbuildinfo.backup

Expected behavior:
No diff should be shown
Actual behavior:
The files differ in terms of ordering of strings in the various arrays

844,892d843
<       "../node_modules/@types/node/base.d.ts": [
<         "../node_modules/@types/node/globals.d.ts",
<         "../node_modules/@types/node/assert.d.ts",
<         "../node_modules/@types/node/async_hooks.d.ts",
<         "../node_modules/@types/node/buffer.d.ts",
<         "../node_modules/@types/node/child_process.d.ts",
<         "../node_modules/@types/node/cluster.d.ts",
<         "../node_modules/@types/node/console.d.ts",
<         "../node_modules/@types/node/constants.d.ts",
<         "../node_modules/@types/node/crypto.d.ts",
<         "../node_modules/@types/node/dgram.d.ts",
<         "../node_modules/@types/node/dns.d.ts",
<         "../node_modules/@types/node/domain.d.ts",
<         "../node_modules/@types/node/events.d.ts",
<         "../node_modules/@types/node/fs.d.ts",
<         "../node_modules/@types/node/http.d.ts",
<         "../node_modules/@types/node/http2.d.ts",
<         "../node_modules/@types/node/https.d.ts",
<         "../node_modules/@types/node/inspector.d.ts",
<         "../node_modules/@types/node/module.d.ts",
<         "../node_modules/@types/node/net.d.ts",
<         "../node_modules/@types/node/os.d.ts",
<         "../node_modules/@types/node/path.d.ts",
<         "../node_modules/@types/node/perf_hooks.d.ts",
<         "../node_modules/@types/node/process.d.ts",
<         "../node_modules/@types/node/punycode.d.ts",
<         "../node_modules/@types/node/querystring.d.ts",
<         "../node_modules/@types/node/readline.d.ts",
<         "../node_modules/@types/node/repl.d.ts",
<         "../node_modules/@types/node/stream.d.ts",
<         "../node_modules/@types/node/string_decoder.d.ts",
<         "../node_modules/@types/node/timers.d.ts",
<         "../node_modules/@types/node/tls.d.ts",
<         "../node_modules/@types/node/trace_events.d.ts",
<         "../node_modules/@types/node/tty.d.ts",
<         "../node_modules/@types/node/url.d.ts",
<         "../node_modules/@types/node/util.d.ts",
<         "../node_modules/@types/node/v8.d.ts",
<         "../node_modules/@types/node/vm.d.ts",
<         "../node_modules/@types/node/worker_threads.d.ts",
<         "../node_modules/@types/node/zlib.d.ts",
<         "../node_modules/@types/node/ts3.2/util.d.ts"
<       ],
<       "../node_modules/@types/node/ts3.2/index.d.ts": [
<         "../node_modules/@types/node/base.d.ts",
<         "../node_modules/@types/node/ts3.2/util.d.ts",
<         "../node_modules/@types/node/ts3.2/globals.d.ts",
<         "../node_modules/@types/node/util.d.ts"
<       ],
897,901d847
<       "../node_modules/@types/node/perf_hooks.d.ts": [
<         "../node_modules/@types/node/async_hooks.d.ts",
<         "../node_modules/@types/node/util.d.ts",
<         "../node_modules/@types/node/ts3.2/util.d.ts"
<       ],
933,935c879
<       "../node_modules/@types/node/tls.d.ts": [
<         "../node_modules/@types/node/crypto.d.ts",
<         "../node_modules/@types/node/dns.d.ts",
---
>       "../node_modules/@types/node/dgram.d.ts": [
936a881,899
>         "../node_modules/@types/node/dns.d.ts",
>         "../node_modules/@types/node/events.d.ts",
>         "../node_modules/@types/node/util.d.ts",
>         "../node_modules/@types/node/ts3.2/util.d.ts"
>       ],
>       "../node_modules/@types/node/dns.d.ts": [
>         "../node_modules/@types/node/util.d.ts",
>         "../node_modules/@types/node/ts3.2/util.d.ts"
>       ],
>       "../node_modules/@types/node/domain.d.ts": [
>         "../node_modules/@types/node/events.d.ts",
>         "../node_modules/@types/node/util.d.ts",
>         "../node_modules/@types/node/ts3.2/util.d.ts"
>       ],
>       "../node_modules/@types/node/events.d.ts": [
>         "../node_modules/@types/node/util.d.ts",
>         "../node_modules/@types/node/ts3.2/util.d.ts"
>       ],
>       "../node_modules/@types/node/fs.d.ts": [
937a901,902
>         "../node_modules/@types/node/events.d.ts",
>         "../node_modules/@types/node/url.d.ts",
941,942c906
<       "../node_modules/@types/node/https.d.ts": [
<         "../node_modules/@types/node/tls.d.ts",
---
>       "../node_modules/@types/node/http.d.ts": [
944c908
<         "../node_modules/@types/node/http.d.ts",
---
>         "../node_modules/@types/node/stream.d.ts",
945a910
>         "../node_modules/@types/node/net.d.ts",
960,962c925,926
<       "../node_modules/@types/node/dgram.d.ts": [
<         "../node_modules/@types/node/net.d.ts",
<         "../node_modules/@types/node/dns.d.ts",
---
>       "../node_modules/@types/node/https.d.ts": [
>         "../node_modules/@types/node/tls.d.ts",
963a928,929
>         "../node_modules/@types/node/http.d.ts",
>         "../node_modules/@types/node/url.d.ts",
967,972c933
<       "../node_modules/@types/node/dns.d.ts": [
<         "../node_modules/@types/node/util.d.ts",
<         "../node_modules/@types/node/ts3.2/util.d.ts"
<       ],
<       "../node_modules/@types/node/net.d.ts": [
<         "../node_modules/@types/node/stream.d.ts",
---
>       "../node_modules/@types/node/inspector.d.ts": [
974d934
<         "../node_modules/@types/node/dns.d.ts",
978,979c938
<       "../node_modules/@types/node/tty.d.ts": [
<         "../node_modules/@types/node/net.d.ts",
---
>       "../node_modules/@types/node/module.d.ts": [
983,984c942
<       "../node_modules/@types/node/http.d.ts": [
<         "../node_modules/@types/node/events.d.ts",
---
>       "../node_modules/@types/node/net.d.ts": [
986,987c944,945
<         "../node_modules/@types/node/url.d.ts",
<         "../node_modules/@types/node/net.d.ts",
---
>         "../node_modules/@types/node/events.d.ts",
>         "../node_modules/@types/node/dns.d.ts",
991,992c949
<       "../node_modules/@types/node/domain.d.ts": [
<         "../node_modules/@types/node/events.d.ts",
---
>       "../node_modules/@types/node/os.d.ts": [
996c953
<       "../node_modules/@types/node/events.d.ts": [
---
>       "../node_modules/@types/node/path.d.ts": [
1000,1003c957,958
<       "../node_modules/@types/node/worker_threads.d.ts": [
<         "../node_modules/@types/node/vm.d.ts",
<         "../node_modules/@types/node/events.d.ts",
<         "../node_modules/@types/node/stream.d.ts",
---
>       "../node_modules/@types/node/perf_hooks.d.ts": [
>         "../node_modules/@types/node/async_hooks.d.ts",
1007,1008c962
<       "../node_modules/@types/node/stream.d.ts": [
<         "../node_modules/@types/node/events.d.ts",
---
>       "../node_modules/@types/node/process.d.ts": [
1012,1013c966
<       "../node_modules/@types/node/zlib.d.ts": [
<         "../node_modules/@types/node/stream.d.ts",
---
>       "../node_modules/@types/node/punycode.d.ts": [
1017,1018c970
<       "../node_modules/@types/node/v8.d.ts": [
<         "../node_modules/@types/node/stream.d.ts",
---
>       "../node_modules/@types/node/querystring.d.ts": [
1034,1035c986
<       "../node_modules/@types/node/fs.d.ts": [
<         "../node_modules/@types/node/stream.d.ts",
---
>       "../node_modules/@types/node/stream.d.ts": [
1037d987
<         "../node_modules/@types/node/url.d.ts",
1041,1042c991
<       "../node_modules/@types/node/inspector.d.ts": [
<         "../node_modules/@types/node/events.d.ts",
---
>       "../node_modules/@types/node/string_decoder.d.ts": [
1046c995
<       "../node_modules/@types/node/module.d.ts": [
---
>       "../node_modules/@types/node/timers.d.ts": [
1050c999,1003
<       "../node_modules/@types/node/os.d.ts": [
---
>       "../node_modules/@types/node/tls.d.ts": [
>         "../node_modules/@types/node/crypto.d.ts",
>         "../node_modules/@types/node/dns.d.ts",
>         "../node_modules/@types/node/net.d.ts",
>         "../node_modules/@types/node/stream.d.ts",
1054c1007
<       "../node_modules/@types/node/path.d.ts": [
---
>       "../node_modules/@types/node/trace_events.d.ts": [
1058c1011,1012
<       "../node_modules/@types/node/process.d.ts": [
---
>       "../node_modules/@types/node/tty.d.ts": [
>         "../node_modules/@types/node/net.d.ts",
1062c1016,1017
<       "../node_modules/@types/node/punycode.d.ts": [
---
>       "../node_modules/@types/node/url.d.ts": [
>         "../node_modules/@types/node/querystring.d.ts",
1066,1067c1021
<       "../node_modules/@types/node/querystring.d.ts": [
<         "../node_modules/@types/node/util.d.ts",
---
>       "../node_modules/@types/node/util.d.ts": [
1070,1071c1024,1025
<       "../node_modules/@types/node/url.d.ts": [
<         "../node_modules/@types/node/querystring.d.ts",
---
>       "../node_modules/@types/node/v8.d.ts": [
>         "../node_modules/@types/node/stream.d.ts",
1075c1029
<       "../node_modules/@types/node/string_decoder.d.ts": [
---
>       "../node_modules/@types/node/vm.d.ts": [
1079c1033,1036
<       "../node_modules/@types/node/timers.d.ts": [
---
>       "../node_modules/@types/node/worker_threads.d.ts": [
>         "../node_modules/@types/node/vm.d.ts",
>         "../node_modules/@types/node/events.d.ts",
>         "../node_modules/@types/node/stream.d.ts",
1083c1040,1041
<       "../node_modules/@types/node/trace_events.d.ts": [
---
>       "../node_modules/@types/node/zlib.d.ts": [
>         "../node_modules/@types/node/stream.d.ts",
1087,1090c1045
<       "../node_modules/@types/node/util.d.ts": [
<         "../node_modules/@types/node/ts3.2/util.d.ts"
<       ],
<       "../node_modules/@types/node/ts3.2/globals.d.ts": [
---
>       "../node_modules/@types/node/base.d.ts": [
1091a1047,1080
>         "../node_modules/@types/node/assert.d.ts",
>         "../node_modules/@types/node/async_hooks.d.ts",
>         "../node_modules/@types/node/buffer.d.ts",
>         "../node_modules/@types/node/child_process.d.ts",
>         "../node_modules/@types/node/cluster.d.ts",
>         "../node_modules/@types/node/console.d.ts",
>         "../node_modules/@types/node/constants.d.ts",
>         "../node_modules/@types/node/crypto.d.ts",
>         "../node_modules/@types/node/dgram.d.ts",
>         "../node_modules/@types/node/dns.d.ts",
>         "../node_modules/@types/node/domain.d.ts",
>         "../node_modules/@types/node/events.d.ts",
>         "../node_modules/@types/node/fs.d.ts",
>         "../node_modules/@types/node/http.d.ts",
>         "../node_modules/@types/node/http2.d.ts",
>         "../node_modules/@types/node/https.d.ts",
>         "../node_modules/@types/node/inspector.d.ts",
>         "../node_modules/@types/node/module.d.ts",
>         "../node_modules/@types/node/net.d.ts",
>         "../node_modules/@types/node/os.d.ts",
>         "../node_modules/@types/node/path.d.ts",
>         "../node_modules/@types/node/perf_hooks.d.ts",
>         "../node_modules/@types/node/process.d.ts",
>         "../node_modules/@types/node/punycode.d.ts",
>         "../node_modules/@types/node/querystring.d.ts",
>         "../node_modules/@types/node/readline.d.ts",
>         "../node_modules/@types/node/repl.d.ts",
>         "../node_modules/@types/node/stream.d.ts",
>         "../node_modules/@types/node/string_decoder.d.ts",
>         "../node_modules/@types/node/timers.d.ts",
>         "../node_modules/@types/node/tls.d.ts",
>         "../node_modules/@types/node/trace_events.d.ts",
>         "../node_modules/@types/node/tty.d.ts",
>         "../node_modules/@types/node/url.d.ts",
1092a1082,1085
>         "../node_modules/@types/node/v8.d.ts",
>         "../node_modules/@types/node/vm.d.ts",
>         "../node_modules/@types/node/worker_threads.d.ts",
>         "../node_modules/@types/node/zlib.d.ts",
1098c1091,1092
<       "../node_modules/@types/node/vm.d.ts": [
---
>       "../node_modules/@types/node/ts3.2/globals.d.ts": [
>         "../node_modules/@types/node/globals.d.ts",
1100a1095,1100
>       ],
>       "../node_modules/@types/node/ts3.2/index.d.ts": [
>         "../node_modules/@types/node/base.d.ts",
>         "../node_modules/@types/node/ts3.2/util.d.ts",
>         "../node_modules/@types/node/ts3.2/globals.d.ts",
>         "../node_modules/@types/node/util.d.ts"
1104d1103
<       "../node_modules/typescript/lib/lib.d.ts",
1149a1149,1150
>       "../node_modules/typescript/lib/lib.d.ts",
>       "../node_modules/typescript/lib/lib.es5.d.ts",
1154,1177d1154
<       "../node_modules/typescript/lib/lib.esnext.intl.d.ts",
<       "../node_modules/typescript/lib/lib.es2020.bigint.d.ts",
<       "../node_modules/typescript/lib/lib.es2018.regexp.d.ts",
<       "../node_modules/typescript/lib/lib.es2018.promise.d.ts",
<       "../node_modules/typescript/lib/lib.es2018.intl.d.ts",
<       "../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts",
<       "../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts",
<       "../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts",
<       "../node_modules/typescript/lib/lib.es2017.intl.d.ts",
<       "../node_modules/typescript/lib/lib.es2017.string.d.ts",
<       "../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts",
<       "../node_modules/typescript/lib/lib.es2017.object.d.ts",
<       "../node_modules/typescript/lib/lib.es2016.array.include.d.ts",
<       "../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts",
<       "../node_modules/typescript/lib/lib.es2015.symbol.d.ts",
<       "../node_modules/typescript/lib/lib.es2015.reflect.d.ts",
<       "../node_modules/typescript/lib/lib.es2015.proxy.d.ts",
<       "../node_modules/typescript/lib/lib.es2015.promise.d.ts",
<       "../node_modules/typescript/lib/lib.es2015.iterable.d.ts",
<       "../node_modules/typescript/lib/lib.es2015.generator.d.ts",
<       "../node_modules/typescript/lib/lib.es2015.collection.d.ts",
<       "../node_modules/typescript/lib/lib.es2015.core.d.ts",
<       "../node_modules/typescript/lib/lib.scripthost.d.ts",
<       "../node_modules/typescript/lib/lib.webworker.importscripts.d.ts",
1179c1156,1179
<       "../node_modules/typescript/lib/lib.es5.d.ts"
---
>       "../node_modules/typescript/lib/lib.webworker.importscripts.d.ts",
>       "../node_modules/typescript/lib/lib.scripthost.d.ts",
>       "../node_modules/typescript/lib/lib.es2015.core.d.ts",
>       "../node_modules/typescript/lib/lib.es2015.collection.d.ts",
>       "../node_modules/typescript/lib/lib.es2015.generator.d.ts",
>       "../node_modules/typescript/lib/lib.es2015.iterable.d.ts",
>       "../node_modules/typescript/lib/lib.es2015.promise.d.ts",
>       "../node_modules/typescript/lib/lib.es2015.proxy.d.ts",
>       "../node_modules/typescript/lib/lib.es2015.reflect.d.ts",
>       "../node_modules/typescript/lib/lib.es2015.symbol.d.ts",
>       "../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts",
>       "../node_modules/typescript/lib/lib.es2016.array.include.d.ts",
>       "../node_modules/typescript/lib/lib.es2017.object.d.ts",
>       "../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts",
>       "../node_modules/typescript/lib/lib.es2017.string.d.ts",
>       "../node_modules/typescript/lib/lib.es2017.intl.d.ts",
>       "../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts",
>       "../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts",
>       "../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts",
>       "../node_modules/typescript/lib/lib.es2018.intl.d.ts",
>       "../node_modules/typescript/lib/lib.es2018.promise.d.ts",
>       "../node_modules/typescript/lib/lib.es2018.regexp.d.ts",
>       "../node_modules/typescript/lib/lib.es2020.bigint.d.ts",
>       "../node_modules/typescript/lib/lib.esnext.intl.d.ts"

Playground Link: n/a

Related Issues: n/a

We found this issue in the Chromium deterministic builder which expects that builds remain stable across invocations: https://bugs.chromium.org/p/chromium/issues/detail?id=1054494#c24

Metadata

Metadata

Assignees

Labels

Fix AvailableA PR has been opened for this issue

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions