Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: tinylib/msgp
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v1.5.0
Choose a base ref
...
head repository: tinylib/msgp
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v1.6.0
Choose a head ref
  • 11 commits
  • 69 files changed
  • 3 contributors

Commits on Oct 28, 2025

  1. Go modernize + upgrade Go (#413)

    * Ran `go run golang.org/x/tools/gopls/internal/analysis/modernize/cmd/modernize@latest -fix -test ./...`
    * Minimum Go version 1.23 (removed build tags)
    * Upgrade tinygo
    klauspost authored Oct 28, 2025
    Configuration menu
    Copy the full SHA
    be5d0f7 View commit details
    Browse the repository at this point in the history

Commits on Nov 14, 2025

  1. Fix embedded interface (#417)

    * Fix embedded interface
    * Add/use isrtfor helper.
    
    Allows embedding `msgp.RTFor` and still locate it.
    
    Fixes #415
    klauspost authored Nov 14, 2025
    Configuration menu
    Copy the full SHA
    2ab230b View commit details
    Browse the repository at this point in the history

Commits on Nov 17, 2025

  1. Configuration menu
    Copy the full SHA
    0c38543 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    2b2f5a3 View commit details
    Browse the repository at this point in the history

Commits on Nov 18, 2025

  1. Implement limit directive for msgp array/map size bounds checking (#419)

    Add `//msgp:limit` directive to prevent DoS attacks by limiting array/slice and map sizes during msgp serialization/deserialization operations.
    
    Features:
      - Unified directive syntax: //msgp:limit arrays:n maps:n marshal:true/false
      - Applies only to dynamic slices/maps, excludes fixed arrays (compile-time sized)
      - Optional marshal-time enforcement with marshal:true parameter
      - Default limits of math.MaxUint32 when not specified
      - Returns msgp.ErrLimitExceeded when limits exceeded
      - Per-file unique constant generation using CRC32 hash to avoid collisions
    
    Adds `msgp:",limit=n"` per field tags. This will allow to set or override a per-file limit.
    
    Note: This also applies to `[]byte` slices.
    
    Usage examples:
    
    `//msgp:limit arrays:100 maps:50` (unmarshal limits only)
    
    `//msgp:limit arrays:100 maps:50 marshal:true` (both marshal and unmarshal limits)
    
    ```go
    type FieldLimitTestData struct {
    	SmallSlice []int          `msg:"small_slice,limit=5"`
    	LargeSlice []string       `msg:"large_slice,limit=100"`
    	SmallMap   map[string]int `msg:"small_map,limit=3"`
    	LargeMap   map[int]string `msg:"large_map,limit=20"`
    	NoLimit    []byte         `msg:"no_limit"`  // Uses file-level limits if any
    	FixedArray [10]int        `msg:"fixed_array,limit=2"` // Should be ignored
    ```
    Fixes #411
    klauspost authored Nov 18, 2025
    Configuration menu
    Copy the full SHA
    d6ec98e View commit details
    Browse the repository at this point in the history
  2. setof speed improvement and tests (#420)

    * setof speed improvement and tests
    
    * Add tests/benchmarks
    * Use `slices.SortFunc` - slightly faster on non-strings.
    * Ensure MarshalMsg output can hold the output.
    * Minor cleanups.
    
    ```
    benchmark                                       old ns/op     new ns/op     delta
    BenchmarkStringSorted_EncodeMsg/10-32           212           203           -4.39%
    BenchmarkStringSorted_EncodeMsg/100-32          3893          3863          -0.77%
    BenchmarkStringSorted_EncodeMsg/1000-32         65046         64905         -0.22%
    BenchmarkStringSorted_DecodeMsg/10-32           617           628           +1.75%
    BenchmarkStringSorted_DecodeMsg/100-32          2996          3011          +0.50%
    BenchmarkStringSorted_DecodeMsg/1000-32         29909         30096         +0.63%
    BenchmarkStringSorted_MarshalMsg/10-32          246           269           +9.05%
    BenchmarkStringSorted_MarshalMsg/100-32         3991          4295          +7.62%
    BenchmarkStringSorted_MarshalMsg/1000-32        65655         69870         +6.42%
    BenchmarkStringSorted_UnmarshalMsg/10-32        290           290           +0.17%
    BenchmarkStringSorted_UnmarshalMsg/100-32       2522          2521          -0.04%
    BenchmarkStringSorted_UnmarshalMsg/1000-32      28134         27928         -0.73%
    BenchmarkStringSorted_AsSlice/10-32             233           163           -30.09%
    BenchmarkStringSorted_AsSlice/100-32            4318          3357          -22.26%
    BenchmarkStringSorted_AsSlice/1000-32           73060         61074         -16.41%
    BenchmarkStringSorted_FromSlice/10-32           158           160           +1.26%
    BenchmarkStringSorted_FromSlice/100-32          1083          1109          +2.40%
    BenchmarkStringSorted_FromSlice/1000-32         12169         12340         +1.41%
    BenchmarkIntSorted_EncodeMsg/10-32              192           143           -25.50%
    BenchmarkIntSorted_EncodeMsg/100-32             2705          2471          -8.65%
    BenchmarkIntSorted_EncodeMsg/1000-32            51959         47962         -7.69%
    BenchmarkIntSorted_DecodeMsg/10-32              548           526           -3.96%
    BenchmarkIntSorted_DecodeMsg/100-32             1492          1496          +0.27%
    BenchmarkIntSorted_DecodeMsg/1000-32            12371         12324         -0.38%
    BenchmarkIntSorted_MarshalMsg/10-32             205           150           -26.99%
    BenchmarkIntSorted_MarshalMsg/100-32            2662          2461          -7.55%
    BenchmarkIntSorted_MarshalMsg/1000-32           52221         48179         -7.74%
    BenchmarkIntSorted_UnmarshalMsg/10-32           153           156           +1.97%
    BenchmarkIntSorted_UnmarshalMsg/100-32          977           987           +1.01%
    BenchmarkIntSorted_UnmarshalMsg/1000-32         10424         10462         +0.36%
    BenchmarkIntSorted_AsSlice/10-32                170           119           -30.09%
    BenchmarkIntSorted_AsSlice/100-32               2472          2199          -11.04%
    BenchmarkIntSorted_AsSlice/1000-32              49548         46049         -7.06%
    BenchmarkIntSorted_FromSlice/10-32              140           138           -1.29%
    BenchmarkIntSorted_FromSlice/100-32             926           932           +0.69%
    BenchmarkIntSorted_FromSlice/1000-32            9589          9478          -1.16%
    BenchmarkUintSorted_EncodeMsg/10-32             190           129           -32.23%
    BenchmarkUintSorted_EncodeMsg/100-32            2591          2340          -9.69%
    BenchmarkUintSorted_EncodeMsg/1000-32           52587         48173         -8.39%
    BenchmarkUintSorted_DecodeMsg/10-32             534           536           +0.26%
    BenchmarkUintSorted_DecodeMsg/100-32            1482          1492          +0.67%
    BenchmarkUintSorted_DecodeMsg/1000-32           12374         12417         +0.35%
    BenchmarkUintSorted_MarshalMsg/10-32            192           140           -27.14%
    BenchmarkUintSorted_MarshalMsg/100-32           2695          2440          -9.46%
    BenchmarkUintSorted_MarshalMsg/1000-32          52282         47950         -8.29%
    BenchmarkUintSorted_UnmarshalMsg/10-32          151           153           +1.46%
    BenchmarkUintSorted_UnmarshalMsg/100-32         976           987           +1.07%
    BenchmarkUintSorted_UnmarshalMsg/1000-32        10355         10982         +6.06%
    BenchmarkUintSorted_AsSlice/10-32               163           119           -26.81%
    BenchmarkUintSorted_AsSlice/100-32              2396          2189          -8.64%
    BenchmarkUintSorted_AsSlice/1000-32             49923         46339         -7.18%
    BenchmarkUintSorted_FromSlice/10-32             138           141           +2.32%
    BenchmarkUintSorted_FromSlice/100-32            918           975           +6.29%
    BenchmarkUintSorted_FromSlice/1000-32           9445          9947          +5.31%
    BenchmarkByteSorted_EncodeMsg/10-32             174           122           -30.29%
    BenchmarkByteSorted_EncodeMsg/100-32            2565          2297          -10.45%
    BenchmarkByteSorted_EncodeMsg/1000-32           10087         9210          -8.69%
    BenchmarkByteSorted_DecodeMsg/10-32             556           568           +2.27%
    BenchmarkByteSorted_DecodeMsg/100-32            2183          2195          +0.55%
    BenchmarkByteSorted_DecodeMsg/1000-32           4792          4835          +0.90%
    BenchmarkByteSorted_MarshalMsg/10-32            178           120           -32.71%
    BenchmarkByteSorted_MarshalMsg/100-32           2552          2211          -13.36%
    BenchmarkByteSorted_MarshalMsg/1000-32          10094         8908          -11.75%
    BenchmarkByteSorted_UnmarshalMsg/10-32          212           212           -0.33%
    BenchmarkByteSorted_UnmarshalMsg/100-32         1751          1757          +0.34%
    BenchmarkByteSorted_UnmarshalMsg/1000-32        4247          4257          +0.24%
    BenchmarkByteSorted_AsSlice/10-32               147           101           -31.61%
    BenchmarkByteSorted_AsSlice/100-32              2298          2062          -10.27%
    BenchmarkByteSorted_AsSlice/1000-32             9505          8617          -9.34%
    BenchmarkByteSorted_FromSlice/10-32             189           191           +1.27%
    BenchmarkByteSorted_FromSlice/100-32            1710          1705          -0.29%
    BenchmarkByteSorted_FromSlice/1000-32           15630         15669         +0.25%
    BenchmarkInt8Sorted_EncodeMsg/10-32             176           124           -29.61%
    BenchmarkInt8Sorted_EncodeMsg/100-32            2576          2299          -10.75%
    BenchmarkInt8Sorted_EncodeMsg/1000-32           9862          9153          -7.19%
    BenchmarkInt8Sorted_DecodeMsg/10-32             556           563           +1.17%
    BenchmarkInt8Sorted_DecodeMsg/100-32            2138          2148          +0.47%
    BenchmarkInt8Sorted_DecodeMsg/1000-32           4798          4815          +0.35%
    BenchmarkInt8Sorted_MarshalMsg/10-32            197           128           -35.28%
    BenchmarkInt8Sorted_MarshalMsg/100-32           2578          2292          -11.09%
    BenchmarkInt8Sorted_MarshalMsg/1000-32          10138         9234          -8.92%
    BenchmarkInt8Sorted_UnmarshalMsg/10-32          213           213           +0.00%
    BenchmarkInt8Sorted_UnmarshalMsg/100-32         1756          1762          +0.34%
    BenchmarkInt8Sorted_UnmarshalMsg/1000-32        4319          4316          -0.07%
    BenchmarkInt8Sorted_AsSlice/10-32               142           105           -26.07%
    BenchmarkInt8Sorted_AsSlice/100-32              2415          2062          -14.62%
    BenchmarkInt8Sorted_AsSlice/1000-32             9573          8741          -8.69%
    BenchmarkInt8Sorted_FromSlice/10-32             190           190           +0.00%
    BenchmarkInt8Sorted_FromSlice/100-32            1711          1700          -0.64%
    BenchmarkInt8Sorted_FromSlice/1000-32           15669         15624         -0.29%
    BenchmarkUint8Sorted_EncodeMsg/10-32            176           114           -35.09%
    BenchmarkUint8Sorted_EncodeMsg/100-32           2553          2212          -13.36%
    BenchmarkUint8Sorted_EncodeMsg/1000-32          9998          9314          -6.84%
    BenchmarkUint8Sorted_DecodeMsg/10-32            552           563           +1.86%
    BenchmarkUint8Sorted_DecodeMsg/100-32           2181          2200          +0.87%
    BenchmarkUint8Sorted_DecodeMsg/1000-32          4792          4801          +0.19%
    BenchmarkUint8Sorted_MarshalMsg/10-32           187           107           -42.85%
    BenchmarkUint8Sorted_MarshalMsg/100-32          2640          2194          -16.89%
    BenchmarkUint8Sorted_MarshalMsg/1000-32         10076         9210          -8.59%
    BenchmarkUint8Sorted_UnmarshalMsg/10-32         215           215           +0.05%
    BenchmarkUint8Sorted_UnmarshalMsg/100-32        1803          1808          +0.28%
    BenchmarkUint8Sorted_UnmarshalMsg/1000-32       4394          4413          +0.43%
    BenchmarkUint8Sorted_AsSlice/10-32              147           92.5          -36.92%
    BenchmarkUint8Sorted_AsSlice/100-32             2340          2085          -10.90%
    BenchmarkUint8Sorted_AsSlice/1000-32            9405          8631          -8.23%
    BenchmarkUint8Sorted_FromSlice/10-32            189           189           +0.32%
    BenchmarkUint8Sorted_FromSlice/100-32           1710          1710          +0.00%
    BenchmarkUint8Sorted_FromSlice/1000-32          15675         15674         -0.01%
    BenchmarkInt16Sorted_EncodeMsg/10-32            179           132           -26.20%
    BenchmarkInt16Sorted_EncodeMsg/100-32           2701          2365          -12.44%
    BenchmarkInt16Sorted_EncodeMsg/1000-32          51059         48068         -5.86%
    BenchmarkInt16Sorted_DecodeMsg/10-32            561           566           +0.86%
    BenchmarkInt16Sorted_DecodeMsg/100-32           2164          2167          +0.14%
    BenchmarkInt16Sorted_DecodeMsg/1000-32          19649         19796         +0.75%
    BenchmarkInt16Sorted_MarshalMsg/10-32           208           132           -36.66%
    BenchmarkInt16Sorted_MarshalMsg/100-32          2684          2338          -12.89%
    BenchmarkInt16Sorted_MarshalMsg/1000-32         51687         47348         -8.39%
    BenchmarkInt16Sorted_UnmarshalMsg/10-32         217           216           -0.41%
    BenchmarkInt16Sorted_UnmarshalMsg/100-32        1806          1816          +0.55%
    BenchmarkInt16Sorted_UnmarshalMsg/1000-32       18727         18555         -0.92%
    BenchmarkInt16Sorted_AsSlice/10-32              155           115           -25.92%
    BenchmarkInt16Sorted_AsSlice/100-32             2401          2148          -10.54%
    BenchmarkInt16Sorted_AsSlice/1000-32            49032         45245         -7.72%
    BenchmarkInt16Sorted_FromSlice/10-32            141           143           +1.21%
    BenchmarkInt16Sorted_FromSlice/100-32           1099          1108          +0.82%
    BenchmarkInt16Sorted_FromSlice/1000-32          10972         11142         +1.55%
    BenchmarkUint16Sorted_EncodeMsg/10-32           180           119           -33.59%
    BenchmarkUint16Sorted_EncodeMsg/100-32          2572          2363          -8.13%
    BenchmarkUint16Sorted_EncodeMsg/1000-32         51598         47780         -7.40%
    BenchmarkUint16Sorted_DecodeMsg/10-32           572           568           -0.68%
    BenchmarkUint16Sorted_DecodeMsg/100-32          2241          2233          -0.36%
    BenchmarkUint16Sorted_DecodeMsg/1000-32         20000         20276         +1.38%
    BenchmarkUint16Sorted_MarshalMsg/10-32          188           125           -33.74%
    BenchmarkUint16Sorted_MarshalMsg/100-32         2543          2330          -8.38%
    BenchmarkUint16Sorted_MarshalMsg/1000-32        51485         47576         -7.59%
    BenchmarkUint16Sorted_UnmarshalMsg/10-32        218           218           +0.00%
    BenchmarkUint16Sorted_UnmarshalMsg/100-32       1826          1839          +0.71%
    BenchmarkUint16Sorted_UnmarshalMsg/1000-32      18716         18768         +0.28%
    BenchmarkUint16Sorted_AsSlice/10-32             151           107           -29.59%
    BenchmarkUint16Sorted_AsSlice/100-32            2349          2116          -9.92%
    BenchmarkUint16Sorted_AsSlice/1000-32           49028         45539         -7.12%
    BenchmarkUint16Sorted_FromSlice/10-32           142           143           +0.56%
    BenchmarkUint16Sorted_FromSlice/100-32          1098          1102          +0.36%
    BenchmarkUint16Sorted_FromSlice/1000-32         11103         11145         +0.38%
    BenchmarkInt32Sorted_EncodeMsg/10-32            193           145           -24.88%
    BenchmarkInt32Sorted_EncodeMsg/100-32           2678          2344          -12.47%
    BenchmarkInt32Sorted_EncodeMsg/1000-32          51852         47827         -7.76%
    BenchmarkInt32Sorted_DecodeMsg/10-32            524           532           +1.59%
    BenchmarkInt32Sorted_DecodeMsg/100-32           1391          1419          +2.01%
    BenchmarkInt32Sorted_DecodeMsg/1000-32          11500         11323         -1.54%
    BenchmarkInt32Sorted_MarshalMsg/10-32           199           144           -27.62%
    BenchmarkInt32Sorted_MarshalMsg/100-32          2597          2340          -9.90%
    BenchmarkInt32Sorted_MarshalMsg/1000-32         52071         47451         -8.87%
    BenchmarkInt32Sorted_UnmarshalMsg/10-32         143           143           +0.35%
    BenchmarkInt32Sorted_UnmarshalMsg/100-32        946           952           +0.62%
    BenchmarkInt32Sorted_UnmarshalMsg/1000-32       9359          9423          +0.68%
    BenchmarkInt32Sorted_AsSlice/10-32              165           113           -31.55%
    BenchmarkInt32Sorted_AsSlice/100-32             2395          2132          -10.98%
    BenchmarkInt32Sorted_AsSlice/1000-32            49651         45541         -8.28%
    BenchmarkInt32Sorted_FromSlice/10-32            124           126           +1.61%
    BenchmarkInt32Sorted_FromSlice/100-32           862           862           +0.06%
    BenchmarkInt32Sorted_FromSlice/1000-32          8227          8159          -0.83%
    BenchmarkUint32Sorted_EncodeMsg/10-32           176           142           -19.01%
    BenchmarkUint32Sorted_EncodeMsg/100-32          2632          2273          -13.64%
    BenchmarkUint32Sorted_EncodeMsg/1000-32         51857         47461         -8.48%
    BenchmarkUint32Sorted_DecodeMsg/10-32           533           533           +0.04%
    BenchmarkUint32Sorted_DecodeMsg/100-32          1409          1417          +0.57%
    BenchmarkUint32Sorted_DecodeMsg/1000-32         11482         11210         -2.37%
    BenchmarkUint32Sorted_MarshalMsg/10-32          198           142           -28.20%
    BenchmarkUint32Sorted_MarshalMsg/100-32         2575          2319          -9.94%
    BenchmarkUint32Sorted_MarshalMsg/1000-32        52352         47407         -9.45%
    BenchmarkUint32Sorted_UnmarshalMsg/10-32        158           144           -8.62%
    BenchmarkUint32Sorted_UnmarshalMsg/100-32       1107          956           -13.60%
    BenchmarkUint32Sorted_UnmarshalMsg/1000-32      10596         10779         +1.73%
    BenchmarkUint32Sorted_AsSlice/10-32             175           116           -33.58%
    BenchmarkUint32Sorted_AsSlice/100-32            2469          2212          -10.41%
    BenchmarkUint32Sorted_AsSlice/1000-32           50517         47107         -6.75%
    BenchmarkUint32Sorted_FromSlice/10-32           135           137           +1.18%
    BenchmarkUint32Sorted_FromSlice/100-32          923           935           +1.30%
    BenchmarkUint32Sorted_FromSlice/1000-32         8905          9101          +2.20%
    BenchmarkInt64Sorted_EncodeMsg/10-32            207           156           -24.46%
    BenchmarkInt64Sorted_EncodeMsg/100-32           2833          2658          -6.18%
    BenchmarkInt64Sorted_EncodeMsg/1000-32          57355         50588         -11.80%
    BenchmarkInt64Sorted_DecodeMsg/10-32            615           624           +1.43%
    BenchmarkInt64Sorted_DecodeMsg/100-32           1693          1710          +1.00%
    BenchmarkInt64Sorted_DecodeMsg/1000-32          13748         13940         +1.40%
    BenchmarkInt64Sorted_MarshalMsg/10-32           216           164           -23.75%
    BenchmarkInt64Sorted_MarshalMsg/100-32          2804          2724          -2.85%
    BenchmarkInt64Sorted_MarshalMsg/1000-32         54654         53007         -3.01%
    BenchmarkInt64Sorted_UnmarshalMsg/10-32         174           178           +2.59%
    BenchmarkInt64Sorted_UnmarshalMsg/100-32        1100          1116          +1.45%
    BenchmarkInt64Sorted_UnmarshalMsg/1000-32       12255         12185         -0.57%
    BenchmarkInt64Sorted_AsSlice/10-32              173           122           -29.59%
    BenchmarkInt64Sorted_AsSlice/100-32             2720          2408          -11.47%
    BenchmarkInt64Sorted_AsSlice/1000-32            51257         48403         -5.57%
    BenchmarkInt64Sorted_FromSlice/10-32            155           157           +1.23%
    BenchmarkInt64Sorted_FromSlice/100-32           1044          1051          +0.67%
    BenchmarkInt64Sorted_FromSlice/1000-32          11198         11641         +3.96%
    BenchmarkUint64Sorted_EncodeMsg/10-32           207           159           -23.37%
    BenchmarkUint64Sorted_EncodeMsg/100-32          2793          2770          -0.82%
    BenchmarkUint64Sorted_EncodeMsg/1000-32         53759         50802         -5.50%
    BenchmarkUint64Sorted_DecodeMsg/10-32           660           676           +2.39%
    BenchmarkUint64Sorted_DecodeMsg/100-32          1776          1782          +0.34%
    BenchmarkUint64Sorted_DecodeMsg/1000-32         14571         14678         +0.73%
    BenchmarkUint64Sorted_MarshalMsg/10-32          212           164           -22.91%
    BenchmarkUint64Sorted_MarshalMsg/100-32         2889          2665          -7.75%
    BenchmarkUint64Sorted_MarshalMsg/1000-32        54186         50858         -6.14%
    BenchmarkUint64Sorted_UnmarshalMsg/10-32        177           179           +0.96%
    BenchmarkUint64Sorted_UnmarshalMsg/100-32       1124          1143          +1.69%
    BenchmarkUint64Sorted_UnmarshalMsg/1000-32      12460         12793         +2.67%
    BenchmarkUint64Sorted_AsSlice/10-32             186           119           -36.25%
    BenchmarkUint64Sorted_AsSlice/100-32            2607          2368          -9.17%
    BenchmarkUint64Sorted_AsSlice/1000-32           51618         48003         -7.00%
    BenchmarkUint64Sorted_FromSlice/10-32           158           160           +1.39%
    BenchmarkUint64Sorted_FromSlice/100-32          1073          1069          -0.37%
    BenchmarkUint64Sorted_FromSlice/1000-32         11172         11630         +4.10%
    BenchmarkFloat64Sorted_EncodeMsg/10-32          199           150           -24.22%
    BenchmarkFloat64Sorted_EncodeMsg/100-32         2940          2760          -6.12%
    BenchmarkFloat64Sorted_EncodeMsg/1000-32        57184         55369         -3.17%
    BenchmarkFloat64Sorted_DecodeMsg/10-32          760           793           +4.32%
    BenchmarkFloat64Sorted_DecodeMsg/100-32         2873          2913          +1.39%
    BenchmarkFloat64Sorted_DecodeMsg/1000-32        27272         27727         +1.67%
    BenchmarkFloat64Sorted_MarshalMsg/10-32         274           172           -37.11%
    BenchmarkFloat64Sorted_MarshalMsg/100-32        3191          3010          -5.67%
    BenchmarkFloat64Sorted_MarshalMsg/1000-32       60777         56777         -6.58%
    BenchmarkFloat64Sorted_UnmarshalMsg/10-32       259           262           +1.08%
    BenchmarkFloat64Sorted_UnmarshalMsg/100-32      2131          2176          +2.11%
    BenchmarkFloat64Sorted_UnmarshalMsg/1000-32     22264         22952         +3.09%
    BenchmarkFloat64Sorted_AsSlice/10-32            171           123           -28.10%
    BenchmarkFloat64Sorted_AsSlice/100-32           2712          2561          -5.57%
    BenchmarkFloat64Sorted_AsSlice/1000-32          54985         53087         -3.45%
    BenchmarkFloat64Sorted_FromSlice/10-32          222           237           +7.04%
    BenchmarkFloat64Sorted_FromSlice/100-32         1913          1942          +1.52%
    BenchmarkFloat64Sorted_FromSlice/1000-32        22761         23455         +3.05%
    BenchmarkFloat32Sorted_EncodeMsg/10-32          193           135           -29.96%
    BenchmarkFloat32Sorted_EncodeMsg/100-32         2890          2624          -9.20%
    BenchmarkFloat32Sorted_EncodeMsg/1000-32        56231         53821         -4.29%
    BenchmarkFloat32Sorted_DecodeMsg/10-32          715           736           +2.87%
    BenchmarkFloat32Sorted_DecodeMsg/100-32         2527          2542          +0.59%
    BenchmarkFloat32Sorted_DecodeMsg/1000-32        22848         23154         +1.34%
    BenchmarkFloat32Sorted_MarshalMsg/10-32         260           151           -42.08%
    BenchmarkFloat32Sorted_MarshalMsg/100-32        3029          2848          -5.98%
    BenchmarkFloat32Sorted_MarshalMsg/1000-32       58618         54510         -7.01%
    BenchmarkFloat32Sorted_UnmarshalMsg/10-32       237           241           +1.43%
    BenchmarkFloat32Sorted_UnmarshalMsg/100-32      1976          1989          +0.66%
    BenchmarkFloat32Sorted_UnmarshalMsg/1000-32     20990         21158         +0.80%
    BenchmarkFloat32Sorted_AsSlice/10-32            168           114           -31.93%
    BenchmarkFloat32Sorted_AsSlice/100-32           2621          2506          -4.39%
    BenchmarkFloat32Sorted_AsSlice/1000-32          54476         52322         -3.95%
    BenchmarkFloat32Sorted_FromSlice/10-32          202           205           +1.58%
    BenchmarkFloat32Sorted_FromSlice/100-32         1797          1830          +1.84%
    BenchmarkFloat32Sorted_FromSlice/1000-32        21163         21556         +1.86%
    ```
    
    * Don't over-alloc
    klauspost authored Nov 18, 2025
    Configuration menu
    Copy the full SHA
    fe3597f View commit details
    Browse the repository at this point in the history
  3. Add support for aliased map/slice/arrays (#418)

    * Add support for aliased map/slice/arrays
    
    Fixes #416
    
    * Fix test errors
    
    * Clean up common code.
    
    * Apply suggestions from code review
    
    Co-authored-by: Phil <philhofer@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Phil <philhofer@users.noreply.github.com>
    klauspost and philhofer authored Nov 18, 2025
    Configuration menu
    Copy the full SHA
    8202ee2 View commit details
    Browse the repository at this point in the history

Commits on Nov 21, 2025

  1. Allow ignore directives to contain regex (#423)

    Prefixing name of a an ignore directive with `regex:` will make it ignore all RE2 regex matches.
    
    Examples:
    
    ```
    //msgp:ignore regex:IGNORE
    ```
    Ignore all types that contains `IGNORE`.
    
    ```
    //msgp:size ignore regex:IGNORE
    ```
    Do not generate `Msgsize() int` for all types that contains IGNORE.
    
    Co-authored-by: Phil <philhofer@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Phil <philhofer@users.noreply.github.com>
    klauspost and philhofer authored Nov 21, 2025
    Configuration menu
    Copy the full SHA
    00e7bb0 View commit details
    Browse the repository at this point in the history

Commits on Nov 26, 2025

  1. Fix limits and combinations with other params (#424)

    * Fix limits and combinations with other params
    * Read header before decoding (effectively unrolls reads)
    * Fix duplicated error checks
    * Limited fields now reuse destiantion registers if possible.
    * Add (generated) tests.
    
    Removes output changes from 1.5.0 (tested against larger codebase)
    
    * We already handled nil, no need for special case.
    
    * Simplify more.
    klauspost authored Nov 26, 2025
    Configuration menu
    Copy the full SHA
    0146c03 View commit details
    Browse the repository at this point in the history

Commits on Nov 27, 2025

  1. Add binary marshal (#426)

    Allow specifying directives for (external) types that support [BinaryMarshaler](https://pkg.go.dev/encoding#BinaryMarshaler) + [BinaryUnmarshaler](https://pkg.go.dev/encoding#BinaryUnmarshaler) and optionally [BinaryAppender](https://pkg.go.dev/encoding#BinaryAppender).
    
    * `//msgp:binmarshal pkg.Type pkg.Type2` will use BinaryMarshaler/BinaryUnmarshaler. 
    * `//msgp:binappend pkg.Type pkg.Type2` will use BinaryAppender/BinaryUnmarshaler.
    
    Serialized data will be added an `bin` data, no special header.
    
    I guess we could also add the text interfaces. But the user would probably need to specify the storage type...
    
    * `//msgp:textmarshal pkg.Type pkg.Type2` will use TextMarshaler/TextUnmarshaler; data saved as bin (default)
    * `//msgp:textappend pkg.Type pkg.Type2` will use TextAppender/TextUnmarshaler; data saved as bin (default)
    * `//msgp:textmarshal as:string pkg.Type pkg.Type2` will use TextMarshaler/TextUnmarshaler; data saved as string. 
    * `//msgp:textappend as:string pkg.Type pkg.Type2` will use TextAppender/TextUnmarshaler; data saved as string.
    
    # Example
    
    ```
    // BinaryTestType implements encoding.BinaryMarshaler and encoding.BinaryUnmarshaler
    type BinaryTestType struct {
    	Value string
    }
    
    //msgp:binmarshal BinaryTestType
    
    func (t *BinaryTestType) MarshalBinary() ([]byte, error) {
    	return []byte(t.Value), nil
    }
    
    func (t *BinaryTestType) UnmarshalBinary(data []byte) error {
    	t.Value = string(data)
    	return nil
    }
    ```
    
    # Implementation notes
    
    Sizes are not accurate. We assume header + 32 bytes.
    klauspost authored Nov 27, 2025
    Configuration menu
    Copy the full SHA
    b5471de View commit details
    Browse the repository at this point in the history

Commits on Dec 4, 2025

  1. Update fuzz tests (#428)

    Decided to make ReadArray always stop after an error.
    There is a too high risk of running into an infinite loop.
    
    Added size checks for (Writer.)WriteBytes/WriteString/WriteStringFromBytes
    
    Add panic recovery to binary marshal helpers.
    klauspost authored Dec 4, 2025
    Configuration menu
    Copy the full SHA
    d192f74 View commit details
    Browse the repository at this point in the history
Loading