aboutsummaryrefslogtreecommitdiff
path: root/v_windows/v/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'v_windows/v/README.md')
-rw-r--r--v_windows/v/README.md290
1 files changed, 290 insertions, 0 deletions
diff --git a/v_windows/v/README.md b/v_windows/v/README.md
new file mode 100644
index 0000000..cbc28c0
--- /dev/null
+++ b/v_windows/v/README.md
@@ -0,0 +1,290 @@
+<div align="center">
+<p>
+ <img width="80" src="https://raw.githubusercontent.com/vlang/v-logo/master/dist/v-logo.svg?sanitize=true">
+</p>
+<h1>The V Programming Language</h1>
+
+[vlang.io](https://vlang.io) |
+[Docs](https://github.com/vlang/v/blob/master/doc/docs.md) |
+[Changelog](https://github.com/vlang/v/blob/master/CHANGELOG.md) |
+[Speed](https://fast.vlang.io/) |
+[Contributing & compiler design](https://github.com/vlang/v/blob/master/CONTRIBUTING.md)
+
+</div>
+<div align="center">
+
+<!--
+[![Build Status][WorkflowBadge]][WorkflowUrl]
+-->
+[![Sponsor][SponsorBadge]][SponsorUrl]
+[![Patreon][PatreonBadge]][PatreonUrl]
+[![Discord][DiscordBadge]][DiscordUrl]
+[![Twitter][TwitterUrl]][TwitterBadge]
+
+</div>
+
+## Key Features of V
+
+- Simplicity: the language can be learned in less than an hour
+- Fast compilation: ≈110k loc/s with a Clang backend,
+ ≈1 million loc/s with native and tcc backends *(Intel i5-7500, SSD, no optimization)* ([demo video](https://www.youtube.com/watch?v=pvP6wmcl_Sc))
+- Easy to develop: V compiles itself in less than a second
+- Performance: as fast as C (V's main backend compiles to human readable C)
+- Safety: no null, no globals, no undefined behavior, immutability by default
+- C to V translation
+- Hot code reloading
+- [Innovative memory management](https://vlang.io/#memory) ([demo video](https://www.youtube.com/watch?v=gmB8ea8uLsM))
+- [Cross-platform UI library](https://github.com/vlang/ui)
+- Built-in graphics library
+- Easy cross compilation
+- REPL
+- [Built-in ORM](https://github.com/vlang/v/blob/master/doc/docs.md#orm)
+- [Built-in web framework](https://github.com/vlang/v/blob/master/vlib/vweb/README.md)
+- C and JavaScript backends
+- Great for writing low level software ([Vinix OS](https://github.com/vlang/vinix))
+
+## Stability guarantee and future changes
+
+Despite being at an early development stage, the V language is relatively stable and has
+backwards compatibility guarantee, meaning that the code you write today is guaranteed
+to work a month, a year, or five years from now.
+
+There still may be minor syntax changes before the 1.0 release, but they will be handled
+automatically via `vfmt`, as has been done in the past.
+
+The V core APIs (primarily the `os` module) will still have minor changes until
+they are stabilized in V 1.0. Of course the APIs will grow after that, but without breaking
+existing code.
+
+Unlike many other languages, V is not going to be always changing, with new features
+being introduced and old features modified. It is always going to be a small and simple
+language, very similar to the way it is right now.
+
+## Installing V from source
+
+### Linux, macOS, Windows, *BSD, Solaris, WSL, Android, Raspbian
+
+```bash
+git clone https://github.com/vlang/v
+cd v
+make
+```
+
+That's it! Now you have a V executable at `[path to V repo]/v`.
+`[path to V repo]` can be anywhere.
+
+(On Windows `make` means running `make.bat`, so make sure you use `cmd.exe`)
+
+Now you can try `./v run examples/hello_world.v` (`v.exe` on Windows).
+
+V is constantly being updated. To update V, simply run:
+
+```bash
+v up
+```
+
+### C compiler
+
+It's recommended to use Clang, GCC, or Visual Studio.
+If you are doing development, you most likely already have one of those installed.
+
+Otherwise, follow these instructions:
+
+- [Installing a C compiler on Linux and macOS](https://github.com/vlang/v/wiki/Installing-a-C-compiler-on-Linux-and-macOS)
+
+- [Installing a C compiler on Windows](https://github.com/vlang/v/wiki/Installing-a-C-compiler-on-Windows)
+
+However, if none is found when running `make` on Linux or Windows,
+TCC is downloaded as the default C backend.
+It's very lightweight (several MB) so this shouldn't take too long.
+
+### Symlinking
+
+NB: it is *highly recommended*, that you put V on your PATH. That saves
+you the effort to type in the full path to your v executable every time.
+V provides a convenience `v symlink` command to do that more easily.
+
+On Unix systems, it creates a `/usr/local/bin/v` symlink to your
+executable. To do that, run:
+
+```bash
+sudo ./v symlink
+```
+
+On Windows, start a new shell with administrative privileges, for
+example by <kbd>Windows Key</kbd>, then type `cmd.exe`, right click on its menu
+entry, and choose `Run as administrator`. In the new administrative
+shell, cd to the path, where you have compiled v.exe, then type:
+
+```bat
+.\v.exe symlink
+```
+
+That will make V available everywhere, by adding it to your PATH.
+Please restart your shell/editor after that, so that it can pick
+the new PATH variable.
+
+NB: there is no need to run `v symlink` more than once - v will
+continue to be available, even after `v up`, restarts and so on.
+You only need to run it again, if you decide to move the V repo
+folder somewhere else.
+
+### Docker
+
+<details><summary>Expand Docker instructions</summary>
+
+```bash
+git clone https://github.com/vlang/v
+cd v
+docker build -t vlang .
+docker run --rm -it vlang:latest
+```
+
+### Docker with Alpine/musl
+
+```bash
+git clone https://github.com/vlang/v
+cd v
+docker build -t vlang --file=Dockerfile.alpine .
+docker run --rm -it vlang:latest
+```
+
+</details>
+
+### Testing and running the examples
+
+Make sure V can compile itself:
+
+```bash
+v self
+```
+
+```bash
+$ v
+V 0.2.x
+Use Ctrl-C or `exit` to exit
+
+>>> println('hello world')
+hello world
+>>>
+```
+
+```bash
+cd examples
+v hello_world.v && ./hello_world # or simply
+v run hello_world.v # this builds the program and runs it right away
+
+v run word_counter/word_counter.v word_counter/cinderella.txt
+v run news_fetcher.v
+v run tetris/tetris.v
+```
+
+<img src='https://raw.githubusercontent.com/vlang/v/master/examples/tetris/screenshot.png' width=300>
+
+NB: In order to build Tetris or 2048 (or anything else using `sokol` or `gg` graphics modules)
+on some Linux systems, you need to install `libxi-dev` and `libxcursor-dev` .
+
+If you plan to use the http package, you also need to install OpenSSL on non-Windows systems.
+
+```bash
+macOS:
+brew install openssl
+
+Debian/Ubuntu:
+sudo apt install libssl-dev
+
+Arch/Manjaro:
+openssl is installed by default
+
+Fedora:
+sudo dnf install openssl-devel
+```
+
+## V sync
+V's `sync` module and channel implementation uses libatomic.
+It is most likely already installed on your system, but if not,
+you can install it, by doing the following:
+```bash
+MacOS: already installed
+
+Debian/Ubuntu:
+sudo apt install libatomic1
+
+Fedora/CentOS/RH:
+sudo dnf install libatomic-static
+```
+
+## V UI
+
+<a href="https://github.com/vlang/ui">
+<img src='https://raw.githubusercontent.com/vlang/ui/master/examples/screenshot.png' width=712>
+</a>
+
+https://github.com/vlang/ui
+
+<!---
+## JavaScript backend
+
+[examples/hello_v_js.v](examples/hello_v_js.v):
+
+```v
+fn main() {
+ for i in 0 .. 3 {
+ println('Hello from V.js')
+ }
+}
+```
+
+```bash
+v -o hi.js examples/hello_v_js.v && node hi.js
+Hello from V.js
+Hello from V.js
+Hello from V.js
+```
+-->
+
+## Android graphical apps
+
+With V's `vab` tool, building V UI and graphical apps for Android can become as easy as:
+
+```
+./vab /path/to/v/examples/2048
+```
+
+[https://github.com/vlang/vab](https://github.com/vlang/vab).
+
+<img src="https://user-images.githubusercontent.com/768942/107622846-c13f3900-6c58-11eb-8a66-55db12979b73.png">
+
+## Developing web applications
+
+Check out the [Building a simple web blog](https://github.com/vlang/v/blob/master/tutorials/building_a_simple_web_blog_with_vweb/README.md)
+tutorial and Gitly, a light and fast alternative to GitHub/GitLab:
+
+https://github.com/vlang/gitly
+
+<img src="https://user-images.githubusercontent.com/687996/85933714-b195fe80-b8da-11ea-9ddd-09cadc2103e4.png">
+
+## Vinix, an OS/kernel written in V
+
+V is great for writing low level software like drivers and kernels.
+Vinix is an OS/kernel that already runs bash, GCC, V, and nano.
+
+https://github.com/vlang/vinix
+
+<img src="https://github.com/vlang/vinix/raw/main/screenshot.png?raw=true">
+
+## Troubleshooting
+
+Please see the [Troubleshooting](https://github.com/vlang/v/wiki/Troubleshooting) section on our [wiki page](https://github.com/vlang/v/wiki)
+
+[WorkflowBadge]: https://github.com/vlang/v/workflows/CI/badge.svg
+[DiscordBadge]: https://img.shields.io/discord/592103645835821068?label=Discord&logo=discord&logoColor=white
+[PatreonBadge]: https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fshieldsio-patreon.vercel.app%2Fapi%3Fusername%3Dvlang%26type%3Dpledges
+[SponsorBadge]: https://camo.githubusercontent.com/da8bc40db5ed31e4b12660245535b5db67aa03ce/68747470733a2f2f696d672e736869656c64732e696f2f7374617469632f76313f6c6162656c3d53706f6e736f72266d6573736167653d254532253944254134266c6f676f3d476974487562
+[TwitterBadge]: https://twitter.com/v_language
+
+[WorkflowUrl]: https://github.com/vlang/v/commits/master
+[DiscordUrl]: https://discord.gg/vlang
+[PatreonUrl]: https://patreon.com/vlang
+[SponsorUrl]: https://github.com/sponsors/medvednikov
+[TwitterUrl]: https://img.shields.io/twitter/follow/v_language.svg?style=flatl&label=Follow&logo=twitter&logoColor=white&color=1da1f2