Package evaluation to test SDPLRPlus on Julia 1.14.0-DEV.1730 (9c1e1fa299*) started at 2026-02-17T19:43:29.046 ################################################################################ # Set-up # Installing PkgEval dependencies (TestEnv)... Activating project at `~/.julia/environments/v1.14` Set-up completed after 12.5s ################################################################################ # Installation # Installing SDPLRPlus... Resolving package versions... Updating `~/.julia/environments/v1.14/Project.toml` [9040bce9] + SDPLRPlus v0.1.0 Updating `~/.julia/environments/v1.14/Manifest.toml` [6e4b80f9] + BenchmarkTools v1.6.3 [523fee87] + CodecBzip2 v0.8.5 [944b1d66] + CodecZlib v0.7.8 [bbf7d656] + CommonSubexpressions v0.3.1 [34da2185] + Compat v4.18.1 [187b0558] + ConstructionBase v1.6.0 [163ba53b] + DiffResults v1.1.0 [b552c78f] + DiffRules v1.15.1 [ffbed154] + DocStringExtensions v0.9.5 [e2ba6199] + ExprTools v0.1.10 [9aa1b823] + FastClosures v0.3.2 [1a297f60] + FillArrays v1.16.0 [f6369f11] + ForwardDiff v1.3.2 [408c25d7] + GenericArpack v0.2.1 [92d709cd] + IrrationalConstants v0.2.6 [692b3bcd] + JLLWrappers v1.7.1 [682c06a0] + JSON v1.4.0 [4076af6c] + JuMP v1.29.4 ⌅ [0b1a1467] + KrylovKit v0.9.5 [5c8ed15e] + LinearOperators v2.12.0 [2ab3a3ac] + LogExpFunctions v0.3.29 [607ca3ad] + LowRankOpt v0.2.1 [d05aeea4] + LuxurySparse v0.8.1 ⌅ [33e6dc65] + MKL v0.7.0 ⌅ [0c723cd3] + MKLSparse v2.1.1 [1914dd2f] + MacroTools v0.5.16 [b8f27783] + MathOptInterface v1.49.0 [d8a4904e] + MutableArithmetics v1.6.7 [a4795742] + NLPModels v0.21.8 [792afdf1] + NLPModelsJuMP v0.13.5 [77ba4419] + NaNMath v1.1.3 [bac558e1] + OrderedCollections v1.8.1 [65ce6f38] + PackageExtensionCompat v1.0.2 [d96e819e] + Parameters v0.12.3 [69de0a69] + Parsers v2.8.3 [3a141323] + PolynomialRoots v1.0.0 [f27b6e38] + Polynomials v4.1.0 [aea7be01] + PrecompileTools v1.3.3 [21216c6a] + Preferences v1.5.1 [3cdcf5f2] + RecipesBase v1.3.4 [ae029012] + Requires v1.3.1 [9040bce9] + SDPLRPlus v0.1.0 [efcf1570] + Setfield v1.1.2 [ff4d7338] + SolverCore v0.3.9 [276daf66] + SpecialFunctions v2.7.1 [90137ffa] + StaticArrays v1.9.16 [1e83bf80] + StaticArraysCore v1.4.4 [10745b16] + Statistics v1.11.1 [ec057cc2] + StructUtils v2.6.3 [a759f4b9] + TimerOutputs v0.5.29 [3bb67fe8] + TranscodingStreams v0.11.3 [3a884ed6] + UnPack v1.0.2 [c4a57d5a] + UnsafeArrays v1.0.8 [409d34a3] + VectorInterface v0.5.0 [6e34b625] + Bzip2_jll v1.0.9+0 ⌅ [1d5cc7b8] + IntelOpenMP_jll v2024.2.1+0 ⌅ [856f044c] + MKL_jll v2024.2.0+0 [efe28fd5] + OpenSpecFun_jll v0.5.6+0 [1317d2d5] + oneTBB_jll v2022.0.0+1 [0dad84c5] + ArgTools v1.1.2 [56f22d72] + Artifacts v1.11.0 [2a0f44e3] + Base64 v1.11.0 [ade2ca70] + Dates v1.11.0 [f43a241f] + Downloads v1.7.0 [7b1f6079] + FileWatching v1.11.0 [9fa8497b] + Future v1.11.0 [b77e0a4c] + InteractiveUtils v1.11.0 [ac6e5ff7] + JuliaSyntaxHighlighting v1.13.0 [4af54fe1] + LazyArtifacts v1.11.0 [b27032c2] + LibCURL v1.0.0 [76f85450] + LibGit2 v1.11.0 [8f399da3] + Libdl v1.11.0 [37e2e46d] + LinearAlgebra v1.13.0 [56ddb016] + Logging v1.11.0 [d6f4376e] + Markdown v1.11.0 [ca575930] + NetworkOptions v1.3.0 [44cfe95a] + Pkg v1.14.0 [de0858da] + Printf v1.11.0 [9abbd945] + Profile v1.11.0 [9a3f8284] + Random v1.11.0 [ea8e919c] + SHA v1.0.0 [9e88b42a] + Serialization v1.11.0 [2f01184e] + SparseArrays v1.13.0 [f489334b] + StyledStrings v1.13.0 [fa267f1f] + TOML v1.0.3 [a4e569a6] + Tar v1.10.0 [8dfed614] + Test v1.11.0 [cf7118a7] + UUIDs v1.11.0 [4ec0a83e] + Unicode v1.11.0 [e66e0078] + CompilerSupportLibraries_jll v1.3.0+1 [deac9b47] + LibCURL_jll v8.18.0+0 [e37daf67] + LibGit2_jll v1.9.2+0 [29816b5a] + LibSSH2_jll v1.11.3+1 [14a3606d] + MozillaCACerts_jll v2025.12.2 [4536629a] + OpenBLAS_jll v0.3.30+0 [05823500] + OpenLibm_jll v0.8.7+0 [458c3c95] + OpenSSL_jll v3.5.5+0 [efcefdf7] + PCRE2_jll v10.47.0+0 [bea87d4a] + SuiteSparse_jll v7.10.1+0 [83775a58] + Zlib_jll v1.3.1+2 [3161d3a3] + Zstd_jll v1.5.7+1 [8e850b90] + libblastrampoline_jll v5.15.0+0 [8e850ede] + nghttp2_jll v1.68.0+1 [3f19e933] + p7zip_jll v17.7.0+0 Info Packages marked with ⌅ have new versions available but compatibility constraints restrict them from upgrading. To see why use `status --outdated -m` Installation completed after 5.48s ################################################################################ # Precompilation # Precompiling PkgEval dependencies... Precompiling package dependencies... Precompiling packages... 640910.5 ms ✓ MKLSparse 5591.7 ms ✓ MKL 17463.4 ms ✓ SDPLRPlus 3 dependencies successfully precompiled in 666 seconds. 103 already precompiled. Precompilation completed after 687.03s ################################################################################ # Testing # Testing SDPLRPlus Status `/tmp/jl_lDN6R6/Project.toml` [408c25d7] GenericArpack v0.2.1 [607ca3ad] LowRankOpt v0.2.1 [d05aeea4] LuxurySparse v0.8.1 ⌅ [33e6dc65] MKL v0.7.0 ⌅ [0c723cd3] MKLSparse v2.1.1 [a4795742] NLPModels v0.21.8 [d96e819e] Parameters v0.12.3 [3a141323] PolynomialRoots v1.0.0 [f27b6e38] Polynomials v4.1.0 [9040bce9] SDPLRPlus v0.1.0 [ff4d7338] SolverCore v0.3.9 [37e2e46d] LinearAlgebra v1.13.0 [de0858da] Printf v1.11.0 [9a3f8284] Random v1.11.0 [2f01184e] SparseArrays v1.13.0 [8dfed614] Test v1.11.0 Status `/tmp/jl_lDN6R6/Manifest.toml` [6e4b80f9] BenchmarkTools v1.6.3 [523fee87] CodecBzip2 v0.8.5 [944b1d66] CodecZlib v0.7.8 [bbf7d656] CommonSubexpressions v0.3.1 [34da2185] Compat v4.18.1 [187b0558] ConstructionBase v1.6.0 [163ba53b] DiffResults v1.1.0 [b552c78f] DiffRules v1.15.1 [ffbed154] DocStringExtensions v0.9.5 [e2ba6199] ExprTools v0.1.10 [9aa1b823] FastClosures v0.3.2 [1a297f60] FillArrays v1.16.0 [f6369f11] ForwardDiff v1.3.2 [408c25d7] GenericArpack v0.2.1 [92d709cd] IrrationalConstants v0.2.6 [692b3bcd] JLLWrappers v1.7.1 [682c06a0] JSON v1.4.0 [4076af6c] JuMP v1.29.4 ⌅ [0b1a1467] KrylovKit v0.9.5 [5c8ed15e] LinearOperators v2.12.0 [2ab3a3ac] LogExpFunctions v0.3.29 [607ca3ad] LowRankOpt v0.2.1 [d05aeea4] LuxurySparse v0.8.1 ⌅ [33e6dc65] MKL v0.7.0 ⌅ [0c723cd3] MKLSparse v2.1.1 [1914dd2f] MacroTools v0.5.16 [b8f27783] MathOptInterface v1.49.0 [d8a4904e] MutableArithmetics v1.6.7 [a4795742] NLPModels v0.21.8 [792afdf1] NLPModelsJuMP v0.13.5 [77ba4419] NaNMath v1.1.3 [bac558e1] OrderedCollections v1.8.1 [65ce6f38] PackageExtensionCompat v1.0.2 [d96e819e] Parameters v0.12.3 [69de0a69] Parsers v2.8.3 [3a141323] PolynomialRoots v1.0.0 [f27b6e38] Polynomials v4.1.0 [aea7be01] PrecompileTools v1.3.3 [21216c6a] Preferences v1.5.1 [3cdcf5f2] RecipesBase v1.3.4 [ae029012] Requires v1.3.1 [9040bce9] SDPLRPlus v0.1.0 [efcf1570] Setfield v1.1.2 [ff4d7338] SolverCore v0.3.9 [276daf66] SpecialFunctions v2.7.1 [90137ffa] StaticArrays v1.9.16 [1e83bf80] StaticArraysCore v1.4.4 [10745b16] Statistics v1.11.1 [ec057cc2] StructUtils v2.6.3 [a759f4b9] TimerOutputs v0.5.29 [3bb67fe8] TranscodingStreams v0.11.3 [3a884ed6] UnPack v1.0.2 [c4a57d5a] UnsafeArrays v1.0.8 [409d34a3] VectorInterface v0.5.0 [6e34b625] Bzip2_jll v1.0.9+0 ⌅ [1d5cc7b8] IntelOpenMP_jll v2024.2.1+0 ⌅ [856f044c] MKL_jll v2024.2.0+0 [efe28fd5] OpenSpecFun_jll v0.5.6+0 [1317d2d5] oneTBB_jll v2022.0.0+1 [0dad84c5] ArgTools v1.1.2 [56f22d72] Artifacts v1.11.0 [2a0f44e3] Base64 v1.11.0 [ade2ca70] Dates v1.11.0 [f43a241f] Downloads v1.7.0 [7b1f6079] FileWatching v1.11.0 [9fa8497b] Future v1.11.0 [b77e0a4c] InteractiveUtils v1.11.0 [ac6e5ff7] JuliaSyntaxHighlighting v1.13.0 [4af54fe1] LazyArtifacts v1.11.0 [b27032c2] LibCURL v1.0.0 [76f85450] LibGit2 v1.11.0 [8f399da3] Libdl v1.11.0 [37e2e46d] LinearAlgebra v1.13.0 [56ddb016] Logging v1.11.0 [d6f4376e] Markdown v1.11.0 [ca575930] NetworkOptions v1.3.0 [44cfe95a] Pkg v1.14.0 [de0858da] Printf v1.11.0 [9abbd945] Profile v1.11.0 [9a3f8284] Random v1.11.0 [ea8e919c] SHA v1.0.0 [9e88b42a] Serialization v1.11.0 [2f01184e] SparseArrays v1.13.0 [f489334b] StyledStrings v1.13.0 [fa267f1f] TOML v1.0.3 [a4e569a6] Tar v1.10.0 [8dfed614] Test v1.11.0 [cf7118a7] UUIDs v1.11.0 [4ec0a83e] Unicode v1.11.0 [e66e0078] CompilerSupportLibraries_jll v1.3.0+1 [deac9b47] LibCURL_jll v8.18.0+0 [e37daf67] LibGit2_jll v1.9.2+0 [29816b5a] LibSSH2_jll v1.11.3+1 [14a3606d] MozillaCACerts_jll v2025.12.2 [4536629a] OpenBLAS_jll v0.3.30+0 [05823500] OpenLibm_jll v0.8.7+0 [458c3c95] OpenSSL_jll v3.5.5+0 [efcefdf7] PCRE2_jll v10.47.0+0 [bea87d4a] SuiteSparse_jll v7.10.1+0 [83775a58] Zlib_jll v1.3.1+2 [3161d3a3] Zstd_jll v1.5.7+1 [8e850b90] libblastrampoline_jll v5.15.0+0 [8e850ede] nghttp2_jll v1.68.0+1 [3f19e933] p7zip_jll v17.7.0+0 Info Packages marked with ⌅ have new versions available but compatibility constraints restrict them from upgrading. Testing Running tests... Test Summary: | Pass Total Time SymLowRankMatrix tests | 200 200 4.9s [ Info: Max Cut SDP is formed. ========================================================================================================================= SDPLRPlus.jl: a julia implementation of SDPLR with objval gap bound ========================================================================================================================= [ Info: Finish classifying constraints. dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 1 1 1 1.542e-01 -1.519e-01 4.478e-01 3.844e-01 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 2 7 8 -4.564e-01 -3.538e-02 5.600e-02 2.821e-01 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 3 3 11 -1.139e+00 -1.264e+00 1.135e-01 1.581e-01 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 4 1 12 -1.000e+00 -1.002e+00 5.593e-02 1.844e-02 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 5 1 13 -1.000e+00 -9.956e-01 9.738e-06 5.861e-03 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 6 1 14 -1.000e+00 -9.996e-01 1.834e-03 5.429e-04 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 7 0 14 -1.000e+00 -9.996e-01 4.021e-03 5.429e-04 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 8 1 15 -1.000e+00 -1.001e+00 4.278e-04 5.561e-04 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 9 1 16 -1.000e+00 -1.000e+00 2.045e-04 7.446e-05 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 10 0 16 -1.000e+00 -1.000e+00 6.673e-04 7.446e-05 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 11 1 17 -1.000e+00 -9.999e-01 5.720e-05 9.901e-05 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 12 1 18 -1.000e+00 -1.000e+00 3.676e-05 9.234e-06 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 13 0 18 -1.000e+00 -1.000e+00 9.509e-05 9.234e-06 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 14 1 19 -1.000e+00 -1.000e+00 9.027e-06 1.360e-05 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 15 1 20 -1.000e+00 -1.000e+00 5.123e-06 1.549e-06 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 16 0 20 -1.000e+00 -1.000e+00 1.473e-05 1.549e-06 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 17 1 21 -1.000e+00 -1.000e+00 9.819e-07 2.233e-06 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 18 1 22 -1.000e+00 -1.000e+00 7.256e-07 1.562e-07 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 19 0 22 -1.000e+00 -1.000e+00 1.717e-06 1.562e-07 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 20 1 23 -1.000e+00 -1.000e+00 1.537e-07 2.367e-07 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 21 1 24 -1.000e+00 -1.000e+00 7.642e-08 2.910e-08 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 22 1 25 -1.000e+00 -1.000e+00 2.530e-09 1.184e-08 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 23 0 25 -1.000e+00 -1.000e+00 7.736e-08 1.184e-08 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 24 1 26 -1.000e+00 -1.000e+00 8.215e-09 1.125e-08 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 25 1 27 -1.000e+00 -1.000e+00 4.239e-09 1.316e-09 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 25 -1 27 -1.000e+00 -1.000e+00 4.239e-09 1.316e-09 9.717e-10 ========================================================================================================================= End of SDPLRPlus.jl ========================================================================================================================= Test Summary: | Pass Total Time Max Cut | 1 1 1m12.0s [ Info: Minimum Bisection SDP is formed. ========================================================================================================================= SDPLRPlus.jl: a julia implementation of SDPLR with objval gap bound ========================================================================================================================= [ Info: Finish classifying constraints. dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 1 5 5 7.183e-01 6.664e-01 1.648e-01 3.073e-01 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 2 3 8 9.228e-01 1.060e+00 4.713e-02 1.260e-01 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 3 1 9 1.000e+00 9.628e-01 1.171e-01 2.404e-02 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 4 1 10 9.981e-01 1.029e+00 6.420e-03 1.874e-02 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 5 1 11 1.000e+00 9.992e-01 5.933e-03 1.421e-03 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 6 0 11 1.000e+00 9.992e-01 6.857e-03 1.421e-03 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 7 1 12 1.000e+00 1.002e+00 9.809e-04 1.254e-03 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 8 1 13 1.000e+00 9.997e-01 4.343e-04 1.697e-04 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 9 0 13 1.000e+00 9.997e-01 1.464e-03 1.697e-04 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 10 1 14 1.000e+00 1.000e+00 1.497e-04 2.422e-04 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 11 1 15 1.000e+00 1.000e+00 8.874e-05 2.486e-05 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 12 1 16 1.000e+00 1.000e+00 1.640e-05 1.633e-05 3.528e-01 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 13 0 16 1.000e+00 1.000e+00 1.032e-04 1.633e-05 3.528e-01 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 14 1 17 1.000e+00 1.000e+00 1.365e-05 1.878e-05 3.528e-01 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 15 1 18 1.000e+00 1.000e+00 8.106e-06 2.581e-06 3.732e-02 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 16 1 19 1.000e+00 1.000e+00 1.098e-06 1.326e-06 3.732e-02 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 17 1 20 1.000e+00 1.000e+00 5.285e-07 1.651e-07 3.732e-02 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 18 0 20 1.000e+00 1.000e+00 1.589e-06 1.651e-07 3.732e-02 [ Info: rank doubled, newrank is 2. dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 19 1 21 6.913e-01 6.363e-01 1.472e-01 2.468e-01 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 20 2 23 1.008e+00 1.029e+00 1.298e-01 2.890e-02 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 21 1 24 1.006e+00 9.652e-01 1.051e-01 1.978e-02 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 22 2 26 1.000e+00 1.020e+00 5.499e-02 1.210e-02 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 23 1 27 9.997e-01 9.934e-01 1.089e-02 7.775e-03 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 24 1 28 1.000e+00 9.983e-01 6.746e-03 1.027e-03 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 25 1 29 1.000e+00 1.001e+00 5.433e-03 8.970e-04 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 26 2 31 1.000e+00 9.989e-01 2.945e-03 6.397e-04 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 27 1 32 1.000e+00 1.000e+00 6.165e-04 4.167e-04 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 28 1 33 1.000e+00 1.000e+00 3.784e-04 5.887e-05 1.000e+20 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 29 1 34 1.000e+00 9.999e-01 3.089e-04 4.844e-05 2.409e-04 dataset majoriter localiter totaliter Lagranval objval gradnorm pvio val best suboptimality 29 -1 34 1.000e+00 9.999e-01 3.089e-04 4.844e-05 -1.937e-04 ========================================================================================================================= End of SDPLRPlus.jl ========================================================================================================================= Test Summary: | Pass Total Time Minimum Bisection | 1 1 1.5s Testing SDPLRPlus tests passed Testing completed after 102.71s PkgEval succeeded after 820.89s