Skip to content

JavaScriptCore macOS xcode16.0 b1

Rolf Bjarne Kvinge edited this page Jul 11, 2024 · 3 revisions

#JavaScriptCore.framework https://github.com/xamarin/xamarin-macios/pull/20883

diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSBase.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSBase.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSBase.h	2024-05-02 05:45:25
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSBase.h	2024-05-30 11:00:22
@@ -152,4 +152,34 @@
 #endif
 #endif
 
+#if JSC_OBJC_API_ENABLED
+#define JSC_CF_ENUM(enumName, ...)       \
+    typedef CF_ENUM(uint32_t, enumName) { \
+        __VA_ARGS__                       \
+    }
+#else
+#define JSC_CF_ENUM(enumName, ...) \
+    typedef enum {                  \
+        __VA_ARGS__                 \
+    } enumName
+#endif
+
+#if JSC_OBJC_API_ENABLED
+#define JSC_ASSUME_NONNULL_BEGIN _Pragma("clang assume_nonnull begin")
+#define JSC_ASSUME_NONNULL_END _Pragma("clang assume_nonnull end")
+#else
+#define JSC_ASSUME_NONNULL_BEGIN
+#define JSC_ASSUME_NONNULL_END
+#endif
+
+#if JSC_OBJC_API_ENABLED
+#define JSC_NULL_UNSPECIFIED _Null_unspecified
+#define JSC_NULLABLE _Nullable
+#define JSC_NONNULL _Nonnull
+#else
+#define JSC_NULL_UNSPECIFIED
+#define JSC_NULLABLE
+#define JSC_NONNULL
+#endif
+
 #endif /* JSBase_h */
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSContext.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSContext.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSContext.h	2024-05-02 05:45:26
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSContext.h	2024-05-30 10:56:37
@@ -36,7 +36,7 @@
  JavaScript execution takes place within a context, and all JavaScript values
  are tied to a context.
 */
-JSC_CLASS_AVAILABLE(macos(10.9), ios(7.0))
+JS_EXPORT API_AVAILABLE(macos(10.9), ios(7.0))
 @interface JSContext : NSObject
 
 /*!
@@ -75,7 +75,7 @@
 @param sourceURL A URL for the script's source file. Used by debuggers and when reporting exceptions. This parameter is informative only: it does not change the behavior of the script.
 @result The last value generated by the script.
 */
-- (JSValue *)evaluateScript:(NSString *)script withSourceURL:(NSURL *)sourceURL JSC_API_AVAILABLE(macos(10.10), ios(8.0));
+- (JSValue *)evaluateScript:(NSString *)script withSourceURL:(NSURL *)sourceURL API_AVAILABLE(macos(10.10), ios(8.0));
 
 /*!
 @methodgroup Callback Accessors
@@ -98,7 +98,7 @@
  a callback from JavaScript this method will return nil.
 @result The currently executing JavaScript function or nil if there isn't one.
 */
-+ (JSValue *)currentCallee JSC_API_AVAILABLE(macos(10.10), ios(8.0));
++ (JSValue *)currentCallee API_AVAILABLE(macos(10.10), ios(8.0));
 
 /*!
 @method
@@ -173,13 +173,13 @@
 @property
 @discussion Name of the JSContext. Exposed when inspecting the context.
 */
-@property (copy) NSString *name JSC_API_AVAILABLE(macos(10.10), ios(8.0));
+@property (copy) NSString *name API_AVAILABLE(macos(10.10), ios(8.0));
 
 /*!
 @property
 @discussion Controls whether this @link JSContext @/link is inspectable in Web Inspector. The default value is NO.
 */
-@property (nonatomic, getter=isInspectable) BOOL inspectable JSC_API_AVAILABLE(macos(13.3), ios(16.4)) NS_SWIFT_NAME(isInspectable);
+@property (nonatomic, getter=isInspectable) BOOL inspectable API_AVAILABLE(macos(13.3), ios(16.4)) NS_SWIFT_NAME(isInspectable);
 
 @end
 
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSContextRef.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSContextRef.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSContextRef.h	2024-04-23 06:06:01
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSContextRef.h	2024-05-30 08:41:27
@@ -53,7 +53,7 @@
  JSContextGroup's run loop once it has been created.
 @result The created JSContextGroup.
 */
-JS_EXPORT JSContextGroupRef JSContextGroupCreate(void) JSC_API_AVAILABLE(macos(10.6), ios(7.0));
+JS_EXPORT JSContextGroupRef JSContextGroupCreate(void) API_AVAILABLE(macos(10.6), ios(7.0));
 
 /*!
 @function
@@ -61,14 +61,14 @@
 @param group The JSContextGroup to retain.
 @result A JSContextGroup that is the same as group.
 */
-JS_EXPORT JSContextGroupRef JSContextGroupRetain(JSContextGroupRef group) JSC_API_AVAILABLE(macos(10.6), ios(7.0));
+JS_EXPORT JSContextGroupRef JSContextGroupRetain(JSContextGroupRef group) API_AVAILABLE(macos(10.6), ios(7.0));
 
 /*!
 @function
 @abstract Releases a JavaScript context group.
 @param group The JSContextGroup to release.
 */
-JS_EXPORT void JSContextGroupRelease(JSContextGroupRef group) JSC_API_AVAILABLE(macos(10.6), ios(7.0));
+JS_EXPORT void JSContextGroupRelease(JSContextGroupRef group) API_AVAILABLE(macos(10.6), ios(7.0));
 
 /*!
 @function
@@ -83,7 +83,7 @@
  NULL to use the default object class.
 @result A JSGlobalContext with a global object of class globalObjectClass.
 */
-JS_EXPORT JSGlobalContextRef JSGlobalContextCreate(JSClassRef globalObjectClass) JSC_API_AVAILABLE(macos(10.5), ios(7.0));
+JS_EXPORT JSGlobalContextRef JSGlobalContextCreate(JSClassRef globalObjectClass) API_AVAILABLE(macos(10.5), ios(7.0));
 
 /*!
 @function
@@ -97,7 +97,7 @@
 @result A JSGlobalContext with a global object of class globalObjectClass and a context
  group equal to group.
 */
-JS_EXPORT JSGlobalContextRef JSGlobalContextCreateInGroup(JSContextGroupRef group, JSClassRef globalObjectClass) JSC_API_AVAILABLE(macos(10.6), ios(7.0));
+JS_EXPORT JSGlobalContextRef JSGlobalContextCreateInGroup(JSContextGroupRef group, JSClassRef globalObjectClass) API_AVAILABLE(macos(10.6), ios(7.0));
 
 /*!
 @function
@@ -128,7 +128,7 @@
 @param ctx The JSContext whose group you want to get.
 @result ctx's group.
 */
-JS_EXPORT JSContextGroupRef JSContextGetGroup(JSContextRef ctx) JSC_API_AVAILABLE(macos(10.6), ios(7.0));
+JS_EXPORT JSContextGroupRef JSContextGetGroup(JSContextRef ctx) API_AVAILABLE(macos(10.6), ios(7.0));
 
 /*!
 @function
@@ -136,7 +136,7 @@
 @param ctx The JSContext whose global context you want to get.
 @result ctx's global context.
 */
-JS_EXPORT JSGlobalContextRef JSContextGetGlobalContext(JSContextRef ctx) JSC_API_AVAILABLE(macos(10.7), ios(7.0));
+JS_EXPORT JSGlobalContextRef JSContextGetGlobalContext(JSContextRef ctx) API_AVAILABLE(macos(10.7), ios(7.0));
 
 /*!
 @function
@@ -145,7 +145,7 @@
 @result The name for ctx.
 @discussion A JSGlobalContext's name is exposed when inspecting the context to make it easier to identify the context you would like to inspect.
 */
-JS_EXPORT JSStringRef JSGlobalContextCopyName(JSGlobalContextRef ctx) JSC_API_AVAILABLE(macos(10.10), ios(8.0));
+JS_EXPORT JSStringRef JSGlobalContextCopyName(JSGlobalContextRef ctx) API_AVAILABLE(macos(10.10), ios(8.0));
 
 /*!
 @function
@@ -153,7 +153,7 @@
 @param ctx The JSGlobalContext that you want to name.
 @param name The name to set on the context.
 */
-JS_EXPORT void JSGlobalContextSetName(JSGlobalContextRef ctx, JSStringRef name) JSC_API_AVAILABLE(macos(10.10), ios(8.0));
+JS_EXPORT void JSGlobalContextSetName(JSGlobalContextRef ctx, JSStringRef name) API_AVAILABLE(macos(10.10), ios(8.0));
 
 /*!
 @function
@@ -161,7 +161,7 @@
 @param ctx The JSGlobalContext that you want to change the inspectability of.
 @result Whether the context is inspectable in Web Inspector.
 */
-JS_EXPORT bool JSGlobalContextIsInspectable(JSGlobalContextRef ctx) JSC_API_AVAILABLE(macos(13.3), ios(16.4));
+JS_EXPORT bool JSGlobalContextIsInspectable(JSGlobalContextRef ctx) API_AVAILABLE(macos(13.3), ios(16.4));
 
 /*!
 @function
@@ -169,7 +169,7 @@
 @param ctx The JSGlobalContext that you want to change the inspectability of.
 @param inspectable YES to allow Web Inspector to connect to the context, otherwise NO.
 */
-JS_EXPORT void JSGlobalContextSetInspectable(JSGlobalContextRef ctx, bool inspectable) JSC_API_AVAILABLE(macos(13.3), ios(16.4));
+JS_EXPORT void JSGlobalContextSetInspectable(JSGlobalContextRef ctx, bool inspectable) API_AVAILABLE(macos(13.3), ios(16.4));
 
 #ifdef __cplusplus
 }
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSManagedValue.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSManagedValue.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSManagedValue.h	2024-04-23 06:06:01
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSManagedValue.h	2024-05-30 08:41:27
@@ -57,7 +57,7 @@
 @result The new JSManagedValue.
 */
 + (JSManagedValue *)managedValueWithValue:(JSValue *)value;
-+ (JSManagedValue *)managedValueWithValue:(JSValue *)value andOwner:(id)owner JSC_API_AVAILABLE(macos(10.10), ios(8.0));
++ (JSManagedValue *)managedValueWithValue:(JSValue *)value andOwner:(id)owner API_AVAILABLE(macos(10.10), ios(8.0));
 
 /*!
 @method
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSObjectRef.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSObjectRef.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSObjectRef.h	2024-04-09 04:03:37
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSObjectRef.h	2024-05-31 07:25:13
@@ -443,7 +443,7 @@
  @discussion The behavior of this function does not exactly match the behavior of the built-in Array constructor. Specifically, if one argument 
  is supplied, this function returns an array with one element.
  */
-JS_EXPORT JSObjectRef JSObjectMakeArray(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) JSC_API_AVAILABLE(macos(10.6), ios(7.0));
+JS_EXPORT JSObjectRef JSObjectMakeArray(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) API_AVAILABLE(macos(10.6), ios(7.0));
 
 /*!
  @function
@@ -454,7 +454,7 @@
  @param exception A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
  @result A JSObject that is a Date.
  */
-JS_EXPORT JSObjectRef JSObjectMakeDate(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) JSC_API_AVAILABLE(macos(10.6), ios(7.0));
+JS_EXPORT JSObjectRef JSObjectMakeDate(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) API_AVAILABLE(macos(10.6), ios(7.0));
 
 /*!
  @function
@@ -465,7 +465,7 @@
  @param exception A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
  @result A JSObject that is an Error.
  */
-JS_EXPORT JSObjectRef JSObjectMakeError(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) JSC_API_AVAILABLE(macos(10.6), ios(7.0));
+JS_EXPORT JSObjectRef JSObjectMakeError(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) API_AVAILABLE(macos(10.6), ios(7.0));
 
 /*!
  @function
@@ -476,7 +476,7 @@
  @param exception A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
  @result A JSObject that is a RegExp.
  */
-JS_EXPORT JSObjectRef JSObjectMakeRegExp(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) JSC_API_AVAILABLE(macos(10.6), ios(7.0));
+JS_EXPORT JSObjectRef JSObjectMakeRegExp(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) API_AVAILABLE(macos(10.6), ios(7.0));
 
 /*!
  @function
@@ -487,7 +487,7 @@
  @param exception A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
  @result A JSObject that is a promise or NULL if an exception occurred.
  */
-JS_EXPORT JSObjectRef JSObjectMakeDeferredPromise(JSContextRef ctx, JSObjectRef* resolve, JSObjectRef* reject, JSValueRef* exception) JSC_API_AVAILABLE(macos(10.15), ios(13.0));
+JS_EXPORT JSObjectRef JSObjectMakeDeferredPromise(JSContextRef ctx, JSObjectRef* resolve, JSObjectRef* reject, JSValueRef* exception) API_AVAILABLE(macos(10.15), ios(13.0));
 
 /*!
 @function
@@ -575,7 +575,7 @@
  @result true if the object has a property whose name matches propertyKey, otherwise false.
  @discussion This function is the same as performing "propertyKey in object" from JavaScript.
  */
-JS_EXPORT bool JSObjectHasPropertyForKey(JSContextRef ctx, JSObjectRef object, JSValueRef propertyKey, JSValueRef* exception) JSC_API_AVAILABLE(macos(10.15), ios(13.0));
+JS_EXPORT bool JSObjectHasPropertyForKey(JSContextRef ctx, JSObjectRef object, JSValueRef propertyKey, JSValueRef* exception) API_AVAILABLE(macos(10.15), ios(13.0));
 
 /*!
  @function
@@ -587,7 +587,7 @@
  @result The property's value if object has the property key, otherwise the undefined value.
  @discussion This function is the same as performing "object[propertyKey]" from JavaScript.
  */
-JS_EXPORT JSValueRef JSObjectGetPropertyForKey(JSContextRef ctx, JSObjectRef object, JSValueRef propertyKey, JSValueRef* exception) JSC_API_AVAILABLE(macos(10.15), ios(13.0));
+JS_EXPORT JSValueRef JSObjectGetPropertyForKey(JSContextRef ctx, JSObjectRef object, JSValueRef propertyKey, JSValueRef* exception) API_AVAILABLE(macos(10.15), ios(13.0));
 
 /*!
  @function
@@ -600,7 +600,7 @@
  @param exception A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
  @discussion This function is the same as performing "object[propertyKey] = value" from JavaScript.
  */
-JS_EXPORT void JSObjectSetPropertyForKey(JSContextRef ctx, JSObjectRef object, JSValueRef propertyKey, JSValueRef value, JSPropertyAttributes attributes, JSValueRef* exception) JSC_API_AVAILABLE(macos(10.15), ios(13.0));
+JS_EXPORT void JSObjectSetPropertyForKey(JSContextRef ctx, JSObjectRef object, JSValueRef propertyKey, JSValueRef value, JSPropertyAttributes attributes, JSValueRef* exception) API_AVAILABLE(macos(10.15), ios(13.0));
 
 /*!
  @function
@@ -612,7 +612,7 @@
  @result true if the delete operation succeeds, otherwise false (for example, if the property has the kJSPropertyAttributeDontDelete attribute set).
  @discussion This function is the same as performing "delete object[propertyKey]" from JavaScript.
  */
-JS_EXPORT bool JSObjectDeletePropertyForKey(JSContextRef ctx, JSObjectRef object, JSValueRef propertyKey, JSValueRef* exception) JSC_API_AVAILABLE(macos(10.15), ios(13.0));
+JS_EXPORT bool JSObjectDeletePropertyForKey(JSContextRef ctx, JSObjectRef object, JSValueRef propertyKey, JSValueRef* exception) API_AVAILABLE(macos(10.15), ios(13.0));
 
 /*!
 @function
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSTypedArray.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSTypedArray.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSTypedArray.h	2024-04-23 05:59:32
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSTypedArray.h	2024-05-30 08:33:47
@@ -45,7 +45,7 @@
  @param exception    A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
  @result             A JSObjectRef that is a Typed Array with all elements set to zero or NULL if there was an error.
  */
-JS_EXPORT JSObjectRef JSObjectMakeTypedArray(JSContextRef ctx, JSTypedArrayType arrayType, size_t length, JSValueRef* exception) JSC_API_AVAILABLE(macos(10.12), ios(10.0));
+JS_EXPORT JSObjectRef JSObjectMakeTypedArray(JSContextRef ctx, JSTypedArrayType arrayType, size_t length, JSValueRef* exception) API_AVAILABLE(macos(10.12), ios(10.0));
 
 /*!
  @function
@@ -60,7 +60,7 @@
  @result                   A JSObjectRef Typed Array whose backing store is the same as the one pointed to by bytes or NULL if there was an error.
  @discussion               If an exception is thrown during this function the bytesDeallocator will always be called.
  */
-JS_EXPORT JSObjectRef JSObjectMakeTypedArrayWithBytesNoCopy(JSContextRef ctx, JSTypedArrayType arrayType, void* bytes, size_t byteLength, JSTypedArrayBytesDeallocator bytesDeallocator, void* deallocatorContext, JSValueRef* exception) JSC_API_AVAILABLE(macos(10.12), ios(10.0));
+JS_EXPORT JSObjectRef JSObjectMakeTypedArrayWithBytesNoCopy(JSContextRef ctx, JSTypedArrayType arrayType, void* bytes, size_t byteLength, JSTypedArrayBytesDeallocator bytesDeallocator, void* deallocatorContext, JSValueRef* exception) API_AVAILABLE(macos(10.12), ios(10.0));
 
 /*!
  @function
@@ -71,7 +71,7 @@
  @param exception    A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
  @result             A JSObjectRef that is a Typed Array or NULL if there was an error. The backing store of the Typed Array will be buffer.
  */
-JS_EXPORT JSObjectRef JSObjectMakeTypedArrayWithArrayBuffer(JSContextRef ctx, JSTypedArrayType arrayType, JSObjectRef buffer, JSValueRef* exception) JSC_API_AVAILABLE(macos(10.12), ios(10.0));
+JS_EXPORT JSObjectRef JSObjectMakeTypedArrayWithArrayBuffer(JSContextRef ctx, JSTypedArrayType arrayType, JSObjectRef buffer, JSValueRef* exception) API_AVAILABLE(macos(10.12), ios(10.0));
 
 /*!
  @function
@@ -84,7 +84,7 @@
  @param exception    A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
  @result             A JSObjectRef that is a Typed Array or NULL if there was an error. The backing store of the Typed Array will be buffer.
  */
-JS_EXPORT JSObjectRef JSObjectMakeTypedArrayWithArrayBufferAndOffset(JSContextRef ctx, JSTypedArrayType arrayType, JSObjectRef buffer, size_t byteOffset, size_t length, JSValueRef* exception) JSC_API_AVAILABLE(macos(10.12), ios(10.0));
+JS_EXPORT JSObjectRef JSObjectMakeTypedArrayWithArrayBufferAndOffset(JSContextRef ctx, JSTypedArrayType arrayType, JSObjectRef buffer, size_t byteOffset, size_t length, JSValueRef* exception) API_AVAILABLE(macos(10.12), ios(10.0));
 
 /*!
  @function
@@ -95,7 +95,7 @@
  @result             A pointer to the raw data buffer that serves as object's backing store or NULL if object is not a Typed Array object.
  @discussion         The pointer returned by this function is temporary and is not guaranteed to remain valid across JavaScriptCore API calls.
  */
-JS_EXPORT void* JSObjectGetTypedArrayBytesPtr(JSContextRef ctx, JSObjectRef object, JSValueRef* exception) JSC_API_AVAILABLE(macos(10.12), ios(10.0));
+JS_EXPORT void* JSObjectGetTypedArrayBytesPtr(JSContextRef ctx, JSObjectRef object, JSValueRef* exception) API_AVAILABLE(macos(10.12), ios(10.0));
 
 /*!
  @function
@@ -105,7 +105,7 @@
  @param exception    A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
  @result             The length of the Typed Array object or 0 if the object is not a Typed Array object.
  */
-JS_EXPORT size_t JSObjectGetTypedArrayLength(JSContextRef ctx, JSObjectRef object, JSValueRef* exception) JSC_API_AVAILABLE(macos(10.12), ios(10.0));
+JS_EXPORT size_t JSObjectGetTypedArrayLength(JSContextRef ctx, JSObjectRef object, JSValueRef* exception) API_AVAILABLE(macos(10.12), ios(10.0));
 
 /*!
  @function
@@ -115,7 +115,7 @@
  @param exception    A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
  @result             The byte length of the Typed Array object or 0 if the object is not a Typed Array object.
  */
-JS_EXPORT size_t JSObjectGetTypedArrayByteLength(JSContextRef ctx, JSObjectRef object, JSValueRef* exception) JSC_API_AVAILABLE(macos(10.12), ios(10.0));
+JS_EXPORT size_t JSObjectGetTypedArrayByteLength(JSContextRef ctx, JSObjectRef object, JSValueRef* exception) API_AVAILABLE(macos(10.12), ios(10.0));
 
 /*!
  @function
@@ -125,7 +125,7 @@
  @param exception    A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
  @result             The byte offset of the Typed Array object or 0 if the object is not a Typed Array object.
  */
-JS_EXPORT size_t JSObjectGetTypedArrayByteOffset(JSContextRef ctx, JSObjectRef object, JSValueRef* exception) JSC_API_AVAILABLE(macos(10.12), ios(10.0));
+JS_EXPORT size_t JSObjectGetTypedArrayByteOffset(JSContextRef ctx, JSObjectRef object, JSValueRef* exception) API_AVAILABLE(macos(10.12), ios(10.0));
 
 /*!
  @function
@@ -135,7 +135,7 @@
  @param exception    A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
  @result             A JSObjectRef with a JSTypedArrayType of kJSTypedArrayTypeArrayBuffer or NULL if object is not a Typed Array.
  */
-JS_EXPORT JSObjectRef JSObjectGetTypedArrayBuffer(JSContextRef ctx, JSObjectRef object, JSValueRef* exception) JSC_API_AVAILABLE(macos(10.12), ios(10.0));
+JS_EXPORT JSObjectRef JSObjectGetTypedArrayBuffer(JSContextRef ctx, JSObjectRef object, JSValueRef* exception) API_AVAILABLE(macos(10.12), ios(10.0));
 
 // ------------- Array Buffer functions -------------
 
@@ -151,7 +151,7 @@
  @result                   A JSObjectRef Array Buffer whose backing store is the same as the one pointed to by bytes or NULL if there was an error.
  @discussion               If an exception is thrown during this function the bytesDeallocator will always be called.
  */
-JS_EXPORT JSObjectRef JSObjectMakeArrayBufferWithBytesNoCopy(JSContextRef ctx, void* bytes, size_t byteLength, JSTypedArrayBytesDeallocator bytesDeallocator, void* deallocatorContext, JSValueRef* exception) JSC_API_AVAILABLE(macos(10.12), ios(10.0));
+JS_EXPORT JSObjectRef JSObjectMakeArrayBufferWithBytesNoCopy(JSContextRef ctx, void* bytes, size_t byteLength, JSTypedArrayBytesDeallocator bytesDeallocator, void* deallocatorContext, JSValueRef* exception) API_AVAILABLE(macos(10.12), ios(10.0));
 
 /*!
  @function
@@ -161,7 +161,7 @@
  @result           A pointer to the raw data buffer that serves as object's backing store or NULL if object is not an Array Buffer object.
  @discussion       The pointer returned by this function is temporary and is not guaranteed to remain valid across JavaScriptCore API calls.
  */
-JS_EXPORT void* JSObjectGetArrayBufferBytesPtr(JSContextRef ctx, JSObjectRef object, JSValueRef* exception) JSC_API_AVAILABLE(macos(10.12), ios(10.0));
+JS_EXPORT void* JSObjectGetArrayBufferBytesPtr(JSContextRef ctx, JSObjectRef object, JSValueRef* exception) API_AVAILABLE(macos(10.12), ios(10.0));
 
 /*!
  @function
@@ -171,7 +171,7 @@
  @param exception  A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
  @result           The number of bytes stored in the data object.
  */
-JS_EXPORT size_t JSObjectGetArrayBufferByteLength(JSContextRef ctx, JSObjectRef object, JSValueRef* exception) JSC_API_AVAILABLE(macos(10.12), ios(10.0));
+JS_EXPORT size_t JSObjectGetArrayBufferByteLength(JSContextRef ctx, JSObjectRef object, JSValueRef* exception) API_AVAILABLE(macos(10.12), ios(10.0));
 
 #ifdef __cplusplus
 }
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSValue.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSValue.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSValue.h	2024-04-23 06:06:01
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSValue.h	2024-05-30 08:41:27
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2013-2019 Apple Inc. All rights reserved.
+ * Copyright (C) 2013-2024 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -51,7 +51,7 @@
 @property
 @abstract The JSContext that this value originates from.
 */
-@property (readonly, strong) JSContext *context;
+@property (readonly, strong) JSContext * _Null_unspecified context;
 
 /*!
 @methodgroup Creating JavaScript Values
@@ -63,7 +63,7 @@
 @param value The Objective-C object to be converted.
 @result The new JSValue.
 */
-+ (JSValue *)valueWithObject:(id)value inContext:(JSContext *)context;
++ (JSValue * _Null_unspecified)valueWithObject:(id _Null_unspecified)value inContext:(JSContext * _Null_unspecified)context;
 
 /*!
 @method
@@ -71,7 +71,7 @@
 @param context The JSContext in which the resulting JSValue will be created.
 @result The new JSValue representing the equivalent boolean value.
 */
-+ (JSValue *)valueWithBool:(BOOL)value inContext:(JSContext *)context;
++ (JSValue * _Null_unspecified)valueWithBool:(BOOL)value inContext:(JSContext * _Null_unspecified)context;
 
 /*!
 @method
@@ -79,7 +79,7 @@
 @param context The JSContext in which the resulting JSValue will be created.
 @result The new JSValue representing the equivalent boolean value.
 */
-+ (JSValue *)valueWithDouble:(double)value inContext:(JSContext *)context;
++ (JSValue * _Null_unspecified)valueWithDouble:(double)value inContext:(JSContext * _Null_unspecified)context;
 
 /*!
 @method
@@ -87,7 +87,7 @@
 @param context The JSContext in which the resulting JSValue will be created.
 @result The new JSValue representing the equivalent boolean value.
 */
-+ (JSValue *)valueWithInt32:(int32_t)value inContext:(JSContext *)context;
++ (JSValue * _Null_unspecified)valueWithInt32:(int32_t)value inContext:(JSContext * _Null_unspecified)context;
 
 /*!
 @method
@@ -95,7 +95,7 @@
 @param context The JSContext in which the resulting JSValue will be created.
 @result The new JSValue representing the equivalent boolean value.
 */
-+ (JSValue *)valueWithUInt32:(uint32_t)value inContext:(JSContext *)context;
++ (JSValue * _Null_unspecified)valueWithUInt32:(uint32_t)value inContext:(JSContext * _Null_unspecified)context;
 
 /*!
 @method
@@ -103,7 +103,7 @@
 @param context The JSContext in which the resulting object will be created.
 @result The new JavaScript object.
 */
-+ (JSValue *)valueWithNewObjectInContext:(JSContext *)context;
++ (JSValue * _Null_unspecified)valueWithNewObjectInContext:(JSContext * _Null_unspecified)context;
 
 /*!
 @method
@@ -111,7 +111,7 @@
 @param context The JSContext in which the resulting array will be created.
 @result The new JavaScript array.
 */
-+ (JSValue *)valueWithNewArrayInContext:(JSContext *)context;
++ (JSValue * _Null_unspecified)valueWithNewArrayInContext:(JSContext * _Null_unspecified)context;
 
 /*!
 @method
@@ -121,7 +121,7 @@
 @param context The JSContext in which the resulting regular expression object will be created.
 @result The new JavaScript regular expression object.
 */
-+ (JSValue *)valueWithNewRegularExpressionFromPattern:(NSString *)pattern flags:(NSString *)flags inContext:(JSContext *)context;
++ (JSValue * _Null_unspecified)valueWithNewRegularExpressionFromPattern:(NSString * _Null_unspecified)pattern flags:(NSString * _Null_unspecified)flags inContext:(JSContext * _Null_unspecified)context;
 
 /*!
 @method
@@ -130,7 +130,7 @@
 @param context The JSContext in which the resulting error object will be created.
 @result The new JavaScript error object.
 */
-+ (JSValue *)valueWithNewErrorFromMessage:(NSString *)message inContext:(JSContext *)context;
++ (JSValue * _Null_unspecified)valueWithNewErrorFromMessage:(NSString * _Null_unspecified)message inContext:(JSContext * _Null_unspecified)context;
 
 /*!
 @method
@@ -140,7 +140,7 @@
 @result The JSValue representing a new promise JavaScript object.
 @discussion This method is equivalent to calling the Promise constructor in JavaScript. the resolve and reject callbacks each normally take a single value, which they forward to all relevent pending reactions. While inside the executor callback context will act as if it were in any other callback, except calleeFunction will be <code>nil</code>. This also means means the new promise object may be accessed via <code>[context thisValue]</code>.
 */
-+ (JSValue *)valueWithNewPromiseInContext:(JSContext *)context fromExecutor:(void (^)(JSValue *resolve, JSValue *reject))callback JSC_API_AVAILABLE(macos(10.15), ios(13.0));
++ (JSValue * _Null_unspecified)valueWithNewPromiseInContext:(JSContext * _Null_unspecified)context fromExecutor:(void (^ _Null_unspecified)(JSValue * _Null_unspecified resolve, JSValue * _Null_unspecified reject))callback API_AVAILABLE(macos(10.15), ios(13.0));
 
 /*!
 @method
@@ -150,7 +150,7 @@
 @result The JSValue representing a new promise JavaScript object.
 @discussion This method is equivalent to calling <code>[JSValue valueWithNewPromiseFromExecutor:^(JSValue *resolve, JSValue *reject) { [resolve callWithArguments:@[result]]; } inContext:context]</code>
 */
-+ (JSValue *)valueWithNewPromiseResolvedWithResult:(id)result inContext:(JSContext *)context JSC_API_AVAILABLE(macos(10.15), ios(13.0));
++ (JSValue * _Null_unspecified)valueWithNewPromiseResolvedWithResult:(id _Null_unspecified)result inContext:(JSContext * _Null_unspecified)context API_AVAILABLE(macos(10.15), ios(13.0));
 
 /*!
 @method
@@ -160,7 +160,7 @@
 @result The JSValue representing a new promise JavaScript object.
 @discussion This method is equivalent to calling <code>[JSValue valueWithNewPromiseFromExecutor:^(JSValue *resolve, JSValue *reject) { [reject callWithArguments:@[reason]]; } inContext:context]</code>
 */
-+ (JSValue *)valueWithNewPromiseRejectedWithReason:(id)reason inContext:(JSContext *)context JSC_API_AVAILABLE(macos(10.15), ios(13.0));
++ (JSValue * _Null_unspecified)valueWithNewPromiseRejectedWithReason:(id _Null_unspecified)reason inContext:(JSContext * _Null_unspecified)context API_AVAILABLE(macos(10.15), ios(13.0));
 
 /*!
 @method
@@ -169,15 +169,53 @@
 @param context The JSContext to which the resulting JSValue belongs.
 @result The JSValue representing a unique JavaScript value with type symbol.
 */
-+ (JSValue *)valueWithNewSymbolFromDescription:(NSString *)description inContext:(JSContext *)context JSC_API_AVAILABLE(macos(10.15), ios(13.0));
++ (JSValue * _Null_unspecified)valueWithNewSymbolFromDescription:(NSString * _Null_unspecified)description inContext:(JSContext * _Null_unspecified)context API_AVAILABLE(macos(10.15), ios(13.0));
 
 /*!
 @method
+@abstract Create a new BigInt value from a numeric string.
+@param string The string representation of the BigInt JavaScript value being created.
+@param context The JSContext to which the resulting JSValue belongs.
+@result The JSValue representing a JavaScript value with type BigInt.
+@discussion This is equivalent to calling the <code>BigInt</code> constructor from JavaScript with a string argument.
+*/
++ (nullable JSValue *)valueWithNewBigIntFromString:(nonnull NSString *)string inContext:(nonnull JSContext *)context API_AVAILABLE(macos(15.0), ios(NA));
+
+/*!
+@method
+@abstract Create a new BigInt value from a <code>int64_t</code>.
+@param int64 The signed 64-bit integer of the BigInt JavaScript value being created.
+@param context The JSContext to which the resulting JSValue belongs.
+@result The JSValue representing a JavaScript value with type BigInt.
+*/
++ (nullable JSValue *)valueWithNewBigIntFromInt64:(int64_t)int64 inContext:(nonnull JSContext *)context API_AVAILABLE(macos(15.0), ios(NA));
+
+/*!
+@method
+@abstract Create a new BigInt value from a <code>uint64_t</code>.
+@param uint64 The unsigned 64-bit integer of the BigInt JavaScript value being created.
+@param context The JSContext to which the resulting JSValue belongs.
+@result The JSValue representing a JavaScript value with type BigInt.
+*/
++ (nullable JSValue *)valueWithNewBigIntFromUInt64:(uint64_t)uint64 inContext:(nonnull JSContext *)context API_AVAILABLE(macos(15.0), ios(NA));
+
+/*!
+@method
+@abstract Create a new BigInt value from a double.
+@param value The value of the BigInt JavaScript value being created.
+@param context The JSContext to which the resulting JSValue belongs.
+@result The JSValue representing a JavaScript value with type BigInt.
+@discussion If the value is not an integer, an exception is thrown.
+*/
++ (nullable JSValue *)valueWithNewBigIntFromDouble:(double)value inContext:(nonnull JSContext *)context API_AVAILABLE(macos(15.0), ios(NA));
+
+/*!
+@method
 @abstract Create the JavaScript value <code>null</code>.
 @param context The JSContext to which the resulting JSValue belongs.
 @result The JSValue representing the JavaScript value <code>null</code>.
 */
-+ (JSValue *)valueWithNullInContext:(JSContext *)context;
++ (JSValue * _Null_unspecified)valueWithNullInContext:(JSContext * _Null_unspecified)context;
 
 /*!
 @method
@@ -185,7 +223,7 @@
 @param context The JSContext to which the resulting JSValue belongs.
 @result The JSValue representing the JavaScript value <code>undefined</code>.
 */
-+ (JSValue *)valueWithUndefinedInContext:(JSContext *)context;
++ (JSValue * _Null_unspecified)valueWithUndefinedInContext:(JSContext * _Null_unspecified)context;
 
 /*!
 @methodgroup Converting to Objective-C Types
@@ -240,7 +278,7 @@
  to the conversion rules specified above.
 @result The Objective-C representation of this JSValue.
 */
-- (id)toObject;
+- (id _Null_unspecified)toObject;
 
 /*!
 @method
@@ -249,7 +287,7 @@
  If the result is not of the specified Class then <code>nil</code> will be returned.
 @result An Objective-C object of the specified Class or <code>nil</code>.
 */
-- (id)toObjectOfClass:(Class)expectedClass;
+- (id _Null_unspecified)toObjectOfClass:(Class _Null_unspecified)expectedClass;
 
 /*!
 @method
@@ -263,17 +301,15 @@
 /*!
 @method
 @abstract Convert a JSValue to a double.
-@discussion The JSValue is converted to a number according to the rules specified 
- by the JavaScript language.
 @result The double result of the conversion.
+@discussion Convert the JSValue to a number according to the rules specified by the JavaScript language. Unless the JSValue is a BigInt then this is equivalent to <code>Number(value)</code> in JavaScript.
 */
 - (double)toDouble;
 
 /*!
 @method
 @abstract Convert a JSValue to an <code>int32_t</code>.
-@discussion The JSValue is converted to an integer according to the rules specified 
- by the JavaScript language.
+@discussion The JSValue is converted to an integer according to the rules specified by the JavaScript language. If the JSValue is a BigInt, then the value is truncated to an <code>int32_t</code>.
 @result The <code>int32_t</code> result of the conversion.
 */
 - (int32_t)toInt32;
@@ -281,21 +317,33 @@
 /*!
 @method
 @abstract Convert a JSValue to a <code>uint32_t</code>.
-@discussion The JSValue is converted to an integer according to the rules specified 
- by the JavaScript language.
+@discussion The JSValue is converted to an integer according to the rules specified by the JavaScript language. If the JSValue is a BigInt, then the value is truncated to a <code>uint32_t</code>.
 @result The <code>uint32_t</code> result of the conversion.
 */
 - (uint32_t)toUInt32;
 
 /*!
 @method
+@abstract Convert a JSValue to a <code>int64_t</code>.
+@discussion The JSValue is converted to an integer according to the rules specified by the JavaScript language. If the value is a BigInt, then the value is truncated to an <code>int64_t</code>.
+*/
+- (int64_t)toInt64 API_AVAILABLE(macos(15.0), ios(NA));
+
+/*!
+@method
+@abstract Convert a JSValue to a <code>uint64_t</code>.
+@discussion The JSValue is converted to an integer according to the rules specified by the JavaScript language. If the value is a BigInt, then the value is truncated to a <code>uint64_t</code>.
+*/
+- (uint64_t)toUInt64 API_AVAILABLE(macos(15.0), ios(NA));
+
+/*!
+@method
 @abstract Convert a JSValue to a NSNumber.
-@discussion If the JSValue represents a boolean, a NSNumber value of YES or NO 
- will be returned. For all other types the value will be converted to a number according 
- to the rules specified by the JavaScript language.
+@discussion If the JSValue represents a boolean, a NSNumber value of YES or NO
+ will be returned. For all other types, the result is equivalent to <code>Number(value)</code> in JavaScript.
 @result The NSNumber result of the conversion.
 */
-- (NSNumber *)toNumber;
+- (NSNumber * _Null_unspecified)toNumber;
 
 /*!
 @method
@@ -304,7 +352,7 @@
  by the JavaScript language.
 @result The NSString containing the result of the conversion.
 */
-- (NSString *)toString;
+- (NSString * _Null_unspecified)toString;
 
 /*!
 @method
@@ -313,7 +361,7 @@
  since 1970 which is then used to create a new NSDate instance.
 @result The NSDate created using the converted time interval.
 */
-- (NSDate *)toDate;
+- (NSDate * _Null_unspecified)toDate;
 
 /*!
 @method
@@ -327,7 +375,7 @@
 @result The NSArray containing the recursively converted contents of the 
  converted JavaScript array.
 */
-- (NSArray *)toArray;
+- (NSArray * _Null_unspecified)toArray;
 
 /*!
 @method
@@ -339,10 +387,10 @@
 @result The NSDictionary containing the recursively converted contents of
  the converted JavaScript object.
 */
-- (NSDictionary *)toDictionary;
+- (NSDictionary * _Null_unspecified)toDictionary;
 
 /*!
-@functiongroup Checking JavaScript Types
+@methodgroup Checking JavaScript Types
 */
 
 /*!
@@ -388,42 +436,88 @@
 @property
 @abstract Check if a JSValue is an array.
 */ 
-@property (readonly) BOOL isArray JSC_API_AVAILABLE(macos(10.11), ios(9.0));
+@property (readonly) BOOL isArray API_AVAILABLE(macos(10.11), ios(9.0));
 
 /*!
 @property
 @abstract Check if a JSValue is a date.
 */ 
-@property (readonly) BOOL isDate JSC_API_AVAILABLE(macos(10.11), ios(9.0));
+@property (readonly) BOOL isDate API_AVAILABLE(macos(10.11), ios(9.0));
 
 /*!
  @property
  @abstract Check if a JSValue is a symbol.
  */
-@property (readonly) BOOL isSymbol JSC_API_AVAILABLE(macos(10.15), ios(13.0));
+@property (readonly) BOOL isSymbol API_AVAILABLE(macos(10.15), ios(13.0));
 
 /*!
+@property
+@abstract Check if a JSValue is a BigInt.
+*/
+@property (readonly) BOOL isBigInt API_AVAILABLE(macos(15.0), ios(NA));
+
+/*!
 @method
+@abstract Check if a JSValue is an instance of another object.
+@discussion This method has the same function as the JavaScript operator <code>instanceof</code>.
+ If an object other than a JSValue is passed, it will first be converted according to
+ the aforementioned rules.
+*/
+- (BOOL)isInstanceOf:(id _Null_unspecified)value;
+
+/*!
+@methodgroup Compare JavaScript values
+*/
+
+/*!
+@method
 @abstract Compare two JSValues using JavaScript's <code>===</code> operator.
 */
-- (BOOL)isEqualToObject:(id)value;
+- (BOOL)isEqualToObject:(id _Null_unspecified)value;
 
 /*!
 @method
 @abstract Compare two JSValues using JavaScript's <code>==</code> operator.
 */
-- (BOOL)isEqualWithTypeCoercionToObject:(id)value;
+- (BOOL)isEqualWithTypeCoercionToObject:(id _Null_unspecified)value;
 
 /*!
 @method
-@abstract Check if a JSValue is an instance of another object.
-@discussion This method has the same function as the JavaScript operator <code>instanceof</code>.
- If an object other than a JSValue is passed, it will first be converted according to
- the aforementioned rules.
+@abstract Compare two JSValues.
+@other The JSValue to compare with.
+@result A value of JSRelationCondition, a kJSRelationConditionUndefined is returned if an exception is thrown.
+@discussion The result is computed by comparing the results of JavaScript's <code>==</code>, <code><</code>, and <code>></code> operators. If either <code>self</code> or <code>other</code> is (or would coerce to) <code>NaN</code> in JavaScript, then the result is kJSRelationConditionUndefined.
 */
-- (BOOL)isInstanceOf:(id)value;
+- (JSRelationCondition)compareJSValue:(nonnull JSValue *)other API_AVAILABLE(macos(15.0), ios(NA));
 
 /*!
+@method
+@abstract Compare a JSValue with a <code>int64_t</code>.
+@other The <code>int64_t</code> to compare with.
+@result A value of JSRelationCondition, a kJSRelationConditionUndefined is returned if an exception is thrown.
+@discussion The JSValue is converted to an integer according to the rules specified by the JavaScript language then compared with <code>other</code>.
+*/
+- (JSRelationCondition)compareInt64:(int64_t)other API_AVAILABLE(macos(15.0), ios(NA));
+
+/*!
+@method
+@abstract Compare a JSValue with a <code>uint64_t</code>.
+@other The <code>uint64_t</code> to compare with.
+@result A value of JSRelationCondition, a kJSRelationConditionUndefined is returned if an exception is thrown.
+@discussion The JSValue is converted to an integer according to the rules specified by the JavaScript language then compared with <code>other</code>.
+*/
+- (JSRelationCondition)compareUInt64:(uint64_t)other API_AVAILABLE(macos(15.0), ios(NA));
+
+/*!
+@method
+@abstract Compare a JSValue with a double.
+@other The double to compare with.
+@result A value of JSRelationCondition, a kJSRelationConditionUndefined is returned if an exception is thrown.
+@discussion The JSValue is converted to a double according to the rules specified by the JavaScript language then compared with <code>other</code>.
+*/
+- (JSRelationCondition)compareDouble:(double)other API_AVAILABLE(macos(15.0), ios(NA));
+
+/*!
 @methodgroup Calling Functions and Constructors
 */
 /*!
@@ -434,7 +528,7 @@
 @param arguments The arguments to pass to the function.
 @result The return value of the function call. 
 */
-- (JSValue *)callWithArguments:(NSArray *)arguments;
+- (JSValue * _Null_unspecified)callWithArguments:(NSArray * _Null_unspecified)arguments;
 
 /*!
 @method
@@ -443,7 +537,7 @@
 @param arguments The arguments to pass to the constructor.
 @result The return value of the constructor call.
 */
-- (JSValue *)constructWithArguments:(NSArray *)arguments;
+- (JSValue * _Null_unspecified)constructWithArguments:(NSArray * _Null_unspecified)arguments;
 
 /*!
 @method
@@ -455,7 +549,7 @@
 @param arguments The arguments to pass to the method.
 @result The return value of the method call.
 */
-- (JSValue *)invokeMethod:(NSString *)method withArguments:(NSArray *)arguments;
+- (JSValue * _Null_unspecified)invokeMethod:(NSString * _Null_unspecified)method withArguments:(NSArray * _Null_unspecified)arguments;
 
 @end
 
@@ -478,7 +572,7 @@
 @result A newly allocated JavaScript object containing properties
  named <code>x</code> and <code>y</code>, with values from the CGPoint.
 */
-+ (JSValue *)valueWithPoint:(CGPoint)point inContext:(JSContext *)context;
++ (JSValue * _Null_unspecified)valueWithPoint:(CGPoint)point inContext:(JSContext * _Null_unspecified)context;
 
 /*!
 @method
@@ -486,7 +580,7 @@
 @result A newly allocated JavaScript object containing properties
  named <code>location</code> and <code>length</code>, with values from the NSRange.
 */
-+ (JSValue *)valueWithRange:(NSRange)range inContext:(JSContext *)context;
++ (JSValue * _Null_unspecified)valueWithRange:(NSRange)range inContext:(JSContext * _Null_unspecified)context;
 
 /*!
 @method
@@ -495,7 +589,7 @@
 @result A newly allocated JavaScript object containing properties
  named <code>x</code>, <code>y</code>, <code>width</code>, and <code>height</code>, with values from the CGRect.
 */
-+ (JSValue *)valueWithRect:(CGRect)rect inContext:(JSContext *)context;
++ (JSValue * _Null_unspecified)valueWithRect:(CGRect)rect inContext:(JSContext * _Null_unspecified)context;
 
 /*!
 @method
@@ -503,7 +597,7 @@
 @result A newly allocated JavaScript object containing properties
  named <code>width</code> and <code>height</code>, with values from the CGSize.
 */
-+ (JSValue *)valueWithSize:(CGSize)size inContext:(JSContext *)context;
++ (JSValue * _Null_unspecified)valueWithSize:(CGSize)size inContext:(JSContext * _Null_unspecified)context;
 
 /*!
 @method
@@ -550,9 +644,9 @@
 @interface JSValue (PropertyAccess)
 
 #if (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < 101500) || (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 130000)
-typedef NSString *JSValueProperty;
+typedef NSString * _Null_unspecified JSValueProperty;
 #else
-typedef id JSValueProperty;
+typedef id _Null_unspecified JSValueProperty;
 #endif
 
 /*!
@@ -562,14 +656,14 @@
  if the property does not exist.
  @discussion Corresponds to the JavaScript operation <code>object[property]</code>. Starting with macOS 10.15 and iOS 13, 'property' can be any 'id' and will be converted to a JSValue using the conversion rules of <code>valueWithObject:inContext:</code>. Prior to macOS 10.15 and iOS 13, 'property' was expected to be an NSString *.
  */
-- (JSValue *)valueForProperty:(JSValueProperty)property;
+- (JSValue * _Null_unspecified)valueForProperty:(JSValueProperty)property;
 
 /*!
  @method
  @abstract Set a property on a JSValue.
  @discussion Corresponds to the JavaScript operation <code>object[property] = value</code>. Starting with macOS 10.15 and iOS 13, 'property' can be any 'id' and will be converted to a JSValue using the conversion rules of <code>valueWithObject:inContext:</code>. Prior to macOS 10.15 and iOS 13, 'property' was expected to be an NSString *.
  */
-- (void)setValue:(id)value forProperty:(JSValueProperty)property;
+- (void)setValue:(id _Null_unspecified)value forProperty:(JSValueProperty)property;
 
 /*!
  @method
@@ -594,7 +688,7 @@
  @discussion This method may be used to create a data or accessor property on an object.
  This method operates in accordance with the Object.defineProperty method in the JavaScript language. Starting with macOS 10.15 and iOS 13, 'property' can be any 'id' and will be converted to a JSValue using the conversion rules of <code>valueWithObject:inContext:</code>. Prior to macOS 10.15 and iOS 13, 'property' was expected to be an NSString *.
  */
-- (void)defineProperty:(JSValueProperty)property descriptor:(id)descriptor;
+- (void)defineProperty:(JSValueProperty)property descriptor:(id _Null_unspecified)descriptor;
 
 /*!
  @method
@@ -602,7 +696,7 @@
  @result The JSValue for the property at the specified index.
  Returns the JavaScript value <code>undefined</code> if no property exists at that index.
  */
-- (JSValue *)valueAtIndex:(NSUInteger)index;
+- (JSValue * _Null_unspecified)valueAtIndex:(NSUInteger)index;
 
 /*!
  @method
@@ -610,7 +704,7 @@
  @discussion For JSValues that are JavaScript arrays, indices greater than
  UINT_MAX - 1 will not affect the length of the array.
  */
-- (void)setValue:(id)value atIndex:(NSUInteger)index;
+- (void)setValue:(id _Null_unspecified)value atIndex:(NSUInteger)index;
 
 @end
 
@@ -635,10 +729,10 @@
 */
 @interface JSValue (SubscriptSupport)
 
-- (JSValue *)objectForKeyedSubscript:(id)key;
-- (JSValue *)objectAtIndexedSubscript:(NSUInteger)index;
-- (void)setObject:(id)object forKeyedSubscript:(id)key;
-- (void)setObject:(id)object atIndexedSubscript:(NSUInteger)index;
+- (JSValue * _Null_unspecified)objectForKeyedSubscript:(id _Null_unspecified)key;
+- (JSValue * _Null_unspecified)objectAtIndexedSubscript:(NSUInteger)index;
+- (void)setObject:(id _Null_unspecified)object forKeyedSubscript:(id _Null_unspecified)key;
+- (void)setObject:(id _Null_unspecified)object atIndexedSubscript:(NSUInteger)index;
 
 @end
 
@@ -653,14 +747,14 @@
 @abstract Creates a JSValue, wrapping its C API counterpart.
 @result The Objective-C API equivalent of the specified JSValueRef.
 */
-+ (JSValue *)valueWithJSValueRef:(JSValueRef)value inContext:(JSContext *)context;
++ (JSValue * _Null_unspecified)valueWithJSValueRef:(JSValueRef _Null_unspecified)value inContext:(JSContext * _Null_unspecified)context;
 
 /*!
 @property
 @abstract Returns the C API counterpart wrapped by a JSContext.
 @result The C API equivalent of this JSValue.
 */
-@property (readonly) JSValueRef JSValueRef;
+@property (readonly) JSValueRef _Null_unspecified JSValueRef;
 @end
 
 #ifdef __cplusplus
@@ -699,27 +793,27 @@
 /*!
 @const 
 */
-JS_EXPORT extern NSString * const JSPropertyDescriptorWritableKey;
+JS_EXPORT extern NSString * _Null_unspecified const JSPropertyDescriptorWritableKey;
 /*!
 @const 
 */
-JS_EXPORT extern NSString * const JSPropertyDescriptorEnumerableKey;
+JS_EXPORT extern NSString * _Null_unspecified const JSPropertyDescriptorEnumerableKey;
 /*!
 @const 
 */
-JS_EXPORT extern NSString * const JSPropertyDescriptorConfigurableKey;
+JS_EXPORT extern NSString * _Null_unspecified const JSPropertyDescriptorConfigurableKey;
 /*!
 @const 
 */
-JS_EXPORT extern NSString * const JSPropertyDescriptorValueKey;
+JS_EXPORT extern NSString * _Null_unspecified const JSPropertyDescriptorValueKey;
 /*!
 @const 
 */
-JS_EXPORT extern NSString * const JSPropertyDescriptorGetKey;
+JS_EXPORT extern NSString * _Null_unspecified const JSPropertyDescriptorGetKey;
 /*!
 @const 
 */
-JS_EXPORT extern NSString * const JSPropertyDescriptorSetKey;
+JS_EXPORT extern NSString * _Null_unspecified const JSPropertyDescriptorSetKey;
 
 #ifdef __cplusplus
 } // extern "C"
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSValueRef.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSValueRef.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSValueRef.h	2024-05-02 05:45:26
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/JSValueRef.h	2024-05-30 08:41:27
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2006-2019 Apple Inc.  All rights reserved.
+ * Copyright (C) 2006-2024 Apple Inc.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -32,6 +32,8 @@
 #ifndef __cplusplus
 #include <stdbool.h>
 #endif
+#include <stddef.h> /* for size_t */
+#include <stdint.h> /* for int64_t and uint64_t */
 
 /*!
 @enum JSType
@@ -43,6 +45,7 @@
 @constant     kJSTypeString     A primitive string value.
 @constant     kJSTypeObject     An object value (meaning that this JSValueRef is a JSObjectRef).
 @constant     kJSTypeSymbol     A primitive symbol value.
+@constant     kJSTypeBigInt     A primitive BigInt value.
 */
 typedef enum {
     kJSTypeUndefined,
@@ -51,7 +54,8 @@
     kJSTypeNumber,
     kJSTypeString,
     kJSTypeObject,
-    kJSTypeSymbol JSC_API_AVAILABLE(macos(10.15), ios(13.0))
+    kJSTypeSymbol API_AVAILABLE(macos(10.15), ios(13.0)),
+    kJSTypeBigInt API_AVAILABLE(macos(15.0), ios(NA))
 } JSType;
 
 /*!
@@ -86,8 +90,23 @@
     kJSTypedArrayTypeNone,
     kJSTypedArrayTypeBigInt64Array,
     kJSTypedArrayTypeBigUint64Array,
-} JSTypedArrayType JSC_API_AVAILABLE(macos(10.12), ios(10.0));
+} JSTypedArrayType API_AVAILABLE(macos(10.12), ios(10.0));
 
+/*!
+@enum JSRelationCondition
+@abstract     A constant identifying the type of JavaScript relation condition.
+@constant     kJSRelationConditionUndefined    Fail to compare two operands.
+@constant     kJSRelationConditionEqual        Two operands have equivalent values.
+@constant     kJSRelationConditionGreaterThan  The left operand is greater than the right operand.
+@constant     kJSRelationConditionLessThan     The left operand is less than the right operand.
+*/
+JSC_CF_ENUM(JSRelationCondition,
+    kJSRelationConditionUndefined,
+    kJSRelationConditionEqual,
+    kJSRelationConditionGreaterThan,
+    kJSRelationConditionLessThan
+) API_AVAILABLE(macos(15.0), ios(NA));
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -99,7 +118,7 @@
 @param value    The JSValue whose type you want to obtain.
 @result         A value of type JSType that identifies value's type.
 */
-JS_EXPORT JSType JSValueGetType(JSContextRef ctx, JSValueRef value);
+JS_EXPORT JSType JSValueGetType(JSC_NULL_UNSPECIFIED JSContextRef ctx, JSC_NULL_UNSPECIFIED JSValueRef value);
 
 /*!
 @function
@@ -108,7 +127,7 @@
 @param value    The JSValue to test.
 @result         true if value's type is the undefined type, otherwise false.
 */
-JS_EXPORT bool JSValueIsUndefined(JSContextRef ctx, JSValueRef value);
+JS_EXPORT bool JSValueIsUndefined(JSC_NULL_UNSPECIFIED JSContextRef ctx, JSC_NULL_UNSPECIFIED JSValueRef value);
 
 /*!
 @function
@@ -117,7 +136,7 @@
 @param value    The JSValue to test.
 @result         true if value's type is the null type, otherwise false.
 */
-JS_EXPORT bool JSValueIsNull(JSContextRef ctx, JSValueRef value);
+JS_EXPORT bool JSValueIsNull(JSC_NULL_UNSPECIFIED JSContextRef ctx, JSC_NULL_UNSPECIFIED JSValueRef value);
 
 /*!
 @function
@@ -126,7 +145,7 @@
 @param value    The JSValue to test.
 @result         true if value's type is the boolean type, otherwise false.
 */
-JS_EXPORT bool JSValueIsBoolean(JSContextRef ctx, JSValueRef value);
+JS_EXPORT bool JSValueIsBoolean(JSC_NULL_UNSPECIFIED JSContextRef ctx, JSC_NULL_UNSPECIFIED JSValueRef value);
 
 /*!
 @function
@@ -135,7 +154,7 @@
 @param value    The JSValue to test.
 @result         true if value's type is the number type, otherwise false.
 */
-JS_EXPORT bool JSValueIsNumber(JSContextRef ctx, JSValueRef value);
+JS_EXPORT bool JSValueIsNumber(JSC_NULL_UNSPECIFIED JSContextRef ctx, JSC_NULL_UNSPECIFIED JSValueRef value);
 
 /*!
 @function
@@ -144,7 +163,7 @@
 @param value    The JSValue to test.
 @result         true if value's type is the string type, otherwise false.
 */
-JS_EXPORT bool JSValueIsString(JSContextRef ctx, JSValueRef value);
+JS_EXPORT bool JSValueIsString(JSC_NULL_UNSPECIFIED JSContextRef ctx, JSC_NULL_UNSPECIFIED JSValueRef value);
 
 /*!
 @function
@@ -153,16 +172,27 @@
 @param value    The JSValue to test.
 @result         true if value's type is the symbol type, otherwise false.
 */
-JS_EXPORT bool JSValueIsSymbol(JSContextRef ctx, JSValueRef value) JSC_API_AVAILABLE(macos(10.15), ios(13.0));
+JS_EXPORT bool JSValueIsSymbol(JSC_NULL_UNSPECIFIED JSContextRef ctx, JSC_NULL_UNSPECIFIED JSValueRef value) API_AVAILABLE(macos(10.15), ios(13.0));
 
+JSC_ASSUME_NONNULL_BEGIN
 /*!
 @function
+@abstract       Tests whether a JavaScript value's type is the BigInt type.
+@param ctx      The execution context to use.
+@param value    The JSValue to test.
+@result         true if value's type is the BigInt type, otherwise false.
+*/
+JS_EXPORT bool JSValueIsBigInt(JSContextRef ctx, JSValueRef value) API_AVAILABLE(macos(15.0), ios(NA));
+JSC_ASSUME_NONNULL_END
+
+/*!
+@function
 @abstract       Tests whether a JavaScript value's type is the object type.
 @param ctx  The execution context to use.
 @param value    The JSValue to test.
 @result         true if value's type is the object type, otherwise false.
 */
-JS_EXPORT bool JSValueIsObject(JSContextRef ctx, JSValueRef value);
+JS_EXPORT bool JSValueIsObject(JSC_NULL_UNSPECIFIED JSContextRef ctx, JSC_NULL_UNSPECIFIED JSValueRef value);
 
 
 /*!
@@ -173,7 +203,7 @@
 @param jsClass The JSClass to test against.
 @result true if value is an object and has jsClass in its class chain, otherwise false.
 */
-JS_EXPORT bool JSValueIsObjectOfClass(JSContextRef ctx, JSValueRef value, JSClassRef jsClass);
+JS_EXPORT bool JSValueIsObjectOfClass(JSC_NULL_UNSPECIFIED JSContextRef ctx, JSC_NULL_UNSPECIFIED JSValueRef value, JSC_NULL_UNSPECIFIED JSClassRef jsClass);
 
 /*!
 @function
@@ -182,7 +212,7 @@
 @param value    The JSValue to test.
 @result         true if value is an array, otherwise false.
 */
-JS_EXPORT bool JSValueIsArray(JSContextRef ctx, JSValueRef value) JSC_API_AVAILABLE(macos(10.11), ios(9.0));
+JS_EXPORT bool JSValueIsArray(JSC_NULL_UNSPECIFIED JSContextRef ctx, JSC_NULL_UNSPECIFIED JSValueRef value) API_AVAILABLE(macos(10.11), ios(9.0));
 
 /*!
 @function
@@ -191,17 +221,17 @@
 @param value    The JSValue to test.
 @result         true if value is a date, otherwise false.
 */
-JS_EXPORT bool JSValueIsDate(JSContextRef ctx, JSValueRef value) JSC_API_AVAILABLE(macos(10.11), ios(9.0));
+JS_EXPORT bool JSValueIsDate(JSC_NULL_UNSPECIFIED JSContextRef ctx, JSC_NULL_UNSPECIFIED JSValueRef value) API_AVAILABLE(macos(10.11), ios(9.0));
 
 /*!
 @function
 @abstract           Returns a JavaScript value's Typed Array type.
 @param ctx          The execution context to use.
 @param value        The JSValue whose Typed Array type to return.
-@param exception    A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
+@param exception    A pointer to a JSValueRef in which to store an exception, if any. To reliable detect exception, initialize this to null before the call. Pass NULL if you do not care to store an exception.
 @result             A value of type JSTypedArrayType that identifies value's Typed Array type, or kJSTypedArrayTypeNone if the value is not a Typed Array object.
  */
-JS_EXPORT JSTypedArrayType JSValueGetTypedArrayType(JSContextRef ctx, JSValueRef value, JSValueRef* exception) JSC_API_AVAILABLE(macos(10.12), ios(10.0));
+JS_EXPORT JSTypedArrayType JSValueGetTypedArrayType(JSC_NULL_UNSPECIFIED JSContextRef ctx, JSC_NULL_UNSPECIFIED JSValueRef value, JSC_NULL_UNSPECIFIED JSValueRef* JSC_NULL_UNSPECIFIED exception) API_AVAILABLE(macos(10.12), ios(10.0));
 
 /* Comparing values */
 
@@ -211,10 +241,10 @@
 @param ctx The execution context to use.
 @param a The first value to test.
 @param b The second value to test.
-@param exception A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
+@param exception A pointer to a JSValueRef in which to store an exception, if any. To reliable detect exception, initialize this to null before the call. Pass NULL if you do not care to store an exception.
 @result true if the two values are equal, false if they are not equal or an exception is thrown.
 */
-JS_EXPORT bool JSValueIsEqual(JSContextRef ctx, JSValueRef a, JSValueRef b, JSValueRef* exception);
+JS_EXPORT bool JSValueIsEqual(JSC_NULL_UNSPECIFIED JSContextRef ctx, JSC_NULL_UNSPECIFIED JSValueRef a, JSC_NULL_UNSPECIFIED JSValueRef b, JSC_NULL_UNSPECIFIED JSValueRef* JSC_NULL_UNSPECIFIED exception);
 
 /*!
 @function
@@ -224,7 +254,7 @@
 @param b        The second value to test.
 @result         true if the two values are strict equal, otherwise false.
 */
-JS_EXPORT bool JSValueIsStrictEqual(JSContextRef ctx, JSValueRef a, JSValueRef b);
+JS_EXPORT bool JSValueIsStrictEqual(JSC_NULL_UNSPECIFIED JSContextRef ctx, JSC_NULL_UNSPECIFIED JSValueRef a, JSC_NULL_UNSPECIFIED JSValueRef b);
 
 /*!
 @function
@@ -232,11 +262,61 @@
 @param ctx The execution context to use.
 @param value The JSValue to test.
 @param constructor The constructor to test against.
-@param exception A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
+@param exception A pointer to a JSValueRef in which to store an exception, if any. To reliable detect exception, initialize this to null before the call. Pass NULL if you do not care to store an exception.
 @result true if value is an object constructed by constructor, as compared by the JS instanceof operator, otherwise false.
 */
-JS_EXPORT bool JSValueIsInstanceOfConstructor(JSContextRef ctx, JSValueRef value, JSObjectRef constructor, JSValueRef* exception);
+JS_EXPORT bool JSValueIsInstanceOfConstructor(JSC_NULL_UNSPECIFIED JSContextRef ctx, JSC_NULL_UNSPECIFIED JSValueRef value, JSC_NULL_UNSPECIFIED JSObjectRef constructor, JSC_NULL_UNSPECIFIED JSValueRef* JSC_NULL_UNSPECIFIED exception);
 
+JSC_ASSUME_NONNULL_BEGIN
+/*!
+    @function
+    @abstract         Compares two JSValues.
+    @param ctx        The execution context to use.
+    @param left       The JSValue as the left operand.
+    @param right      The JSValue as the right operand.
+    @param exception  A pointer to a JSValueRef in which to store an exception, if any. To reliable detect exception, initialize this to null before the call. Pass NULL if you do not care to store an exception.
+    @result           A value of JSRelationCondition, a kJSRelationConditionUndefined is returned if an exception is thrown.
+    @discussion       The result is computed by comparing the results of JavaScript's `==`, `<`, and `>` operators. If either `left` or `right` is (or would coerce to) `NaN` in JavaScript, then the result is kJSRelationConditionUndefined.
+*/
+JS_EXPORT JSRelationCondition JSValueCompare(JSContextRef ctx, JSValueRef left, JSValueRef right, JSC_NULLABLE JSValueRef* JSC_NULLABLE exception) API_AVAILABLE(macos(15.0), ios(NA));
+
+/*!
+    @function
+    @abstract         Compares a JSValue with a signed 64-bit integer.
+    @param ctx        The execution context to use.
+    @param left       The JSValue as the left operand.
+    @param right      The int64_t as the right operand.
+    @param exception  A pointer to a JSValueRef in which to store an exception, if any. To reliable detect exception, initialize this to null before the call. Pass NULL if you do not care to store an exception.
+    @result           A value of JSRelationCondition, a kJSRelationConditionUndefined is returned if an exception is thrown.
+    @discussion       `left` is converted to an integer according to the rules specified by the JavaScript language then compared with `right`.
+*/
+JS_EXPORT JSRelationCondition JSValueCompareInt64(JSContextRef ctx, JSValueRef left, int64_t right, JSC_NULLABLE JSValueRef* JSC_NULLABLE exception) API_AVAILABLE(macos(15.0), ios(NA));
+
+/*!
+    @function
+    @abstract         Compares a JSValue with an unsigned 64-bit integer.
+    @param ctx        The execution context to use.
+    @param left       The JSValue as the left operand.
+    @param right      The uint64_t as the right operand.
+    @param exception  A pointer to a JSValueRef in which to store an exception, if any. To reliable detect exception, initialize this to null before the call. Pass NULL if you do not care to store an exception.
+    @result           A value of JSRelationCondition, a kJSRelationConditionUndefined is returned if an exception is thrown.
+    @discussion       `left` is converted to an integer according to the rules specified by the JavaScript language then compared with `right`.
+*/
+JS_EXPORT JSRelationCondition JSValueCompareUInt64(JSContextRef ctx, JSValueRef left, uint64_t right, JSC_NULLABLE JSValueRef* JSC_NULLABLE exception) API_AVAILABLE(macos(15.0), ios(NA));
+
+/*!
+    @function
+    @abstract         Compares a JSValue with a double.
+    @param ctx        The execution context to use.
+    @param left       The JSValue as the left operand.
+    @param right      The double as the right operand.
+    @param exception  A pointer to a JSValueRef in which to store an exception, if any. To reliable detect exception, initialize this to null before the call. Pass NULL if you do not care to store an exception.
+    @result           A value of JSRelationCondition, a kJSRelationConditionUndefined is returned if an exception is thrown.
+    @discussion       `left` is converted to a double according to the rules specified by the JavaScript language then compared with `right`.
+*/
+JS_EXPORT JSRelationCondition JSValueCompareDouble(JSContextRef ctx, JSValueRef left, double right, JSC_NULLABLE JSValueRef* JSC_NULLABLE exception) API_AVAILABLE(macos(15.0), ios(NA));
+JSC_ASSUME_NONNULL_END
+
 /* Creating values */
 
 /*!
@@ -245,7 +325,7 @@
 @param ctx  The execution context to use.
 @result         The unique undefined value.
 */
-JS_EXPORT JSValueRef JSValueMakeUndefined(JSContextRef ctx);
+JS_EXPORT JSC_NULL_UNSPECIFIED JSValueRef JSValueMakeUndefined(JSC_NULL_UNSPECIFIED JSContextRef ctx);
 
 /*!
 @function
@@ -253,7 +333,7 @@
 @param ctx  The execution context to use.
 @result         The unique null value.
 */
-JS_EXPORT JSValueRef JSValueMakeNull(JSContextRef ctx);
+JS_EXPORT JSC_NULL_UNSPECIFIED JSValueRef JSValueMakeNull(JSC_NULL_UNSPECIFIED JSContextRef ctx);
 
 /*!
 @function
@@ -262,7 +342,7 @@
 @param boolean  The bool to assign to the newly created JSValue.
 @result         A JSValue of the boolean type, representing the value of boolean.
 */
-JS_EXPORT JSValueRef JSValueMakeBoolean(JSContextRef ctx, bool boolean);
+JS_EXPORT JSC_NULL_UNSPECIFIED JSValueRef JSValueMakeBoolean(JSC_NULL_UNSPECIFIED JSContextRef ctx, bool boolean);
 
 /*!
 @function
@@ -271,7 +351,7 @@
 @param number   The double to assign to the newly created JSValue.
 @result         A JSValue of the number type, representing the value of number.
 */
-JS_EXPORT JSValueRef JSValueMakeNumber(JSContextRef ctx, double number);
+JS_EXPORT JSC_NULL_UNSPECIFIED JSValueRef JSValueMakeNumber(JSC_NULL_UNSPECIFIED JSContextRef ctx, double number);
 
 /*!
 @function
@@ -281,7 +361,7 @@
  newly created JSValue retains string, and releases it upon garbage collection.
 @result         A JSValue of the string type, representing the value of string.
 */
-JS_EXPORT JSValueRef JSValueMakeString(JSContextRef ctx, JSStringRef string);
+JS_EXPORT JSC_NULL_UNSPECIFIED JSValueRef JSValueMakeString(JSC_NULL_UNSPECIFIED JSContextRef ctx, JSC_NULL_UNSPECIFIED JSStringRef string);
 
 /*!
  @function
@@ -290,8 +370,52 @@
  @param description   A description of the newly created symbol value.
  @result              A unique JSValue of the symbol type, whose description matches the one provided.
  */
-JS_EXPORT JSValueRef JSValueMakeSymbol(JSContextRef ctx, JSStringRef description) JSC_API_AVAILABLE(macos(10.15), ios(13.0));
+JS_EXPORT JSC_NULL_UNSPECIFIED JSValueRef JSValueMakeSymbol(JSC_NULL_UNSPECIFIED JSContextRef ctx, JSC_NULL_UNSPECIFIED JSStringRef description) API_AVAILABLE(macos(10.15), ios(13.0));
 
+JSC_ASSUME_NONNULL_BEGIN
+/*!
+    @function
+    @abstract         Creates a JavaScript BigInt with a double.
+    @param ctx        The execution context to use.
+    @param value      The value to copy into the new BigInt JSValue.
+    @param exception  A pointer to a JSValueRef in which to store an exception, if any. To reliable detect exception, initialize this to null before the call. Pass NULL if you do not care to store an exception.
+    @result           A BigInt JSValue of the value, or NULL if an exception is thrown.
+    @discussion       If the value is not an integer, an exception is thrown.
+*/
+JS_EXPORT JSValueRef JSBigIntCreateWithDouble(JSContextRef ctx, double value, JSC_NULLABLE JSValueRef* JSC_NULLABLE exception) API_AVAILABLE(macos(15.0), ios(NA));
+
+/*!
+    @function
+    @abstract         Creates a JavaScript BigInt with a 64-bit signed integer.
+    @param ctx        The execution context to use.
+    @param integer    The 64-bit signed integer to copy into the new BigInt JSValue.
+    @param exception  A pointer to a JSValueRef in which to store an exception, if any. To reliable detect exception, initialize this to null before the call. Pass NULL if you do not care to store an exception.
+    @result           A BigInt JSValue of the integer, or NULL if an exception is thrown.
+*/
+JS_EXPORT JSValueRef JSBigIntCreateWithInt64(JSContextRef ctx, int64_t integer, JSC_NULLABLE JSValueRef* JSC_NULLABLE exception) API_AVAILABLE(macos(15.0), ios(NA));
+
+/*!
+    @function
+    @abstract         Creates a JavaScript BigInt with a 64-bit unsigned integer.
+    @param ctx        The execution context to use.
+    @param integer    The 64-bit unsigned integer to copy into the new BigInt JSValue.
+    @param exception  A pointer to a JSValueRef in which to store an exception, if any. To reliable detect exception, initialize this to null before the call. Pass NULL if you do not care to store an exception.
+    @result           A BigInt JSValue of the integer, or NULL if an exception is thrown.
+*/
+JS_EXPORT JSValueRef JSBigIntCreateWithUInt64(JSContextRef ctx, uint64_t integer, JSC_NULLABLE JSValueRef* JSC_NULLABLE exception) API_AVAILABLE(macos(15.0), ios(NA));
+
+/*!
+    @function
+    @abstract         Creates a JavaScript BigInt with an integer represented in string.
+    @param ctx        The execution context to use.
+    @param string     The JSStringRef representation of an integer.
+    @param exception  A pointer to a JSValueRef in which to store an exception, if any. To reliable detect exception, initialize this to null before the call. Pass NULL if you do not care to store an exception.
+    @result           A BigInt JSValue of the string, or NULL if an exception is thrown.
+    @discussion       This is equivalent to calling the `BigInt` constructor from JavaScript with a string argument.
+*/
+JS_EXPORT JSValueRef JSBigIntCreateWithString(JSContextRef ctx, JSStringRef string, JSC_NULLABLE JSValueRef* JSC_NULLABLE exception) API_AVAILABLE(macos(15.0), ios(NA));
+JSC_ASSUME_NONNULL_END
+
 /* Converting to and from JSON formatted strings */
 
 /*!
@@ -301,7 +425,7 @@
  @param string   The JSString containing the JSON string to be parsed.
  @result         A JSValue containing the parsed value, or NULL if the input is invalid.
  */
-JS_EXPORT JSValueRef JSValueMakeFromJSONString(JSContextRef ctx, JSStringRef string) JSC_API_AVAILABLE(macos(10.7), ios(7.0));
+JS_EXPORT JSC_NULL_UNSPECIFIED JSValueRef JSValueMakeFromJSONString(JSC_NULL_UNSPECIFIED JSContextRef ctx, JSC_NULL_UNSPECIFIED JSStringRef string) API_AVAILABLE(macos(10.7), ios(7.0));
 
 /*!
  @function
@@ -309,10 +433,10 @@
  @param ctx      The execution context to use.
  @param value    The value to serialize.
  @param indent   The number of spaces to indent when nesting.  If 0, the resulting JSON will not contains newlines.  The size of the indent is clamped to 10 spaces.
- @param exception A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
+ @param exception A pointer to a JSValueRef in which to store an exception, if any. To reliable detect exception, initialize this to null before the call. Pass NULL if you do not care to store an exception.
  @result         A JSString with the result of serialization, or NULL if an exception is thrown.
  */
-JS_EXPORT JSStringRef JSValueCreateJSONString(JSContextRef ctx, JSValueRef value, unsigned indent, JSValueRef* exception) JSC_API_AVAILABLE(macos(10.7), ios(7.0));
+JS_EXPORT JSC_NULL_UNSPECIFIED JSStringRef JSValueCreateJSONString(JSC_NULL_UNSPECIFIED JSContextRef ctx, JSC_NULL_UNSPECIFIED JSValueRef value, unsigned indent, JSC_NULL_UNSPECIFIED JSValueRef* JSC_NULL_UNSPECIFIED exception) API_AVAILABLE(macos(10.7), ios(7.0));
 
 /* Converting to primitive values */
 
@@ -323,37 +447,84 @@
 @param value    The JSValue to convert.
 @result         The boolean result of conversion.
 */
-JS_EXPORT bool JSValueToBoolean(JSContextRef ctx, JSValueRef value);
+JS_EXPORT bool JSValueToBoolean(JSC_NULL_UNSPECIFIED JSContextRef ctx, JSC_NULL_UNSPECIFIED JSValueRef value);
 
 /*!
 @function
 @abstract       Converts a JavaScript value to number and returns the resulting number.
 @param ctx  The execution context to use.
 @param value    The JSValue to convert.
-@param exception A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
+@param exception A pointer to a JSValueRef in which to store an exception, if any. To reliable detect exception, initialize this to null before the call. Pass NULL if you do not care to store an exception.
 @result         The numeric result of conversion, or NaN if an exception is thrown.
+@discussion     The result is equivalent to `Number(value)` in JavaScript.
 */
-JS_EXPORT double JSValueToNumber(JSContextRef ctx, JSValueRef value, JSValueRef* exception);
+JS_EXPORT double JSValueToNumber(JSC_NULL_UNSPECIFIED JSContextRef ctx, JSC_NULL_UNSPECIFIED JSValueRef value, JSC_NULL_UNSPECIFIED JSValueRef* JSC_NULL_UNSPECIFIED exception);
 
+JSC_ASSUME_NONNULL_BEGIN
 /*!
+    @function
+    @abstract         Converts a JSValue to a singed 32-bit integer and returns the resulting integer.
+    @param ctx        The execution context to use.
+    @param value      The JSValue to convert.
+    @param exception  A pointer to a JSValueRef in which to store an exception, if any. To reliable detect exception, initialize this to null before the call. Pass NULL if you do not care to store an exception.
+    @result           An int32_t with the result of conversion, or 0 if an exception is thrown. Since 0 is valid value, `exception` must be checked after the call.
+    @discussion       The JSValue is converted to an integer according to the rules specified by the JavaScript language. If the value is a BigInt, then the JSValue is truncated to an int32_t.
+*/
+JS_EXPORT int32_t JSValueToInt32(JSContextRef ctx, JSValueRef value, JSC_NULLABLE JSValueRef* JSC_NULLABLE exception) API_AVAILABLE(macos(15.0), ios(NA));
+
+/*!
+    @function
+    @abstract         Converts a JSValue to an unsigned 32-bit integer and returns the resulting integer.
+    @param ctx        The execution context to use.
+    @param value      The JSValue to convert.
+    @param exception  A pointer to a JSValueRef in which to store an exception, if any. To reliable detect exception, initialize this to null before the call. Pass NULL if you do not care to store an exception.
+    @result           A uint32_t with the result of conversion, or 0 if an exception is thrown. Since 0 is valid value, `exception` must be checked after the call.
+    @discussion       The JSValue is converted to an integer according to the rules specified by the JavaScript language. If the value is a BigInt, then the JSValue is truncated to a uint32_t.
+*/
+JS_EXPORT uint32_t JSValueToUInt32(JSContextRef ctx, JSValueRef value, JSC_NULLABLE JSValueRef* JSC_NULLABLE exception) API_AVAILABLE(macos(15.0), ios(NA));
+
+/*!
+    @function
+    @abstract         Converts a JSValue to a singed 64-bit integer and returns the resulting integer.
+    @param ctx        The execution context to use.
+    @param value      The JSValue to convert.
+    @param exception  A pointer to a JSValueRef in which to store an exception, if any. To reliable detect exception, initialize this to null before the call. Pass NULL if you do not care to store an exception.
+    @result           An int64_t with the result of conversion, or 0 if an exception is thrown. Since 0 is valid value, `exception` must be checked after the call.
+    @discussion       The JSValue is converted to an integer according to the rules specified by the JavaScript language. If the value is a BigInt, then the JSValue is truncated to an int64_t.
+*/
+JS_EXPORT int64_t JSValueToInt64(JSContextRef ctx, JSValueRef value, JSC_NULLABLE JSValueRef* JSC_NULLABLE exception) API_AVAILABLE(macos(15.0), ios(NA));
+
+/*!
+    @function
+    @abstract         Converts a JSValue to an unsigned 64-bit integer and returns the resulting integer.
+    @param ctx        The execution context to use.
+    @param value      The JSValue to convert.
+    @param exception  A pointer to a JSValueRef in which to store an exception, if any. To reliable detect exception, initialize this to null before the call. Pass NULL if you do not care to store an exception.
+    @result           A uint64_t with the result of conversion, or 0 if an exception is thrown. Since 0 is valid value, `exception` must be checked after the call.
+    @discussion       The JSValue is converted to an integer according to the rules specified by the JavaScript language. If the value is a BigInt, then the JSValue is truncated to a uint64_t.
+*/
+JS_EXPORT uint64_t JSValueToUInt64(JSContextRef ctx, JSValueRef value, JSC_NULLABLE JSValueRef* JSC_NULLABLE exception) API_AVAILABLE(macos(15.0), ios(NA));
+JSC_ASSUME_NONNULL_END
+
+/*!
 @function
 @abstract       Converts a JavaScript value to string and copies the result into a JavaScript string.
 @param ctx  The execution context to use.
 @param value    The JSValue to convert.
-@param exception A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
+@param exception A pointer to a JSValueRef in which to store an exception, if any. To reliable detect exception, initialize this to null before the call. Pass NULL if you do not care to store an exception.
 @result         A JSString with the result of conversion, or NULL if an exception is thrown. Ownership follows the Create Rule.
 */
-JS_EXPORT JSStringRef JSValueToStringCopy(JSContextRef ctx, JSValueRef value, JSValueRef* exception);
+JS_EXPORT JSC_NULL_UNSPECIFIED JSStringRef JSValueToStringCopy(JSC_NULL_UNSPECIFIED JSContextRef ctx, JSC_NULL_UNSPECIFIED JSValueRef value, JSC_NULL_UNSPECIFIED JSValueRef* JSC_NULL_UNSPECIFIED exception);
 
 /*!
 @function
 @abstract Converts a JavaScript value to object and returns the resulting object.
 @param ctx  The execution context to use.
 @param value    The JSValue to convert.
-@param exception A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
+@param exception A pointer to a JSValueRef in which to store an exception, if any. To reliable detect exception, initialize this to null before the call. Pass NULL if you do not care to store an exception.
 @result         The JSObject result of conversion, or NULL if an exception is thrown.
 */
-JS_EXPORT JSObjectRef JSValueToObject(JSContextRef ctx, JSValueRef value, JSValueRef* exception);
+JS_EXPORT JSC_NULL_UNSPECIFIED JSObjectRef JSValueToObject(JSC_NULL_UNSPECIFIED JSContextRef ctx, JSC_NULL_UNSPECIFIED JSValueRef value, JSC_NULL_UNSPECIFIED JSValueRef* JSC_NULL_UNSPECIFIED exception);
 
 /* Garbage collection */
 /*!
@@ -365,7 +536,7 @@
  
 A value may be protected multiple times and must be unprotected an equal number of times before becoming eligible for garbage collection.
 */
-JS_EXPORT void JSValueProtect(JSContextRef ctx, JSValueRef value);
+JS_EXPORT void JSValueProtect(JSC_NULL_UNSPECIFIED JSContextRef ctx, JSC_NULL_UNSPECIFIED JSValueRef value);
 
 /*!
 @function
@@ -375,7 +546,7 @@
 @discussion     A value may be protected multiple times and must be unprotected an 
  equal number of times before becoming eligible for garbage collection.
 */
-JS_EXPORT void JSValueUnprotect(JSContextRef ctx, JSValueRef value);
+JS_EXPORT void JSValueUnprotect(JSC_NULL_UNSPECIFIED JSContextRef ctx, JSC_NULL_UNSPECIFIED JSValueRef value);
 
 #ifdef __cplusplus
 }
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/WebKitAvailability.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/WebKitAvailability.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/WebKitAvailability.h	2024-04-23 06:06:01
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaScriptCore.framework/Headers/WebKitAvailability.h	2024-05-30 08:41:26
@@ -33,11 +33,4 @@
 
 #endif
 
-#ifndef JSC_FRAMEWORK_HEADER_POSTPROCESSING_ENABLED
-#define JSC_API_AVAILABLE(...)
-#define JSC_API_DEPRECATED(...)
-#define JSC_API_DEPRECATED_WITH_REPLACEMENT(...)
-#define JSC_CLASS_AVAILABLE(...) JS_EXPORT
-#endif
-
 #endif /* __WebKitAvailability__ */
Clone this wiki locally