Skip to content

Integration 2025 7 14 #235

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1,359 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1359 commits
Select commit Hold shift + click to select a range
c4767b0
Update create-tag.yml for Hermes (#1514)
cortinico Sep 9, 2024
649ceaa
Harden the trace intepreter so it doesn't access records that don't e…
Sep 9, 2024
2ca5da2
Don't allow newline after async in method property
fbmal7 Sep 17, 2024
a75e14a
fix: signDisplay plus sign behaviour fixed for NumberFormat (#1483)
shubhamguptadream11 Sep 17, 2024
4796f02
Deploy 0.246.0 to xplat + www
Sep 17, 2024
27abbc4
Avoid allocations in runtime crash callback
neildhar Sep 22, 2024
a8b4d84
Replace all %checks with type guards in hermes-parser js code
SamChou19815 Sep 27, 2024
df839b7
Deploy 0.247.0 to fbsource
SamChou19815 Sep 27, 2024
f5ca193
Allow trailing comma after rest param in component declaration
SamChou19815 Sep 27, 2024
758c1f0
Deploy 0.247.1 to xplat
panagosg7 Sep 27, 2024
aba1e98
enable natural_inference.object_freeze=true in fbsource
panagosg7 Sep 28, 2024
ded62d3
Allow trailing comma after rest param for component types
SamChou19815 Oct 1, 2024
1802663
Trace date getter values
Oct 2, 2024
add4115
Release version to 0.24.0
SamChou19815 Oct 2, 2024
ffe0139
enable as_const in fbsource
panagosg7 Oct 10, 2024
8ca565c
Use getRealOpCode instead of getNextOffset in debugger
dannysu Oct 10, 2024
9df90a5
Return past breakpoints on a call
dannysu Oct 10, 2024
2f1716b
Match domain and method separately
hoxyq Oct 10, 2024
42aa59b
Reject Runtime.getProperties with invalid/released object ID
hoxyq Oct 10, 2024
2e2483e
Implement Runtime.releaseObject and releaseObjectGroup
hoxyq Oct 10, 2024
924f1d1
feat: add tvOS support (#1529)
douglowder Oct 10, 2024
aa2da3d
Use TARGET_OS_TV definition from TargetConditionals.h
neildhar Oct 10, 2024
069cbe9
Fix comments and unnecessary ifdefs for tvOS
neildhar Oct 10, 2024
0ff6c2a
Report an error in Execute on tvOS (#1530)
neildhar Oct 10, 2024
2ea55e5
Deploy 0.248.0 to fbsource
SamChou19815 Oct 11, 2024
94de6b5
remove natural_inference.object_freeze fbsource flowconfig option
panagosg7 Oct 11, 2024
f8ab826
Deploy 0.248.1 to xplat
SamChou19815 Oct 13, 2024
db4fc49
Support `React.RefSetter` translation and remove support for incorrec…
SamChou19815 Oct 14, 2024
f0bda93
Release version to 0.25.0
SamChou19815 Oct 14, 2024
379c024
Fix build error when using libstdc++
dannysu Oct 15, 2024
63289a8
add setBlackboxedRanges message type
vzaidman Oct 15, 2024
8eef700
Fix executing Ret OpCode overwritten with Debugger OpCode
dannysu Oct 16, 2024
89e7bae
Fix executing Call OpCodes overwritten by Debugger OpCode
dannysu Oct 16, 2024
a5b2bbc
fix native stack checking on Android/Bionic (#1538)
Oct 17, 2024
b112ed9
Deploy 0.249.0 to xplat
SamChou19815 Oct 17, 2024
d964f6b
Deploy 0.250.0 to xplat
SamChou19815 Oct 18, 2024
cadb4a3
Fix object native constructor bug (#1554)
fbmal7 Oct 29, 2024
37540dc
extract test util "preserve and reset test env"
EdmondChuiHW Oct 29, 2024
b74db1a
allow `setBreakpointsActive` without debugger being enabled
EdmondChuiHW Oct 29, 2024
5ce6d23
Deploy 0.251.0 to www + fbsource
Oct 30, 2024
0b92287
Resolve several Java warnings on Hermes Intl (#1553)
cortinico Oct 30, 2024
acbcf34
Deploy 0.251.1 to xplat
panagosg7 Oct 30, 2024
a2b862e
Fix flaky NotifyDueToEventCallbacksTest
dannysu Oct 31, 2024
e3aec0f
Enable 16KB page size binaries for RN libraries + hermes (#1557)
alanleedev Nov 1, 2024
c98b00e
Add utf16 method to JSI
tsaichien Nov 1, 2024
8e23833
SctackBoundsTest.cpp: fix compilation error on Windows (#1558)
Nov 3, 2024
ba257f6
Remove non-windows CircleCI tests
Nov 4, 2024
54e428c
let Pointer be nothrow-move-constructible (#47331)
yfeldblum Nov 5, 2024
f2970e7
Skip plugin for non-Flow JS code (#1556)
huntie Nov 6, 2024
c582a23
let PointerValue::invalidate() be noexcept
yfeldblum Nov 7, 2024
a84b2f9
Add Intl.Collator implementation using ICU4C (#1413)
robchu05 Nov 7, 2024
be25b41
Deploy 0.252.0 to xplat + www
Nov 8, 2024
15e9b5c
Release version to 0.25.1
huntie Nov 8, 2024
b07ef4f
let Value be nothrow-move-constructible (#47422)
yfeldblum Nov 10, 2024
08c6eb9
Remove unnecessary handle
fbmal7 Nov 13, 2024
f3271d6
Deploy 0.253.0 to xplat
SamChou19815 Nov 14, 2024
662354b
fix NumberFormat.resolvedOptions on Android (#1565)
dlindenkreuz Nov 15, 2024
eacee79
Do a run of rustgen on master
gkz Nov 21, 2024
1acd620
Deploy 0.254.0 to xplat
pieterv Nov 21, 2024
b58e27a
Deploy 0.254.1 to xplat
SamChou19815 Nov 21, 2024
6076857
migrate xplat/ to ruff
amyreese Nov 22, 2024
ac557bb
Revert "Disable DateTimeFormat::formatToParts for Apple platform (#11…
cortinico Nov 22, 2024
d4f25d5
Deploy 0.254.2 to xplat
panagosg7 Nov 23, 2024
d1b0f84
Deploy 0.255.0 to xplat
SamChou19815 Nov 26, 2024
a642414
Forbid await/yield/arguments in class field inits
avp Dec 3, 2024
d4a437b
Parse class static blocks
avp Dec 3, 2024
2ff3274
JS changes for class static blocks
avp Dec 3, 2024
ce1c4dd
Fix Flow types for class static blocks
gkz Dec 5, 2024
eb6eef5
Turn on `experimental.natural_inference.exports.primitive_const` in h…
SamChou19815 Dec 5, 2024
215bbe6
Add default getStringData/getPropNameIdData implementation
tsaichien Dec 6, 2024
8000c08
Add new `emitValue` method for char16 strings
tsaichien Dec 6, 2024
8066492
Update UTF8 String emission and parsing in Synth Traces
tsaichien Dec 6, 2024
c60c252
Add UTF16 Records in synth traces
tsaichien Dec 6, 2024
c07cb05
Add getStringData and getPropNameIdData support in Synth Traces
tsaichien Dec 6, 2024
5ed3594
Add option for parsing Flow match statements/expressions, and add reg…
gkz Dec 7, 2024
342f75a
Parse Flow match statements
gkz Dec 7, 2024
5c89fa3
Parse Flow match expressions
gkz Dec 7, 2024
8e23cfa
Parse Flow match core patterns
gkz Dec 7, 2024
7c3b9fc
Parse Flow match object patterns
gkz Dec 7, 2024
9abe4f1
Parse Flow match array patterns
gkz Dec 7, 2024
484c2ce
Parse Flow match "or" and "as" patterns
gkz Dec 7, 2024
e72f400
Parse Flow match member patterns
gkz Dec 7, 2024
eff47d8
Flow types for match AST nodes, generated JS changes
gkz Dec 7, 2024
2d3dd89
Pass through Flow match syntax option
gkz Dec 7, 2024
e2d4905
eslint-scope support for match expressions/statements
gkz Dec 7, 2024
b409484
Prettier support for match expressions/statements
gkz Dec 9, 2024
33dfc8f
Fix lint/typecheck issues in prettier fork
gkz Dec 9, 2024
568b1c9
Add thread local caching to thread_stack_bounds
avp Dec 9, 2024
6bc3860
Fix SynthTraceSerializationTest for Windows (#1576)
tsaichien Dec 10, 2024
9eb1f3d
Deploy 0.256.0 to xplat
Dec 10, 2024
20939e2
Fix OSCompatEmscripten stack bounds (#1581)
avp Dec 11, 2024
1012f89
Add default implementation for Object.getPrototypeOf and Object.setPr…
tsaichien Dec 12, 2024
d032809
Add default implementation for Object.create(prototype)
tsaichien Dec 12, 2024
3fb98ed
Add GetPrototypeRecord and SetPrototypeRecord in Synth Traces
tsaichien Dec 12, 2024
f541af7
Add CreateObjectWithPrototypeRecord in SynthTrace
tsaichien Dec 12, 2024
4771ce5
remove as_const option (on by default) in fbsource
panagosg7 Dec 12, 2024
579e82b
Pass JSI Dynamic filter callback by ref
javache Dec 12, 2024
feeb4cd
set debugger paused state via functions
vzaidman Dec 16, 2024
060df01
ignore blackboxed ranges when debugging
vzaidman Dec 16, 2024
ff4470e
ignore scripts matching patterns set by Debugger.setBlackboxPatterns
vzaidman Dec 16, 2024
2dd83b0
fix eval sourceURL
vzaidman Dec 16, 2024
f708c3b
ignore anonymous scripts
vzaidman Dec 16, 2024
95b2b52
add scriptLanguage="JavaScript" to Debugger.scriptParsed
vzaidman Dec 16, 2024
5ec8b2c
Add transform for match expressions
gkz Dec 17, 2024
6e8e0db
Add transform for match statements
gkz Dec 17, 2024
468be6b
sync flow parser tests
panagosg7 Dec 18, 2024
3a24531
add support for const type parameter
panagosg7 Dec 18, 2024
5ce24bf
enable flow type parameters tests
panagosg7 Dec 18, 2024
d9b1826
add support for const type parameter (JS changes)
panagosg7 Dec 18, 2024
817a35b
Deploy 0.257.0 to xplat
SamChou19815 Dec 19, 2024
e28fd47
Reduce ASAN native stack check gap
avp Dec 19, 2024
3dc760e
Add support for `const` type parameters
gkz Dec 19, 2024
743d2a7
Cleanup flowconfig flags that matches the default
SamChou19815 Dec 19, 2024
28ed217
Pipe information through compiler for simplified resolver generation …
evanyeung Dec 19, 2024
74ab1de
Static Hermes for React Native (#1566)
piaskowyk Dec 20, 2024
874b0c0
Release version to 0.26.0
gkz Dec 20, 2024
667676a
Add a test for sequence expressions in match argument and body
gkz Dec 20, 2024
388376f
Deploy 0.257.1 to xplat
SamChou19815 Dec 20, 2024
e9b0b8e
Deploy 0.258.0 to xplat
SamChou19815 Jan 3, 2025
a62edf1
Improve match transform logic for determining if an 'in' check is nee…
gkz Jan 8, 2025
a49b895
Deploy 0.258.1 to xplat
SamChou19815 Jan 8, 2025
e08fb5f
Add utf16 implementation for Hermes runtime
tsaichien Jan 9, 2025
c995d19
Add getStringData and getPropNameIdData implementation for Hermes
tsaichien Jan 9, 2025
9f0b77f
Add Hermes implementation for Object.getPrototypeOf and Object.setPro…
tsaichien Jan 9, 2025
a942ef3
Add Hermes implementation for Object.create with prototype
tsaichien Jan 9, 2025
fd6a281
Fix warnings causing test failure
dannysu Jan 15, 2025
be20bcb
Deploy 0.259.0 to fbsource
pieterv Jan 16, 2025
ed54fd3
Deploy 0.259.1 to xplat
SamChou19815 Jan 17, 2025
6eed6c9
Fix lit tests not using autogen comments
dannysu Jan 18, 2025
155cf7c
Fix export syntax for object expressions
j-piasecki Jan 20, 2025
2f9c702
Allow usage of `typeof` with spread operator in flow-api-translator
j-piasecki Jan 20, 2025
6bde579
Fix arrow function syntax for class properties (#1593)
coado Jan 21, 2025
778ac28
Use a fixed ubuntu version for android GH Action (#1594)
dannysu Jan 22, 2025
e7b1b32
Fix unicode character usage in windows tests
tsaichien Jan 22, 2025
7a10f20
Fix move evaluation order
dannysu Jan 23, 2025
16abe15
Fix assert when throwing a Proxy
dannysu Jan 23, 2025
d671097
Updating settings to nuclide.meta-prettier-vscode
timrc Jan 23, 2025
a07d5fd
Remove unused gmock.h includes
neildhar Jan 23, 2025
94812e4
Generate typeof for member expression in export object
coado Jan 23, 2025
00a84e7
Add createFromUtf16 JSI method
tsaichien Jan 23, 2025
159752f
Fix Unicode property escape inverted bug
fbmal7 Jan 24, 2025
7c7640a
Re-run genUnicodeTable.py script
fbmal7 Jan 24, 2025
d63b9d7
Fix get_assigned_codepoints bug
fbmal7 Jan 24, 2025
8997563
Remove general timeouts from CDPAgentTest
dannysu Jan 24, 2025
950801b
fix methodish type annotation to accept a type guard return annotation
panagosg7 Jan 24, 2025
d5c00d1
Add Hermes implementation of createFromUtf16 method
tsaichien Jan 24, 2025
a227066
Split CreatePropNameIdRecord based on creation method
tsaichien Jan 24, 2025
c7abb36
Add `StringEncodingType` for String/PropNameId encoding in SynthTrace…
tsaichien Jan 24, 2025
a08b71b
Add createFromUtf16 support in Synth Traces
tsaichien Jan 24, 2025
576fbea
Use `SynthTrace::decode` over `trace.decode`
tsaichien Jan 24, 2025
608c5ba
Fix gcStableHashHermesValue() for NaN
lavenzg Jan 24, 2025
ee1ac30
Make BoundFunction non-lazy
neildhar Jan 24, 2025
7af61db
fix bug in one-sided "this" type guard
panagosg7 Jan 25, 2025
bfb595f
Allow TS classes to extend qualified identifiers
j-piasecki Jan 28, 2025
1c921f4
Add support for Symbol member expression in class method definition (…
coado Jan 29, 2025
7d1fbde
Update download-artifact in GitHub CI (#1605)
neildhar Jan 30, 2025
3b3584d
Use the same AndroidUnicodeUtils.java everywhere
dannysu Jan 30, 2025
b045e23
Restore deleted AndroidUnicodeUtils.java
tmikov Jan 31, 2025
89fe002
Remove parent from JSCallableProxy
neildhar Jan 31, 2025
ede7def
- Add conversion of the iterator from Flow to TS (#1604)
coado Jan 31, 2025
e877897
Reduce stack depths under Windows clang
neildhar Feb 1, 2025
f1d73e5
Identify profiler suspend reasons (#1608)
Feb 3, 2025
a998e2f
Change handling declaration export for classes from flow defs to TS defs
coado Feb 4, 2025
37437be
Introduce format-agnostic API for JS Sampling (#1603)
hoxyq Feb 4, 2025
e90cda2
Keep track names
hoxyq Feb 4, 2025
d0595d3
Declare export type along the exported value of that type in TS gener…
coado Feb 11, 2025
0cc9dc2
Deploy 0.260.0 to xplat
Feb 11, 2025
a0c9034
Allow HERMES_PARSE_FLOW without HERMES_PARSE_TS
neildhar Feb 12, 2025
751b5c2
Deploy 0.261.0 to xplat
SamChou19815 Feb 13, 2025
bde8cb6
Back out "Deploy 0.261.0 to xplat"
panagosg7 Feb 13, 2025
06bf7a8
Record thread id for each Sample
hoxyq Feb 13, 2025
cf85c15
Increase timer resolution for sampling profiler
rozele Feb 14, 2025
3d91131
Deploy 0.261.1 to xplat
SamChou19815 Feb 14, 2025
91354c6
Align HermesRuntime with SH and make non-static methods virtual
neildhar Feb 14, 2025
da5aabc
Delete global profile dumping API
neildhar Feb 14, 2025
c615b11
JSError: never fail with invalid getter target" (#1621)
Feb 18, 2025
945c9f8
Fix CMake build for Windows
rozele Feb 18, 2025
bb18a56
Save the thread ID in SamplingProfiler
neildhar Feb 18, 2025
716f148
Deploy 0.261.2 to xplat
SamChou19815 Feb 19, 2025
2facf5b
Fix SamplingProfiler name tracking on thread change
neildhar Feb 19, 2025
038bfdb
Add missing include in public/SamplingProfiler
neildhar Feb 22, 2025
03ef8e1
Fix omitting manual type for arrow functions
coado Feb 25, 2025
21da174
Upgrade iPhone simulator version used in Github Action (#1595)
lavenzg Feb 26, 2025
3d7795d
Add stripped down nodejs libdef
SamChou19815 Feb 26, 2025
d598dda
Fix function name typo
dannysu Feb 27, 2025
604b4fe
Use React.JSX namespace instead of JSX
j-piasecki Feb 27, 2025
bc17d96
Deploy 0.262.0 to xplat
Feb 27, 2025
8656e4e
Translate $ArrayLike to ArrayLike
j-piasecki Mar 4, 2025
0000280
Deploy 0.263.0 to xplat
SamChou19815 Mar 5, 2025
dc46758
U_NO_THROW -> noexcept
r-barnes Mar 5, 2025
1268ba1
Apply breakpoints when Debugger domain is re-enabled
hoxyq Mar 6, 2025
0423069
fix stepping into blackboxed range with manual breakpoint
vzaidman Mar 6, 2025
1a34d4d
fix cdp-hermes breakpoints conflicts
vzaidman Mar 6, 2025
71d007d
Fix missing URL definition
SamChou19815 Mar 6, 2025
b8ad3c1
Fix invalid timezone errors for valid timezones on Apple platforms. (…
chrsmys Mar 11, 2025
9341abb
Deploy 0.265.0 to fbsource
pieterv Mar 14, 2025
5911e81
Deploy 0.265.2 to xplat
SamChou19815 Mar 14, 2025
f68129e
Deploy 0.265.3 to xplat
SamChou19815 Mar 18, 2025
9f06a9b
Split CrashManager rtti into its own file
dannysu Mar 20, 2025
e1b36d2
Build with hermes_common directory when available
dannysu Mar 20, 2025
4b33e25
Deploy 0.266.0 to xplat
Mar 28, 2025
8ef11b4
Deploy 0.266.1 to xplat
SamChou19815 Mar 30, 2025
1b6c8ca
Guard against thrown exceptions in the fatal handler
tsaichien Apr 1, 2025
7d86c15
Update pull request template
Apr 3, 2025
43e6c73
Deploy 0.267.0 to xplat
panagosg7 Apr 12, 2025
df51dee
upgrade to nightly-2025-04-14
diliop Apr 15, 2025
baa2cd7
set style edition to 2024
diliop Apr 15, 2025
33a14c2
Fix setting Catalyst flags if CMAKE_CXX_FLAGS is set
neildhar Apr 16, 2025
d87b3b1
Remove HERMES_BUILD_APPLE_DSYM (#1669)
neildhar Apr 16, 2025
11c154b
Fix CQS signal. Id] 19672080 -- readability-redundant-string-init in …
Apr 17, 2025
142d5ab
Delete node-hermes
avp Apr 23, 2025
60c12d5
Update Ubuntu used in GitHub workflows (#1697)
neildhar Apr 29, 2025
ed7f9e6
Use cache@v4 in github workflows
neildhar Apr 29, 2025
8a72c3e
Use std::variant, remove heap allocations
hoxyq May 1, 2025
5c8962a
Define range for iteration over samples and call stack frames
hoxyq May 1, 2025
7c68497
Use correct scriptId
hoxyq May 1, 2025
4eb6132
Make call frames point to function definition, not callsite
hoxyq May 5, 2025
7d416bc
Build JSI with C++17
tsaichien May 10, 2025
3eeb011
Add UUID struct to JSI
tsaichien May 10, 2025
34b807b
Add JSI APIs `setRuntimeData` and `getRuntimeData`
tsaichien May 10, 2025
0d66a2c
Removed duplicate check
hoxyq May 13, 2025
5c6a885
Cache and memoize Frames details
hoxyq May 14, 2025
10f9c9b
Deduplicate strings and provide std::string_view
hoxyq May 14, 2025
8d1641f
Add castInterface API in JSI
tsaichien May 14, 2025
b3a20f6
Used shared_ptr<Runtime> in jsi testlib
tsaichien May 14, 2025
3abf653
Add intermediate state for the Hermes Root API
tsaichien May 14, 2025
10edb91
Add Hermes Root API in all other versions of Hermes
tsaichien May 15, 2025
2bba5f0
Add `IHermes` interface to all other versions of Hermes
tsaichien May 15, 2025
3cc0974
Use IHermes, use shared_ptr<jsi::Runtime> in Synth Traces in all othe…
tsaichien May 15, 2025
5be272d
Call `withArrayBuffer` with true in `hardenedHermesRuntimeConfig`
lavenzg May 22, 2025
353e37d
Define BooleanStateValue
hoxyq May 23, 2025
01b405a
Persist breakpointsActive in domain state
hoxyq May 23, 2025
26e62d0
applying rustfix to xplat
cjlongoria May 24, 2025
de87db7
Use explicit conversion for 'char16_t' to 'char32_t'
May 26, 2025
e3aa062
jsi | remove redundant semi colon (#1714)
arhelmus May 28, 2025
0760c58
Revert D75478125: jsi | remove redundant semi colon
arhelmus May 28, 2025
922d738
hermes | buck | Fix buck cquery on macOS, by forcing usage of unified…
nlutsenko Jun 10, 2025
1b4de35
add IHermes::resetTimezoneCache()
troZee Jun 11, 2025
73f2526
Fixed StringRef pointing to unallocated raw string
hoxyq Jun 12, 2025
eba9653
Fix e2e CI (#1720)
neildhar Jun 16, 2025
ffc8a24
Fix shadow variable warning in ESTreeIRGen-expr.cpp
Jun 26, 2025
d317963
Improve hermesFatalErrorHandler
Jun 26, 2025
e0fc671
Update ReactNativeIntegration.md (#1724)
navarroaxel Jun 28, 2025
651425b
Update ws npm dependency for hcdp
dannysu Jul 7, 2025
f38e1a9
Move class declaration to cpp, expose only generateProfile method
hoxyq Jul 8, 2025
63e802a
Use std::deque as container for string storage
hoxyq Jul 8, 2025
080efe4
Fixed Array.prototype.toSpliced() (#1728)
L1quidH2O Jul 8, 2025
c4b0847
Disable ProfileGeneratorTest.MultipleUniqueScriptURLs
lavenzg Jul 11, 2025
603a444
merge hermes-windows from last commit hash to 14 July 2025
iamAbhi-916 Jul 14, 2025
8a4e49e
merge facebook 2025_7_14 to hermes-windows
iamAbhi-916 Jul 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
327 changes: 327 additions & 0 deletions .ado/build-template.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,327 @@
#
# The build and pack template used by the CI publish and PR validation scripts.
# The template sets the version number, builds all binaries, and then packs them as NuGet packages.
#

parameters:
# MustPublish is `true` for CI builds and `false` for PR validation.
- name: MustPublish
type: boolean
default: false
# To fake building hermes for faster debugging.
- name: FakeBuild
type: boolean
default: false

# Matrix with target platforms for Hermes binaries.
- name: BuildMatrix
type: object
default:
- Name: uwp_x64
TargetCPU: x64
BuildUWP: --uwp
- Name: uwp_x86
TargetCPU: x86
BuildUWP: --uwp
- Name: uwp_arm64
TargetCPU: arm64
BuildUWP: --uwp
- Name: win32_x64
TargetCPU: x64
BuildUWP: --no-uwp
CanRunTest: true
- Name: win32_x86
TargetCPU: x86
BuildUWP: --no-uwp
CanRunTest: true
- Name: win32_arm64
TargetCPU: arm64
BuildUWP: --no-uwp
# ARM64 "Emulation Compatible" is to run ARM64 Hermes DLL in a x64 app
# on Windows ARM64 in emulation mode.
# See: https://learn.microsoft.com/en-us/windows/arm/arm64ec
- Name: win32_arm64ec
TargetCPU: arm64ec
BuildUWP: --no-uwp

resources:
repositories:
# The repo for the Office compliant build pipeline templates.
- repository: OfficePipelineTemplates
type: git
name: 1ESPipelineTemplates/OfficePipelineTemplates
ref: refs/tags/release

extends:
# Extend the Office compliant build pipeline template.
${{ if eq(parameters.MustPublish, true) }}:
template: v1/Office.Official.PipelineTemplate.yml@OfficePipelineTemplates
${{ else }}:
template: v1/Office.Unofficial.PipelineTemplate.yml@OfficePipelineTemplates
parameters:
settings:
${{ if eq(parameters.MustPublish, false) }}:
skipBuildTagsForGitHubPullRequests: true
pool:
name: Azure-Pipelines-1ESPT-ExDShared
image: windows-latest
os: windows
sdl:
binskim:
analyzeTarget: |
$(Build.StagingDirectory)\out\pkg-staging\**\*.dll
$(Build.StagingDirectory)\out\pkg-staging\**\*.exe
componentgovernance:
ignoreDirectories: $(Build.SourcesDirectory)\website
eslint:
enableExclusions: true
# This repo does not ship any JavaScript code. But it has many test cases for
# the Hermes JS engine that fail parsing, have code considered insecure and crash eslint.
exclusionPatterns: |
'**/*.*'
suppression:
suppressionFile: $(Build.SourcesDirectory)\.ado\guardian\SDL\.gdnsuppress
codeql:
compiled:
enabled: true
runSourceLanguagesInSourceAnalysis: true

stages:
- stage: main
jobs:

#=============================================================================
# Set version numbers.
#=============================================================================
- job: Set_Versions
displayName: Set semantic and file versions

variables:
# Component Governance is ran as part of the Build Job.
- name: skipComponentGovernanceDetection
value: true
# Convert MustPublish parameter to a variable to access it in the script.
- name: mustPublish
value: ${{ parameters.MustPublish }}

steps:
# Node.js version >= 22.x is required to handle args in JS scripts.
- task: UseNode@1
displayName: Use Node.js 22.x
inputs:
version: 22.x

# Compute the semanticVersion and fileVersion, and then update the build title.
- script: node .ado\scripts\setVersionNumber.js
name: setVersions # For output variable prefix
displayName: Compute version numbers

#=============================================================================
# Build hermes binaries.
#=============================================================================
- ${{ each MatrixEntry in parameters.BuildMatrix }}:
- job: Build_Hermes_${{ MatrixEntry.Name }}
displayName: Build Hermes ${{ MatrixEntry.Name }}

dependsOn:
- Set_Versions

timeoutInMinutes: 300

variables:
- name: semanticVersion
value: $[ dependencies.Set_Versions.outputs['setVersions.semanticVersion'] ]
- name: fileVersion
value: $[ dependencies.Set_Versions.outputs['setVersions.fileVersion'] ]
# To be used in the build script
- name: fakeBuildArg
${{ if eq(parameters.FakeBuild, true) }}:
value: --fake-build
${{ else }}:
value: --no-fake-build

templateContext:
outputs:
# The base template takes care of publishing the artifacts.
- output: pipelineArtifact
artifactName: ${{ MatrixEntry.Name }}
targetPath: $(Build.StagingDirectory)\out\pkg-staging

steps:
# Node.js version >= 22.x is required to handle args in JS scripts.
- task: UseNode@1
displayName: Use Node.js 22.x
inputs:
version: 22.x

# Invoke the build specific for the target platform.
- script: >
node .ado\scripts\build.js
--output-path $(Build.StagingDirectory)\out
--platform ${{ MatrixEntry.TargetCPU }}
--configuration release
${{ MatrixEntry.BuildUWP }}
--semantic-version "$(semanticVersion)"
--file-version "$(fileVersion)"
$(fakeBuildArg)
displayName: Build binaries

# Show all built files to help debug issues.
- script: |
ls -R $(Build.StagingDirectory)\out
displayName: Show all files in the $$(Build.StagingDirectory)\out directory

# Run unit tests after the build is finished.
- ${{ if eq(MatrixEntry.CanRunTest, true) }}:
- script: >
node .ado\scripts\build.js
--no-build
--test
--output-path $(Build.StagingDirectory)\out
--platform ${{ MatrixEntry.TargetCPU }}
--configuration release
${{ MatrixEntry.BuildUWP }}
--semantic-version "$(semanticVersion)"
--file-version "$(fileVersion)"
$(fakeBuildArg)
displayName: Run unit tests

# Sign and publish symbols only for the CI builds and real builds.
- ${{ if and(eq(parameters.MustPublish, true), eq(parameters.FakeBuild, false)) }}:
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@5
displayName: CodeSign Binaries
inputs:
connectedServiceName: 'ESRP-JSHost3'
appRegistrationClientId: '0a35e01f-eadf-420a-a2bf-def002ba898d'
appRegistrationTenantId: 'cdc5aeea-15c5-4db6-b079-fcadd2505dc2'
authAKVName: 'OGX-JSHost-KV'
authCertName: 'OGX-JSHost-Auth4'
authSignCertName: 'OGX-JSHost-Sign3'
folderPath: $(Build.StagingDirectory)\out\pkg-staging
# Recursively finds files matching these patterns:
pattern: |
**\hermes.dll
**\hermes.exe
**\hermesc.exe
useMinimatch: true
signConfigType: inlineSignParams
inlineOperation: |
[
{
"KeyCode" : "CP-230012",
"OperationCode" : "SigntoolSign",
"Parameters" : {
"OpusName" : "Microsoft",
"OpusInfo" : "http://www.microsoft.com",
"FileDigest" : "/fd \"SHA256\"",
"PageHash" : "/NPH",
"TimeStamp" : "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
},
"ToolName" : "sign",
"ToolVersion" : "1.0"
},
{
"KeyCode" : "CP-230012",
"OperationCode" : "SigntoolVerify",
"Parameters" : {},
"ToolName" : "sign",
"ToolVersion" : "1.0"
}
]

# Make symbols available through http://symweb.
- task: PublishSymbols@2
displayName: Publish symbols
inputs:
SearchPattern: $(Build.StagingDirectory)\out\pkg-staging\**\*.pdb
SymbolServerType: TeamServices
UseNetCoreClientTool: true

#=============================================================================
# Create NuGet packages
#=============================================================================
- job: Create_Hermes_NuGet
displayName: Create Nuget packages

dependsOn:
- Set_Versions
- ${{ each MatrixEntry in parameters.BuildMatrix }}:
- Build_Hermes_${{ MatrixEntry.Name }}

variables:
- name: semanticVersion
value: $[ dependencies.Set_Versions.outputs['setVersions.semanticVersion'] ]
- name: fileVersion
value: $[ dependencies.Set_Versions.outputs['setVersions.fileVersion'] ]

templateContext:
outputs:
# The base template takes care of publishing the artifacts.
- output: pipelineArtifact
targetPath: $(Build.StagingDirectory)\out\pkg
artifactName: published-packages

steps:
# Node.js version >= 22.x is required to handle args in JS scripts.
- task: UseNode@1
displayName: Use Node.js 22.x
inputs:
version: 22.x

# The substitution tags in the nuspec require that we use at least NuGet 4.6.
- task: NuGetToolInstaller@0
displayName: Install NuGet tools
inputs:
versionSpec: ">=4.6.0"

# Download hermes binaries built in previous jobs.
- ${{ each MatrixEntry in parameters.BuildMatrix }}:
- task: DownloadPipelineArtifact@2
displayName: Download ${{ MatrixEntry.Name }} hermes artifacts
inputs:
artifact: ${{ MatrixEntry.Name }}
path: $(Build.StagingDirectory)\out\pkg-staging

# Create NuGet packages.
- script: >
node .ado\scripts\build.js
--output-path $(Build.StagingDirectory)\out
--no-build
--pack
--semantic-version "$(semanticVersion)"
--file-version "$(fileVersion)"
displayName: Create NuGet packages

# Sign the NuGet packages only for CI builds.
- ${{ if parameters.MustPublish }}:
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@5
displayName: CodeSign NuGets
inputs:
connectedServiceName: 'ESRP-JSHost3'
appRegistrationClientId: '0a35e01f-eadf-420a-a2bf-def002ba898d'
appRegistrationTenantId: 'cdc5aeea-15c5-4db6-b079-fcadd2505dc2'
authAKVName: 'OGX-JSHost-KV'
authCertName: 'OGX-JSHost-Auth4'
authSignCertName: 'OGX-JSHost-Sign3'
folderPath: $(Build.StagingDirectory)\out\pkg
pattern: |
Microsoft.JavaScript.Hermes.*.nupkg
useMinimatch: true
signConfigType: inlineSignParams
inlineOperation: |
[
{
"KeyCode" : "CP-401405",
"OperationCode" : "NuGetSign",
"Parameters" : {},
"ToolName" : "sign",
"ToolVersion" : "1.0"
},
{
"KeyCode" : "CP-401405",
"OperationCode" : "NuGetVerify",
"Parameters" : {},
"ToolName" : "sign",
"ToolVersion" : "1.0"
}
]
29 changes: 29 additions & 0 deletions .ado/ci-pipeline.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#
# The CI pipeline entry point.
#

# The name is parsed by setVersionNumber.js script which then updates the name of the run.
#
# The release branch versions "rnw/*" start with the release number
# such as "0.69." or "0.70." and follow the revision number.
# name: 0.70.$(Rev:r)
#
# The main branch pre-release versions start with "0.0."
# and follow the date and revision number.
name: 0.0.$(Date:yyMM.d)$(Rev:rrr)

# The triggers are overridden by the ADO pipeline definitions.
trigger: none
pr: none

variables:
- name: tags
value: production,externalfacing

extends:
template: build-template.yml@self
parameters:
# CI builds must publish the binaries and packages.
MustPublish: true
# It must be false for real builds. Use true only for debugging.
FakeBuild: false
Loading