Liquid Stake with compassSOL for an 7.62% APY from staking, MEV + fees

Enjoy the freedom of liquid staking in Solana Defi while delegating your stake to the high performance Solana Compass validator. Stake or unstake at any time here, or with a Jupiter swap.

Benefit from our high staking returns and over 2 years experience operating a Solana validator, and receive additional yield from priority fees + MEV tips

Earn 7.1% APY staking with Solana Compass

Help decentralize and secure the Solana network delegating your stake to us and earn an impressive 7.1% APY yield on your SOL, while supporting us to create new guides and tools. Learn more

Stake your SOL

  1. Click to connect your wallet
  2. Enter the amount you wish to stake
  3. Kick back and enjoy your returns
  4. Unstake from your wallet or our staking dashboard

Earn 7.1% APY staking with Solana Compass

Help decentralize and secure the Solana network delegating your stake to us and earn an impressive 7.1% APY yield on your SOL, while supporting us to create new guides and tools.

Learn more

Solana Changelog - Optional Borsh, Precompiles, and new Web3.js

By Changelog

Published on 2024-06-12

Explore Solana's latest developments including optional Borsh, precompiles standardization, core BPF migration progress, and exciting Web3.js updates in this comprehensive changelog.

The notes below are AI generated and may not be 100% accurate. Watch the video to be sure!

Solana Changelog: Optional Borsh, Precompiles, and new Web3.js

In the fast-paced world of blockchain development, Solana continues to push the boundaries of innovation and efficiency. The latest Solana Changelog, featuring insights from Nick and Jacob of the Solana Foundation DevRel team, brings exciting updates that promise to enhance the developer experience and streamline the ecosystem. From optional Borsh implementation to standardized precompiles and significant improvements in Web3.js, this changelog is packed with developments that underscore Solana's commitment to progress.

SIMD-0152: Standardizing Precompiles

One of the most intriguing proposals discussed in this changelog is SIMD-0152, which aims to standardize precompiles within the Solana ecosystem. Precompiles, which are pre-existing functions implemented directly in the blockchain's runtime for efficiency, have been a topic of interest for developers working on Solana.

Currently, Solana supports two precompiles: one for the ED25519 curve and another for the SEK P256K1 signature scheme, which is similar to Ethereum's signature system. These precompiles primarily handle signature verification tasks, crucial for blockchain security and transaction validation.

The proposed SIMD-0152 seeks to establish a common specification for these precompiles. This standardization would pave the way for easier addition of new precompiles in the future, potentially including support for post-quantum cryptography schemes like Falcon.

Nick emphasizes the significance of this proposal, stating, "This SIMD is proposing creating a common spec for these. So that way more can be added in the future, especially for phytopaskies, which I think is interesting."

This standardization could have far-reaching implications for Solana's development ecosystem. By creating a unified framework for precompiles, it becomes easier for developers to implement and utilize these efficient, low-level functions across various projects and applications.

Streamlining Development with Optional Borsh

One of the most exciting updates highlighted in this changelog is the decision to make Borsh optional in the SDK and program crates. This change, implemented by Kevin, marks a significant improvement in the Solana developer experience.

Jacob enthusiastically explains the impact of this change: "Kevin did this recently. He made Borsh optional in the SDK and program crates, which is a great change, like huge and improvement to developer experience."

To understand the significance of this update, it's important to look back at the challenges faced by developers in the past. About a year ago, an upgrade to Borsh in the Solana program caused widespread issues within the ecosystem. Developers transitioning from Anchor 0.26 to 0.28 faced considerable work to accommodate the changes.

By making Borsh optional, Solana is effectively future-proofing against similar disruptions. Jacob points out, "This makes it optional to where you will never run into that issue again, which is awesome." The change has been well-received by the community, with the Anchor maintainer expressing enthusiasm with rocket emojis.

This update is particularly timely, as Jacob mentions, "I'm so happy for this because it's just going to remove so many headaches in the future, especially when there was going to be another Borsh upgrade soon." By decoupling Borsh from core components, Solana is providing developers with more flexibility and stability in their projects.

Core BPF Migration: A Ongoing Process

The Core BPF (Berkeley Packet Filter) migration continues to be a significant focus for the Solana team. This ongoing process aims to transition native programs in the Solana runtime to dedicated BPF programs, offering more flexibility and easier upgrades.

Nick provides an update on this front, mentioning recent changes related to upgrade authority for core BPF programs. He explains, "Buffalo Joe here, he's already added in the code to have that support. So once this feature gate will actually go live, I believe this will be on a feature gate. What's this functionality goes live when the core BPF programs like begin their migration, then we'll be able to actually update them via feature gates, which is really cool."

This change is crucial as it allows for more streamlined updates to core programs. Instead of requiring version upgrades alongside the entire runtime, individual programs can be updated through feature gates. This approach gives validators more control over when they adopt specific upgrades.

Additionally, the team has implemented changes to automate the process of removing upgrade authority for certain core BPF programs that don't require it. Nick notes, "This just makes it so that could be done automatically instead of needing an additional manual depth."

While the Core BPF migration is a complex and time-consuming process, these updates show steady progress towards a more flexible and maintainable Solana ecosystem.

Compute Budget Crate: Enhancing Build Efficiency

In the realm of performance improvements, the changelog highlights the creation of a dedicated compute budget crate. This change, implemented by Buffalo Joe, a former DevRel team member, aims to optimize build times for Solana developers.

Jacob explains the rationale behind this change: "He created a compute budget crate, pulling it out of the big, I think was it the Solana program runtime or yes. So basically a lot of these different changes that removing crates and pulling into different crates, it helps it to where like, hey, if you do not use it while you are building your program, you have a faster build time."

This modularization of the Solana codebase is part of a broader trend within the ecosystem. By separating components into distinct crates, developers can include only the necessary parts in their projects, leading to faster compile times and more efficient resource usage.

The compute budget crate is particularly important as it deals with the allocation of computational resources within the Solana network. By making this a separate, optional component, developers working on projects that don't require direct manipulation of compute budgets can enjoy quicker build times.

Web3.js: Technology Preview 3 and Enhanced Error Logging

The Solana Web3.js library, a crucial tool for developers building applications on the network, is undergoing significant improvements. The changelog discusses two major updates in this area: the release of Technology Preview 3 (TP3) and enhanced error logging capabilities.

Technology Preview 3: A Call for Developer Feedback

The release of Web3.js Technology Preview 3 marks another step towards a more efficient and developer-friendly library. Jacob emphasizes the importance of this preview, stating, "If you haven't tried it already, what this is, is there's a bunch of changes going on with web3.js to make it smaller bundle size, more efficient, easier to extend."

This preview phase is crucial for gathering developer feedback. Jacob encourages the community to actively participate: "It's a preview for a reason, check it out, try it out, give your feedback that like, hey, this devx on this specific part sucks, because if you do it now, you can get it before a major release, and you can actually get it into where the devx is better in the long run."

Nick adds to this, highlighting the responsiveness of the Web3.js team to user feedback: "Stephen Luscher and Loris, they're really in Calum, too. They're really taking all that feedback to heart to make this like the best possible user and developer experience they can."

Enhanced Error Logging: Improving Debugging Experience

Another significant improvement in Web3.js is the enhanced error logging capability. This update addresses a long-standing pain point for developers who often encountered cryptic error codes like "0x1" or "0x0" without much context.

Jacob explains the impact of this change: "If you've been running into like zero X1, zero X0 errors with web3.js, you now and been confused about it, you now don't have to be because it'll give the information about what that error is along with the log."

This improvement reveals that the RPC was actually sending back detailed error information, but it was being truncated by Web3.js. With the new update, developers will have access to the full log and stack trace for each error, significantly easing the debugging process.

Jacob humorously notes, "Sorry to everyone about your wealth of knowledge of memorizing error codes. Now you can actually just read the error message." This change is available from version 1.9921 onwards and will be included in all new builds.

Stack Exchange: A Growing Hub for Solana Developers

The Solana Stack Exchange continues to be a vibrant community for developers seeking answers and sharing knowledge. The changelog highlights the top contributors for the week, including familiar names like Jimmy, Aari, John Chigway, and James.

What's particularly noteworthy is the rapid growth of the Solana Stack Exchange community. Jacob remarks, "Wow, we actually have 17,000 users. I feel like the last time I looked at this, it was like 12,000. So, wow, okay." This significant increase in user base indicates the growing interest and engagement within the Solana development ecosystem.

Nick emphasizes the importance of this platform for newcomers: "A lot of developers entering the ecosystem. This is the best way to help them and grow the ecosystem. So please help out." The Stack Exchange serves as a crucial resource for developers at all levels, fostering a supportive environment for problem-solving and knowledge sharing.

Conclusion: Solana's Continuous Evolution

This Solana changelog underscores the blockchain's commitment to continuous improvement and developer empowerment. From making Borsh optional to standardizing precompiles, from advancing the Core BPF migration to enhancing Web3.js, each update contributes to a more robust, efficient, and developer-friendly ecosystem.

The optional Borsh implementation stands out as a particularly impactful change, addressing past challenges and paving the way for smoother future upgrades. The ongoing Core BPF migration, while complex, promises greater flexibility in managing core programs.

On the tooling front, the improvements to Web3.js, both in terms of the new technology preview and enhanced error logging, demonstrate Solana's dedication to providing developers with powerful and user-friendly tools.

As the Solana ecosystem continues to grow, evidenced by the burgeoning Stack Exchange community, these updates play a crucial role in supporting both new and experienced developers. By consistently refining its infrastructure and developer tools, Solana is positioning itself as a leading platform for blockchain innovation and development.

The Solana team's openness to feedback and commitment to addressing developer needs bodes well for the future of the ecosystem. As Nick and Jacob encourage in the changelog, now is the time for developers to engage with these new features, provide feedback, and contribute to shaping the future of Solana development.

Facts + Figures

  • SIMD-0152 proposes creating a standard specification for precompiles in Solana, currently including ED25519 and SEK P256K1 signature schemes.
  • Borsh has been made optional in the SDK and program crates, a significant improvement to prevent issues similar to those faced during the Anchor 0.26 to 0.28 transition.
  • The Core BPF migration is ongoing, with recent updates allowing for program updates via feature gates instead of full runtime upgrades.
  • A new compute budget crate has been created to improve build efficiency for Solana developers.
  • Web3.js Technology Preview 3 (TP3) has been released, focusing on smaller bundle size, improved efficiency, and easier extension.
  • Web3.js now includes enhanced error logging, providing full logs and stack traces for errors instead of cryptic codes.
  • The Solana Stack Exchange community has grown to approximately 17,000 users, up from around 12,000 in a relatively short time.
  • Top contributors on Solana Stack Exchange for the week include Jimmy, Aari, John Chigway, and James.
  • The changelog discusses commits from developers like Buffalo Joe and Kevin, highlighting ongoing improvements to the Solana codebase.
  • Web3.js version 1.9921 and newer includes the enhanced error logging feature.

Questions Answered

What is SIMD-0152 and why is it important for Solana?

SIMD-0152 is a proposal to create a standard specification for precompiles in Solana. It's important because it aims to establish a common framework for implementing efficient, low-level functions directly in the blockchain's runtime. This standardization will make it easier to add new precompiles in the future, potentially including support for post-quantum cryptography schemes like Falcon, and improve overall development efficiency on the Solana platform.

How does making Borsh optional improve the Solana developer experience?

Making Borsh optional in the SDK and program crates significantly improves the Solana developer experience by preventing potential breaking changes during upgrades. This change addresses issues faced in the past, such as the disruption caused when transitioning from Anchor 0.26 to 0.28. By decoupling Borsh from core components, developers have more flexibility in their projects and are protected from similar upgrade-related issues in the future, leading to a more stable and adaptable development environment.

What is the Core BPF migration and how does it benefit Solana?

The Core BPF (Berkeley Packet Filter) migration is an ongoing process to transition native programs in the Solana runtime to dedicated BPF programs. This migration benefits Solana by offering more flexibility and easier upgrades for core programs. With recent updates, these programs can be updated via feature gates instead of requiring full runtime upgrades. This approach gives validators more control over when they adopt specific upgrades and allows for more streamlined updates to individual core programs without affecting the entire system.

What improvements does Web3.js Technology Preview 3 (TP3) bring?

Web3.js Technology Preview 3 (TP3) brings several improvements to the Solana development ecosystem. It focuses on creating a smaller bundle size, improving efficiency, and making the library easier to extend. These changes aim to enhance the overall developer experience when building applications on Solana. The preview phase is crucial for gathering feedback from developers, allowing the Web3.js team to refine and optimize the library based on real-world usage and requirements before its official release.

How does the new error logging in Web3.js improve debugging?

The new error logging feature in Web3.js significantly improves debugging by providing developers with more detailed and context-rich error information. Previously, developers often encountered cryptic error codes like "0x1" or "0x0" without much explanation. With this update, Web3.js now displays the full log and stack trace for each error, which was always being sent by the RPC but was previously truncated. This comprehensive error information makes it much easier for developers to identify and resolve issues in their Solana applications, streamlining the debugging process.

What is the significance of the growing Solana Stack Exchange community?

The growing Solana Stack Exchange community, which has reached approximately 17,000 users, is significant as it indicates the rapid expansion of the Solana developer ecosystem. This platform serves as a crucial resource for developers at all levels, fostering knowledge sharing and problem-solving. The increasing user base suggests a rising interest in Solana development and provides a supportive environment for both newcomers and experienced developers. This growth is essential for the continued expansion and maturation of the Solana ecosystem, as it facilitates learning and collaboration among developers.

How does the new compute budget crate benefit Solana developers?

The new compute budget crate benefits Solana developers by optimizing build times and improving overall development efficiency. By separating the compute budget functionality into its own crate, developers can now include only the necessary components in their projects. This modularization leads to faster compile times and more efficient resource usage, especially for projects that don't require direct manipulation of compute budgets. It's part of a broader trend in the Solana ecosystem to make development more streamlined and customizable to individual project needs.

What is the importance of developer feedback in Solana's development process?

Developer feedback plays a crucial role in Solana's development process, as evidenced by the emphasis on community input for the Web3.js Technology Preview 3. The Solana team actively encourages developers to try new features, report issues, and suggest improvements. This feedback-driven approach ensures that updates and new tools align closely with the needs of the developer community. It allows the team to address pain points, enhance user experience, and create more developer-friendly solutions before major releases, contributing to the overall improvement and adoption of the Solana platform.

Related Content

Solana Changelog - Optional Borsh, Precompiles, and new Web3.js

Discover Solana's latest developments including optional Borsh in SDK, precompile standardization, core BPF migration progress, and exciting Web3.js updates for enhanced developer experience.

Solana Changelog March 14 - Tiered Account Storage, Debugging Programs, and Anchor

Explore Solana's latest developments including tiered account storage, program debugging, and major Anchor updates in this comprehensive changelog.

Solana Changelog - Feature Activation, Decoupling the SVM, and Rust v1.76

Explore Solana's newest developments including feature activation schedules, SVM decoupling, Rust upgrade to v1.76, and upcoming events in this comprehensive changelog.

Solana Changelog Jul 3 - RPC Deprecations, Actions, and Blinks

Explore Solana's latest developments including RPC method deprecations, new Actions and Blinks features, and upcoming changes to compute unit charging.

Solana Changelog - EpochStakes, SolFuzz, and Optimizations

Explore Solana's recent advancements including validator reward proposals, performance optimizations, and new developer resources in this comprehensive changelog.

Solana Changelog - Token Extensions and Transaction Size Fees

Explore Solana's latest developments including token extensions, transaction size fees, and the upcoming Mountain Dew 5 event in this comprehensive changelog.

Solana Changelog Jul 17 - Deprecations, Precompiles, and Developer Resources

Explore Solana's latest changes including precompile improvements, deprecated code removals, and exciting new developer resources in this comprehensive update.

Solana Changelog May 8 - Native Events, Solidity, Gaming

Explore Solana's recent advancements including Fire Dancer's QUIC implementation, native events proposal, and new gaming resources in this comprehensive changelog.

Solana Changelog May 31: Interfaces, Solang, and Solana ChatGPT

Explore the latest Solana developments including interfaces, Solang Compiler v0.3.0, and the new Solana ChatGPT plugin in this comprehensive changelog.

Solana Changelog - Trident, Unruggable, and SyscallGetSysvar

Explore Solana's latest developments including new ZK features, core BPF program conversions, rent collection changes, and exciting new developer tools like Trident and Unruggable wallet.

Solana Changelog May 8 - Native Events, Solidity, Gaming

Explore Solana's recent developments including FireDancer's QUIC implementation, native events proposal, Solidity compiler integration, and new gaming resources in this comprehensive changelog.

Solana Changelog - January 24, 2023 - Bankless Leader, Explorer Updates, Nonvote RPC

Explore Solana's latest developments including the Bankless Leader proposal, Explorer updates, and impressive ecosystem growth in this comprehensive changelog.

Solana Changelog - Agave Client, Compute Optimization, and Create-Solana-Program

Explore Solana's latest developments including the Agave validator client, compute optimization strategies, and new tools like Create-Solana-Program in this comprehensive changelog.

Solana Changelog May 16 - IDL Standard, 1.14.17, and Dune

Explore Solana's latest developments including IDL standardization, 1.14.17 release progress, and Dune Analytics integration for enhanced on-chain data analysis.

Solana Changelog - January 24, 2023 - Bankless Leader, Explorer Updates, Nonvote RPC

Explore Solana's latest developments including the Bankless Leader proposal, Explorer updates, and impressive developer ecosystem growth in this comprehensive changelog.