Proposing Solang Solidity Compiler


Sean Young
 

Hello tsc,

I'd like to propose Solang to become a hyperledger project.

Description
-----------
Solang is a compiler for the Solidity language that can target ewasm
(used by Hyperledger Burrow and others), Sawtooth Sabre, and Parity
Substrate. It is written in rust and uses LLVM as the compiler backend. The
aim is for full compatibility with the Solidity language where possible (e.g.
assembly {} with EVM instructions are not supported in wasm context).

Solidity as a language does have its quirks, however it has established
itself as a defacto language commonly for smart contract. Having Solidity
support for the Hyperledger blockchains would be a great feature, conversely
it would be beneficial for those project to colaborate on a common compiler
component.

Other than Burrow, there are many other projects that allow ewasm
smart contracts. When ewasm comes to mainnet ethereum, Solang will be
ready to support it.

Possible future directions:
- the Solidity language can improve (e.g. string processing or generics)
- create a solidity language server for IDEs
(see https://wiki.hyperledger.org/display/INTERN/Create+a+new+Solidity+Language+Server+%28SLS%29+using+Solang+Compiler)
- Integer arithmetic overflow detection in Solidity
- introduce foreign function interface, making it possible to link in code
written in other languages using the llvm linker (e.g. new crypto written
in C).
- Fabric can also run wasm chain code:
https://github.com/hyperledger-labs/fabric-chaincode-wasm
- There is an experimental evm llvm backend, so Solang could compile to
EVM just like the Ethereum Solidity compiler.
https://github.com/etclabscore/evm_llvm

See:
https://solang.readthedocs.io/en/latest/
and
https://github.com/hyperledger-labs/solang

Scope:
-----
The scope is the Solidity language and smart contacts written in wasm;
compiler and related tools like language server (for IDEs) and style hints
(like lint or clippy).

Other than smart contracts, there are also other areas where a wasm compiled
language can help. For example, the BitXHub proposal needs wasm to do cross
chain validation.

Commit development resources
----------------------------
Solang is funded through a web3 foundation grant. The grant funds the project
for full Solidity language support, compatible with the ethereum foundation
solidity compiler. As part of the grant the project has committed to a
roadmap.

Initial Maintainers
-------------------
Sean Young <sean@...>

Neutral
-------
I'm not affiliated with any company or in employment; funding is through a
web3 foundation grant. My interests are compilers and smart contract, not
any ledger in particular.


Thanks,

Sean Young


Silas Davis
 

Hi TSC,

Some may know Sean as a Burrow maintainer and former employee of Monax. Sean now works as an independent developer, but Solang was started as a side-project while Sean was still at Monax getting to observe the idiosyncrasies (and lack of formal grammar) of the Solidity compiler (solc) at first-hand and knew there was a better way with modern compiler tooling. Solang quickly became a Hyperledger Labs project and since then Sean was able to secure funding to work on solang on it to work full time. So while we were all sorry to see him go (and I was sorry to lose my lunch date 😭) we would be very happy to support this project at Monax - specifically I would like to get involved, and I suspect so would Greg Hill. I know Sean would welcome other interested maintainers on contributors. I think solang has huge potential and to become a viable competitor to solc with the emergence of eWASM. But I think to have the best chance Solang needs help to gain traction _now_.

If you look at the repository statistics you can see the development velocity and effort Sean has put in already. It is also very clear to me that Solang fits the bill as a clearly delineated, cross-project, cross-organisation (with EEA now as an associate member of Hyperledger) project that will be more than a nice-to-have for those wanting to bridge the gap between EVM and WASM, and WASM and blockchains. Sean also spent 11 years at IBM, so he'll fit in around here ;)

In the case of the Burrow project we have merged initial support for this (https://github.com/hyperledger/burrow/pull/1338) and will be working on corollaries to this feature in our roadmap (https://github.com/hyperledger/burrow/issues/1331), see also our update due this week: https://wiki.hyperledger.org/display/TSC/2020+Q1+Hyperledger+Burrow. We can iterate rapidly on the cross-contract calls and possible extensions to the set of externs defined be eWASM.

I would be very happy to act as a sponsor for this proposal.

Silas


On Mon, 17 Feb 2020 at 18:13, Sean Young <sean@...> wrote:
Hello tsc,

I'd like to propose Solang to become a hyperledger project.

Description
-----------
Solang is a compiler for the Solidity language that can target ewasm
(used by Hyperledger Burrow and others), Sawtooth Sabre, and Parity
Substrate. It is written in rust and uses LLVM as the compiler backend. The
aim is for full compatibility with the Solidity language where possible (e.g.
assembly {} with EVM instructions are not supported in wasm context).

Solidity as a language does have its quirks, however it has established
itself as a defacto language commonly for smart contract. Having Solidity
support for the Hyperledger blockchains would be a great feature, conversely
it would be beneficial for those project to colaborate on a common compiler
component.

Other than Burrow, there are many other projects that allow ewasm
smart contracts. When ewasm comes to mainnet ethereum, Solang will be
ready to support it.

Possible future directions:
 - the Solidity language can improve (e.g. string processing or generics)
 - create a solidity language server for IDEs
   (see https://wiki.hyperledger.org/display/INTERN/Create+a+new+Solidity+Language+Server+%28SLS%29+using+Solang+Compiler)
 - Integer arithmetic overflow detection in Solidity
 - introduce foreign function interface, making it possible to link in code
   written in other languages using the llvm linker (e.g. new crypto written
   in C).
 - Fabric can also run wasm chain code:
   https://github.com/hyperledger-labs/fabric-chaincode-wasm
 - There is an experimental evm llvm backend, so Solang could compile to
   EVM just like the Ethereum Solidity compiler.
   https://github.com/etclabscore/evm_llvm

See:
https://solang.readthedocs.io/en/latest/
and
https://github.com/hyperledger-labs/solang

Scope:
-----
The scope is the Solidity language and smart contacts written in wasm;
compiler and related tools like language server (for IDEs) and style hints
(like lint or clippy).

Other than smart contracts, there are also other areas where a wasm compiled
language can help. For example, the BitXHub proposal needs wasm to do cross
chain validation.

Commit development resources
----------------------------
Solang is funded through a web3 foundation grant. The grant funds the project
for full Solidity language support, compatible with the ethereum foundation
solidity compiler. As part of the grant the project has committed to a
roadmap.

Initial Maintainers
-------------------
Sean Young <sean@...>

Neutral
-------
I'm not affiliated with any company or in employment; funding is through a
web3 foundation grant. My interests are compilers and smart contract, not
any ledger in particular.


Thanks,

Sean Young




greg.hill@...
 

As a fellow Burrow maintainer and previous colleague, I would also like to sponsor Solang. I strongly believe in the vision set out by Sean and I will be excited to see it grow under the strengthened adoption of Hyperledger. In the coming months I intend to contribute in both my official (Monax) and unofficial capacity.

Regards,
Gregory Hill


On Mon, Feb 17, 2020 at 8:21 PM Silas Davis via Lists.Hyperledger.Org <silas.davis=monax.io@...> wrote:
Hi TSC,

Some may know Sean as a Burrow maintainer and former employee of Monax. Sean now works as an independent developer, but Solang was started as a side-project while Sean was still at Monax getting to observe the idiosyncrasies (and lack of formal grammar) of the Solidity compiler (solc) at first-hand and knew there was a better way with modern compiler tooling. Solang quickly became a Hyperledger Labs project and since then Sean was able to secure funding to work on solang on it to work full time. So while we were all sorry to see him go (and I was sorry to lose my lunch date 😭) we would be very happy to support this project at Monax - specifically I would like to get involved, and I suspect so would Greg Hill. I know Sean would welcome other interested maintainers on contributors. I think solang has huge potential and to become a viable competitor to solc with the emergence of eWASM. But I think to have the best chance Solang needs help to gain traction _now_.

If you look at the repository statistics you can see the development velocity and effort Sean has put in already. It is also very clear to me that Solang fits the bill as a clearly delineated, cross-project, cross-organisation (with EEA now as an associate member of Hyperledger) project that will be more than a nice-to-have for those wanting to bridge the gap between EVM and WASM, and WASM and blockchains. Sean also spent 11 years at IBM, so he'll fit in around here ;)

In the case of the Burrow project we have merged initial support for this (https://github.com/hyperledger/burrow/pull/1338) and will be working on corollaries to this feature in our roadmap (https://github.com/hyperledger/burrow/issues/1331), see also our update due this week: https://wiki.hyperledger.org/display/TSC/2020+Q1+Hyperledger+Burrow. We can iterate rapidly on the cross-contract calls and possible extensions to the set of externs defined be eWASM.

I would be very happy to act as a sponsor for this proposal.

Silas

On Mon, 17 Feb 2020 at 18:13, Sean Young <sean@...> wrote:
Hello tsc,

I'd like to propose Solang to become a hyperledger project.

Description
-----------
Solang is a compiler for the Solidity language that can target ewasm
(used by Hyperledger Burrow and others), Sawtooth Sabre, and Parity
Substrate. It is written in rust and uses LLVM as the compiler backend. The
aim is for full compatibility with the Solidity language where possible (e.g.
assembly {} with EVM instructions are not supported in wasm context).

Solidity as a language does have its quirks, however it has established
itself as a defacto language commonly for smart contract. Having Solidity
support for the Hyperledger blockchains would be a great feature, conversely
it would be beneficial for those project to colaborate on a common compiler
component.

Other than Burrow, there are many other projects that allow ewasm
smart contracts. When ewasm comes to mainnet ethereum, Solang will be
ready to support it.

Possible future directions:
 - the Solidity language can improve (e.g. string processing or generics)
 - create a solidity language server for IDEs
   (see https://wiki.hyperledger.org/display/INTERN/Create+a+new+Solidity+Language+Server+%28SLS%29+using+Solang+Compiler)
 - Integer arithmetic overflow detection in Solidity
 - introduce foreign function interface, making it possible to link in code
   written in other languages using the llvm linker (e.g. new crypto written
   in C).
 - Fabric can also run wasm chain code:
   https://github.com/hyperledger-labs/fabric-chaincode-wasm
 - There is an experimental evm llvm backend, so Solang could compile to
   EVM just like the Ethereum Solidity compiler.
   https://github.com/etclabscore/evm_llvm

See:
https://solang.readthedocs.io/en/latest/
and
https://github.com/hyperledger-labs/solang

Scope:
-----
The scope is the Solidity language and smart contacts written in wasm;
compiler and related tools like language server (for IDEs) and style hints
(like lint or clippy).

Other than smart contracts, there are also other areas where a wasm compiled
language can help. For example, the BitXHub proposal needs wasm to do cross
chain validation.

Commit development resources
----------------------------
Solang is funded through a web3 foundation grant. The grant funds the project
for full Solidity language support, compatible with the ethereum foundation
solidity compiler. As part of the grant the project has committed to a
roadmap.

Initial Maintainers
-------------------
Sean Young <sean@...>

Neutral
-------
I'm not affiliated with any company or in employment; funding is through a
web3 foundation grant. My interests are compilers and smart contract, not
any ledger in particular.


Thanks,

Sean Young




Vipin Bharathan
 

Hi Sean,
Great to see your active involvement in developing components for community use; especially those that have such potential.
Also heartening to see is the support you are getting from grants.
Any HL project needs community support. Not just verbal support. With a single maintainer, many of the governance kpis will not be met.
This is in spite of stated support from several people.
The main question that I have is, what is the advantage of having Solang be a full-fledged project, rather than a lab?
If the answer is publicity; let us ramp up slowly; prompting its use and scale by inviting interested parties to collaborate and work together in labs.
Once we demonstrate momentum in community participation, there will be more of a chance to get this adopted as a project.
It is exciting to see significant projects being launched through the lab infrastructure.
Thanks,
Vipin


On Tue, Feb 18, 2020 at 8:40 AM greg.hill via Lists.Hyperledger.Org <greg.hill=monax.io@...> wrote:
As a fellow Burrow maintainer and previous colleague, I would also like to sponsor Solang. I strongly believe in the vision set out by Sean and I will be excited to see it grow under the strengthened adoption of Hyperledger. In the coming months I intend to contribute in both my official (Monax) and unofficial capacity.

Regards,
Gregory Hill


On Mon, Feb 17, 2020 at 8:21 PM Silas Davis via Lists.Hyperledger.Org <silas.davis=monax.io@...> wrote:
Hi TSC,

Some may know Sean as a Burrow maintainer and former employee of Monax. Sean now works as an independent developer, but Solang was started as a side-project while Sean was still at Monax getting to observe the idiosyncrasies (and lack of formal grammar) of the Solidity compiler (solc) at first-hand and knew there was a better way with modern compiler tooling. Solang quickly became a Hyperledger Labs project and since then Sean was able to secure funding to work on solang on it to work full time. So while we were all sorry to see him go (and I was sorry to lose my lunch date 😭) we would be very happy to support this project at Monax - specifically I would like to get involved, and I suspect so would Greg Hill. I know Sean would welcome other interested maintainers on contributors. I think solang has huge potential and to become a viable competitor to solc with the emergence of eWASM. But I think to have the best chance Solang needs help to gain traction _now_.

If you look at the repository statistics you can see the development velocity and effort Sean has put in already. It is also very clear to me that Solang fits the bill as a clearly delineated, cross-project, cross-organisation (with EEA now as an associate member of Hyperledger) project that will be more than a nice-to-have for those wanting to bridge the gap between EVM and WASM, and WASM and blockchains. Sean also spent 11 years at IBM, so he'll fit in around here ;)

In the case of the Burrow project we have merged initial support for this (https://github.com/hyperledger/burrow/pull/1338) and will be working on corollaries to this feature in our roadmap (https://github.com/hyperledger/burrow/issues/1331), see also our update due this week: https://wiki.hyperledger.org/display/TSC/2020+Q1+Hyperledger+Burrow. We can iterate rapidly on the cross-contract calls and possible extensions to the set of externs defined be eWASM.

I would be very happy to act as a sponsor for this proposal.

Silas

On Mon, 17 Feb 2020 at 18:13, Sean Young <sean@...> wrote:
Hello tsc,

I'd like to propose Solang to become a hyperledger project.

Description
-----------
Solang is a compiler for the Solidity language that can target ewasm
(used by Hyperledger Burrow and others), Sawtooth Sabre, and Parity
Substrate. It is written in rust and uses LLVM as the compiler backend. The
aim is for full compatibility with the Solidity language where possible (e.g.
assembly {} with EVM instructions are not supported in wasm context).

Solidity as a language does have its quirks, however it has established
itself as a defacto language commonly for smart contract. Having Solidity
support for the Hyperledger blockchains would be a great feature, conversely
it would be beneficial for those project to colaborate on a common compiler
component.

Other than Burrow, there are many other projects that allow ewasm
smart contracts. When ewasm comes to mainnet ethereum, Solang will be
ready to support it.

Possible future directions:
 - the Solidity language can improve (e.g. string processing or generics)
 - create a solidity language server for IDEs
   (see https://wiki.hyperledger.org/display/INTERN/Create+a+new+Solidity+Language+Server+%28SLS%29+using+Solang+Compiler)
 - Integer arithmetic overflow detection in Solidity
 - introduce foreign function interface, making it possible to link in code
   written in other languages using the llvm linker (e.g. new crypto written
   in C).
 - Fabric can also run wasm chain code:
   https://github.com/hyperledger-labs/fabric-chaincode-wasm
 - There is an experimental evm llvm backend, so Solang could compile to
   EVM just like the Ethereum Solidity compiler.
   https://github.com/etclabscore/evm_llvm

See:
https://solang.readthedocs.io/en/latest/
and
https://github.com/hyperledger-labs/solang

Scope:
-----
The scope is the Solidity language and smart contacts written in wasm;
compiler and related tools like language server (for IDEs) and style hints
(like lint or clippy).

Other than smart contracts, there are also other areas where a wasm compiled
language can help. For example, the BitXHub proposal needs wasm to do cross
chain validation.

Commit development resources
----------------------------
Solang is funded through a web3 foundation grant. The grant funds the project
for full Solidity language support, compatible with the ethereum foundation
solidity compiler. As part of the grant the project has committed to a
roadmap.

Initial Maintainers
-------------------
Sean Young <sean@...>

Neutral
-------
I'm not affiliated with any company or in employment; funding is through a
web3 foundation grant. My interests are compilers and smart contract, not
any ledger in particular.


Thanks,

Sean Young




Bob Summerwill [ETC Cooperative] <bob@...>
 

Just to give some broader context, Solang is one of two major "Solidity compiler using LLVM projects" which are coming towards feature complete status.

The other is SOLL, from Second State, which is a C++ codebase with an eWASM backend and optional EVM backend in the form of evm_llvm being developed by ETC Labs.

https://github.com/second-state/soll
https://github.com/etclabscore/evm_llvm

https://medium.com/etclabscore/the-evm-llvm-is-coming-to-ethereum-classic-what-you-need-to-know-c13962f25571
https://www.businesswire.com/news/home/20200213005712/en/Ethereum-Classic-Labs-Announces-EVM-LLVM-Alpha-Release
http://llvm.etccore.io/

I have been working to coordinate all the different parties interested in LLVM based Ethereum compiler tooling over the past several months, but it is still early days.   I have been advocating for both SOLL and EVM_LLVM to be contributed to Hyperledger Labs too, so we can all work together within the Labs.   That may or may not make sense for the legal entities involved in the short term, but what we certainly can do is coordinate activities.   One obvious "quick win" would be to agree a common LLVM IR schema so that SOLL and Solang could be mixed-and-matched.

Many of us met IRL at ETHDenver this weekend, and there is now a Telegram group which we are using to coordinate:  https://t.me/ethereumllvm

My understanding of the current "frenemy" status between the various Ethereum smart contract language alternatives for Solidity and Vyper ...

Front-ends:


Solidity - SOLC (to Yul), SOLL (to LLVM IR), Solang (to LLVM IR)

Vyper - Rust Vyper (to Yul), Vyper (to LLL - needs rebuilding)


Back-ends:


EVM - LLVM-EVM, SOLC, Vyper-Rust, Vyper

WASM - Solang

eWASM - SOLL (via Yul or LLVM IR), Solang (via LLVM IR)



Sean Young
 

Hi Vipin,

First of all thank you for your kind words, it's appreciated.

As you point out, a single maintainer isn't ideal. I have spoken to many
people who are interested in the project. However, the set of people who
understand how compilers are built, rust, llvm, and Solidity is a small
intersection. My hope was that through being a hyperledger project,
more contributers/maintainers will present themselves.

My hope remains that through becoming a full-fledged project that it would
increase collaboration between Solang and the ledger projects, and help
write Solang target support for any ledger project that wants Solidity
support, using their flavour of webassembly (not just ewasm).

Secondly I hoped it would simply get more people using Solang.

The aim is not to be a top-level project; the aim is to be succcessful
project. However, it feels somewhat like a chicken-and-egg type problem.

Thanks,

Sean

On Tue, Feb 18, 2020 at 09:28:19AM -0500, Vipin Bharathan wrote:
Hi Sean,
Great to see your active involvement in developing components for community
use; especially those that have such potential.
Also heartening to see is the support you are getting from grants.
Any HL project needs community support. Not just verbal support. With a
single maintainer, many of the governance kpis will not be met.
This is in spite of stated support from several people.
The main question that I have is, what is the advantage of having Solang be
a full-fledged project, rather than a lab?
If the answer is publicity; let us ramp up slowly; prompting its use and
scale by inviting interested parties to collaborate and work together in
labs.
Once we demonstrate momentum in community participation, there will be more
of a chance to get this adopted as a project.
It is exciting to see significant projects being launched through the lab
infrastructure.
Thanks,
Vipin


On Tue, Feb 18, 2020 at 8:40 AM greg.hill via Lists.Hyperledger.Org
<greg.hill=monax.io@...> wrote:

As a fellow Burrow maintainer and previous colleague, I would also like to
sponsor Solang. I strongly believe in the vision set out by Sean and I will
be excited to see it grow under the strengthened adoption of Hyperledger.
In the coming months I intend to contribute in both my official (Monax) and
unofficial capacity.

Regards,
Gregory Hill


On Mon, Feb 17, 2020 at 8:21 PM Silas Davis via Lists.Hyperledger.Org
<silas.davis=monax.io@...> wrote:

Hi TSC,

Some may know Sean as a Burrow maintainer and former employee of Monax.
Sean now works as an independent developer, but Solang was started as a
side-project while Sean was still at Monax getting to observe the
idiosyncrasies (and lack of formal grammar) of the Solidity compiler (solc)
at first-hand and knew there was a better way with modern compiler tooling.
Solang quickly became a Hyperledger Labs project and since then Sean was
able to secure funding to work on solang on it to work full time. So while
we were all sorry to see him go (and I was sorry to lose my lunch date 😭)
we would be very happy to support this project at Monax - specifically I
would like to get involved, and I suspect so would Greg Hill. I know Sean
would welcome other interested maintainers on contributors. I think solang
has huge potential and to become a viable competitor to solc with the
emergence of eWASM. But I think to have the best chance Solang needs help
to gain traction _now_.

If you look at the repository statistics you can see the development
velocity and effort Sean has put in already. It is also very clear to me
that Solang fits the bill as a clearly delineated, cross-project,
cross-organisation (with EEA now as an associate member of Hyperledger)
project that will be more than a nice-to-have for those wanting to bridge
the gap between EVM and WASM, and WASM and blockchains. Sean also spent 11
years at IBM, so he'll fit in around here ;)

In the case of the Burrow project we have merged initial support for this
(https://github.com/hyperledger/burrow/pull/1338) and will be working on
corollaries to this feature in our roadmap (
https://github.com/hyperledger/burrow/issues/1331), see also our update
due this week:
https://wiki.hyperledger.org/display/TSC/2020+Q1+Hyperledger+Burrow. We
can iterate rapidly on the cross-contract calls and possible extensions to
the set of externs defined be eWASM.

I would be very happy to act as a sponsor for this proposal.

Silas

On Mon, 17 Feb 2020 at 18:13, Sean Young <sean@...> wrote:

Hello tsc,

I'd like to propose Solang to become a hyperledger project.

Description
-----------
Solang is a compiler for the Solidity language that can target ewasm
(used by Hyperledger Burrow and others), Sawtooth Sabre, and Parity
Substrate. It is written in rust and uses LLVM as the compiler backend.
The
aim is for full compatibility with the Solidity language where possible
(e.g.
assembly {} with EVM instructions are not supported in wasm context).

Solidity as a language does have its quirks, however it has established
itself as a defacto language commonly for smart contract. Having Solidity
support for the Hyperledger blockchains would be a great feature,
conversely
it would be beneficial for those project to colaborate on a common
compiler
component.

Other than Burrow, there are many other projects that allow ewasm
smart contracts. When ewasm comes to mainnet ethereum, Solang will be
ready to support it.

Possible future directions:
- the Solidity language can improve (e.g. string processing or generics)
- create a solidity language server for IDEs
(see
https://wiki.hyperledger.org/display/INTERN/Create+a+new+Solidity+Language+Server+%28SLS%29+using+Solang+Compiler
)
- Integer arithmetic overflow detection in Solidity
- introduce foreign function interface, making it possible to link in
code
written in other languages using the llvm linker (e.g. new crypto
written
in C).
- Fabric can also run wasm chain code:
https://github.com/hyperledger-labs/fabric-chaincode-wasm
- There is an experimental evm llvm backend, so Solang could compile to
EVM just like the Ethereum Solidity compiler.
https://github.com/etclabscore/evm_llvm

See:
https://solang.readthedocs.io/en/latest/
and
https://github.com/hyperledger-labs/solang

Scope:
-----
The scope is the Solidity language and smart contacts written in wasm;
compiler and related tools like language server (for IDEs) and style
hints
(like lint or clippy).

Other than smart contracts, there are also other areas where a wasm
compiled
language can help. For example, the BitXHub proposal needs wasm to do
cross
chain validation.

Commit development resources
----------------------------
Solang is funded through a web3 foundation grant. The grant funds the
project
for full Solidity language support, compatible with the ethereum
foundation
solidity compiler. As part of the grant the project has committed to a
roadmap.

Initial Maintainers
-------------------
Sean Young <sean@...>

Neutral
-------
I'm not affiliated with any company or in employment; funding is through
a
web3 foundation grant. My interests are compilers and smart contract, not
any ledger in particular.


Thanks,

Sean Young





Brian Behlendorf <bbehlendorf@...>
 

I definitely support the concept of the project and want to see it succeed, and be not just a great example of a component approach to interop between ledgers, but also a way to bridge public & private chains.

The chicken-and-egg question is the key one, I think, and not unlike the incubation/active status debate, where the question is really how much promotion & signalling of official/"supported"/"it's safe" to send to draw users & contributors in, when such standards require

I think the TSC could choose to say yes to this project, and work with / hope the community and maintainership grows to the point where it hits active status. Or, it could work with the Labs stewards to think of additional ways to market & attract people to the Labs, so that Labs projects with participants who do want to push them forward feel like being in Labs is more help than hindrance.

BTW I was very happy to hear Burrow now has three active maintainers working for Monax, and three who don't. That may make it the most employer-diverse maintainer community in Hyperledger, unless I'm wrong.

Brian

On 2/18/20 10:07 PM, Sean Young wrote:
Hi Vipin,

First of all thank you for your kind words, it's appreciated.

As you point out, a single maintainer isn't ideal. I have spoken to many
people who are interested in the project. However, the set of people who
understand how compilers are built, rust, llvm, and Solidity is a small
intersection. My hope was that through being a hyperledger project,
more contributers/maintainers will present themselves.

My hope remains that through becoming a full-fledged project that it would
increase collaboration between Solang and the ledger projects, and help
write Solang target support for any ledger project that wants Solidity
support, using their flavour of webassembly (not just ewasm).

Secondly I hoped it would simply get more people using Solang.

The aim is not to be a top-level project; the aim is to be succcessful
project. However, it feels somewhat like a chicken-and-egg type problem.

Thanks,

Sean

On Tue, Feb 18, 2020 at 09:28:19AM -0500, Vipin Bharathan wrote:
Hi Sean,
Great to see your active involvement in developing components for community
use; especially those that have such potential.
Also heartening to see is the support you are getting from grants.
Any HL project needs community support. Not just verbal support. With a
single maintainer, many of the governance kpis will not be met.
This is in spite of stated support from several people.
The main question that I have is, what is the advantage of having Solang be
a full-fledged project, rather than a lab?
If the answer is publicity; let us ramp up slowly; prompting its use and
scale by inviting interested parties to collaborate and work together in
labs.
Once we demonstrate momentum in community participation, there will be more
of a chance to get this adopted as a project.
It is exciting to see significant projects being launched through the lab
infrastructure.
Thanks,
Vipin

--
Brian Behlendorf
Executive Director, Hyperledger
bbehlendorf@...
Twitter: @brianbehlendorf


Vipin Bharathan
 

Hi Sean,

I am reaching out as a lab steward. If you have suggestions to improve the working of the labs, especially for small projects like yours; I am all ears.
We need to make some changes based on feedback. I will bring this topic up with the other stewards (who are no doubt following this thread).

As a lapsed OS hacker and compiler nerd, I understand your concerns about the capabilities needed to participate in your lab.
However, these capabilities are more widespread than we can imagine. Also, you need others, who are not compiler nerds to participate to bring the labs into a project. Document writers, design reviewers, technical mavens, we need participation from a wider array of folks.

Thanks again for contributing to the community.

Vipin


On Wed, Feb 19, 2020 at 1:07 AM Sean Young <sean@...> wrote:
Hi Vipin,

First of all thank you for your kind words, it's appreciated.

As you point out, a single maintainer isn't ideal. I have spoken to many
people who are interested in the project. However, the set of people who
understand how compilers are built, rust, llvm, and Solidity is a small
intersection. My hope was that through being a hyperledger project,
more contributers/maintainers will present themselves.

My hope remains that through becoming a full-fledged project that it would
increase collaboration between Solang and the ledger projects, and help
write Solang target support for any ledger project that wants Solidity
support, using their flavour of webassembly (not just ewasm).

Secondly I hoped it would simply get more people using Solang.

The aim is not to be a top-level project; the aim is to be succcessful
project. However, it feels somewhat like a chicken-and-egg type problem.

Thanks,

Sean

On Tue, Feb 18, 2020 at 09:28:19AM -0500, Vipin Bharathan wrote:
> Hi Sean,
> Great to see your active involvement in developing components for community
> use; especially those that have such potential.
> Also heartening to see is the support you are getting from grants.
> Any HL project needs community support. Not just verbal support. With a
> single maintainer, many of the governance kpis will not be met.
> This is in spite of stated support from several people.
> The main question that I have is, what is the advantage of having Solang be
> a full-fledged project, rather than a lab?
> If the answer is publicity; let us ramp up slowly; prompting its use and
> scale by inviting interested parties to collaborate and work together in
> labs.
> Once we demonstrate momentum in community participation, there will be more
> of a chance to get this adopted as a project.
> It is exciting to see significant projects being launched through the lab
> infrastructure.
> Thanks,
> Vipin
>
>
> On Tue, Feb 18, 2020 at 8:40 AM greg.hill via Lists.Hyperledger.Org
> <greg.hill=monax.io@...> wrote:
>
> > As a fellow Burrow maintainer and previous colleague, I would also like to
> > sponsor Solang. I strongly believe in the vision set out by Sean and I will
> > be excited to see it grow under the strengthened adoption of Hyperledger.
> > In the coming months I intend to contribute in both my official (Monax) and
> > unofficial capacity.
> >
> > Regards,
> > Gregory Hill
> >
> >
> > On Mon, Feb 17, 2020 at 8:21 PM Silas Davis via Lists.Hyperledger.Org
> > <silas.davis=monax.io@...> wrote:
> >
> >> Hi TSC,
> >>
> >> Some may know Sean as a Burrow maintainer and former employee of Monax.
> >> Sean now works as an independent developer, but Solang was started as a
> >> side-project while Sean was still at Monax getting to observe the
> >> idiosyncrasies (and lack of formal grammar) of the Solidity compiler (solc)
> >> at first-hand and knew there was a better way with modern compiler tooling.
> >> Solang quickly became a Hyperledger Labs project and since then Sean was
> >> able to secure funding to work on solang on it to work full time. So while
> >> we were all sorry to see him go (and I was sorry to lose my lunch date 😭)
> >> we would be very happy to support this project at Monax - specifically I
> >> would like to get involved, and I suspect so would Greg Hill. I know Sean
> >> would welcome other interested maintainers on contributors. I think solang
> >> has huge potential and to become a viable competitor to solc with the
> >> emergence of eWASM. But I think to have the best chance Solang needs help
> >> to gain traction _now_.
> >>
> >> If you look at the repository statistics you can see the development
> >> velocity and effort Sean has put in already. It is also very clear to me
> >> that Solang fits the bill as a clearly delineated, cross-project,
> >> cross-organisation (with EEA now as an associate member of Hyperledger)
> >> project that will be more than a nice-to-have for those wanting to bridge
> >> the gap between EVM and WASM, and WASM and blockchains. Sean also spent 11
> >> years at IBM, so he'll fit in around here ;)
> >>
> >> In the case of the Burrow project we have merged initial support for this
> >> (https://github.com/hyperledger/burrow/pull/1338) and will be working on
> >> corollaries to this feature in our roadmap (
> >> https://github.com/hyperledger/burrow/issues/1331), see also our update
> >> due this week:
> >> https://wiki.hyperledger.org/display/TSC/2020+Q1+Hyperledger+Burrow. We
> >> can iterate rapidly on the cross-contract calls and possible extensions to
> >> the set of externs defined be eWASM.
> >>
> >> I would be very happy to act as a sponsor for this proposal.
> >>
> >> Silas
> >>
> >> On Mon, 17 Feb 2020 at 18:13, Sean Young <sean@...> wrote:
> >>
> >>> Hello tsc,
> >>>
> >>> I'd like to propose Solang to become a hyperledger project.
> >>>
> >>> Description
> >>> -----------
> >>> Solang is a compiler for the Solidity language that can target ewasm
> >>> (used by Hyperledger Burrow and others), Sawtooth Sabre, and Parity
> >>> Substrate. It is written in rust and uses LLVM as the compiler backend.
> >>> The
> >>> aim is for full compatibility with the Solidity language where possible
> >>> (e.g.
> >>> assembly {} with EVM instructions are not supported in wasm context).
> >>>
> >>> Solidity as a language does have its quirks, however it has established
> >>> itself as a defacto language commonly for smart contract. Having Solidity
> >>> support for the Hyperledger blockchains would be a great feature,
> >>> conversely
> >>> it would be beneficial for those project to colaborate on a common
> >>> compiler
> >>> component.
> >>>
> >>> Other than Burrow, there are many other projects that allow ewasm
> >>> smart contracts. When ewasm comes to mainnet ethereum, Solang will be
> >>> ready to support it.
> >>>
> >>> Possible future directions:
> >>>  - the Solidity language can improve (e.g. string processing or generics)
> >>>  - create a solidity language server for IDEs
> >>>    (see
> >>> https://wiki.hyperledger.org/display/INTERN/Create+a+new+Solidity+Language+Server+%28SLS%29+using+Solang+Compiler
> >>> )
> >>>  - Integer arithmetic overflow detection in Solidity
> >>>  - introduce foreign function interface, making it possible to link in
> >>> code
> >>>    written in other languages using the llvm linker (e.g. new crypto
> >>> written
> >>>    in C).
> >>>  - Fabric can also run wasm chain code:
> >>>    https://github.com/hyperledger-labs/fabric-chaincode-wasm
> >>>  - There is an experimental evm llvm backend, so Solang could compile to
> >>>    EVM just like the Ethereum Solidity compiler.
> >>>    https://github.com/etclabscore/evm_llvm
> >>>
> >>> See:
> >>> https://solang.readthedocs.io/en/latest/
> >>> and
> >>> https://github.com/hyperledger-labs/solang
> >>>
> >>> Scope:
> >>> -----
> >>> The scope is the Solidity language and smart contacts written in wasm;
> >>> compiler and related tools like language server (for IDEs) and style
> >>> hints
> >>> (like lint or clippy).
> >>>
> >>> Other than smart contracts, there are also other areas where a wasm
> >>> compiled
> >>> language can help. For example, the BitXHub proposal needs wasm to do
> >>> cross
> >>> chain validation.
> >>>
> >>> Commit development resources
> >>> ----------------------------
> >>> Solang is funded through a web3 foundation grant. The grant funds the
> >>> project
> >>> for full Solidity language support, compatible with the ethereum
> >>> foundation
> >>> solidity compiler. As part of the grant the project has committed to a
> >>> roadmap.
> >>>
> >>> Initial Maintainers
> >>> -------------------
> >>> Sean Young <sean@...>
> >>>
> >>> Neutral
> >>> -------
> >>> I'm not affiliated with any company or in employment; funding is through
> >>> a
> >>> web3 foundation grant. My interests are compilers and smart contract, not
> >>> any ledger in particular.
> >>>
> >>>
> >>> Thanks,
> >>>
> >>> Sean Young
> >>>
> >>>
> >>>
> >>>
> >
> >
>
>
>


Sean Young
 

Hi Vipin,

I think you and I have very similar interests, my other hat is maintainer
of a small linux kernel subsystem (infrared). OS and compiler hacking is
very much my interest too!

As for the labs project, I have given this some thought. I think what would
be great is a page linked from hyperledger.org which lists the current
labs projects with a brief description. That would be better than using
github repo listing.

As for compiler nerds, yes there are a few around. Any good computer
science degree should include compilers in their curriculum. Also, at
the moment, what would help me most is on the testing and integration side
with ledger projects.

Thanks
Sean

On Wed, Feb 19, 2020 at 10:02:47AM -0500, Vipin Bharathan wrote:
Hi Sean,

I am reaching out as a lab steward. If you have suggestions to improve the
working of the labs, especially for small projects like yours; I am all
ears.
We need to make some changes based on feedback. I will bring this topic up
with the other stewards (who are no doubt following this thread).

As a lapsed OS hacker and compiler nerd, I understand your concerns about
the capabilities needed to participate in your lab.
However, these capabilities are more widespread than we can imagine. Also,
you need others, who are not compiler nerds to participate to bring the
labs into a project. Document writers, design reviewers, technical mavens,
we need participation from a wider array of folks.

Thanks again for contributing to the community.

Vipin

On Wed, Feb 19, 2020 at 1:07 AM Sean Young <sean@...> wrote:

Hi Vipin,

First of all thank you for your kind words, it's appreciated.

As you point out, a single maintainer isn't ideal. I have spoken to many
people who are interested in the project. However, the set of people who
understand how compilers are built, rust, llvm, and Solidity is a small
intersection. My hope was that through being a hyperledger project,
more contributers/maintainers will present themselves.

My hope remains that through becoming a full-fledged project that it would
increase collaboration between Solang and the ledger projects, and help
write Solang target support for any ledger project that wants Solidity
support, using their flavour of webassembly (not just ewasm).

Secondly I hoped it would simply get more people using Solang.

The aim is not to be a top-level project; the aim is to be succcessful
project. However, it feels somewhat like a chicken-and-egg type problem.

Thanks,

Sean

On Tue, Feb 18, 2020 at 09:28:19AM -0500, Vipin Bharathan wrote:
Hi Sean,
Great to see your active involvement in developing components for
community
use; especially those that have such potential.
Also heartening to see is the support you are getting from grants.
Any HL project needs community support. Not just verbal support. With a
single maintainer, many of the governance kpis will not be met.
This is in spite of stated support from several people.
The main question that I have is, what is the advantage of having Solang
be
a full-fledged project, rather than a lab?
If the answer is publicity; let us ramp up slowly; prompting its use and
scale by inviting interested parties to collaborate and work together in
labs.
Once we demonstrate momentum in community participation, there will be
more
of a chance to get this adopted as a project.
It is exciting to see significant projects being launched through the lab
infrastructure.
Thanks,
Vipin


On Tue, Feb 18, 2020 at 8:40 AM greg.hill via Lists.Hyperledger.Org
<greg.hill=monax.io@...> wrote:

As a fellow Burrow maintainer and previous colleague, I would also
like to
sponsor Solang. I strongly believe in the vision set out by Sean and I
will
be excited to see it grow under the strengthened adoption of
Hyperledger.
In the coming months I intend to contribute in both my official
(Monax) and
unofficial capacity.

Regards,
Gregory Hill


On Mon, Feb 17, 2020 at 8:21 PM Silas Davis via Lists.Hyperledger.Org
<silas.davis=monax.io@...> wrote:

Hi TSC,

Some may know Sean as a Burrow maintainer and former employee of
Monax.
Sean now works as an independent developer, but Solang was started as
a
side-project while Sean was still at Monax getting to observe the
idiosyncrasies (and lack of formal grammar) of the Solidity compiler
(solc)
at first-hand and knew there was a better way with modern compiler
tooling.
Solang quickly became a Hyperledger Labs project and since then Sean
was
able to secure funding to work on solang on it to work full time. So
while
we were all sorry to see him go (and I was sorry to lose my lunch
date 😭)
we would be very happy to support this project at Monax -
specifically I
would like to get involved, and I suspect so would Greg Hill. I know
Sean
would welcome other interested maintainers on contributors. I think
solang
has huge potential and to become a viable competitor to solc with the
emergence of eWASM. But I think to have the best chance Solang needs
help
to gain traction _now_.

If you look at the repository statistics you can see the development
velocity and effort Sean has put in already. It is also very clear to
me
that Solang fits the bill as a clearly delineated, cross-project,
cross-organisation (with EEA now as an associate member of
Hyperledger)
project that will be more than a nice-to-have for those wanting to
bridge
the gap between EVM and WASM, and WASM and blockchains. Sean also
spent 11
years at IBM, so he'll fit in around here ;)

In the case of the Burrow project we have merged initial support for
this
(https://github.com/hyperledger/burrow/pull/1338) and will be
working on
corollaries to this feature in our roadmap (
https://github.com/hyperledger/burrow/issues/1331), see also our
update
due this week:
https://wiki.hyperledger.org/display/TSC/2020+Q1+Hyperledger+Burrow.
We
can iterate rapidly on the cross-contract calls and possible
extensions to
the set of externs defined be eWASM.

I would be very happy to act as a sponsor for this proposal.

Silas

On Mon, 17 Feb 2020 at 18:13, Sean Young <sean@...> wrote:

Hello tsc,

I'd like to propose Solang to become a hyperledger project.

Description
-----------
Solang is a compiler for the Solidity language that can target ewasm
(used by Hyperledger Burrow and others), Sawtooth Sabre, and Parity
Substrate. It is written in rust and uses LLVM as the compiler
backend.
The
aim is for full compatibility with the Solidity language where
possible
(e.g.
assembly {} with EVM instructions are not supported in wasm context).

Solidity as a language does have its quirks, however it has
established
itself as a defacto language commonly for smart contract. Having
Solidity
support for the Hyperledger blockchains would be a great feature,
conversely
it would be beneficial for those project to colaborate on a common
compiler
component.

Other than Burrow, there are many other projects that allow ewasm
smart contracts. When ewasm comes to mainnet ethereum, Solang will be
ready to support it.

Possible future directions:
- the Solidity language can improve (e.g. string processing or
generics)
- create a solidity language server for IDEs
(see
https://wiki.hyperledger.org/display/INTERN/Create+a+new+Solidity+Language+Server+%28SLS%29+using+Solang+Compiler
)
- Integer arithmetic overflow detection in Solidity
- introduce foreign function interface, making it possible to link
in
code
written in other languages using the llvm linker (e.g. new crypto
written
in C).
- Fabric can also run wasm chain code:
https://github.com/hyperledger-labs/fabric-chaincode-wasm
- There is an experimental evm llvm backend, so Solang could
compile to
EVM just like the Ethereum Solidity compiler.
https://github.com/etclabscore/evm_llvm

See:
https://solang.readthedocs.io/en/latest/
and
https://github.com/hyperledger-labs/solang

Scope:
-----
The scope is the Solidity language and smart contacts written in
wasm;
compiler and related tools like language server (for IDEs) and style
hints
(like lint or clippy).

Other than smart contracts, there are also other areas where a wasm
compiled
language can help. For example, the BitXHub proposal needs wasm to do
cross
chain validation.

Commit development resources
----------------------------
Solang is funded through a web3 foundation grant. The grant funds the
project
for full Solidity language support, compatible with the ethereum
foundation
solidity compiler. As part of the grant the project has committed to
a
roadmap.

Initial Maintainers
-------------------
Sean Young <sean@...>

Neutral
-------
I'm not affiliated with any company or in employment; funding is
through
a
web3 foundation grant. My interests are compilers and smart
contract, not
any ledger in particular.


Thanks,

Sean Young