Skip to content

Conversation

@xssnick
Copy link
Contributor

@xssnick xssnick commented May 12, 2025

No description provided.

SpyCheese and others added 30 commits July 1, 2025 17:15
This allows express snake nesting like
struct A {
    next: Cell<A>?
}
Instead of generating PROCINLINE to Fift,
perform compile-time inlining when possible
In real-world code, it requires fewer stack permutations,
because slices are not constant
Lazy loading, partial loading, partial updating
See pipe-lazy-load-insertions.cpp for comments
For every function f, name it `f()` instead of `f` in Fift output.
> DECLPROC f()
> f() CALLDICT
This avoids collisions with Fift reserved names like execute/swap/etc.

For global vars, `$` prefix is now used:
> DECLGLOBVAR $name
Fix an issue with a ternary operator that returns
(and is assigned to) multiple variables
Instead of "FunC-style" parsing msg_cell,
use `in.senderAddress`, `in.originalForwardFee`,
that are mapped onto TVM-11 instructions
Also, output abs paths in error messages.
Occasionally, `varint32` was not handled at packing to/from cells
and worked like a regular `int32`.
This MR fixes the issue, and also:
- adds missing varintN types
- fix intN/uintN limits
- rename bytesN to bitsN, since "bits" are more frequent in practice
For any type alias, one can now specify
> fun T.packToBuilder
> fun T.unpackFromSlice
That will be called whenever that type is serialized.
Perfect to express custom TL/B behavior, like
> len: (## 8)
> data: (bits (len*8))
New functions in stdlib:
> AutoDeployAddress.buildAddress
> AutoDeployAddress.addressMatches
Based on the same philosophy as createMessage
After declaring type aliases, constants, etc.
semicolon is now optional.
Struct fields can also be separated with a newline only.
It's a bit better for gas usage, always
Peephole optimizations:
- `N LDU` + `DROP` -> `N PLDU`
- same for LDI -> PLDI, LDREF -> PLDREF, etc.
- SWAP + EQUAL -> EQUAL
- same for other symmetric operators (NEQ, MUL, etc.)
- SWAP + xxx PUSHINT + 32 STUR -> xxx PUSHINT + ROT + 32 STU
- SWAP + STSLICER => STSLICE and vice versa
- same for other storing operators (STU, STB, STREF, etc.)
- SWAP + LESS/LEQ => GREATER/GEQ
Now, `b.storeInt(123, 32)` generates not `123 PUSHINT; SWAP; STI`,
but `x{...} STSLICECONST`.
Although, for certain conditions, still generate STUR/STUR targeting
smaller bytecode.
For example, when passing `bits8` to `slice`, the compiler
now suggests to use `as` operator.
…le unions

Now, treat `T?` as `Maybe<T>` even if T is a union.
Example: A|B|C|D|null => 0 | 100+A | 101+B | 110+C | 111+D.
If no `null`, just distribute sequentially: A|B|C => 00+A | 01+B | 10+C
Finally, after 7 months of development — the release
neodix42 and others added 30 commits December 3, 2025 18:09
…ckchain#1935)

* fetch libmicrohttpd from github instead of ftpmirror.gnu.org

* remove redundant snippet

* remove redundant snippet

* minor

* use libmicrohttpd repo out of ton-blockchain org
* Add ratelimiter for full node shard requests

* Fill in limits for some functions

* Fix linter errors

* Share limiter between shards

* Fix includes

* Add synchronization

* Some fixes

* Move configuration

* Fixes + formatting

* Fix

* FIx request groups
* Fix depth balance decompression

* [compression-depth-balance] Bug fix and refactor depth balance decompression

* [compression-depth-balance] Refactor balance parsing, change CMakeLists to avoid cyclic dependencies with block-auto.h

* [compression-depth-balance] Optimize decompression

* [compression-depth-balance] Add benchmark logs for testing on devnet

* Add benchmark logs to lefotver methods

* Improve benchmark logs

* [broadcast-benchmark-logs] Create comprehensive logs for broadcast benchmark. Other refactoring.

* [compression-depth-balance] Fix formatting
…ts (ton-blockchain#1954)

Everyone should be using v2 versions of these requests.
…ockchain#1955)

* Simplify clang-format by actually basing it on Google style

There is no benefit in not using `BasedOnStyle` rule.

The new config differs from the old one in a few minor rules that do not
introduce any formatting changes.

* Ask clang-format to insert new line at EOF

* Use west const everywhere
* Add version check for source address validation

* fix formatting
* Improve accessing nonfinal blocks through LS

* Fix formatting

* Send shard block descriptions to custom overlays

* Publish db.event.blockApplied for masterchain when all shards are ready

* Fix incorrect merge

* Add newline at end of db-event-publisher.hpp

Added a newline at the end of the file for consistency.

---------

Co-authored-by: EmelyanenkoK <[email protected]>
ton-blockchain#1976)

* Use C++20 in example/android

* Introduce td::Formattable and use it to gate some operator<< overloads

This helps clangd to issue error at call site when you try to format a
type without a suitable formatter.
)

* framed_{write,read}: dynamic max_message_size

* experimental libbacktrace support

* do not build git target if it is already exists

* coroutines: detach now logs failed coroutines by default

* coroutines use-after-free bugfix

* Context.h: get returns reference and CHECKS that current context is not null

* fix CE

* fix co_return {}

* clang format

* add libbacktrace as submodule

---------

Co-authored-by: birydrad <>
* clang-21 wip

* adjust build scripts

* use bundled libc++ on macos

* force new llvm usage on macos

* revert force new llvm usage on macos, clear gh cache

* stop using homebrew libc++ headers and force it to use Apple’s

* fetch libmicrohttpd from github instead of ftpmirror.gnu.org

* for macos >=15 use AppleClang, otherwise homebrew's

* compile 3pp with sdk, macos-14 still fails (ok)

* try clang-20 for macos

* Revert "try clang-20 for macos"

This reverts commit b120dda.

* stop using homebrew libc++ headers and force it to use Apple’s

* update blst to v0.3.15

* update blst to v0.3.15

* remove redundant submodule entry

* remove redundant snippet

* remove redundant snippet

* remove redundant snippet

* minor

* minor

* use libmicrohttpd repo out of ton-blockchain org

* minor

* clear gh cache and rerun

* review fixes

* review fixes

---------

Co-authored-by: EmelyanenkoK <[email protected]>
* Remove spaces at EOL

* Add a lint check to detect spaces at EOL
* Rename broadcast files

* Refactor broadcast-simple

* Refactor broadcast-fec

* Add broadcast-twostep

* Configure mtu for peers in rldp2

* Improve twostep broadcasts

1) Fix use after move in process_broadcast
2) Sign src adnl id to verify original sender
3) Don't send to self and src in rebroadcast()
4) deliver_broadcast on send

* Enable twostep broadcast in overlay options

* Pass rldp to CatChainReceiverImpl

* Use new broadcasts in custom overlays

* Init peer mtu in custom overlays

* Register broadcast in BroadcastsTwostep::send

* Run broadcasts_twostep_.gc

* Enable processing twostep broadcasts in catchain overlays

* Improve setting rldp2 peer mtu

* Reformat code

---------

Co-authored-by: Evgeny Kapun <[email protected]>
Co-authored-by: SpyCheese <[email protected]>
…n#2061)

For some reason, RocksDB conditionally enables sanitizer suppressions
only when it has its own WITH_{A,T,UB}SAN options set to true.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.