From ce26be21cfb4a2fedbf27b449fa16dd2e1f4a78f Mon Sep 17 00:00:00 2001 From: Eric Date: Sun, 16 Jun 2024 15:39:27 -0700 Subject: [PATCH] v1.7.35 --- .efrocachemap | 128 +++++++++--------- CHANGELOG.md | 15 +- Makefile | 89 +++++++----- config/requirements.txt | 12 +- src/assets/ba_data/python/baenv.py | 2 +- src/ballistica/base/platform/base_platform.cc | 4 +- src/ballistica/shared/ballistica.cc | 2 +- tools/efro/error.py | 6 +- tools/efro/message/_protocol.py | 14 +- tools/efro/message/_receiver.py | 3 +- tools/efro/message/_sender.py | 23 +++- tools/efrotools/pybuild.py | 11 ++ 12 files changed, 167 insertions(+), 142 deletions(-) diff --git a/.efrocachemap b/.efrocachemap index 25ba089b6..cfbb83311 100644 --- a/.efrocachemap +++ b/.efrocachemap @@ -421,7 +421,7 @@ "build/assets/ba_data/audio/zoeOw.ogg": "74befe45a8417e95b6a2233c51992a26", "build/assets/ba_data/audio/zoePickup01.ogg": "48ab8cddfcde36a750856f3f81dd20c8", "build/assets/ba_data/audio/zoeScream01.ogg": "2b468aedfa8741090247f04eb9e6df55", - "build/assets/ba_data/data/langdata.json": "7e73466677344c1722aebe94003360d5", + "build/assets/ba_data/data/langdata.json": "b83c9445922f68152c5d0efa1f0fe608", "build/assets/ba_data/data/languages/arabic.json": "05040616cb7585e3cce2e9acba96aa75", "build/assets/ba_data/data/languages/belarussian.json": "3d5523d0004293aa2df02f3f6f3b84f8", "build/assets/ba_data/data/languages/chinese.json": "2f67c6b127ae85492ac552af1a91e95a", @@ -432,21 +432,21 @@ "build/assets/ba_data/data/languages/dutch.json": "b0900d572c9141897d53d6574c471343", "build/assets/ba_data/data/languages/english.json": "9754e816d3bc3214b7e809950d642309", "build/assets/ba_data/data/languages/esperanto.json": "0e397cfa5f3fb8cef5f4a64f21cda880", - "build/assets/ba_data/data/languages/filipino.json": "9c04219ceeb065b3bc751e6ab3731def", - "build/assets/ba_data/data/languages/french.json": "ee2a81129519d7030a617308da8c9195", + "build/assets/ba_data/data/languages/filipino.json": "aa8c94a49dec96d050be2329c3b6dcba", + "build/assets/ba_data/data/languages/french.json": "b7d11199756f0eb4f1a745ceee652b2a", "build/assets/ba_data/data/languages/german.json": "198b9860c5b9df7b8e3e30b03d8755cb", "build/assets/ba_data/data/languages/gibberish.json": "3e68d809bd6ede3b9e2c57c147737e42", "build/assets/ba_data/data/languages/greek.json": "ad3c0d38f34d809824892d6f22808dbf", "build/assets/ba_data/data/languages/hindi.json": "bb3548531daf7bc7fee4a28d48228c32", "build/assets/ba_data/data/languages/hungarian.json": "6b08fea24b72cc805ed0dc59e11c4cd6", - "build/assets/ba_data/data/languages/indonesian.json": "9103845242b572aa8ba48e24f81ddb68", + "build/assets/ba_data/data/languages/indonesian.json": "ed9038bf4b9216f93eb73e753e162706", "build/assets/ba_data/data/languages/italian.json": "e1d69eb1eec31442bf981121c7cfaf17", "build/assets/ba_data/data/languages/korean.json": "4e3524327a0174250aff5e1ef4c0c597", "build/assets/ba_data/data/languages/malay.json": "f6ce0426d03a62612e3e436ed5d1be1f", "build/assets/ba_data/data/languages/persian.json": "c209f8f6d3b3dd40d5ca9d36fe0721fe", "build/assets/ba_data/data/languages/polish.json": "59ff98adfb4f515f00769d1ec229c232", "build/assets/ba_data/data/languages/portuguese.json": "615a59bd03f84659158d9f2608a4ab21", - "build/assets/ba_data/data/languages/romanian.json": "b3e46efd6f869dbd78014570e037c290", + "build/assets/ba_data/data/languages/romanian.json": "ef68520f749cf3641d4e4225a6166349", "build/assets/ba_data/data/languages/russian.json": "41e06eda170fb5960393dd6b58d046e1", "build/assets/ba_data/data/languages/serbian.json": "d7452dd72ac0e51680cb39b5ebaa1c69", "build/assets/ba_data/data/languages/slovak.json": "3c08c748c96c71bd9e1d7291fb8817b6", @@ -455,7 +455,7 @@ "build/assets/ba_data/data/languages/tamil.json": "b9fcc523639f55e05c7f4e7914f3321a", "build/assets/ba_data/data/languages/thai.json": "1d665629361f302693dead39de8fa945", "build/assets/ba_data/data/languages/turkish.json": "fe4c7354ca6e657c2645969325af574a", - "build/assets/ba_data/data/languages/ukrainian.json": "76ad64cb4911c8d5a3e4815b865ce5bd", + "build/assets/ba_data/data/languages/ukrainian.json": "3f9ee9567a068b760bbf25433177db89", "build/assets/ba_data/data/languages/venetian.json": "96e7607b0aa79b7eb48cac8df77e8e65", "build/assets/ba_data/data/languages/vietnamese.json": "b175cd0f01d0433355f144aeaa333409", "build/assets/ba_data/data/maps/big_g.json": "1dd301d490643088a435ce75df971054", @@ -945,11 +945,11 @@ "build/assets/ba_data/meshes/zoeTorso.bob": "26a1007e98902178d8c62fd7069d5da5", "build/assets/ba_data/meshes/zoeUpperArm.bob": "a8a881010ac1ee9ec5ca872d5c5e853a", "build/assets/ba_data/meshes/zoeUpperLeg.bob": "95b2502f74c70f934927f67cd505c3ad", - "build/assets/ba_data/python-site-packages/certifi/__init__.py": "98360d9e66de68a618eed6098a65405b", + "build/assets/ba_data/python-site-packages/certifi/__init__.py": "c935c5aee4052f1c76954ace35723dfe", "build/assets/ba_data/python-site-packages/certifi/__main__.py": "ef02e73f8581609df189a9f61aca365b", - "build/assets/ba_data/python-site-packages/certifi/cacert.pem": "4e587dca9ab75057ffef6658ed385ff2", + "build/assets/ba_data/python-site-packages/certifi/cacert.pem": "47f35c87a8abc6ace093db7c215f1eab", "build/assets/ba_data/python-site-packages/certifi/core.py": "c1b8c102093ea26587619677c7ec6016", - "build/assets/ba_data/python-site-packages/typing_extensions.py": "f1af94a03caf6fc79be0aedc8ab03090", + "build/assets/ba_data/python-site-packages/typing_extensions.py": "1f6b4db70adb7ca05dff2b74f6cde8aa", "build/assets/ba_data/textures/achievementBoxer.dds": "5b5c461e67f3a92105b56fe264a7dd28", "build/assets/ba_data/textures/achievementBoxer.ktx": "1055e009423ea1d0bc3b172f9d7328bb", "build/assets/ba_data/textures/achievementBoxer.pvr": "48f212189a6d83d29be410613b4f0005", @@ -3038,16 +3038,16 @@ "build/assets/pylib-apple/_pylong.py": "e057ab3c9eea264704dff2af204884f8", "build/assets/pylib-apple/_sitebuiltins.py": "8b5e3f6e73917962fa014ad2c4a55e61", "build/assets/pylib-apple/_strptime.py": "ed6521fd413f31f0de7be162af8db9f5", - "build/assets/pylib-apple/_sysconfigdata__darwin_darwin.py": "bc494dcb0239846f92c26622e84fb99d", - "build/assets/pylib-apple/_sysconfigdata__ios_iphoneos-arm64.py": "f073b8cdfe4179236abb923d538e7fbe", - "build/assets/pylib-apple/_sysconfigdata__ios_iphonesimulator-arm64.py": "2c3a1b46d9966d740b226d0d603a392a", - "build/assets/pylib-apple/_sysconfigdata__tvos_appletvos-arm64.py": "df1d00e8a7b529d64e600c8113d872d7", - "build/assets/pylib-apple/_sysconfigdata__tvos_appletvsimulator-arm64.py": "f9b8d515e7a6619fea32ab77c341b294", - "build/assets/pylib-apple/_sysconfigdata_d_darwin_darwin.py": "bd1f109ca34c52afd95632f7ae64171f", - "build/assets/pylib-apple/_sysconfigdata_d_ios_iphoneos-arm64.py": "178d3dc412e56aeaa211c8f5237f9462", - "build/assets/pylib-apple/_sysconfigdata_d_ios_iphonesimulator-arm64.py": "fc568dd0c36d2253993b9a48f53535d6", - "build/assets/pylib-apple/_sysconfigdata_d_tvos_appletvos-arm64.py": "50e50f852dc4f6acd785fa83c2e6530b", - "build/assets/pylib-apple/_sysconfigdata_d_tvos_appletvsimulator-arm64.py": "5e2dd0675c1364fb20fb7777c4c0eeb0", + "build/assets/pylib-apple/_sysconfigdata__darwin_darwin.py": "0cf2ec75dca64a6fd736fbf0d7cf21d7", + "build/assets/pylib-apple/_sysconfigdata__ios_iphoneos-arm64.py": "00f4ef0ea2ae8fa7994813bca8972016", + "build/assets/pylib-apple/_sysconfigdata__ios_iphonesimulator-arm64.py": "4a3f247c7dfc903e89fda0bd20ef48fb", + "build/assets/pylib-apple/_sysconfigdata__tvos_appletvos-arm64.py": "6a817c7dcc35197e965ef4d1be6a5c94", + "build/assets/pylib-apple/_sysconfigdata__tvos_appletvsimulator-arm64.py": "d3adfa519698ddd824b4ef721c3460b7", + "build/assets/pylib-apple/_sysconfigdata_d_darwin_darwin.py": "776b50a7ff9d04c04a73df196b556848", + "build/assets/pylib-apple/_sysconfigdata_d_ios_iphoneos-arm64.py": "6700b08928d64c1c1eac4412c377e86e", + "build/assets/pylib-apple/_sysconfigdata_d_ios_iphonesimulator-arm64.py": "4fd4334d6c43fe9f65ae83905c6b8a33", + "build/assets/pylib-apple/_sysconfigdata_d_tvos_appletvos-arm64.py": "ad79fe9e0594bbc43adf53c96a4a81dc", + "build/assets/pylib-apple/_sysconfigdata_d_tvos_appletvsimulator-arm64.py": "18829d0bbee15874cd46cbe8d85e36e8", "build/assets/pylib-apple/_threading_local.py": "4a9688e3987d7d692db46feb9214945e", "build/assets/pylib-apple/_weakrefset.py": "e4fa8532ace46dfbc35149c41ea497f7", "build/assets/pylib-apple/abc.py": "a0daa1ed187eee8690c1e8438b97da90", @@ -3445,7 +3445,7 @@ "build/assets/pylib-apple/typing.py": "a5996aa02b21708d88c67946dabd529e", "build/assets/pylib-apple/urllib/__init__.py": "340c83beff7dcff8f5c7b87cd43cedaf", "build/assets/pylib-apple/urllib/error.py": "b7dde0483ff647eb87162d6e19c04fa0", - "build/assets/pylib-apple/urllib/parse.py": "112c518e8857be22f75ef4cd668fe5b4", + "build/assets/pylib-apple/urllib/parse.py": "8fa7882c3e97acfde85cb4486a0ceedf", "build/assets/pylib-apple/urllib/request.py": "2a9f2ec22765c9959240f559bcb2fca3", "build/assets/pylib-apple/urllib/response.py": "c8537707a4b1e493c0ec4489ab523c93", "build/assets/pylib-apple/urllib/robotparser.py": "5a7616bdf398c166f953ad48c25506eb", @@ -4038,50 +4038,50 @@ "build/assets/windows/Win32/ucrtbased.dll": "2def5335207d41b21b9823f6805997f1", "build/assets/windows/Win32/vc_redist.x86.exe": "b08a55e2e77623fe657bea24f223a3ae", "build/assets/windows/Win32/vcruntime140d.dll": "865b2af4d1e26a1a8073c89acb06e599", - "build/prefab/full/linux_arm64_gui/debug/ballisticakit": "0c51eee4af632ca8e9132edfea6c5ef5", - "build/prefab/full/linux_arm64_gui/release/ballisticakit": "d086ea46307e571d6278a1ac00e7199f", - "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "4119ef59158a5572098c997a01988d42", - "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "6f59df95b4c858986852123b779ea70c", - "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "62505635f81cb7ed9804ec5b0eb43c5a", - "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "8e493b1b5c987401daa7cda81e7faeb9", - "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "bb97152641a4ce2c41722ef4da314086", - "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "843f0dfcd9bdc2b6886cdd1ac6ba0fc2", - "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "76fff737c7e5e513aa0c55d6dbe179a4", - "build/prefab/full/mac_arm64_gui/release/ballisticakit": "4e81fe4c953d35f96c81ec19f93525d3", - "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "33d430a5730d2c226765a11f86dd0599", - "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "6cd4a729aacbb3838ea020bdfc7d67d2", - "build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "2b5f1112f0328d69f3863fb2e06a730d", - "build/prefab/full/mac_x86_64_gui/release/ballisticakit": "b051c7642dfcf446dcd1657c121eac21", - "build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "dc8e5d62bcfc1a645c028a7df7ecb738", - "build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "4548c17cdfe8998aa8ecb31ad973ae74", - "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "333d8035d9233fee2e2b09c158c720e6", - "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "3f4453380fd5d175c8fb18d8ca3ece4f", - "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "8d19f198e01491a98bede19987b8cc8f", - "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "2270da9585ffdca2c0eab77196c3f7d4", - "build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "bb11ac758712a51791340d19121b9791", - "build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "c47ac1d2e839e4e3b701a7c59080dd09", - "build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "bb11ac758712a51791340d19121b9791", - "build/prefab/lib/linux_arm64_server/release/libballisticaplus.a": "c47ac1d2e839e4e3b701a7c59080dd09", - "build/prefab/lib/linux_x86_64_gui/debug/libballisticaplus.a": "9cb1b5b345dd00b58992913677a4ad7e", - "build/prefab/lib/linux_x86_64_gui/release/libballisticaplus.a": "8a961e945aeb0120d924ec06a162fb55", - "build/prefab/lib/linux_x86_64_server/debug/libballisticaplus.a": "9cb1b5b345dd00b58992913677a4ad7e", - "build/prefab/lib/linux_x86_64_server/release/libballisticaplus.a": "8a961e945aeb0120d924ec06a162fb55", - "build/prefab/lib/mac_arm64_gui/debug/libballisticaplus.a": "5fcc0e89141d36e5b152095bfcc21fa1", - "build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "1b63b3daeff198825740a426fe5f7a9f", - "build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "5fcc0e89141d36e5b152095bfcc21fa1", - "build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "1b63b3daeff198825740a426fe5f7a9f", - "build/prefab/lib/mac_x86_64_gui/debug/libballisticaplus.a": "e86e8adff4bf043e2c3796ed499ca134", - "build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "2fddab497b60617bcaa467a458e5534c", - "build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "b21ff6427895bcd8628ea55a3c2d8609", - "build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "2fddab497b60617bcaa467a458e5534c", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "4594d3bdd6f0d5103da725b67c442ca5", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "37f0e4fef1e9106835c572a12f8a0354", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "660139dfa55cdbc071bf43526504823b", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "a1961b9730c58599ef326b6af9da7f93", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "f534609cbfc3b2743a07c0aafb380f4b", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "fd05e46d0f3acbf9dfa6a6d3b7f75926", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "db3a41fe7b3b22c90229b3ecdeb2e5ec", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "9b21b94333a5f61d45c40bcb94a53a53", + "build/prefab/full/linux_arm64_gui/debug/ballisticakit": "1f69ddeb02931a14350dca8c9f57d7f1", + "build/prefab/full/linux_arm64_gui/release/ballisticakit": "4ef2017d98434d78fc6d16121220241e", + "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "9c131cc99b84ead5c6c4ca62167cff9b", + "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "d24cf6110773ef8b4814d666e8c0c435", + "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "831b1526ece045decbf1e0de5af24052", + "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "e20c0e2216583337f0f1b6529d0ba11f", + "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "75a8601f7e9f82af46d93ffc8a256a7b", + "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "b6dd5a6381c76da06d4e3f28b9ae26d7", + "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "dd1829cd7953bffed20763c27e4808e2", + "build/prefab/full/mac_arm64_gui/release/ballisticakit": "68a9183674846903f4dec83d94023498", + "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "370ae7af55f55c44ec97cae1713eaf44", + "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "f346ea68ff1614e64b5555c5fed60618", + "build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "5b3b46d00315fd42f919e881c9db9751", + "build/prefab/full/mac_x86_64_gui/release/ballisticakit": "e1e54514c6322544a41f53c84e441967", + "build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "88c3f1d881df02bfc82bd7b228301cab", + "build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "6712b886792057c5cac6bfcbbf93fa6f", + "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "b2334c71efedceb6c3d996a2d3923ac5", + "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "b010230a5dece5a69b3fe02bef3da05d", + "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "36809929a0ad003aae6c96c19a447bc5", + "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "c65becdb22959fb4144bf51cb567ab13", + "build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "c471e06d03862e91a2a949806803efbd", + "build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "4f7b8eed54eb4c7d2b6400aaa4dfa37c", + "build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "c471e06d03862e91a2a949806803efbd", + "build/prefab/lib/linux_arm64_server/release/libballisticaplus.a": "4f7b8eed54eb4c7d2b6400aaa4dfa37c", + "build/prefab/lib/linux_x86_64_gui/debug/libballisticaplus.a": "ec5f39fe33f753cace45ecda7b78e376", + "build/prefab/lib/linux_x86_64_gui/release/libballisticaplus.a": "5ca18c2abecb1b369ddd7ff43880baa0", + "build/prefab/lib/linux_x86_64_server/debug/libballisticaplus.a": "ec5f39fe33f753cace45ecda7b78e376", + "build/prefab/lib/linux_x86_64_server/release/libballisticaplus.a": "5ca18c2abecb1b369ddd7ff43880baa0", + "build/prefab/lib/mac_arm64_gui/debug/libballisticaplus.a": "789b8d5e80d66c74af1ff0b978301704", + "build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "4fa185d99e799027b324704de3925aca", + "build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "789b8d5e80d66c74af1ff0b978301704", + "build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "4fa185d99e799027b324704de3925aca", + "build/prefab/lib/mac_x86_64_gui/debug/libballisticaplus.a": "3b9db190dc436e7bfd4521b94d9b5974", + "build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "cd5c91eecddb1da4e8204e3496466a07", + "build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "9adc2dc1c5c3cdc1ca6fc98fc76644c5", + "build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "cd5c91eecddb1da4e8204e3496466a07", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "361f36182c514f52fe7f9f426c0f3b74", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "9c4b2bd8d013f5e0691eed115cbd0835", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "d9ec65598b3906a3e4455278386bab00", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "2784af0e825434a01b85115631049789", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "24ca3020d1a3cde8d5fcc2e11cd887ae", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "d0a2cb5f0b300a08f72112597b01a26a", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "75c4c1f4fcf25e35faf1de9819e2cec1", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "215729acfa24d9d0010293aba6a1e06a", "src/assets/ba_data/python/babase/_mgen/__init__.py": "f885fed7f2ed98ff2ba271f9dbe3391c", "src/assets/ba_data/python/babase/_mgen/enums.py": "5548f407d97e380069f6c596c4e36cd7", "src/ballistica/base/mgen/pyembed/binding_base.inc": "efa61468cf098f77cc6a234461d8b86d", diff --git a/CHANGELOG.md b/CHANGELOG.md index 88c3c78c2..ba3944436 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -### 1.7.35 (build 21884, api 8, 2024-06-12) +### 1.7.35 (build 21888, api 8, 2024-06-16) - Fixed an issue where the engine would block at exit on some version of Linux until Ctrl-D was pressed in the calling terminal. - V2 accounts have been around for a while now, so the old V1 device login @@ -47,19 +47,6 @@ two forms. Now it is possible to provide both. - Spaz classes now have a `default_hitpoints` which makes customizing that easier (Thanks rabbitboom!) -- (WORK IN PROGRESS) As of this version, servers are *required* to be accessible - via ipv4 to appear in the public listing. So they may need to provide an ipv4 - address in their config if the automatically detected one is ipv6. This should - reduce the confusion of ipv6-only servers appearing greyed out for lots of - ipv4-only people. Pretty much everyone can connect to ipv4. -- (WORK IN PROGRESS) There is now more personalized error feedback for the - connectivity checks when poking `Make My Party Public` or when launching the - command line server. Hopefully this will help navigate the new dual ipv4/ipv6 - situation. -- (WORK IN PROGRESS) The low level `ConnectionToHostUDP` class can now accept - multiple `SockAddr`s; it will attempt to contact the host on all of them and - use whichever responds first. This allows us to pass both ipv4 and ipv6 - addresses when available and transparently use whichever is more performant. - Added `docker-build`, `docker-run`, `docker-clean` and `docker-save` targets to Makefile. - Fixed an issue in Assault where being teleported back to base with a sticky diff --git a/Makefile b/Makefile index cfe969d93..60607f6d2 100644 --- a/Makefile +++ b/Makefile @@ -31,7 +31,7 @@ help: env # Set env-var BA_ENABLE_COMPILE_COMMANDS_DB=1 to enable creating/updating a # cmake compile-commands database for use with things like clangd. ifeq ($(BA_ENABLE_COMPILE_COMMANDS_DB),1) - PREREQ_COMPILE_COMMANDS_DB = .cache/compile_commands_db/compile_commands.json + ENV_COMPILE_COMMANDS_DB = .cache/compile_commands_db/compile_commands.json endif # pcommandbatch can be much faster when running hundreds or thousands of @@ -46,19 +46,19 @@ else PCOMMANDBATCH = $(PCOMMAND) endif -# Prereq targets that should be safe to run anytime; even if project-files +# Env targets that should be safe to run anytime; even if project-files # are out of date. ENV_REQS_SAFE = .cache/checkenv $(PCOMMANDBATCHBIN) .dir-locals.el .mypy.ini \ - .pyrightconfig.json .pylintrc .clang-format \ - ballisticakit-cmake/.clang-format .editorconfig tools/cloudshell \ - tools/bacloud + .pyrightconfig.json .pylintrc .clang-format \ + ballisticakit-cmake/.clang-format .editorconfig tools/cloudshell \ + tools/bacloud tools/pcommand -# Prereq targets that may break if the project needs updating should go here. +# Env targets that may break if the project needs updating should go here. # An example is compile-command-databases; these might try to run cmake and # fail if the CMakeList files don't match what's on disk. If such a target was # included in ENV_REQS_SAFE it would try to build *before* project updates # which would leave us stuck in a broken state. -ENV_REQS_POST_UPDATE_ONLY = $(PREREQ_COMPILE_COMMANDS_DB) +ENV_REQS_POST_UPDATE_ONLY = $(ENV_COMPILE_COMMANDS_DB) # Target that should be built before building almost any other target. This # installs tool config files, sets up the Python virtual environment, etc. @@ -1245,30 +1245,30 @@ CHECK_CLEAN_SAFETY = $(PCOMMAND) check_clean_safety # Some tool configs that need filtering (mainly injecting projroot path). TOOL_CFG_INST = $(PCOMMAND) tool_config_install -# Anything that affects tool-config generation. +# Anything required for tool-config generation. TOOL_CFG_SRC = tools/efrotools/toolconfig.py config/projectconfig.json \ - .venv/.efro_venv_complete tools/pcommand + tools/pcommand # Anything that should trigger an environment-check when changed. -ENV_SRC = tools/batools/build.py .venv/.efro_venv_complete tools/pcommand +ENV_SRC = tools/batools/build.py .venv/.efro_venv_complete # Generate a pcommand script hard-coded to use our virtual environment. -# This is a prereq dependency so should not itself depend on env. -tools/pcommand: tools/efrotools/genwrapper.py tools/efrotools/pyver.py +# This is an env dependency so should not itself depend on env. +tools/pcommand: tools/efrotools/genwrapper.py .venv/.efro_venv_complete @echo Generating tools/pcommand... @PYTHONPATH=tools python3 -m \ efrotools.genwrapper pcommand batools.pcommandmain tools/pcommand # Generate a cloudshell script hard-coded to use our virtual environment. -# This is a prereq dependency so should not itself depend on env. -tools/cloudshell: tools/efrotools/genwrapper.py tools/efrotools/pyver.py +# This is an env dependency so should not itself depend on env. +tools/cloudshell: tools/efrotools/genwrapper.py .venv/.efro_venv_complete @echo Generating tools/cloudshell... @PYTHONPATH=tools python3 -m \ efrotools.genwrapper cloudshell efrotoolsinternal.cloudshell tools/cloudshell # Generate a bacloud script hard-coded to use our virtual environment. -# This is a prereq dependency so should not itself depend on env. -tools/bacloud: tools/efrotools/genwrapper.py tools/efrotools/pyver.py +# This is an env dependency so should not itself depend on env. +tools/bacloud: tools/efrotools/genwrapper.py .venv/.efro_venv_complete @echo Generating tools/bacloud... @PYTHONPATH=tools python3 -m \ efrotools.genwrapper bacloud batools.bacloud tools/bacloud @@ -1300,40 +1300,54 @@ SKIP_ENV_CHECKS ?= 0 VENV_PYTHON ?= python3.12 # Increment this to force all downstream venvs to fully rebuild. Useful after -# removing requirements since upgrading in place will never uninstall stuff. +# removing requirements since upgrading venvs in place will never uninstall +# stuff. VENV_STATE = 1 -# Rebuild our virtual environment whenever reqs, Python version, or explicit -# state number changes. This is a dependency of env so it should not itself -# depend on env. Note that we list pcommand as a requirement but can't use it -# in here until the end when the venv is up. Also note that we try to update -# venvs in place when possible, but when Python version or venv-state changes -# we blow it away and start over to be safe. -.venv/.efro_venv_complete: tools/pcommand config/requirements.txt \ -tools/efrotools/pyver.py +# Update our virtual environment whenever reqs changes, Python version +# changes, our venv's Python symlink breaks (can happen for minor Python +# updates), or explicit state number changes. This is a dependency of env so +# should not itself depend on env. +.venv/.efro_venv_complete: \ + config/requirements.txt \ + tools/efrotools/pyver.py \ + .venv/bin/$(VENV_PYTHON) \ + .venv/.efro_venv_state_$(VENV_STATE) +# Update venv in place when possible; otherwise create from scratch. @[ -f .venv/bin/$(VENV_PYTHON) ] \ && [ -f .venv/.efro_venv_state_$(VENV_STATE) ] \ && echo Updating existing $(VENV_PYTHON) virtual environment in \'.venv\'... \ || (echo Creating new $(VENV_PYTHON) virtual environment in \'.venv\'... \ - && rm -rf .venv) - $(VENV_PYTHON) -m venv .venv + && rm -rf .venv && $(VENV_PYTHON) -m venv .venv \ + && touch .venv/.efro_venv_state_$(VENV_STATE)) .venv/bin/pip install --upgrade pip .venv/bin/pip install -r config/requirements.txt - touch .venv/.efro_venv_state_$(VENV_STATE) \ - .venv/.efro_venv_complete # Done last to enforce fully-built venvs. - @$(PCOMMAND) echo \ - GRN Project virtual environment for BLD $(VENV_PYTHON) RST GRN \ - at BLD .venv RST GRN is ready to use. - -.cache/checkenv: $(ENV_SRC) + @touch .venv/.efro_venv_complete # Done last to signal fully-built venv. + @echo Project virtual environment for $(VENV_PYTHON) at .venv is ready to use. + +# We don't actually create anything with this target, but its existence allows +# .efro_venv_complete to run when these bits don't exist, and that target +# *does* recreate this stuff. Note to self: previously I tried splitting +# things up more and recreating the venv in this target, but that led to +# unintuitive dependency behavior. For example, a python update could cause +# the .venv/bin/$(VENV_PYTHON) symlink to break, which would cause that target +# to blow away and rebuild the venv, but then the reestablished symlink might +# have an old modtime (since modtime is that of python itself) which could +# cause .efro_venv_complete to think it was already up to date and not run, +# leaving us with a half-built venv. So the way we do it now ensures the venv +# update always happens in full and seems mostly foolproof. +.venv/bin/$(VENV_PYTHON) .venv/.efro_venv_state_$(VENV_STATE): + +.cache/checkenv: $(ENV_SRC) $(PCOMMAND) @if [ $(SKIP_ENV_CHECKS) -ne 1 ]; then \ $(PCOMMAND) checkenv && mkdir -p .cache && touch .cache/checkenv; \ fi -$(PCOMMANDBATCHBIN): src/tools/pcommandbatch/pcommandbatch.c \ +PCOMMANDBATCHSRC = src/tools/pcommandbatch/pcommandbatch.c \ src/tools/pcommandbatch/cJSON.c - @$(MAKE) tools/pcommand - @$(PCOMMAND) build_pcommandbatch $^ $@ + +$(PCOMMANDBATCHBIN): $(PCOMMANDBATCHSRC) $(PCOMMAND) + @$(PCOMMAND) build_pcommandbatch $(PCOMMANDBATCHSRC) $(PCOMMANDBATCHBIN) # CMake build-type lowercase CM_BT_LC = $(shell echo $(CMAKE_BUILD_TYPE) | tr A-Z a-z) @@ -1368,6 +1382,7 @@ ballisticakit-cmake/.clang-format: .clang-format # compile commands for all files; lets try to keep it up to date # whenever CMakeLists changes. .cache/compile_commands_db/compile_commands.json: \ + $(PCOMMANDBATCH) \ ballisticakit-cmake/CMakeLists.txt @$(PCOMMANDBATCH) echo BLU Updating compile commands db... @mkdir -p .cache/compile_commands_db diff --git a/config/requirements.txt b/config/requirements.txt index f0c0d8b67..1da2bc66c 100644 --- a/config/requirements.txt +++ b/config/requirements.txt @@ -1,14 +1,14 @@ cpplint==1.6.1 dmgbuild==1.6.1 -filelock==3.14.0 +filelock==3.15.1 furo==2024.5.6 mypy==1.10.0 pbxproj==4.1.0 pdoc==14.5.0 -pur==7.3.1 -pylint==3.2.2 +pur==7.3.2 +pylint==3.2.3 pylsp-mypy==0.6.8 -pytest==8.2.1 +pytest==8.2.2 python-daemon==3.0.1 python-lsp-black==2.0.0 python-lsp-server==1.11.0 @@ -17,5 +17,5 @@ Sphinx==7.3.7 tomlkit==0.12.5 types-certifi==2021.10.8.3 types-filelock==3.2.7 -types-requests==2.32.0.20240523 -typing_extensions==4.12.0 +types-requests==2.32.0.20240602 +typing_extensions==4.12.2 diff --git a/src/assets/ba_data/python/baenv.py b/src/assets/ba_data/python/baenv.py index 0958e5347..689f8732b 100644 --- a/src/assets/ba_data/python/baenv.py +++ b/src/assets/ba_data/python/baenv.py @@ -52,7 +52,7 @@ # Build number and version of the ballistica binary we expect to be # using. -TARGET_BALLISTICA_BUILD = 21884 +TARGET_BALLISTICA_BUILD = 21888 TARGET_BALLISTICA_VERSION = '1.7.35' diff --git a/src/ballistica/base/platform/base_platform.cc b/src/ballistica/base/platform/base_platform.cc index 4fb918465..c0fe45a49 100644 --- a/src/ballistica/base/platform/base_platform.cc +++ b/src/ballistica/base/platform/base_platform.cc @@ -64,8 +64,8 @@ auto BasePlatform::GetPublicDeviceUUID() -> std::string { // We used to plug version in directly here, but that caused uuids to // shuffle too rapidly during periods of rapid development. This // keeps it more constant. - // __last_rand_uuid_component_shuffle_date__ 2024 6 12 - auto rand_uuid_component{"WI5XDVM7QQBD4G6O0GS2DW6IPJ4VQT9X"}; + // __last_rand_uuid_component_shuffle_date__ 2024 6 13 + auto rand_uuid_component{"1URRE62C7234VP9L1BUPJ1P7QT7Q8YW3"}; inputs.emplace_back(rand_uuid_component); auto gil{Python::ScopedInterpreterLock()}; diff --git a/src/ballistica/shared/ballistica.cc b/src/ballistica/shared/ballistica.cc index 395a30931..becc91feb 100644 --- a/src/ballistica/shared/ballistica.cc +++ b/src/ballistica/shared/ballistica.cc @@ -39,7 +39,7 @@ auto main(int argc, char** argv) -> int { namespace ballistica { // These are set automatically via script; don't modify them here. -const int kEngineBuildNumber = 21884; +const int kEngineBuildNumber = 21888; const char* kEngineVersion = "1.7.35"; const int kEngineApiVersion = 8; diff --git a/tools/efro/error.py b/tools/efro/error.py index 5bf8bee5e..fed4252cd 100644 --- a/tools/efro/error.py +++ b/tools/efro/error.py @@ -73,9 +73,9 @@ class RemoteError(Exception): occurs remotely. The error string can consist of a remote stack trace or a simple message depending on the context. - Communication systems should raise more specific error types locally - when more introspection/control is needed; this is intended somewhat - as a catch-all. + Communication systems should aim to communicate specific errors + gracefully as standard message responses when specific details are + needed; this is intended more as a catch-all. """ def __init__(self, msg: str, peer_desc: str): diff --git a/tools/efro/message/_protocol.py b/tools/efro/message/_protocol.py index b9b014405..cced88e66 100644 --- a/tools/efro/message/_protocol.py +++ b/tools/efro/message/_protocol.py @@ -45,7 +45,7 @@ def __init__( forward_communication_errors: bool = False, forward_clean_errors: bool = False, remote_errors_include_stack_traces: bool = False, - log_remote_errors: bool = True, + log_errors_on_receiver: bool = True, ) -> None: """Create a protocol with a given configuration. @@ -62,8 +62,8 @@ def __init__( When an exception is not covered by the optional forwarding mechanisms above, it will come across as efro.error.RemoteError - and the exception will be logged on the receiver - end - at least by default (see details below). + and the exception will be logged on the receiver end - at least + by default (see details below). If 'remote_errors_include_stack_traces' is True, stringified stack traces will be returned with efro.error.RemoteError @@ -77,8 +77,8 @@ def __init__( goal is usually to avoid returning opaque RemoteErrors and to instead return something meaningful as part of the expected response type (even if that value itself represents a logical - error state). If 'log_remote_errors' is False, however, such - exceptions will not be logged on the receiver. This can be + error state). If 'log_errors_on_receiver' is False, however, such + exceptions will *not* be logged on the receiver. This can be useful in combination with 'remote_errors_include_stack_traces' and 'forward_clean_errors' in situations where all error logging/management will be happening on the sender end. Be @@ -168,7 +168,7 @@ def _reg_sys(reg_tp: type[SysResponse], reg_id: int) -> None: self.remote_errors_include_stack_traces = ( remote_errors_include_stack_traces ) - self.log_remote_errors = log_remote_errors + self.log_errors_on_receiver = log_errors_on_receiver @staticmethod def encode_dict(obj: dict) -> str: @@ -219,7 +219,7 @@ def error_to_response(self, exc: Exception) -> tuple[SysResponse, bool]: ), error_type=ErrorSysResponse.ErrorType.REMOTE, ), - self.log_remote_errors, + self.log_errors_on_receiver, ) def _to_dict( diff --git a/tools/efro/message/_receiver.py b/tools/efro/message/_receiver.py index 8ef6e8b0b..be3fc7f3f 100644 --- a/tools/efro/message/_receiver.py +++ b/tools/efro/message/_receiver.py @@ -38,6 +38,7 @@ class MyClass: # MyMessageReceiver fills out handler() overloads to ensure all # registered handlers have valid types/return-types. + @receiver.handler def handle_some_message_type(self, message: SomeMsg) -> SomeResponse: # Deal with this message type here. @@ -47,7 +48,7 @@ def handle_some_message_type(self, message: SomeMsg) -> SomeResponse: obj.receiver.handle_raw_message(some_raw_data) Any unhandled Exception occurring during message handling will result in - an Exception being raised on the sending end. + an efro.error.RemoteError being raised on the sending end. """ is_async = False diff --git a/tools/efro/message/_sender.py b/tools/efro/message/_sender.py index b7e187554..17f2925f1 100644 --- a/tools/efro/message/_sender.py +++ b/tools/efro/message/_sender.py @@ -20,22 +20,33 @@ class MessageSender: """Facilitates sending messages to a target and receiving responses. - This is instantiated at the class level and used to register unbound - class methods to handle raw message sending. + + These are instantiated at the class level and used to register unbound + class methods to handle raw message sending. Generally this class is not + used directly, but instead autogenerated subclasses which provide type + safe overloads are used instead. Example: + (In this example, MyMessageSender is an autogenerated class that + inherits from MessageSender). class MyClass: - msg = MyMessageSender(some_protocol) + msg = MyMessageSender() @msg.send_method def send_raw_message(self, message: str) -> str: # Actually send the message here. - # MyMessageSender class should provide overloads for send(), send_async(), - # etc. to ensure all sending happens with valid types. obj = MyClass() - obj.msg.send(SomeMessageType()) + + # The MyMessageSender generated class would provides overloads for + # send(), send_async(), etc. to provide type-safety for message types + # and their associated response types. + # Thus, given the statement below, a type-checker would know that + # 'response' is a SomeResponseType or whatever is associated with + # SomeMessageType. + response = obj.msg.send(SomeMessageType()) + """ def __init__(self, protocol: MessageProtocol) -> None: diff --git a/tools/efrotools/pybuild.py b/tools/efrotools/pybuild.py index 3455c14ff..baac51498 100644 --- a/tools/efrotools/pybuild.py +++ b/tools/efrotools/pybuild.py @@ -480,6 +480,17 @@ def apple_patch(python_dir: str) -> None: """New test.""" patch_modules_setup(python_dir, 'apple') + # Filter an instance of 'itms-services' that appeared in Python3.12 + # and which was getting me rejected from the app store. + fname = os.path.join(python_dir, 'Lib', 'urllib', 'parse.py') + ftxt = readfile(fname) + ftxt = replace_exact( + ftxt, + "'wss', 'itms-services']", + "'wss', 'i!t!m!s!-!s!e!r!v!i!c!e!s'.replace('!', '')]", + ) + writefile(fname, ftxt) + def patch_modules_setup(python_dir: str, baseplatform: str) -> None: """Muck with the Setup.* files Python uses to build modules."""