Skip to content

UInt2048/CyberKit

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 

Repository files navigation

CyberKit

CyberKit is a backport of WebKit to older iOS.

Installation

Please visit the releases.

Official OS support & FAQ

Please visit the CyberKit wiki.

Development Branch History

You can clone just the current development branch with git clone -b safari-7619.1.26.31-branch --single-branch https://github.com/UInt2048/CyberKit.git

  • safari-7619.1.26.31-branch: 22 October 2024 - present (used in v0.0.9 nightly - present)
    • Diverged 13 July 2024; built in Xcode 16.0
  • safari-7617.1.4-branch: 9 December 2023 - 21 October 2024 (not used in release)
    • Diverged 6 August 2023; built in Xcode 13.7
  • safari-7616.1.27.211-branch: 2 October 2023 - 19 October 2024 (used in v0.0.9 alpha)
    • Diverged 7 July 2023; built in Xcode 13.7
  • safari-7616.1.12-branch: 11 May 2023 - 2 October 2023 (used in v0.0.7 alpha - v0.0.8 nightly)
    • Diverged 22 April 2023; built in Xcode 14.3 before 688c678 (committed 31 July 2023), 13.7 starting with 688c678
  • safari-7616.1.7-branch: 24 March 2023 - 11 May 2023 (used in v0.0.1 alpha - v0.0.6 alpha)
    • Diverged 19 March 2023; built in Xcode 14.2 before fa2170c (committed 7 April 2023), 14.3 starting with fa2170c
  • safari-7616.1.4-branch: 5 March 2023 - 24 March 2023 (not used in release)
    • Diverged 25 February 2023; built in Xcode 14.2
  • safari-7616.1.4pre-branch: 25 February 2023 - 5 March 2023 (not used in release)
    • Diverged 25 February 2023; built in Xcode 14.2
  • safari-7616.1.3-branch: 25 February 2023 (not used in release)
    • Diverged 18 February 2023; built in Xcode 14.2
  • safari-7615.1.15-branch: 31 January 2023 - 24 February 2023 (not used in release)
    • Diverged 11 December 2022; built in Xcode 14.2

Reference Implementations

You may find https://en.wikipedia.org/w/index.php?title=Safari_version_history&oldid=1186257925 beneficial to view correspondence between Safari version and iOS version.

  • safari-607-branch: 19 May 2023 - 21 July 2023 (used in v0.0.8 ref607)
    • Diverged 7 January 2019; built in Xcode 11.7
  • safari-608-branch: 21 July 2023 - 22 July 2023 (used in v0.0.8 ref608)
    • Diverged 15 July 2019; built in Xcode 11.7
  • safari-609-branch: 22 July 2023 - 24 July 2023 (used in v0.0.8 ref609)
    • Diverged 3 January 2020; built in Xcode 11.7
  • safari-610-branch: 24 July 2023 - present (not used in release)
    • Diverged 21 August 2020; built in Xcode 11.7

Building from Source

If building yourself, you may wish to use the version of Xcode used at the time to build the commit you are building.

On branches diverging before 1 May 2024 (before safari-7619.1.12-branch, see WebKit#27941), you must run Tools/Scripts/configure-xcode-for-embedded-development before 1st build or any time you reinstall/update Xcode or its SDKs. If you need the xpc.h header, you can get it from https://github.com/theos/templates/tree/f0fb942c4bb90ef331126e2b38257974b18bc895/ios/xpc_service/headers.

Even now, it still may be useful to replace or supplement Xcode's SDK with one with private headers from https://github.com/theos/sdks. Officially, support for building on the public SDK was introduced in late 2014:

  • JavaScript and bmalloc first built on the public SDK on 13 August 2014 (see 8af367f).
  • WebCore first built on the public SDK on 17 September 2014 (see 226279b).

If a branch needs a newer configure script, you can grab one like this from the ref607 branch: OUT_FILE=~/Desktop/conf; git show 62f80e2:Tools/Scripts/configure-xcode-for-ios-development > $OUT_FILE; chmod 755 $OUT_FILE; $OUT_FILE

On branches diverging before 18 February 2016 (before safari-602.1.32-branch, see bbc738d), you must build LLVM. You can do so as documented in 1f5b857:

If there are already precompiled binaries:

  1. Obtain the precompiled binaries: git checkout 1f5b857 WebKitLibraries/LLVMIncludesIOS9.tar.bz2 WebKitLibraries/LLVMLibrariesIOS9.tar.bz2
  2. Run the command perl Tools/Scripts/copy-webkitlibraries-to-product-directory --llvm --sdk=iphoneos --use-llvm-includes=WebKitLibraries/LLVMIncludesIOS9.tar.bz2 --use-llvm-libraries=WebKitLibraries/LLVMLibrariesIOS9.tar.bz2 WebKitBuild/Debug-iphoneos

If you wish to create precompiled binaries:

  1. Attain the LLVM source code for an appropriately old release. For instance, from https://releases.llvm.org/download.html#3.6.2, choose http://llvm.org/releases/3.6.2/llvm-3.6.2.src.tar.xz.
    • You can confirm if the version you selected will work if adding the precompiled OS X headers to HEADER_SEARCH_PATHS in LLVMForJSC.xcconfig allows you to build the target llvmForJSC. Note this will not link on iOS, due to architecture issues.
  2. If your CyberKit git repo is at ~/Documents/git/CyberKit, expand this archive to ~/Documents/git/CyberKit/llvm.
  3. If your branch diverged before 8 October 2015, run git checkout 1f5b857 Tools/Scripts/copy-webkitlibraries-to-product-directory.
  4. Theoretically, you can run the command perl Tools/Scripts/copy-webkitlibraries-to-product-directory --llvm --sdk=iphoneos WebKitBuild/Debug-iphoneos. This step may require changes.

You may be able to ad hoc sign in some commits beginning 2 January 2024 without changes to CyberKit itself. Support for this is limited, but it may be the only method on some Apple Silicon VMs, as explained below.

You will build the "Everything up to CyberKit" target then the appropriate app.

Development Environment Notes

Development is performed on macOS using Xcode. However, owing to the number of Xcode versions required, you may need to virtualize or emulate other macOS versions.

Xcode versions are chosen based on the date of commits and the iOS versions supported. The minimum deployment targets can be viewed at https://developer.apple.com/support/xcode/#minimum-requirements. Note that Xcode below 10 did not have a minimum deployment target, so running Xcode 9.4.1 on macOS Mojave should be the earliest Xcode you need to use for any branch.

If you need to emulate an Intel version of macOS on Apple Silicon, you can use UTM:

  1. Obtain the requisite macOS install files via https://github.com/corpnewt/gibMacOS. If you don't get a full installer, you can use BaseSystem.dmg or RestoreImage.dmg instead.
  2. Obtain the UTM configuration file from https://github.com/adespoton/utmconfigs.
  3. Import the macOS install file you obtained in the UTM configuration and install macOS.

For later versions, you can dualboot or use the built-in virtualization framework. Note that Apple Silicon VMs require both the host and guest to be on, and have been created on, macOS 15 or later, in order to sign in to your Apple ID in Xcode due to entitlement issues.

If you are running under Intel, I previously had success with virtualizing older macOS versions with https://github.com/myspaghetti/macos-virtualbox but it is no longer maintained. You might consider dualbooting for performance reasons, or check out other methods like https://github.com/kholia/OSX-KVM.

About

CyberKit is a backport of the open-source WebKit engine to improve the browser experience of older iOS versions.

Resources

License

Stars

Watchers

Forks

Packages

No packages published