{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":73461676,"defaultBranch":"master","name":"vyper","ownerLogin":"vyperlang","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2016-11-11T08:56:41.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/57152025?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1713462672.0","currentOid":""},"activityList":{"items":[{"before":"3af5390001e59ba767378047add0df5e26193d9f","after":"75c75c5631222dd1b98c23f8cfeedc080e47a9e3","ref":"refs/heads/master","pushedAt":"2024-05-08T12:37:15.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":"feat[tool]: archive format (#3891)\n\nthis commit adds several output formats to aid with build\r\nreproducibility and source code verification:\r\n- `-f archive`\r\n- `-f solc_json`\r\n- `-f integrity`\r\n- `--base64`\r\n\r\n`-f archive` creates a \"vyper archive\" using the zipfile format. it\r\nemits the metadata associated with the build (settings, search path,\r\ncompiler version, integrity hash) in the `MANIFEST/` folder inside the\r\narchive. `--base64` is only usable with `-f archive` and produces a\r\nbase64-encoded archive (which is easier to copy-paste).\r\n\r\nboth the base64 and binary versions of the archive round-trip. that is,\r\nif you provide an archive directly to the vyper compiler (e.g.\r\n`vyper contract.zip` or `vyper contract.zip.b64`), it should produce\r\nexactly the same output as running `vyper contract.vy` on the local\r\nmachine with the same settings+environment that produced the archive.\r\n\r\n`-f solc_json` is for compatibility with standard json that a lot of\r\nverifiers and tooling currently uses. it uses the same \"output bundle\"\r\nmachinery as `-f archive`, but spits out in \"standard-json\" format\r\n(consumable by `--standard-json`).\r\n\r\nboth of these use an `OutputBundle` abstraction, which abstracts\r\ncollecting the inputs to the build. these include\r\n- settings (whatever is on the Settings object)\r\n- search path\r\n- compiler version\r\n- integrity hash\r\n\r\nimportantly, `OutputBundle` recovers and anonymizes search paths used\r\nduring compilation. this is done to minimize leaking of user information\r\nin archives. however, it comes with a tradeoff -- because of how the\r\nanonymization works, it is possible to have a build where search paths\r\nare not recoverable (specifically, if a module \"escapes\" its package\r\nwith too many `..`, the resulting anonymized path will be bogus).\r\nseveral methods were tried to prevent this, but in the end this method\r\nwas chosen, which prioritizes minimizing leakage over handling edge\r\ncases.\r\n\r\n`-f integrity` produces an \"integrity hash\", which is basically a\r\nchecksum over the source file inputs. it is intended to let consumers\r\nof the compiler know when any input in the dependency tree has changed\r\nand recompilation is necessary. it is conservative by design; it works\r\nby recursively hashing source text as opposed to AST or any other\r\nsemantic representation of source code. it can also be used by tooling\r\nas a check to determine if the source tree in an archive is the same as\r\nexpected. this would likely be an additional check in addition to\r\nbytecode comparison, since there could differences in source code (e.g.\r\ncomments) which affect the integrity hash but not the bytecode.\r\n\r\nthe integrity hash computation currently depends on all frontend\r\nanalysis to complete. in theory, since it only depends on source code,\r\nit could be refactored into another preliminary pass in the compiler,\r\nwhose sole job is to resolve (and hash) imports. however, it would be\r\nadditional maintenance work. we could revisit if the performance of this\r\nmethod becomes reported as an issue (note: current numbers are that this\r\nmethod operates at roughly 2500 lloc per second).\r\n\r\ncurrently, there are two places where build reproducibility might fail -\r\nin checking the integrity hash of an archive or during archive\r\nconstruction itself (if there is a compile-time failure, this could\r\nhappen for example if the user is trying to send a reproduction of an\r\nerror). it was decided that the most user-friendly thing to do is to\r\nemit a warning in these cases, rather than adding additional compilation\r\nflags that control whether to bail out or not.\r\n\r\nthe tentative canonical suffix for vyper archive (the zipfile version)\r\nis `.vyz`, although this is subject to change (several alternatives were\r\nalso considered, including `.den` - as in \"a den of vypers\"!).","shortMessageHtmlLink":"feat[tool]: archive format (#3891)"}},{"before":"6d4c09cda518ffce81a9a76f822059fdce16cdfb","after":"3af5390001e59ba767378047add0df5e26193d9f","ref":"refs/heads/master","pushedAt":"2024-05-07T20:22:21.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":"refactor[test]: change fixture scope in examples (#3995)\n\nroughly 5x performance increase per CPU in the\r\n`tests/functional/examples/` directory (testing locally: 27s -> 7s)","shortMessageHtmlLink":"refactor[test]: change fixture scope in examples (#3995)"}},{"before":"ef2d535115cdfd10f7d0817ff2fa8ab9e0b3e5cd","after":"6d4c09cda518ffce81a9a76f822059fdce16cdfb","ref":"refs/heads/master","pushedAt":"2024-05-07T13:22:50.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":"refactor[ux]: remove deprecated `VyperNode` properties (#3999)\n\nThis commit removes the `n` property from `Num` vyper node and the `s`\r\nproperty from `Str` vyper node as they have been deprecated in the\r\npython AST (and it is clearer to use the `value` property anyways)","shortMessageHtmlLink":"refactor[ux]: remove deprecated VyperNode properties (#3999)"}},{"before":"5739624fccea0a612b336a00c9b71ff4671afcb0","after":"ef2d535115cdfd10f7d0817ff2fa8ab9e0b3e5cd","ref":"refs/heads/master","pushedAt":"2024-05-07T12:41:00.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":"chore[ux]: remove deprecated python AST classes (#3998)\n\nremove references to python AST classes which trigger deprecation\r\nwarnings in python 3.12\r\n\r\n---------\r\n\r\nCo-authored-by: Charles Cooper ","shortMessageHtmlLink":"chore[ux]: remove deprecated python AST classes (#3998)"}},{"before":"cd524c1e2a8f77616af4a81c04293e4a10e825e1","after":"5739624fccea0a612b336a00c9b71ff4671afcb0","ref":"refs/heads/master","pushedAt":"2024-05-06T21:15:42.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":"refactor[test]: change default expected exception type (#4004)\n\nChanged the default exception type expected by `tx_failed()` exception\r\nto be `ExecutionReverted`\r\nFixed tests that raised the more generic `EvmError`","shortMessageHtmlLink":"refactor[test]: change default expected exception type (#4004)"}},{"before":"6c272b7d632e86f66b63d525c6d8fe98bf98a05e","after":"cd524c1e2a8f77616af4a81c04293e4a10e825e1","ref":"refs/heads/master","pushedAt":"2024-05-06T21:04:49.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":"chore[test]: explicitly specify evm backend in test matrix (#4006)\n\nalways display the evm backend in the job name","shortMessageHtmlLink":"chore[test]: explicitly specify evm backend in test matrix (#4006)"}},{"before":"ace3789e4b9e23079579695070d52e7dc8c26aad","after":"6c272b7d632e86f66b63d525c6d8fe98bf98a05e","ref":"refs/heads/master","pushedAt":"2024-05-06T15:57:03.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":"feat[test]: remove memory mocker (#4005)\n\nit doesn't really find bugs (since the calling convention was redone in\r\n0.3.0) and we have better ways to analyze memory now since the\r\nintroduction of the venom pipeline (cf. changes in 7d28a501cf128a87)","shortMessageHtmlLink":"feat[test]: remove memory mocker (#4005)"}},{"before":"533b27143a683032874ec455fbbe10b3f8b5b71c","after":"ace3789e4b9e23079579695070d52e7dc8c26aad","ref":"refs/heads/master","pushedAt":"2024-05-04T00:12:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":"refactor[venom]: introduce `IRContext` and `IRAnalysisCache` (#3983)\n\nthis is a refactoring commit. it introduces `IRContext` and\r\n`IRAnalysisCache`. `IRContext` is a global compilation context for a\r\ncompilation run, it includes global information like the deploy- and\r\nruntime-code. meanwhile, `IRFunction` now corresponds directly to\r\n\"internal\" functions passed from the frontend.\r\n\r\nthis commit refactors the `IRAnalysis` and `IRPass` classes by adding\r\n`IRAnalysisCache` (kind of a manager for analyses) which determines\r\nwhich analyses are needed for a given pass.\r\n\r\nadditionally, there is a compilation-time performance improvement which\r\nis due to optimizations running over smaller sections of code.\r\n\r\nthis commit introduces some performance regressions due to\r\n`remove_unused_variables` running in one-shot instead of in a loop now.\r\nthese performance regressions will be investigated and tuned in a\r\nfollow-up PR.","shortMessageHtmlLink":"refactor[venom]: introduce IRContext and IRAnalysisCache (#3983)"}},{"before":"097aecfe29e6c218d165d223f0272265cf6f5403","after":"533b27143a683032874ec455fbbe10b3f8b5b71c","ref":"refs/heads/master","pushedAt":"2024-05-03T15:22:17.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":"feat[lang]: add `blobhash()` builtin (#3962)\n\nThis commit adds access to the `BLOBHASH` opcode via the new builtin\r\nfunction `blobhash()`. The opcode was introduced in EIP-4844.\r\n\r\nReferences:\r\nhttps://eips.ethereum.org/EIPS/eip-4844#opcode-to-get-versioned-hashes\r\n\r\n---------\r\n\r\nSigned-off-by: Pascal Marco Caversaccio \r\nCo-authored-by: tserg <8017125+tserg@users.noreply.github.com>\r\nCo-authored-by: Daniel Schiavini \r\nCo-authored-by: Charles Cooper ","shortMessageHtmlLink":"feat[lang]: add blobhash() builtin (#3962)"}},{"before":"2e6fbe7daaa13a46f8a1934f26b601776d2b58ad","after":"097aecfe29e6c218d165d223f0272265cf6f5403","ref":"refs/heads/master","pushedAt":"2024-05-02T14:44:13.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":"refactor[test]: bypass `eth-tester` and interface with evm backend directly (#3846)\n\nRefactor the test suite to use the EVM backend directly. Get rid of\r\n`eth-tester` and `web3`, add support for pyrevm.\r\n\r\nHow:\r\n- Create a `BaseEnv` abstraction which has both `py-evm` and `pyrevm`\r\n backends\r\n- Implementing multiple backends gives us flexibility between EVM\r\n backends (especially if there is feature disparity between backends,\r\n e.g. regarding EIP implementation), and additionally serves as a form\r\n of differential testing by using different backend implementations.\r\n- Add `ABIContract` abstraction to interface between EVM and contracts\r\n- `BaseEnv` and `ABIContract` are substantially \"inspired by\" titanoboa,\r\n but we did not introduce titanoboa as a dependency because it\r\n increases the coupling between `vyper` and `titanoboa` repos.\r\n- Install pyrevm and update tests\r\n- Remove `eth-tester` and `web3` dependencies\r\n\r\nMisc/refactoring:\r\n- Prune a bunch of unneeded functionality in `tests/conftest.py`\r\n - `tx_failed()` does not need to snapshot (that is handled by\r\n reverting)\r\n - Protect every test with `env.anchor()`\r\n - Remove unneeded `get_contract*` duplicate implementations","shortMessageHtmlLink":"refactor[test]: bypass eth-tester and interface with evm backend di…"}},{"before":"2b5ce30cd8fb36d7a7da1d109854a51aeb227750","after":"2e6fbe7daaa13a46f8a1934f26b601776d2b58ad","ref":"refs/heads/master","pushedAt":"2024-05-01T20:06:12.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":"fix[codegen]: same symbol jumpdest merge (#3982)\n\nUpdate the assembly optimizer to return `False` when trying to \r\noptimize two consecutive `JUMPDEST`s with the same symbol. \r\nIt used to return `True` when no change was made (resulting in an\r\ninfinite loop)\r\n\r\n+ unit tests","shortMessageHtmlLink":"fix[codegen]: same symbol jumpdest merge (#3982)"}},{"before":"04cadaa9539e9378ef2f36d0025147acb0fa25af","after":"2b5ce30cd8fb36d7a7da1d109854a51aeb227750","ref":"refs/heads/master","pushedAt":"2024-04-30T22:50:52.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":"refactor[docs]: update security policy (#3981)","shortMessageHtmlLink":"refactor[docs]: update security policy (#3981)"}},{"before":"7d28a501cf128a878f5d434978506e5da7aec943","after":"04cadaa9539e9378ef2f36d0025147acb0fa25af","ref":"refs/heads/master","pushedAt":"2024-04-29T14:21:04.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":"chore[ci]: downgrade codecov action to v3 (#3940)\n\nthere is a bug in the action since february which is resulting in\r\nintermittently failing builds. this issue introduced in 730679bd55,\r\nwhich upgraded the codecov action.\r\n\r\nreferences:\r\nGH codecov/codecov-action#1280","shortMessageHtmlLink":"chore[ci]: downgrade codecov action to v3 (#3940)"}},{"before":"1592ea1b2f2cb79001a1fc733355d34bf8ab9e9c","after":"7d28a501cf128a878f5d434978506e5da7aec943","ref":"refs/heads/master","pushedAt":"2024-04-26T13:50:24.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":"feat[venom]: implement `mem2var` and `sccp` passes (#3941)\n\nThis commit adds two additional optimization passes to the Venom\r\npipeline, `mem2var` and `Sparse Conditional Constant Propagation`.\r\n\r\nThe `mem2var` pass has the purpose of promoting some of the memory\r\naccesses that the frontend emits to Venom variables, optimizing out\r\nmemory reads and writes. It is analogous to the `mem2reg` pass in LLVM.\r\nRight now it only applies promotions conservatively, but is the basis\r\nfor more advanced memory optimizations in the future.\r\n\r\nTo facilitate the implementation of `mem2var` this commit additionally\r\nmodifies the original IR emitter to emit \"abstract\" memory locations\r\n(i.e. \"allocas\") instead of hard-coded pointers if the venom pipeline is\r\nenabled. A small amount of refactoring was done to the memory allocator\r\nto enable this switch to be implemented cleanly.\r\n\r\nThe `sccp` pass is responsible for evaluating and propagating constants\r\nin the code, eliminating conditional branches and performing dead code\r\nelimination in the process. It is a linear `O(2n)` pass, based on the\r\nclassical algorithm by Wegman and Zadeck.\r\n\r\nReferences:\r\nhttps://dl.acm.org/doi/pdf/10.1145/103135.103136\r\n\r\n---------\r\n\r\nCo-authored-by: Charles Cooper ","shortMessageHtmlLink":"feat[venom]: implement mem2var and sccp passes (#3941)"}},{"before":"f6c0c89e207ed586cb6474156e83f5b6e100e73c","after":"1592ea1b2f2cb79001a1fc733355d34bf8ab9e9c","ref":"refs/heads/master","pushedAt":"2024-04-24T11:58:33.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":"fix[docs]: fix clipped `endAuction` method in example section (#3969)\n\nShow entire endAuction method","shortMessageHtmlLink":"fix[docs]: fix clipped endAuction method in example section (#3969)"}},{"before":"80708e6dd56fe9cc1959f1b64f64d32daa1fccb2","after":"f6c0c89e207ed586cb6474156e83f5b6e100e73c","ref":"refs/heads/master","pushedAt":"2024-04-22T23:13:28.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":"feat[lang]: support `block.blobbasefee` (#3945)\n\nThis commit adds access to the `BLOBBASEFEE` opcode via the environment\r\nvariable `block.blobbasefee`. The opcode was introduced in EIP-4844.\r\n\r\n---------\r\n\r\nCo-authored-by: sudo rm -rf --no-preserve-root / ","shortMessageHtmlLink":"feat[lang]: support block.blobbasefee (#3945)"}},{"before":"e1adb7b3344c1ac03facfa553830a94dd7def2e2","after":"80708e6dd56fe9cc1959f1b64f64d32daa1fccb2","ref":"refs/heads/master","pushedAt":"2024-04-20T13:06:28.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":"chore[docs]: fix some typos (#3855)\n\nSigned-off-by: wellweek ","shortMessageHtmlLink":"chore[docs]: fix some typos (#3855)"}},{"before":"92dbeb5b71e4afffd93989b9befcc399e5adc745","after":null,"ref":"refs/heads/v0.3.9_patch","pushedAt":"2024-04-18T17:51:12.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"cyberthirst","name":null,"path":"/cyberthirst","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16179769?s=80&v=4"}},{"before":null,"after":"92dbeb5b71e4afffd93989b9befcc399e5adc745","ref":"refs/heads/v0.3.9_patch","pushedAt":"2024-04-18T15:12:28.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"cyberthirst","name":null,"path":"/cyberthirst","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16179769?s=80&v=4"},"commit":{"message":"patch 0.3.9","shortMessageHtmlLink":"patch 0.3.9"}},{"before":"54c033be8c7135e3e991c0a4931be456d180ab91","after":"e1adb7b3344c1ac03facfa553830a94dd7def2e2","ref":"refs/heads/master","pushedAt":"2024-04-15T19:13:20.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":"fix[lang]: fix `pow` folding when args are not literals (#3949)\n\nthis commit fixes folding of the `**` operator when the arguments are\r\nconstants, but not literals.","shortMessageHtmlLink":"fix[lang]: fix pow folding when args are not literals (#3949)"}},{"before":"214a352f5e310a6a899b304a9aa7a5b83582eac5","after":"54c033be8c7135e3e991c0a4931be456d180ab91","ref":"refs/heads/master","pushedAt":"2024-04-15T19:11:40.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":"fix[lang]: builtin type comparisons (#3956)\n\nprior to this commit, due to re-loading and re-analysing the builtin\r\nmodules, the types defined in those modules do not compare when they are\r\nimported in different files. this commit globally(!) caches the builtin\r\nmodules, ensuring builtin types compare correctly no matter how they are\r\nimported. the global scope should be safe, since builtins are always\r\nstable across compilations.","shortMessageHtmlLink":"fix[lang]: builtin type comparisons (#3956)"}},{"before":"39b46ca332007df986008edd9e0d48d2a76bd376","after":"214a352f5e310a6a899b304a9aa7a5b83582eac5","ref":"refs/heads/master","pushedAt":"2024-04-15T17:20:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":"fix[ux]: replace standard strings with f-strings (#3953)\n\nalso add flake8 FS003 rule","shortMessageHtmlLink":"fix[ux]: replace standard strings with f-strings (#3953)"}},{"before":"074073f4a42b72d0e7777d6aeba6dfb27a798025","after":"39b46ca332007df986008edd9e0d48d2a76bd376","ref":"refs/heads/master","pushedAt":"2024-04-15T13:27:27.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":"chore[tool]: add help text for `hex-ir` CLI flag (#3942)","shortMessageHtmlLink":"chore[tool]: add help text for hex-ir CLI flag (#3942)"}},{"before":"6f09e2966b8096d8d36a85ad8745d56691dd25c4","after":"074073f4a42b72d0e7777d6aeba6dfb27a798025","ref":"refs/heads/master","pushedAt":"2024-04-14T17:00:22.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":"chore[ux]: compute natspec as part of standard pipeline (#3946)\n\nprior to this commit, natspec had to be explicitly requested by the user\r\n(`-f userdoc`, `-f devdoc` or `-f combined_json`). this would lead to\r\ndiscrepancies between development time and verification time, where a\r\ncontract could compile locally (because no natspec was requested), but\r\nnot on the verifier's pipeline (because the verifier would request the\r\nnatspec via one of the above methods). this commit computes the natspec\r\nas part of the dependencies of the analysed AST (the reasoning being\r\nthat, a consumer might expect semantic analysis to include natspec\r\nvalidation). so, there is no way to produce bytecode for a contract\r\nwithout validating natspec.","shortMessageHtmlLink":"chore[ux]: compute natspec as part of standard pipeline (#3946)"}},{"before":"cb940684a9137c74fa755284487997a37a0cf689","after":"6f09e2966b8096d8d36a85ad8745d56691dd25c4","ref":"refs/heads/master","pushedAt":"2024-04-14T02:50:43.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":"feat[lang]: export interfaces (#3919)\n\nthis commit allows exporting of `module.`, and also adds\r\n`module.__interface__` which gives the interface type of the module.\r\nin particular, this makes it easier for users to export all functions\r\nfrom a module, since they do not need to list out every single function\r\nmanually.\r\n\r\nnote that since `module.__interface__` is actually an interface type, it\r\ncan theoretically be used in type expressions, e.g.,\r\n```vyper\r\n x: module.__interface__ = module.__interface__(msg.sender)\r\n```\r\n\r\nhowever, it doesn't work yet as some additional work is required to\r\nproperly thread the type into the type analysis system\r\n(see related: GH #3943).\r\n\r\nthis commit includes the restriction that only `implement`ed interfaces\r\ncan be exported, this makes the most sense from a UX / user intuition\r\nperspective.\r\n\r\n---------\r\n\r\nCo-authored-by: cyberthirst ","shortMessageHtmlLink":"feat[lang]: export interfaces (#3919)"}},{"before":"75fb0594ab3011491fd124abe534573dbd9ba052","after":"cb940684a9137c74fa755284487997a37a0cf689","ref":"refs/heads/master","pushedAt":"2024-04-12T16:22:36.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":"fix[lang]: fix `uses` analysis for nonreentrant functions (#3927)\n\n`uses` analysis ignores nonreentrant functions, even though those that\r\n(implicitly) use state.\r\n\r\nthis commit adds checks both for internally (called) and external\r\n(exported) modules\r\n\r\nmisc/refactor:\r\n- factor out `uses_state()` util\r\n- rename `validate_functions` to more accurate `analyze_functions`\r\n- improve locality of exceptions thrown in check_module_uses","shortMessageHtmlLink":"fix[lang]: fix uses analysis for nonreentrant functions (#3927)"}},{"before":"5734ce2aa52ece67ef57708c3072f93632968603","after":"75fb0594ab3011491fd124abe534573dbd9ba052","ref":"refs/heads/master","pushedAt":"2024-04-11T10:55:59.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":"fix[lang]: fix array index checks when the subscript is folded (#3924)\n\nthis commit fixes a regression introduced in 56c4c9dbc. prior to\r\n56c4c9dbc, the folded subscript would be checked for OOB access, but\r\nafter 56c4c9dbc, expressions like `foo[0 - 1]` can slip past the\r\ntypechecker (getting demoted to a runtime check). also, a common pattern\r\nis refactored.\r\n\r\ncommon pattern:\r\n```python\r\nif node.has_folded_value:\r\n node = node.get_folded_value()\r\n```\r\n=>\r\n```\r\nnode = node.reduced()\r\n```","shortMessageHtmlLink":"fix[lang]: fix array index checks when the subscript is folded (#3924)"}},{"before":"d33c73750c48507868db9b7e7b4c1c4a8644c848","after":"5734ce2aa52ece67ef57708c3072f93632968603","ref":"refs/heads/master","pushedAt":"2024-04-10T17:59:24.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":"chore[docs]: amend `revert_on_failure` kwarg docs for create builtins (#3921)","shortMessageHtmlLink":"chore[docs]: amend revert_on_failure kwarg docs for create builtins ("}},{"before":"86975197bb54bc57f7c4d3753b61e5c40070390a","after":"d33c73750c48507868db9b7e7b4c1c4a8644c848","ref":"refs/heads/master","pushedAt":"2024-04-10T17:49:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":" chore[tool]: remove `vyper-serve` from `setup.py` (#3936)\n\nremove reference to the vyper-serve entry point; it no longer exists as\r\nof 98f502bae","shortMessageHtmlLink":" chore[tool]: remove vyper-serve from setup.py (#3936)"}},{"before":"b2db399b889ab0127ae6502238366d3198adca78","after":"86975197bb54bc57f7c4d3753b61e5c40070390a","ref":"refs/heads/master","pushedAt":"2024-04-10T17:31:42.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"charles-cooper","name":"Charles Cooper","path":"/charles-cooper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3867501?s=80&v=4"},"commit":{"message":"fix[ux]: fix `uses` error message (#3926)\n\nwhen a stateless module is accidentally declared as being `used` by a\r\nuser, the error message is confusing. update the error message to\r\nclarify `uses` refers to state being used.","shortMessageHtmlLink":"fix[ux]: fix uses error message (#3926)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAERJvn-QA","startCursor":null,"endCursor":null}},"title":"Activity · vyperlang/vyper"}