Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Feature Idea: salve_ipc.proper #32

Closed
Moosems opened this issue Jun 20, 2024 · 10 comments · Fixed by #68
Closed

Feature Idea: salve_ipc.proper #32

Moosems opened this issue Jun 20, 2024 · 10 comments · Fixed by #68
Assignees
Milestone

Comments

@Moosems
Copy link
Member

Moosems commented Jun 20, 2024

Feature report:

Many of the functions that the server uses could be far more optimized but I don't want to mess with the main module because in the future I may rewrite it in Mojo (for fun and because I like the language, not for the speed claims) which is similar to Python and keeping a Python implementation wouldn't hurt. More than just that though, I really like the state of it and I'm proud of the work I've done and the progress I've made making the tools all on my own. That being said, speed is an option I want available to users. I therefore think that #16, #28 and this can all be pushed into one overarching plan to have a submodule that utilizes the proper tools for the job.

@Moosems Moosems added bug and removed bug labels Jun 20, 2024
@Moosems Moosems added this to the v.1.0.0 milestone Jul 3, 2024
@Moosems
Copy link
Member Author

Moosems commented Jul 7, 2024

To summarize #16 and #28 (will be closed in favor of this issue):

  • Support tree sitter highlighting but require the user to provide the highlighter and simply make a nicer interface
  • Support LSP's with sansio_lsp_client borrowing from @Akuli's (soft ping) Porcupine Editor LSP plugin and modifying for ease of use by user. Again, the user will provide the file path for the LSP and this will simply be a nicer interface.

What this will not be:

  • A repository of LSP and tree sitter files/binaries that centralizes them for convenience. The convenience this provides will be with regard to interfacing these tools, but some assembly is required.

With regards to tree sitter, the library py-tree-sittermay or may not be used. @Akuli (slightly harder ping) has stated apprehensions regarding the library to me and I value his insights so only time will tell how I actually implement this. Also, this will be the main cherry on the v1.0.0 cake so do not be surprised if this takes a long time to actually have implemented.

@Moosems Moosems modified the milestone: v.1.0.0 Jul 7, 2024
@Moosems
Copy link
Member Author

Moosems commented Jul 7, 2024

To any future observers, the milestone was removed from all three issues and then added back to this one to prevent it saying it has been 66% finished when in reality I haven't even begun.

@Akuli
Copy link

Akuli commented Jul 8, 2024

speed is an option I want available

You don't need a fancy new tool like Mojo to get more speed. There are many existing tools that speed up Python a lot. For example: cython, numba, mypyc.

Also, you don't need to speed up all your code. Measure what's slow and work mostly on the bottlenecks. (They are usually not where you expect them to be.)

@Moosems
Copy link
Member Author

Moosems commented Jul 8, 2024

I'm not saying I want Mojo for speed, I just like the language in that regard. The tree-sitter/LSP support is for speed. I'm fine with the speed of the current parts of Salve but I imagine that it wouldn't be ideal in some situations and I also want to try this challenge, its just proving to be significantly harder than I'd've liked (closer to panic zone than challenge zone).

@Moosems Moosems self-assigned this Jul 10, 2024
@Moosems Moosems mentioned this issue Jul 12, 2024
@Moosems Moosems linked a pull request Jul 12, 2024 that will close this issue
@Moosems
Copy link
Member Author

Moosems commented Jul 22, 2024

Crazy idea, but instead of trying to cram all of this into one tool, I can make four separate but similar tools. The three tools would be as follows:

  • salve (the basic tools but not much customization needed. It "Just Works" and makes everything super simple)
  • albero (a nice wrapper around tree-sitter that makes the job easier (combined with the salve-dependency-hub)
  • py-simple-lsp (a good lsp client that makes the job easy but still requires some work from the user)
  • py-PEG (a good PEG library thats easy to use and has some builtin grammars)

Then, I can wrap this all under one organization named Salve which mainly prioritizes the development of the Salve package but also maintains the other three.

@leycec, @Akuli, you both have more experience in this domain than I, what do you think of something like this?

@Moosems
Copy link
Member Author

Moosems commented Jul 22, 2024

I have created and reserved the organization name salve-org as the name Salve is taken by another user. Won't transfer repository until a discussion on this occurs.

@Moosems
Copy link
Member Author

Moosems commented Jul 24, 2024

Going to go ahead with this as I'm a little impatient and want to keep progress going

@Moosems
Copy link
Member Author

Moosems commented Jul 24, 2024

#73 is a part of this.

@Moosems
Copy link
Member Author

Moosems commented Jul 24, 2024

Going to make this part of a salve-org discussion on future plans and remove the stuff albero now covers from the v1.0.0 branch. #74 Will be part of v1.0.0

@Moosems
Copy link
Member Author

Moosems commented Jul 24, 2024

Closing in favor of Salve Organization Discussion #1

@Moosems Moosems closed this as completed Jul 24, 2024
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants