Commit Graph

15280 Commits

Author SHA1 Message Date
Dylan K. Taylor
b3f15435cc Projectile: clean up dodgy code 2025-01-08 02:31:50 +00:00
Dylan K. Taylor
847ae26cad PHPStan: don't remember possibly-impure function return values
I don't think we get much benefit from this, and the assumption that functions with a return value are pure is sketchy.
In any case, it's better to avoid these repeated calls anyway.
2025-01-08 02:04:06 +00:00
Dylan K. Taylor
d42ec06647 ZippedResourcePack: don't pass exception code to new exception
this is a BUT (int|string) under PHPStan, and we don't need the errors. We don't care about this code anyway.
2025-01-08 01:48:55 +00:00
Dylan K. Taylor
5e0f03dff0 Stub PalettedBlockArray functions that work with arrays
and workaround PHPStan stupidity
2025-01-08 01:48:15 +00:00
Dylan K. Taylor
4a83920db9 PlayerPreLoginEvent: improve array type info 2025-01-08 01:47:04 +00:00
Dylan K. Taylor
0a16daa619 Avoid dodgy array_flip hash building
the conventional way is using array_keys and array_fill_keys. Behaviour is more predictable & also avoids benevolent union fuckery from PHPStan.
2025-01-08 01:45:28 +00:00
Dylan K. Taylor
e8c4b743b5 LevelDB: stop overriding types from NBT
NBT has better quality type info already
2025-01-07 22:54:10 +00:00
Dylan K. Taylor
794641c0f8 Utils: split some horrifying code across multiple lines 2025-01-07 22:35:19 +00:00
Dylan K. Taylor
9633b7d8a7 Update to PHPStan 2.x 2025-01-07 22:34:43 +00:00
Dylan K. Taylor
d69a887b0d Utils: fix parameter doc for printableExceptionInfo() 2025-01-07 22:24:26 +00:00
Dylan K. Taylor
b1c7fc017a CS 2025-01-07 22:13:20 +00:00
Dylan K. Taylor
cd59e272bc PHPStan 2.0 fixes 2025-01-07 22:10:42 +00:00
Dylan K. Taylor
7b1b35ab1f generator: fixup issues reported by PHPStan 2.0 2025-01-07 22:07:38 +00:00
Dylan K. Taylor
28d31c97f8 Server: fixup PHPStan 2.x reported issues 2025-01-07 22:05:01 +00:00
Dylan K. Taylor
a17512de93 Command: don't trust plugins not to pass junk 2025-01-06 23:26:13 +00:00
Dylan K. Taylor
601be3fb33 stfu 2025-01-06 23:09:26 +00:00
Dylan K. Taylor
2e32c50670 NetworkSession: apparently aliases are already a list at this point??? 2025-01-06 23:08:48 +00:00
Dylan K. Taylor
d1fa6edc50 InGamePacketHandler: fix weak comparisons 2025-01-06 23:08:18 +00:00
Dylan K. Taylor
a1ba8bc3da NetworkSession: improve PHPDoc types 2025-01-06 23:07:54 +00:00
Dylan K. Taylor
73edb8799d SignalHandler: fixed dodgy setup logic 2025-01-06 23:06:19 +00:00
Dylan K. Taylor
9592f066f3 PHPDoc: Restrict ReversePriorityQueue to numeric priorities 2025-01-06 23:05:49 +00:00
Dylan K. Taylor
db9ba83001 Make some assumptions about proc_open() 2025-01-06 23:05:06 +00:00
Dylan K. Taylor
1b2d2a3fe1 plugin: improve PHPDocs and type compliance 2025-01-06 23:04:00 +00:00
Dylan K. Taylor
357dfb5c7e Fixed build 2025-01-06 23:01:14 +00:00
Dylan K. Taylor
0358b7dce4 utils: avoid weak comparisons 2025-01-06 22:53:35 +00:00
Dylan K. Taylor
97c5902ae2 Internet: make postURL() error reporting behaviour more predictable
err is now always set to null when doing a new operation.

previously, if the same var was used multiple times and a previous one failed,
code might think that a previous error belonged to the current operation.
2025-01-06 22:52:05 +00:00
Dylan K. Taylor
9a130bce32 Config: remove bad assumptions about string root keys
these could just as easily be integers and the code should still work.
2025-01-06 22:50:25 +00:00
Dylan K. Taylor
b6bd3ef30c Improve PHPDocs in world package 2025-01-06 22:46:16 +00:00
Dylan K. Taylor
c5a1c15389 TimingsCommand: beware crash on invalid timings server response 2025-01-06 22:44:17 +00:00
Dylan K. Taylor
e30ae487dc SimpleCommandMap: ensure we always pass a list to Command::setAliases()
some offsets may have been removed if the alias failed to be registered.
2025-01-06 22:44:17 +00:00
Dylan K. Taylor
59f6c85105 Command: mark execute $args as being list<string> 2025-01-06 22:44:17 +00:00
Dylan K. Taylor
90f0b85d2e Eliminate weak comparisons in entity package
Weak comparisons were used in cases when we were worried about comparing int and float.

In some cases (particularly involving Vector3) we do need to be wary of this, so floatval() is used to avoid incorrect type comparisons.
In other cases, we were already exclusively comparing float-float, so weak compare wasn't needed anyway.
2025-01-06 22:44:17 +00:00
Dylan K. Taylor
8ee70b209e MemoryDump: fix PHPDoc types 2025-01-06 22:44:16 +00:00
Dylan K. Taylor
5c905d9a95 BlockBreakInfo: use strict comparison
weak compare isn't needed here since this can be float/float
2025-01-06 22:44:16 +00:00
Dylan K. Taylor
8b23231537 Fixup PHPDoc for blocks 2025-01-06 22:44:16 +00:00
Dylan K. Taylor
3da0b82b86 Merge branch 'stable' into minor-next 2025-01-03 19:26:45 +00:00
Dylan K. Taylor
da62eb9f33 ... 2025-01-03 19:26:24 +00:00
pmmp-admin-bot[bot]
8cea4c13c4 Merge 'stable' into 'minor-next'
Automatic merge performed by: https://github.com/pmmp/RestrictedActions/actions/runs/12487960388
2024-12-25 01:23:09 +00:00
Dylan K. Taylor
81e3730b99 Fixed crashes containing PHP internal stack frames being flagged as plugin-caused 2024-12-24 14:20:16 +00:00
Dylan K. Taylor
8a5eb71432 ChunkCache: track strings in cache directly instead of CompressBatchPromise
this reduces memory footprint slightly, but more importantly reduces GC workload.
Since it also reduces the work done on cache hit, it might *slightly* improve performance,
but any improvement is likely to be minimal.
2024-12-23 21:04:33 +00:00
Dylan K. Taylor
306623e890 FormatConverter: do periodic GC
this reduces the risk of OOM during conversion of large worlds
we probably ought to limit the size of region caches for regionized worlds, but that's a problem for another time.
2024-12-21 17:49:03 +00:00
Dylan K. Taylor
ada3acdba4 FormatConverter: ensure we don't get stalled due to stdout buffer flood
this can happen due to very noisy outputs during conversion, e.g. if there were many unknown blocks.
2024-12-21 17:49:03 +00:00
Dylan K. Taylor
fea17fa4a9 RakLibServer: disable GC
GC is not required for RakLib as it doesn't generate any unmanaged cycles.
Cycles in general do exist (e.g. Server <-> ServerSession), but these are
explicitly cleaned up, so GC wouldn't have any useful work to do.
2024-12-19 20:33:40 +00:00
Dylan T.
aee358d329 This timings handler management is a crap design
This has bitten me on the ass so many times now
2024-12-16 03:11:07 +00:00
Dylan K. Taylor
80899ea72c Make sure timings are counted under the proper parents 2024-12-15 21:34:16 +00:00
Dylan K. Taylor
42f90e94ff AsyncWorker now manually triggers GC at the end of each task run, similar to the main thread
this avoids costly GC runs during hot code.
2024-12-15 21:25:32 +00:00
Dylan K. Taylor
8f536e6f21 always the CS 2024-12-15 20:46:10 +00:00
Dylan K. Taylor
45482e868d Fixed AsyncWorker GC not getting re-enabled after memory dump
async workers still use automatic GC for now. We should probably switch to manual GC at some point, but it's not a priority right now.
2024-12-15 20:45:51 +00:00
Dylan K. Taylor
742aa46b88 Separate memory dumping utilities from MemoryManager 2024-12-15 20:44:00 +00:00
Dylan K. Taylor
cf1b360a62 World: Prevent block cache from getting too big
This has been a long-standing issue since at least 2016, and probably longer.
Heavy use of getBlock(At) could cause the cache to blow up and use all available memory.

Recently, it's become clear that unmanaged cache size is also a problem for GC, because
the large number of objects blows up the GC root buffer. At first, this causes more frequent
GC runs; later, the frequency of GC runs drops, but the performance cost of them goes up
substantially because of the sheer number of objects. We can avoid this by trimming the
cache when we detect that it's exceeded limits.

I've implemented this in such a way that failing to update blockCacheSize in new code
won't have lasting impacts, since the cache count will be recalculated during scheduled
cache cleaning anyway.

Closes #152.
2024-12-15 18:40:32 +00:00