Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • 20:08
    mcoblenz opened #158
  • 19:59
    mcoblenz opened #157
  • 15:32
    danforbes opened #156
  • Nov 14 13:43

    juanfranblanco on master

    defaulting solhint recommended … (compare)

  • Nov 14 07:24

    juanfranblanco on master

    Mythx analysis formatting On compilation check for metada… (compare)

  • Nov 13 16:40

    juanfranblanco on master

    Added file name picker Added contracts name picker Merge pull request #155 from Gt… (compare)

  • Nov 13 16:40
    juanfranblanco closed #155
  • Nov 13 16:38
    Gtonizuka opened #155
  • Nov 07 16:42
    juanfranblanco commented #144
  • Nov 07 16:35
    juanfranblanco closed #152
  • Nov 07 16:35
    juanfranblanco commented #152
  • Nov 07 16:35
    juanfranblanco commented #144
  • Nov 06 21:46
    justinjmoses commented #144
  • Nov 06 21:45
    justinjmoses commented #144
  • Sep 26 10:18
    juanfranblanco commented #145
  • Sep 26 10:05
    PaulRBerg commented #145
  • Sep 26 05:57

    juanfranblanco on master

    Returning compiledResults (compare)

  • Sep 26 05:41

    juanfranblanco on master

    Fixed properly the local node c… (compare)

  • Sep 26 05:40
    juanfranblanco commented #145
  • Sep 26 02:51
    juanfranblanco commented #145
Bernardo Vieira
@obernardovieira
but user settings will set those rules to every project, right?
Juan Blanco
@juanfranblanco
yes
it is assumed you want the same rules for all projects
Bernardo Vieira
@obernardovieira
ok, but in this case, open-zeppelin does not follow the same rules as the company I work for. So I want different rules
it's assumed, but there are people who like 2 spaces and people who likes 4 spaces :p
Juan Blanco
@juanfranblanco
sure that is not suported yet
Bernardo Vieira
@obernardovieira
well, thanks, just worked :)
is there a plan to support it ? I would love to contribute
Juan Blanco
@juanfranblanco
here is the issue and some hint on implementation from solhint
Bernardo Vieira
@obernardovieira
ok, thanks. I will look at it later today a try my best on the coming days ;)
Juan Blanco
@juanfranblanco
thanks :D that is great
Remy Willems
@keyboardDrummer

Hi there Juan, I'm Remy a developer for AWSCloud9. One of my interests is writing LSP servers and I'm working on one for Solidity. The goal is to get a parser with error recovery, so you can get IDE tooling even when there are parse errors, and then also to have name resolution in the LSP server to get accurate goto definition/find references/code completion/renaming/outline view.

I've made an initial version for the parser and am working on the name resolution now.

Anyways, ideally I would be able to include this LSP server as part of your Solidity vscode extension, since you already have numerous other features included in it and great ratings/downloads.

However, the LSP server I'm writing is JVM based, so it needs a JVM to run, and your extension currently only uses Node, is that correct? I was wondering whether also requiring the JVM to be installed is even an option for your extension, is it?

Juan Blanco
@juanfranblanco
Hi @keyboardDrummer yes vscode is node (electron) based. If you look at the issues there is already a Java language server that could be integrated
Juan Blanco
@juanfranblanco
so you might want to check that for inspiration, although on the same level I think it will great to get the output of solc AST compiler for these things (although you won't get out of the box solution like for Eclipse), you will be integrated with the real AST for each version of the compiler
Remy Willems
@keyboardDrummer
I think using solc as is for a language server will limit the quality of that language server, since solc is meant as a compiler, it does not support things like error recovery in the parser, incremental compilation, and a good API for resolving tooling requests
but yes it does have the benefit of just having 1 tool, preventing the otherwise multiple tools from going out of sync, especially with new versions of the language
Remy Willems
@keyboardDrummer
And regarding running a JVM based LSP server, if the machine has a JVM installed, then this is as simple as starting the .jar with that JVM, so it's not difficult, it just means that the VSCode extension requires the user to have a JVM on their machine, which I think is not great.
Juan Blanco
@juanfranblanco
@keyboardDrummer correct solc is not at the moment a good source as it does not handle errors in a graceful manner, but if you compare it with something like Roslyn (.net compiler and more) that is the way forward. I am not saying that in the interim you could use something like that. Check in the issues there is one already built which we can take advantage of, but in the future I believe the AST of Solidity output should be the source of the truth, as we move through different compiler versions each one with different features the capabilities as it is developed in a agile manner. I continuously have seen issues with different parsers (Antlr, solparse, custom, etc) due to not understanding the new or old the capabilities of Solidity and having to be modified as such, whilst if everyone could consume the output of solc and contribute those features you mentioned directly any tooling built on top can benefit of it.
Re language I don't care much, but something that is portable and can be ran in a browser will be the best, I am not saying JavaScript as we have now wasm and can do magic with any language.
So yes sure, please check the issue in vscode for the java based language server, this is a simple win, but moving forward (not tomorrow of course) everything should use the real truth of solc :).
Juan Blanco
@juanfranblanco
“How Microsoft rewrote its C# compiler in C# and made it open source” by Mads Torgersen https://link.medium.com/ZMF96qpMuT
This is a good read, on the reasoning
See some added features directly
Remy Willems
@keyboardDrummer

I agree, the Roslyn approach is ideal, since it provides a single source of truth.

Check in the issues there is one already built which we can take advantage of

Are you referencing this issue juanfranblanco/vscode-solidity#110 about the YAKINDU Solidity language server?

Juan Blanco
@juanfranblanco
@keyboardDrummer yeah!
that is the one
Remy Willems
@keyboardDrummer
thanks for linking :)

Re language I don't care much, but something that is portable and can be ran in a browser will be the best, I am not saying JavaScript as we have now wasm and can do magic with any language.

I believe WASM only works for non-GC languages ATM, so no JVM bytecode.

Juan Blanco
@juanfranblanco
well it actually works in .net now, but yeah not GC.
in .net they actually run the runtime in wasm and load the dlls (jars)
so Java soon will be there :)
Remy Willems
@keyboardDrummer
o, interesting
Juan Blanco
@juanfranblanco
yeah there very cool things check https://blazor.net/
(although not related... ) but wait i just remembered
Remy Willems
@keyboardDrummer
And, regarding the YAKINDU language server, from its page it's not really clear whether it supports LSP. It's not mentioned anywhere. Have you looked into it?
Juan Blanco
@juanfranblanco
yes as it does, mainly they started with Eclipse and move to other IDEs using LSP
so that is great, although I have not seen support for multiple smart contract inheritance and navigation
which is the key part for solidity
Remy Willems
@keyboardDrummer
alright :)
drpeck
@thecircleoflifefree
Hi Team quick question, is there a way to get an ABI json like output as in remix.ide from the vsc ?
So for example i put my contract, then con the compile tab at the bottom there is a ABI and BYTECODE button
An output like this would be given:
                  "constant": false,
                  "inputs": [
                      {
                          "name": "_name",
                          "type": "string"
                      },
                      {
                          "name": "_age",
                          "type": "uint256"
                      }
                  ],
cheers!
Juan Blanco
@juanfranblanco
@thecircleoflifefree just compile your contract in VSCode
the abi can be found in the bin folder