Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Add Nim #1997

Closed
wants to merge 1 commit into from
Closed

Add Nim #1997

wants to merge 1 commit into from

Conversation

ringabout
Copy link

[Insert URL to the list here]

https://github.com/xflywind/awesome-nim

[Explain what this list is about and why it should be included here]

Nim is a statically typed compiled systems programming language.

Good for everything from shell scripting to web front & backend, to ML, HPC, and embedded.
Productivity: human readable and expressive like Python, with few sigils
Type system: strong static typing, nice generics, concepts, and type classes
Performance: matches C and C++, always gives control to the programmer
Portability: compiles to C, C++, and Javascript
Native use of all libraries in target languages (no ABI issues) + really nice FFI
Single (tiny) executable with no deps
Write server/client in the same language and share code between front/back end
Linux, Windows, and Mac
Iterating: Very fast compile speed
Top tier metaprogramming:
Hygienic AST Macros a core part of the language, very flexible syntax
Runs a VM of Nim at compile time giving you most of the language (bar pointers) to generate code or run procedures and store them as const
Eg; async implemented just with macros, doesn't need special language support
Eg; can automate building types and code from file data at compile time

Ref https://old.reddit.com/r/programming/comments/jc91xp/nim_14/g90ysdl/?context=2

By submitting this pull request I confirm I've read and complied with the below requirements πŸ––

Please read it multiple times. I spent a lot of time on these guidelines and most people miss a lot.

Requirements for your pull request

  • Don't waste my time. Do a good job, adhere to all the guidelines, and be responsive.
  • **You have to review at least 2 other [open pull requests]
    Add Web EffectΒ #1983
    Add Jai language awesome documentΒ #1974
  • You have read and understood the instructions for creating a list.
  • This pull request has a title in the format Add Name of List.
    • βœ… Add Swift
    • βœ… Add Software Architecture
    • ❌ Update readme.md
    • ❌ Add Awesome Swift
    • ❌ Add swift
    • ❌ add Swift
    • ❌ Adding Swift
    • ❌ Added Swift
  • Your entry here should include a short description about the project/theme of the list. It should not describe the list itself. The first character should be uppercase and the description should end in a dot. It should be an objective description and not a tagline or marketing blurb.
    • βœ… - [iOS](…) - Mobile operating system for Apple phones and tablets.
    • βœ… - [Framer](…) - Prototyping interactive UI designs.
    • ❌ - [iOS](…) - Resources and tools for iOS development.
    • ❌ - [Framer](…)
    • ❌ - [Framer](…) - prototyping interactive UI designs
  • Your entry should be added at the bottom of the appropriate category.
  • The suggested Awesome list complies with the below requirements.

Requirements for your Awesome list

  • Has been around for at least 30 days.
    That means 30 days from either the first real commit or when it was open-sourced. Whatever is most recent.
  • Don't open a Draft / WIP pull request while you work on the guidelines. A pull request should be 100% ready and should adhere to all the guidelines when you open it.
  • Run awesome-lint on your list and fix the reported issues. If there are false-positives or things that cannot/shouldn't be fixed, please report it.
  • The default branch should be named main, not master.
  • Includes a succinct description of the project/theme at the top of the readme. (Example)
    • βœ… Mobile operating system for Apple phones and tablets.
    • βœ… Prototyping interactive UI designs.
    • ❌ Resources and tools for iOS development.
    • ❌ Awesome Framer packages and tools.
  • It's the result of hard work and the best I could possibly produce.
    If you have not put in considerable effort into your list, your pull request will be immediately closed.
  • The repo name of your list should be in lowercase slug format: awesome-name-of-list.
    • βœ… awesome-swift
    • βœ… awesome-web-typography
    • ❌ awesome-Swift
    • ❌ AwesomeWebTypography
  • The heading title of your list should be in title case format: # Awesome Name of List.
    • βœ… # Awesome Swift
    • βœ… # Awesome Web Typography
    • ❌ # awesome-swift
    • ❌ # AwesomeSwift
  • Non-generated Markdown file in a GitHub repo.
  • The repo should have awesome-list & awesome as GitHub topics. I encourage you to add more relevant topics.
  • Not a duplicate. Please search for existing submissions.
  • Only has awesome items. Awesome lists are curations of the best, not everything.
  • Does not contain items that are unmaintained, has archived repo, deprecated, or missing docs. If you really need to include such items, they should be in a separate Markdown file.
  • Includes a project logo/illustration whenever possible.
    • Either centered, fullwidth, or placed at the top-right of the readme. (Example)
    • The image should link to the project website or any relevant website.
    • The image should be high-DPI. Set it to maximum half the width of the original image.
  • Entries have a description, unless the title is descriptive enough by itself. It rarely is though.
  • Includes the Awesome badge.
    • Should be placed on the right side of the readme heading.
      • Can be placed centered if the list has a centered graphics header.
    • Should link back to this list.
  • Has a Table of Contents section.
    • Should be named Contents, not Table of Contents.
    • Should be the first section in the list.
    • Should only have one level of nested lists, preferably none.
    • Must not feature Contributing or Footnotes sections.
  • Has an appropriate license.
    • We strongly recommend the CC0 license, but any Creative Commons license will work.
      • Tip: You can quickly add it to your repo by going to this URL: https://github.com/<user>/<repo>/community/license/new?branch=main&template=cc0-1.0 (replace <user> and <repo> accordingly).
    • A code license like MIT, BSD, Apache, GPL, etc, is not acceptable. Neither are WTFPL and Unlicense.
    • Place a file named license or LICENSE in the repo root with the license text.
    • Do not add the license name, text, or a Licence section to the readme. GitHub already shows the license name and link to the full text at the top of the repo.
    • To verify that you've read all the guidelines, please comment on your pull request with just the word unicorn.
  • Has contribution guidelines.
    • The file should be named contributing.md. Casing is up to you.
    • It can optionally be linked from the readme in a dedicated section titled Contributing, positioned at the top or bottom of the main content.
    • The section should not appear in the Table of Contents.
  • All non-important but necessary content (like extra copyright notices, hyperlinks to sources, pointers to expansive content, etc) should be grouped in a Footnotes section at the bottom of the readme. The section should not be present in the Table of Contents.
  • Has consistent formatting and proper spelling/grammar.
    • The link and description are separated by a dash.
      Example: - [AVA](…) - JavaScript test runner.
    • The description starts with an uppercase character and ends with a period.
    • Consistent and correct naming. For example, Node.js, not NodeJS or node.js.
  • Doesn't use hard-wrapping.
  • Doesn't include a Travis badge.
    You can still use Travis for list linting, but the badge has no value in the readme.
  • Doesn't include an Inspired by awesome-foo or Inspired by the Awesome project kinda link at the top of the readme. The Awesome badge is enough.

Go to the top and read it again.

[Nim](https://nim-lang.org/) is a statically typed compiled systems programming language.

> Good for everything from shell scripting to web front & backend, to ML, HPC, and embedded.
Productivity: human readable and expressive like Python, with few sigils
Type system: strong static typing, nice generics, concepts, and type classes
Performance: matches C and C++, always gives control to the programmer
Portability: compiles to C, C++, and Javascript
Native use of all libraries in target languages (no ABI issues) + really nice FFI
Single (tiny) executable with no deps
Write server/client in the same language and share code between front/back end
Linux, Windows, and Mac
Iterating: Very fast compile speed
Top tier metaprogramming:
Hygienic AST Macros a core part of the language, very flexible syntax
Runs a VM of Nim at compile time giving you most of the language (bar pointers) to generate code or run procedures and store them as const
Eg; async implemented just with macros, doesn't need special language support
Eg; can automate building types and code from file data at compile time

Ref https://old.reddit.com/r/programming/comments/jc91xp/nim_14/g90ysdl/?context=2
@ringabout
Copy link
Author

The PRs I reviewed
#1983
#1974

@sindresorhus
Copy link
Owner

Thanks for making an Awesome list! πŸ™Œ

It looks like you didn't read the guidelines closely enough. I noticed multiple things that are not followed. Try going through the list point for point to ensure you follow it. I spent a lot of time creating the guidelines so I wouldn't have to comment on common mistakes, and rather spend my time improving Awesome.

Repository owner deleted a comment from Kopper420 Apr 26, 2021
@fiddleHeads
Copy link

Hi. This all looks pretty good to me. The only thing I can think of, which I can't tell whether you've done yet, is to run awesome-lint.

@ringabout
Copy link
Author

Which do you mean? I have an awesome-lint CI for it in my repo.

@fiddleHeads
Copy link

I was just trying to see what you didn't complete yet under the awesome list instructions to warrant the comment above about not following the guidelines and didn't see that you'd run awesome-lint and reported any issues anywhere, as it's one of the prerequisites. Apologies if I missed that you'd already done it.

@drushadrusha
Copy link

Your list description should end in a dot according to PR requirements.
Looks good to me, except that you forgot one thing mentioned in the list of requirements.
Please read it carefully.

@pluja
Copy link

pluja commented May 22, 2021

I checked your repo with the awesome-lint and it has no errors. Also I could find some awesome projects on the list, which is the aim of it all! One thing I don't understand is why Nitter is under the Web API title.

@sindresorhus
Copy link
Owner

Consistent and correct naming. For example, Node.js, not NodeJS or node.js.

For example, nim and Nim and nim-lang.


Includes a project logo/illustration whenever possible.


High level => High-level

lib = library


Text editor to get started with Nim easily (not maintained anymore).

Unmaintained stuff are not awesome.


The Nim Telegram on Spanish => The Nim Telegram in Spanish

And it's moot to prefix all these links with The Nim.

@ringabout
Copy link
Author

@sindresorhus
Thanks for your advice! The issues mentioned have been fixed.

@sindresorhus
Copy link
Owner

Descriptions should not be title-case. For example, A Very Simple X11 Window Manager.. (but more places)


The description should not contain the project name.

c2nim - c2nim is a tool to translate Ansi C code to Nim.


parsetoml - A Nim library to parse TOML files.

Nim is implied here. It's a list for Nim stuff. Same in many other places.


ormin - Prepared SQL statement generator , A lightweight ORM.

Formatting typo.


The header is ugly and illegible. If you want to keep it, you should:

  1. Use same yellow color as official Nim logo.
  2. Drop the dash.
  3. Use the same font as the Nim logo.
  4. Don't have both the image header and the text header.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants