diff --git a/.gitmodules b/.gitmodules index dc69ddf380..16b00e8c73 100644 --- a/.gitmodules +++ b/.gitmodules @@ -22,6 +22,9 @@ [submodule "vendor/grammars/CUE-Sheet_sublime"] path = vendor/grammars/CUE-Sheet_sublime url = https://github.com/relikd/CUE-Sheet_sublime +[submodule "vendor/grammars/Clue-for-VSCode"] + path = vendor/grammars/Clue-for-VSCode + url = https://github.com/ClueLang/Clue-for-VSCode.git [submodule "vendor/grammars/CoDT7-Sublime"] path = vendor/grammars/CoDT7-Sublime url = https://github.com/Jake-NotTheMuss/CoDT7-Sublime.git @@ -70,9 +73,6 @@ [submodule "vendor/grammars/Linker.tmLanguage"] path = vendor/grammars/Linker.tmLanguage url = https://github.com/donno2048/Linker.tmLanguage -[submodule "vendor/grammars/LiveScript.tmbundle"] - path = vendor/grammars/LiveScript.tmbundle - url = https://github.com/paulmillr/LiveScript.tmbundle [submodule "vendor/grammars/Luau.tmLanguage"] path = vendor/grammars/Luau.tmLanguage url = https://github.com/JohnnyMorganz/Luau.tmLanguage.git @@ -370,7 +370,7 @@ url = https://github.com/zyoshoka/bst.tmLanguage.git [submodule "vendor/grammars/c.tmbundle"] path = vendor/grammars/c.tmbundle - url = https://github.com/textmate/c.tmbundle + url = https://github.com/mikomikotaishi/c.tmbundle.git [submodule "vendor/grammars/cairo-tm-grammar"] path = vendor/grammars/cairo-tm-grammar url = https://github.com/software-mansion-labs/cairo-tm-grammar.git @@ -434,6 +434,9 @@ [submodule "vendor/grammars/dart-syntax-highlight"] path = vendor/grammars/dart-syntax-highlight url = https://github.com/dart-lang/dart-syntax-highlight +[submodule "vendor/grammars/daslang-grammar"] + path = vendor/grammars/daslang-grammar + url = https://github.com/moleium/daslang-grammar.git [submodule "vendor/grammars/data-weave-tmLanguage"] path = vendor/grammars/data-weave-tmLanguage url = https://github.com/mulesoft-labs/data-weave-tmLanguage @@ -602,12 +605,15 @@ [submodule "vendor/grammars/kivy-language-grammer"] path = vendor/grammars/kivy-language-grammer url = https://github.com/p0lygun/kivy-language-grammer.git +[submodule "vendor/grammars/koka-textmate-grammar"] + path = vendor/grammars/koka-textmate-grammar + url = https://github.com/koka-community/koka-textmate-grammar.git [submodule "vendor/grammars/kusto-sublime"] path = vendor/grammars/kusto-sublime url = https://github.com/mmanela/kusto-sublime.git -[submodule "vendor/grammars/lang-4d"] - path = vendor/grammars/lang-4d - url = https://github.com/ayoubserti/lang-4d +[submodule "vendor/grammars/language-4d"] + path = vendor/grammars/language-4d + url = https://github.com/4d/language-4d.git [submodule "vendor/grammars/language-agc"] path = vendor/grammars/language-agc url = https://github.com/Alhadis/language-agc @@ -875,6 +881,9 @@ [submodule "vendor/grammars/latex.tmbundle"] path = vendor/grammars/latex.tmbundle url = https://github.com/textmate/latex.tmbundle +[submodule "vendor/grammars/leo-linguist"] + path = vendor/grammars/leo-linguist + url = https://github.com/ProvableHQ/leo-linguist.git [submodule "vendor/grammars/linter-lilypond"] path = vendor/grammars/linter-lilypond url = https://github.com/nwhetsell/linter-lilypond @@ -884,6 +893,9 @@ [submodule "vendor/grammars/lisp.tmbundle"] path = vendor/grammars/lisp.tmbundle url = https://github.com/textmate/lisp.tmbundle +[submodule "vendor/grammars/livescript-vscode"] + path = vendor/grammars/livescript-vscode + url = https://github.com/sharktide/livescript-vscode.git [submodule "vendor/grammars/llvm.tmbundle"] path = vendor/grammars/llvm.tmbundle url = https://github.com/whitequark/llvm.tmbundle @@ -1064,6 +1076,9 @@ [submodule "vendor/grammars/rust-syntax"] path = vendor/grammars/rust-syntax url = https://github.com/dustypomerleau/rust-syntax.git +[submodule "vendor/grammars/sail_vscode"] + path = vendor/grammars/sail_vscode + url = https://github.com/Timmmm/sail_vscode.git [submodule "vendor/grammars/sas.tmbundle"] path = vendor/grammars/sas.tmbundle url = https://github.com/rpardee/sas.tmbundle @@ -1292,6 +1307,9 @@ [submodule "vendor/grammars/vscode-TalonScript"] path = vendor/grammars/vscode-TalonScript url = https://github.com/mrob95/vscode-TalonScript.git +[submodule "vendor/grammars/vscode-aiken"] + path = vendor/grammars/vscode-aiken + url = https://github.com/aiken-lang/vscode-aiken.git [submodule "vendor/grammars/vscode-antlers-language-server"] path = vendor/grammars/vscode-antlers-language-server url = https://github.com/Stillat/vscode-antlers-language-server.git @@ -1437,6 +1455,9 @@ [submodule "vendor/grammars/vscode-vcard"] path = vendor/grammars/vscode-vcard url = https://github.com/cstrachan88/vscode-vcard.git +[submodule "vendor/grammars/vscode-vento"] + path = vendor/grammars/vscode-vento + url = https://github.com/ventojs/vscode-vento.git [submodule "vendor/grammars/vscode-vlang"] path = vendor/grammars/vscode-vlang url = https://github.com/0x9ef/vscode-vlang @@ -1479,6 +1500,9 @@ [submodule "vendor/grammars/zeek-sublime"] path = vendor/grammars/zeek-sublime url = https://github.com/zeek/zeek-sublime +[submodule "vendor/grammars/zenstack"] + path = vendor/grammars/zenstack + url = https://github.com/zenstackhq/zenstack.git [submodule "vendor/grammars/zephir-sublime"] path = vendor/grammars/zephir-sublime url = https://github.com/phalcon/zephir-sublime diff --git a/Rakefile b/Rakefile index f7ff103a02..b387635dd8 100644 --- a/Rakefile +++ b/Rakefile @@ -59,7 +59,7 @@ end # The error count will need to be adjusted here until such time as all grammars are 100% error free. desc "Check that compiling the grammars doesn't introduce any new unexpected errors" task :check_grammars do - expected_error_count = 55 # This count should only ever go down. If it goes up, there's a new issue that needs to be addressed before updating the grammar. + expected_error_count = 53 # This count should only ever go down. If it goes up, there's a new issue that needs to be addressed before updating the grammar. rm_rf "linguist-grammars" output, status = Open3.capture2e("script/grammar-compiler", "compile", "-o", "linguist-grammars") errors_found = output[/The grammar library contains ([0-9]+) errors/, 1].to_i diff --git a/bin/github-linguist b/bin/github-linguist index 70fe3a4dd4..6bf154c76c 100755 --- a/bin/github-linguist +++ b/bin/github-linguist @@ -12,9 +12,9 @@ HELP_TEXT = <<~HELP Linguist v#{Linguist::VERSION} Detect language type and determine language breakdown for a given Git repository. -Usage: linguist - linguist [--rev REV] [--tree-size] [--breakdown] [--json] - linguist [--rev REV] [--tree-size] [--breakdown] [--json] +Usage: github-linguist + github-linguist [--rev REV] [--tree-size] [--breakdown] [--json] + github-linguist [--rev REV] [--tree-size] [--breakdown] [--json] HELP def github_linguist(args) diff --git a/github-linguist.gemspec b/github-linguist.gemspec index 8a00b9de42..7c549740e9 100644 --- a/github-linguist.gemspec +++ b/github-linguist.gemspec @@ -31,7 +31,7 @@ Gem::Specification.new do |s| s.add_development_dependency 'pry', '~> 0.14' s.add_development_dependency 'rake', '~> 13.0' s.add_development_dependency 'yajl-ruby', '~> 1.4' - s.add_development_dependency 'licensed', '~> 4.0' + s.add_development_dependency 'licensed', '~> 5.0' s.add_development_dependency 'licensee', '~> 9.15' s.add_development_dependency 'bundler', '~> 2.0' end diff --git a/grammars.yml b/grammars.yml index b44f2063b6..048414f4dc 100644 --- a/grammars.yml +++ b/grammars.yml @@ -15,6 +15,8 @@ vendor/grammars/AutoHotkey: - source.ahk vendor/grammars/CUE-Sheet_sublime: - source.cuesheet +vendor/grammars/Clue-for-VSCode: +- source.clue vendor/grammars/CoDT7-Sublime: - source.gsc vendor/grammars/ColdFusion: @@ -57,8 +59,6 @@ vendor/grammars/Ligo-grammar: - source.religo vendor/grammars/Linker.tmLanguage: - source.c.linker -vendor/grammars/LiveScript.tmbundle: -- source.livescript vendor/grammars/Luau.tmLanguage: - source.luau vendor/grammars/MATLAB-Language-grammar: @@ -302,7 +302,6 @@ vendor/grammars/bst.tmLanguage: vendor/grammars/c.tmbundle: - source.c - source.c++ -- source.c.platform vendor/grammars/cairo-tm-grammar: - source.cairo - source.cairo0 @@ -352,6 +351,8 @@ vendor/grammars/d2-vscode: - text.html.markdown.d2 vendor/grammars/dart-syntax-highlight: - source.dart +vendor/grammars/daslang-grammar: +- source.daslang vendor/grammars/data-weave-tmLanguage: - source.data-weave vendor/grammars/denizenscript-grammar: @@ -500,9 +501,11 @@ vendor/grammars/jte-template-syntax-highlight: - text.html.jte vendor/grammars/kivy-language-grammer: - source.python.kivy +vendor/grammars/koka-textmate-grammar: +- source.koka vendor/grammars/kusto-sublime: - source.kusto -vendor/grammars/lang-4d: +vendor/grammars/language-4d: - source.4dm vendor/grammars/language-agc: - source.agc @@ -557,6 +560,7 @@ vendor/grammars/language-etc: - injections.etc - source.2da - source.bc +- source.c.calendar - source.c.nwscript - source.curlrc - source.dc @@ -574,6 +578,7 @@ vendor/grammars/language-etc: - source.ini.npmrc - source.inputrc - source.lcov +- source.m3u - source.m4 - source.mailmap - source.man-conf @@ -593,6 +598,7 @@ vendor/grammars/language-etc: - source.stl - source.string-template - source.tags +- source.torrc - source.ucd.nameslist - source.ucd.unidata - source.wgetrc @@ -830,6 +836,8 @@ vendor/grammars/latex.tmbundle: - text.tex.latex - text.tex.latex.beamer - text.tex.latex.memoir +vendor/grammars/leo-linguist: +- source.leo vendor/grammars/linter-lilypond: - source.lilypond vendor/grammars/liquid-tm-grammar: @@ -837,6 +845,8 @@ vendor/grammars/liquid-tm-grammar: - text.html.liquid vendor/grammars/lisp.tmbundle: - source.lisp +vendor/grammars/livescript-vscode: +- source.livescript vendor/grammars/llvm.tmbundle: - source.llvm vendor/grammars/logos: @@ -946,6 +956,7 @@ vendor/grammars/python-django.tmbundle: - source.python.django - text.html.django vendor/grammars/qsharp: +- source.openqasm - source.qsharp vendor/grammars/quake: - source.quake @@ -969,6 +980,8 @@ vendor/grammars/ruby-slim.tmbundle: - text.slim vendor/grammars/rust-syntax: - source.rust +vendor/grammars/sail_vscode: +- source.sail vendor/grammars/sas.tmbundle: - source.sas vendor/grammars/scheme.tmbundle: @@ -1149,6 +1162,9 @@ vendor/grammars/vscode: vendor/grammars/vscode-TalonScript: - markdown.talon.codeblock - source.talon +vendor/grammars/vscode-aiken: +- source.aiken +- source.uplc vendor/grammars/vscode-antlers-language-server: - text.html.statamic vendor/grammars/vscode-apache: @@ -1283,6 +1299,9 @@ vendor/grammars/vscode-vba: - source.wwb vendor/grammars/vscode-vcard: - source.vcard +vendor/grammars/vscode-vento: +- source.vento +- text.html.vento vendor/grammars/vscode-vlang: - source.v vendor/grammars/vscode-wit: @@ -1308,6 +1327,7 @@ vendor/grammars/vscode_cobol: - source.dir - source.directivesmf - source.hlasm +- source.ilecobol - source.jcl - source.mfu - source.mfupp_dir @@ -1332,5 +1352,7 @@ vendor/grammars/xml.tmbundle: - text.xml.xsl vendor/grammars/zeek-sublime: - source.zeek +vendor/grammars/zenstack: +- source.zmodel vendor/grammars/zephir-sublime: - source.php.zephir diff --git a/lib/linguist/VERSION b/lib/linguist/VERSION index 47da986f86..deeb3d66ef 100644 --- a/lib/linguist/VERSION +++ b/lib/linguist/VERSION @@ -1 +1 @@ -9.1.0 +9.2.0 diff --git a/lib/linguist/generated.rb b/lib/linguist/generated.rb index f2f59e16ff..6a8f623b9d 100644 --- a/lib/linguist/generated.rb +++ b/lib/linguist/generated.rb @@ -67,6 +67,7 @@ def generated? node_modules? || go_vendor? || go_lock? || + package_resolved? || poetry_lock? || pdm_lock? || uv_lock? || @@ -115,6 +116,7 @@ def generated? generated_jooq? || generated_pascal_tlb? || generated_sorbet_rbi? || + generated_mysql_view_definition_format? || generated_sqlx_query? end @@ -197,9 +199,11 @@ def has_source_map? def source_map? return false unless extname.downcase == '.map' - name =~ /(\.css|\.js)\.map$/i || # Name convention + return true if name =~ /(\.css|\.js)\.map$/i || # Name convention lines[0] =~ /^{"version":\d+,/ || # Revision 2 and later begin with the version number lines[0] =~ /^\/\*\* Begin line maps\. \*\*\/{/ # Revision 1 begins with a magic comment + + false end # Internal: Is the blob of JS generated by CoffeeScript? @@ -434,6 +438,13 @@ def go_lock? !!name.match(/(Gopkg|glide)\.lock/) end + # Internal: Is the blob a generated Package.resolved? + # + # Returns true or false. + def package_resolved? + !!name.match(/Package\.resolved/) + end + # Internal: Is the blob a generated poetry.lock? # # Returns true or false. @@ -867,6 +878,17 @@ def generated_sorbet_rbi? lines[4].match?(/^# Please (run|instead update this file by running) `bin\/tapioca/) end + # Internal: Is it MySQL View Definition Format? + # + # MySQL View Definition Format (INI) files are generated by MySQL 5.7 and earlier. + # They are not meant to be altered by humans. + # + # Returns true or false + def generated_mysql_view_definition_format? + return false unless extname.downcase == '.frm' + return lines[0].include?("TYPE=VIEW") + end + # Internal: Is this an HTML coverage report? # # Tools like coverage.py generate HTML reports under an `htmlcov` directory. diff --git a/lib/linguist/heuristics.yml b/lib/linguist/heuristics.yml index 785eb2f1b6..9f46e28c0e 100644 --- a/lib/linguist/heuristics.yml +++ b/lib/linguist/heuristics.yml @@ -144,6 +144,11 @@ disambiguations: - (?i:^\s*(end\sfunction)$) - language: Bluespec BH pattern: '^package\s+[A-Za-z_][A-Za-z0-9_'']*(?:\s*\(|\s+where)' +- extensions: ['.bst'] + rules: + - language: BibTeX Style + pattern: 'ENTRY\s*\{' + - language: BuildStream - extensions: ['.builds'] rules: - language: XML @@ -284,6 +289,8 @@ disambiguations: and: - named_pattern: vb-form - pattern: '^\s*Begin\s+VB\.Form\s+' + - language: INI + pattern: '\ATYPE=VIEW' - extensions: ['.fs'] rules: - language: Forth @@ -914,7 +921,7 @@ disambiguations: pattern: '^\[InternetShortcut\](?:\r?\n|\r)([^\s\[][^\r\n]*(?:\r?\n|\r)){0,20}URL=' - extensions: ['.v'] rules: - - language: Coq + - language: Rocq Prover pattern: '(?:^|\s)(?:Proof|Qed)\.(?:$|\s)|(?:^|\s)Require[ \t]+(Import|Export)\s' - language: Verilog pattern: '^[ \t]*module\s+[^\s()]+\s+\#?\(|^[ \t]*`(?:define|ifdef|ifndef|include|timescale)|^[ \t]*always[ \t]+@|^[ \t]*initial[ \t]+(begin|@)' diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index 74c62cd8d3..fa9225b705 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -261,6 +261,14 @@ Agda: tm_scope: source.agda ace_mode: text language_id: 12 +Aiken: + type: programming + color: "#640ff8" + ace_mode: text + extensions: + - ".ak" + tm_scope: source.aiken + language_id: 899409497 Alloy: type: programming color: "#64C800" @@ -760,6 +768,14 @@ Browserslist: tm_scope: text.browserslist ace_mode: text language_id: 153503348 +BuildStream: + type: data + color: "#006bff" + extensions: + - ".bst" + tm_scope: source.yaml + ace_mode: yaml + language_id: 84359046 C: type: programming color: "#555555" @@ -1219,6 +1235,14 @@ Cloud Firestore Security Rules: filenames: - firestore.rules language_id: 407996372 +Clue: + type: programming + color: "#0009b5" + extensions: + - ".clue" + tm_scope: source.clue + ace_mode: text + language_id: 163763508 CoNLL-U: type: data extensions: @@ -1343,15 +1367,6 @@ Cool: tm_scope: source.cool ace_mode: text language_id: 68 -Coq: - type: programming - color: "#d0b68c" - extensions: - - ".coq" - - ".v" - tm_scope: source.coq - ace_mode: text - language_id: 69 Cpp-ObjDump: type: data extensions: @@ -1588,6 +1603,14 @@ Dart: codemirror_mode: dart codemirror_mime_type: application/dart language_id: 87 +Daslang: + type: programming + color: "#d3d3d3" + extensions: + - ".das" + tm_scope: source.daslang + ace_mode: text + language_id: 648759486 DataWeave: type: programming color: "#003a52" @@ -2291,6 +2314,15 @@ GDScript: tm_scope: source.gdscript ace_mode: text language_id: 123 +GDShader: + type: programming + color: "#478CBF" + extensions: + - ".gdshader" + - ".gdshaderinc" + tm_scope: source.gdshader + ace_mode: glsl + language_id: 694638086 GEDCOM: type: data color: "#003058" @@ -2791,6 +2823,16 @@ HCL: codemirror_mime_type: text/x-ruby tm_scope: source.hcl language_id: 144 +HIP: + type: programming + color: "#4F3A4F" + extensions: + - ".hip" + tm_scope: source.c++ + ace_mode: c_cpp + codemirror_mode: clike + codemirror_mime_type: text/x-c++src + language_id: 674379998 HLSL: type: programming color: "#aace60" @@ -3081,6 +3123,7 @@ INI: - ".cfg" - ".cnf" - ".dof" + - ".frm" - ".lektorproject" - ".prefs" - ".pro" @@ -3764,6 +3807,7 @@ KiCad Schematic: - eeschema schematic extensions: - ".kicad_sch" + - ".kicad_sym" - ".sch" tm_scope: source.pcb.schematic ace_mode: text @@ -3784,6 +3828,16 @@ Kit: - ".kit" tm_scope: text.html.basic language_id: 188 +Koka: + type: programming + ace_mode: text + extensions: + - ".kk" + interpreters: + - koka + color: "#215166" + tm_scope: source.koka + language_id: 597930447 Kotlin: type: programming color: "#A97BFF" @@ -3911,6 +3965,15 @@ Lean 4: tm_scope: source.lean4 ace_mode: text language_id: 455147478 +Leo: + type: programming + color: "#C4FFC2" + extensions: + - ".leo" + tm_scope: source.leo + ace_mode: text + wrap: true + language_id: 916034822 Less: type: markup color: "#1d365d" @@ -4139,6 +4202,18 @@ M: codemirror_mime_type: text/x-mumps language_id: 214 tm_scope: none +M3U: + type: data + aliases: + - hls playlist + - m3u playlist + extensions: + - ".m3u" + - ".m3u8" + color: "#179C7D" + tm_scope: source.m3u + ace_mode: text + language_id: 89638692 M4: type: programming extensions: @@ -5885,6 +5960,7 @@ Python: - py - pypy - pypy3 + - uv aliases: - python3 - rusthon @@ -6193,6 +6269,7 @@ ReScript: codemirror_mime_type: text/x-rustsrc extensions: - ".res" + - ".resi" interpreters: - ocaml tm_scope: source.rescript @@ -6358,6 +6435,18 @@ Roc: tm_scope: source.roc ace_mode: text language_id: 440182480 +Rocq Prover: + type: programming + color: "#d0b68c" + extensions: + - ".v" + - ".coq" + aliases: + - coq + - rocq + tm_scope: source.coq + ace_mode: text + language_id: 69 Roff: type: markup color: "#ecdebe" @@ -6585,6 +6674,7 @@ SMT: extensions: - ".smt2" - ".smt" + - ".z3" interpreters: - boolector - cvc4 @@ -6731,6 +6821,14 @@ Sage: codemirror_mode: python codemirror_mime_type: text/x-python language_id: 338 +Sail: + type: programming + color: "#259dd5" + ace_mode: text + extensions: + - ".sail" + tm_scope: source.sail + language_id: 1029438153 SaltStack: type: programming color: "#646464" @@ -7589,6 +7687,16 @@ Toit: tm_scope: source.toit ace_mode: text language_id: 356554395 +Tor Config: + type: data + color: "#59316b" + filenames: + - torrc + tm_scope: source.torrc + ace_mode: apache_conf + aliases: + - torrc + language_id: 1016912802 Tree-sitter Query: type: programming color: "#8ea64c" @@ -7735,6 +7843,14 @@ UnrealScript: codemirror_mode: clike codemirror_mime_type: text/x-java language_id: 382 +Untyped Plutus Core: + type: programming + color: "#36adbd" + ace_mode: text + extensions: + - ".uplc" + tm_scope: source.uplc + language_id: 1061635506 UrWeb: type: programming color: "#ccccee" @@ -7842,6 +7958,14 @@ Velocity Template Language: codemirror_mode: velocity codemirror_mime_type: text/velocity language_id: 292377326 +Vento: + type: markup + color: "#ff0080" + extensions: + - ".vto" + tm_scope: source.vento + ace_mode: text + language_id: 757053899 Verilog: type: programming color: "#b2b7f8" @@ -7962,7 +8086,7 @@ Vyper: type: programming extensions: - ".vy" - color: "#2980b9" + color: "#9F4CF2" ace_mode: text tm_scope: source.vyper language_id: 1055641948 @@ -8280,6 +8404,7 @@ XML: - ".scxml" - ".sfproj" - ".shproj" + - ".slnx" - ".srdf" - ".storyboard" - ".sublime-snippet" @@ -8581,6 +8706,14 @@ Zimpl: tm_scope: none ace_mode: text language_id: 411 +Zmodel: + type: data + color: "#ff7100" + extensions: + - ".zmodel" + tm_scope: source.zmodel + ace_mode: text + language_id: 803760908 cURL Config: type: data group: INI diff --git a/samples/Aiken/multi.ak b/samples/Aiken/multi.ak new file mode 100644 index 0000000000..2d78aa345a --- /dev/null +++ b/samples/Aiken/multi.ak @@ -0,0 +1,162 @@ +use aiken/builtin +use aiken/bytearray +use aiken/dict +use aiken/hash.{blake2b_256} +use aiken/list +use aiken/transaction.{ + InlineDatum, Input, Output, ScriptContext, Spend, Transaction, +} as tx +use aiken/transaction/credential.{Address, PaymentCredential, ScriptCredential} +use aiken/transaction/value + +type Action { + Mint(Int) + Burn +} + +type SpendTokenName = + ByteArray + +validator(creator: ByteArray) { + fn redeem( + // Each spend input checks for a token name matching the datum being burned + datum: SpendTokenName, + _r: Data, + ctx: ScriptContext, + ) { + let ScriptContext { transaction, purpose } = ctx + + let Transaction { inputs, mint, .. } = transaction + + expect Spend(own_ref) = purpose + + expect Some(own_input) = + list.find(inputs, fn(input) { input.output_reference == own_ref }) + + let Input { + output: Output { address: Address { payment_credential, .. }, .. }, + .. + } = own_input + + expect ScriptCredential(own_validator_hash) = payment_credential + + ( + mint + |> value.from_minted_value + |> value.quantity_of(own_validator_hash, datum) + ) == -1 + } + + fn gift_card(rdmr: Action, ctx: ScriptContext) -> Bool { + // get values from transaction and purpose + let ScriptContext { transaction, purpose } = ctx + + expect tx.Mint(policy_id) = purpose + + let Transaction { inputs, mint, extra_signatories, outputs, .. } = + transaction + + let minted_assets = + mint + |> value.from_minted_value + |> value.tokens(policy_id) + |> dict.to_pairs() + + when rdmr is { + Mint(total) -> { + expect [input, ..] = inputs + // Base is created from serializing a utxo ref being spent. Thus this guarantees a unique base + let base = builtin.serialise_data(input.output_reference) + // Create a list of expected token names + let expected_minted_token_names = + create_expected_minted_nfts(base, total, []) + // Check contract creator is a signer of this tx + let signature_check = + list.any(extra_signatories, fn(n) { creator == n }) + // Support multiple gift card creation by allowing a + // 'number of tokens minted' == 'outputs with datum being token name' + signature_check && check_mint_and_outputs( + minted_assets, + outputs, + expected_minted_token_names, + ScriptCredential(policy_id), + ) + } + Burn -> + list.all( + minted_assets, + fn(asset) { + let Pair(_, amount) = asset + amount == -1 + }, + ) + } + } +} + +fn insert(self: List, e: a, compare: fn(a, a) -> Ordering) -> List { + when self is { + [] -> + [e] + [x, ..xs] -> + if compare(e, x) == Less { + [e, ..self] + } else { + [x, ..insert(xs, e, compare)] + } + } +} + +// Check each minted token name is in the expected list, has quantity of 1, +// and has a corresponding ouput with datum containing token name. +// Otherwise fail +fn check_mint_and_outputs( + minted_assets: Pairs, + outputs: List, + expected_assets: List, + validator_cred: PaymentCredential, +) -> Bool { + when minted_assets is { + [] -> True + [Pair(minted_asset_name, quantity), ..rest_assets] -> { + expect + list.any( + expected_assets, + fn(expected_asset) { expected_asset == minted_asset_name }, + ) + + expect + list.any( + outputs, + fn(output) { + let Output { address, datum, .. } = output + datum == InlineDatum(minted_asset_name) && address.payment_credential == validator_cred + }, + ) + + quantity == 1 && check_mint_and_outputs( + rest_assets, + outputs, + expected_assets, + validator_cred, + ) + } + } +} + +fn create_expected_minted_nfts( + base: ByteArray, + counter: Int, + accum: List, +) -> List { + if counter == 0 { + accum + } else { + let token_name = blake2b_256(bytearray.push(base, counter)) + + let accum = + [token_name, ..accum] + + create_expected_minted_nfts(base, counter - 1, accum) + } +} diff --git a/samples/Aiken/oneshot.ak b/samples/Aiken/oneshot.ak new file mode 100644 index 0000000000..a1fcc4fefa --- /dev/null +++ b/samples/Aiken/oneshot.ak @@ -0,0 +1,50 @@ +use aiken/dict +use aiken/list +use aiken/transaction.{OutputReference, ScriptContext, Transaction} as tx +use aiken/transaction/value + +type Action { + Mint + Burn +} + +validator(token_name: ByteArray, utxo_ref: OutputReference) { + fn gift_card(rdmr: Action, ctx: ScriptContext) -> Bool { + let ScriptContext { transaction, purpose } = ctx + + expect tx.Mint(policy_id) = purpose + + let Transaction { inputs, mint, .. } = transaction + + expect [Pair(asset_name, amount)] = + mint + |> value.from_minted_value + |> value.tokens(policy_id) + |> dict.to_pairs() + + when rdmr is { + Mint -> { + expect Some(_input) = + list.find(inputs, fn(input) { input.output_reference == utxo_ref }) + amount == 1 && asset_name == token_name + } + Burn -> amount == -1 && asset_name == token_name + } + } +} + +validator(token_name: ByteArray, policy_id: ByteArray) { + fn redeem(_d: Data, _r: Data, ctx: ScriptContext) -> Bool { + let ScriptContext { transaction, .. } = ctx + + let Transaction { mint, .. } = transaction + + expect [Pair(asset_name, amount)] = + mint + |> value.from_minted_value + |> value.tokens(policy_id) + |> dict.to_pairs() + + amount == -1 && asset_name == token_name + } +} diff --git a/samples/Aiken/tunav2.ak b/samples/Aiken/tunav2.ak new file mode 100644 index 0000000000..2850e746b6 --- /dev/null +++ b/samples/Aiken/tunav2.ak @@ -0,0 +1,279 @@ +use aiken/builtin +use aiken/bytearray +use aiken/dict +use aiken/hash.{blake2b_256, sha2_256} +use aiken/interval.{Finite, Interval, IntervalBound} +use aiken/list +use aiken/math.{pow2} +use aiken/merkle_patricia_forestry.{Proof, from_root, insert} +use aiken/transaction.{ + InlineDatum, Mint, Output, ScriptContext, Spend, Transaction, +} as tx +use aiken/transaction/credential.{Address, Inline, ScriptCredential} +use aiken/transaction/value.{from_minted_value} +use fortuna +use fortuna/parameters.{ + epoch_number, halving_number, initial_payout, miner_threshold, + miner_voting_period, supply_threshold, vote_threshold, +} +use fortuna/types.{ + BurnToken, FinalizeNomination, Genesis, MineTuna, Mining, NominateUpgrade, + Nominated, Redeem, Statev2, TunaAction, TunaUpgradeProcess, VotingToken, +} +use fortuna/utils.{get_inline_datum, integer_to_bytes, resolve_output_reference} +use fortunav2.{ + big_tuna_length, counter_length, expect_first, flip_hash, genesis_v2, + quantity_of, tokens, vote, voting_period, +} +use hardfork.{calculate_emission} +use hardfork/hftypes.{Lock, NftForkAction} + +type TunaSpendAction { + TokenVoteFor + TokenVoteAgainst + MinerVoteFor { output_index: Int, block_number: Int } + TransitionState { block_number: Int } +} + +type Miner { + Pkh(ByteArray, Data) + Nft { policy: ByteArray, name: ByteArray, output_index: Int, extra: Data } +} + +type MineAction { + MinePow(ByteArray, Miner, Proof) + Upgrade +} + +type TargetState { + nonce: ByteArray, + miner: ByteArray, + block_number: Int, + current_hash: ByteArray, + leading_zeros: Int, + target_number: Int, + epoch_time: Int, +} + +validator(tunav2_minting_policy: ByteArray) { + fn mine(datum: Statev2, redeemer: MineAction, ctx: ScriptContext) -> Bool { + when redeemer is { + MinePow(nonce, miner, merkle_proof_list) -> { + let Statev2 { + block_number, + current_hash, + leading_zeros, + target_number, + epoch_time, + current_posix_time, + merkle_root, + } = datum + + let ScriptContext { transaction, purpose } = ctx + + expect Spend(own_reference) = purpose + + let Transaction { inputs, outputs, validity_range, .. } = transaction + + let Output { address: in_address, value: in_value, .. } = + resolve_output_reference(inputs, own_reference) + + expect ScriptCredential(own_script_hash) = in_address.payment_credential + + // Spend(0) requirement: Contract has only one output with the master token going back to itself + expect Some(own_output) = + list.find( + outputs, + fn(output: Output) { output.address == in_address }, + ) + + let Output { datum: out_datum, value: out_value, .. } = own_output + + // Time Range Span is 3 minutes or less + // We have a constant expectation of the transaction time range + expect Interval { + upper_bound: IntervalBound { + bound_type: Finite(upper_range), + is_inclusive: upper_is_inclusive, + }, + lower_bound: IntervalBound { + bound_type: Finite(lower_range), + is_inclusive: lower_is_inclusive, + }, + } = validity_range + + let averaged_current_time = + ( upper_range - lower_range ) / 2 + lower_range + + let serialized_miner = builtin.serialise_data(miner) + + // Target state now includes a miner credential + let target = + TargetState { + nonce, + block_number, + epoch_time, + current_hash, + leading_zeros, + target_number, + miner: blake2b_256(serialized_miner), + } + + let found_bytearray = + target + |> builtin.serialise_data() + |> sha2_256() + |> sha2_256() + + let (found_target_number, found_leading_zeros) = + fortuna.format_found_bytearray(found_bytearray) + + // Check output datum contains correct epoch time, block number, hash, and leading zeros + // Check for every divisible by 2016 block: + // - Epoch time resets + // - leading zeros is adjusted based on percent of hardcoded target time for 2016 blocks vs epoch time + // Spend(8) requirement: Expect Output Datum to be of type Statev2 + expect Statev2 { + epoch_time: out_epoch_time, + block_number: out_block_number, + current_hash: out_current_hash, + leading_zeros: out_leading_zeros, + target_number: out_target_number, + current_posix_time: out_current_posix_time, + merkle_root: out_merkle, + }: Statev2 = get_inline_datum(out_datum) + + let block_number_as_bytes = integer_to_bytes(out_block_number, "") + + let expected_output_value = + value.from_asset( + tunav2_minting_policy, + bytearray.concat(fortunav2.big_tuna_prefix, own_script_hash), + 1, + ) + |> value.add( + tunav2_minting_policy, + bytearray.concat( + fortunav2.counter_prefix, + block_number_as_bytes, + ), + 1, + ) + + and { + // Posix time is in milliseconds + // Spend(1) requirement: Time range span is 3 minutes or less and inclusive + !upper_is_inclusive, + lower_is_inclusive, + upper_range - lower_range <= 180000, + // In case you are wondering here is what enables pools + // A miner can be a pkh or an nft + // Nfts can come from any input, even validators + // So any validator logic can be enforced to run along with fortuna + // Spend(2) requirement: Validate miner is made the tx + when miner is { + Pkh(signer, _) -> list.has(transaction.extra_signatories, signer) + Nft { policy: nft_policy, name: nft_name, output_index, .. } -> { + let quantity = + utils.list_at(outputs, output_index).value + |> value.to_dict + |> dict.to_pairs + |> quantity_of(nft_policy, nft_name) + + quantity == 1 + } + }, + // Mining Difficulty Met + // Spend(3) requirement: Found difficulty is less than or equal to the current difficulty + // We do this by checking the leading zeros and the difficulty number + or { + found_leading_zeros > leading_zeros, + and { + found_leading_zeros == leading_zeros, + found_target_number < target_number, + }, + }, + // Spend(4) requirement: Input has master token + quantity_of( + in_value |> value.to_dict |> dict.to_pairs, + tunav2_minting_policy, + bytearray.concat(fortunav2.big_tuna_prefix, own_script_hash), + ) == 1, + // Spend(7) requirement: Output has same tokens as input + expected_output_value == value.without_lovelace(out_value), + // Spend(9) requirement: Check output has correct difficulty number, leading zeros, and epoch time + if block_number % epoch_number == 0 && block_number > 0 { + // use total epoch time with target epoch time to get difficulty adjustment ratio + // ratio maxes out at 4/1 and mins to 1/4 + let total_epoch_time = + epoch_time + averaged_current_time - current_posix_time + let (adjustment_numerator, adjustment_denominator) = + fortuna.get_difficulty_adjustment(total_epoch_time) + // Now use ratio to find new leading zeros difficulty + let (new_difficulty, new_leading_zeroes) = + fortuna.get_new_difficulty( + target_number, + leading_zeros, + adjustment_numerator, + adjustment_denominator, + ) + + and { + new_leading_zeroes == out_leading_zeros, + new_difficulty == out_target_number, + 0 == out_epoch_time, + } + } else { + let new_epoch_time = + epoch_time + averaged_current_time - current_posix_time + + and { + leading_zeros == out_leading_zeros, + target_number == out_target_number, + new_epoch_time == out_epoch_time, + } + }, + // Spend(10) requirement: Output posix time is the averaged current time + out_current_posix_time == averaged_current_time, + // Spend(11) requirement: Output block number is the input block number + 1 + block_number + 1 == out_block_number, + // Spend(12) requirement: Output current hash is the found hash + out_current_hash == found_bytearray, + // Spend(13) requirement: Check output merkle is correct + insert( + merkle_root |> from_root, + found_bytearray |> blake2b_256, + found_bytearray, + merkle_proof_list, + ) == from_root(out_merkle), + // Spend(14) requirement: Data size doesn't exceed 1/4 tx size + serialized_miner + |> builtin.length_of_bytearray() + |> builtin.less_than_equals_integer(4096), + builtin.length_of_bytearray(nonce) <= 32, + } + } + + Upgrade -> { + let ScriptContext { transaction, purpose } = ctx + + expect Spend(own_reference) = purpose + + let Transaction { redeemers, inputs, .. } = transaction + + let Output { address, value, .. } = + resolve_output_reference(inputs, own_reference) + + let upgrade_rdmr = expect_first(redeemers, Mint(tunav2_minting_policy)) + + expect FinalizeNomination { .. }: TunaAction = upgrade_rdmr + + expect ScriptCredential(spend_hash) = address.payment_credential + + let name = bytearray.concat(fortunav2.big_tuna_prefix, spend_hash) + + value.quantity_of(value, tunav2_minting_policy, name) == 1 + } + } + } +} diff --git a/samples/BuildStream/hello.bst b/samples/BuildStream/hello.bst new file mode 100644 index 0000000000..f7f21e01e1 --- /dev/null +++ b/samples/BuildStream/hello.bst @@ -0,0 +1,22 @@ +kind: manual +description: | + + Building manually + +# Depend on the base system +depends: +- base.bst + +# Stage the files/src directory for building +sources: + - kind: local + path: files/src + +# Now configure the commands to run +config: + + build-commands: + - make PREFIX="%{prefix}" + + install-commands: + - make -j1 PREFIX="%{prefix}" DESTDIR="%{install-root}" install diff --git a/samples/Clue/game.clue b/samples/Clue/game.clue new file mode 100644 index 0000000000..945a938d0f --- /dev/null +++ b/samples/Clue/game.clue @@ -0,0 +1,148 @@ +static score, mistakes = 0, 1 +static hackamount, hacked = 0.5 + +local terminal = import("terminal") + +local names = {} + +local i = 1 +for name with love.filesystem.lines("assets/names.txt") { + names[i] = name + i += 1 +} + +local commands +local seed2 = love.math.random(10, 10000) + +local fn EntryCode(seed) { + local rng = love.math.newRandomGenerator((seed2 + math.floor(leveltime / 30)) * 10 + seed) + local code = "" + for _ = 1, 20 { + code ..= string.char(rng::random(33, 122)) + } + return code +} + +local fn GenerateIP(hacker) { + return math.ceil(math.abs(love.math.randomNormal(75, 128)) % (hacker ? 256 : 1000)) +} + +local user = { + new = fn(self) { + local hacker = love.math.random() > 0.8 + self.ip1 = GenerateIP(hacker) + self.ip2 = GenerateIP(hacker) + self.ip3 = GenerateIP(hacker) + self.ip4 = GenerateIP(hacker) + self.glitch = self.ip1 > 255 || self.ip2 > 255 || self.ip3 > 255 || self.ip4 > 255 + self.name = names[love.math.random(6000)] + self.age = math.floor((hacker || self.glitch) ? love.math.random(14, 79) : love.math.random(9, 145)) + self.code = hacker ? love.math.random(-20, -1) : love.math.random(0, 9) + self.time = leveltime + self.hacker = hacker + } + next = fn(self) { + commands.score.code() + terminal::write("Reading next user's information...", 15) + self::new() + commands.user.code(4) + } +} + +user::new() + +local fn AwardScore(amount) { + if amount < 0 { + amount = math.ceil($ * mistakes) + terminal::write(string.format("(%d points)", amount), 60, 1, 0, 0) + mistakes += 0.5 + } else { + terminal::write(string.format("(+%d points)", amount), 60, 1, 1, 0) + } + score += amount +} + +commands = { + score = { + desc = "Display current score." + code = fn { + terminal::write("Score: " .. score, nil, 1, 0, 1) + local mistakes = (mistakes - 1) * 2 + if mistakes == 0 { + terminal::write("You never messed up so far.", nil, 1, 0, 1) + } else { + terminal::write("You messed up " .. mistakes .. " times.", nil, 1, 0, 1) + } + } + } + user = { + desc = "Display the info of the user trying to connect." + code = fn(s = 0) { + terminal::write("Name: " .. user.name, 60, 1, 1, 0) + terminal::write("Age: " .. user.age, 60, 1, 1, 0) + terminal::write(string.format("IP: %d.%d.%d.%d", user.ip1, user.ip2, user.ip3, user.ip4), 60, 1, 1, 0) + terminal::write(string.format( + "Entry Code: %s (changes in %d seconds)", + EntryCode(user.code), + math.max(29 - math.floor(leveltime % 30) - s, 0) + ), 60, 1, 1, 0) + } + } + codes = { + desc = "Display the 10 currently valid codes." + code = fn { + terminal::write("Currently valid codes:") + for i = 0, 9 { + terminal::write(EntryCode(i), 60, 1, 1, 0) + } + terminal::write(string.format( + "The codes will change in %d seconds.", + 29 - math.floor(leveltime % 30) + )) + } + } + allow = { + desc = "Allow the current user." + code = fn { + terminal::write(user.name .. " was allowed connection...", 10) + if user.hacker { + terminal::write("But they were an hacker!", 60, 1, 0, 0) + hacked = leveltime + 0.5 + mistakes += 0.5 + errors = 2 + user::new() + return + } elseif user.glitch { + terminal::write("But they were a glitch!", 60, 1, 0, 0) + AwardScore(math.min(score / -2.5, -500)) + errors = 1 + } elseif user.age < 14 { + terminal::write("But they were too young to join.", 60, 1, 0, 0) + AwardScore(-300) + } elseif user.age >= 80 { + terminal::write("But they were a troll.", 60, 1, 0, 0) + AwardScore(-200) + } else { + terminal::write("And that was the correct choice!", 60, 1, 1, 0) + AwardScore(math.max(500 + math.floor((user.time - leveltime) * 20), 10)) + } + user::next() + } + } + deny = { + desc = "Deny the current user." + code = fn { + terminal::write(user.name .. " was denied connection...", 10) + if !user.hacker && !user.glitch && user.age >= 14 && user.age < 80 { + terminal::write("But they had no bad intentions.", 60, 1, 0, 0) + AwardScore(-500) + } else { + terminal::write("And that was the correct choice!", 60, 1, 1, 0) + AwardScore(math.max(300 + math.floor((user.time - leveltime) * 20), 10)) + } + user::next() + } + } +} + +return commands \ No newline at end of file diff --git a/samples/Clue/graph.clue b/samples/Clue/graph.clue new file mode 100644 index 0000000000..dc0d0a4f7b --- /dev/null +++ b/samples/Clue/graph.clue @@ -0,0 +1,27 @@ +io.stdout::setvbuf("no"); + +import("line"); + +method love.draw() { + love.graphics.print(formula, 0, 0, 0, 2); + love.graphics.translate(150, 450); + love.graphics.setColor(0.3, 0.3, 0.3); + for x = -150, 650, 10 { + if x == 0 {continue} + love.graphics.line(x, 150, x, -450); + } + for y = -450, 150, 10 { + if y == 0 {continue} + love.graphics.line(-150, y, 650, y); + } + love.graphics.setColor(1, 1, 1); + love.graphics.line(0, 150, 0, -450); + love.graphics.line(-150, 0, 650, 0); + if dots { + love.graphics.line(dots); + } else { + love.graphics.origin() + love.graphics.setColor(1, 0, 0); + love.graphics.printf(errormsg, 0, 300, 400, "center", 0, 2); + } +} diff --git a/samples/Clue/line.clue b/samples/Clue/line.clue new file mode 100644 index 0000000000..3054b30ee3 --- /dev/null +++ b/samples/Clue/line.clue @@ -0,0 +1,36 @@ +static dots, formula, errormsg; +dots = {0, 0, 0, 0}; +formula = "y="; +errormsg = ""; + +local utf8 = require("utf8"); +local env = {x = 0, y = 0}; + +for k, v of math { + env[k] = v; +} + +method love.textinput(key) { + formula ..= key; + dots = {}; + try { + local formula, errormsg = loadstring(formula); + if !formula {error(errormsg);} + setfenv(formula, env); + for x = -150, 650 { + env.x = x; + formula(); + table.insert(dots, env.x || 0); + table.insert(dots, -(env.y || 0)); + } + } catch error { + dots = nil; + errormsg = error; + } +} + +method love.keypressed(key) { + if key == "backspace" && utf8.len(formula) > 0 { + formula = ($)::sub(1, utf8.len($)-1); + } +} diff --git a/samples/Clue/main.clue b/samples/Clue/main.clue new file mode 100644 index 0000000000..a9cc5b2c2c --- /dev/null +++ b/samples/Clue/main.clue @@ -0,0 +1,102 @@ +static font = love.graphics.newFont("assets/clacon2.ttf", 24, "mono") +static fontheight = 23 //force it to 23 cause windows and linux use different sizes... +static screenheight = love.graphics.getHeight() - 10 +static leveltime = 0 + +io.stdout::setvbuf("no") + +local utf8 = require("utf8") +local terminal = import("terminal") +import("player") + +local screen = love.graphics.newCanvas() +local hum = love.audio.newSource("assets/hum.ogg", "stream") +local win = love.audio.newSource("assets/win.ogg", "static") +local wrong = love.audio.newSource("assets/wrong.ogg", "static") + +love.graphics.setFont(font) +love.keyboard.setKeyRepeat(true) +love.graphics.setShader(love.graphics.newShader("assets/shader.glsl")) + +local start_command = commands.start + +method love.load() { + terminal::write("╔═╗ ╔═════╗ ╔═════╗ ╔═╗ ╔═════╗ ╔═════╗ ╔═════╗ ╔═════╗", 400) + terminal::write("║ ║ ║ ╔═╗ ║ ║ ╔═╗ ║ ║ ║ ║ ╔═══╝ ║ ╔═╗ ║ ║ ╔═══╝ ║ ╔═══╝", 400) + terminal::write("║ ║ ║ ╚═╝ ║ ║ ╚═╝ ║ ║ ║ ║ ╚═══╗ ║ ╚═╝ ║ ║ ╚═══╗ ║ ╚═══╗", 400) + terminal::write("║ ║ ║ ╔═══╝ ║ ╔═══╝ ║ ║ ║ ╔═══╝ ║ ╔═╗ ║ ╚═══╗ ║ ║ ╔═══╝", 400) + terminal::write("║ ║ ║ ║ ║ ║ ║ ╚═══╗ ║ ╚═══╗ ║ ║ ║ ║ ╔═══╝ ║ ║ ╚═══╗", 400) + terminal::write("╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝", 400) + terminal::write("A game for the LÖVE Jam 2023 - Created by Maiori") + terminal::write("(Type 'guide' for instructions)") + hum::setLooping(true) + hum::setVolume(0.10) + hum::play() +} + +method love.update(dt) { + leveltime += dt + local unfinished = terminal.unfinished[pointer] + if unfinished { + unfinished.progress += dt * unfinished.speed * 2 + if unfinished.progress >= #unfinished.text { + unfinished.progress = nil + table.remove(terminal.unfinished, 1) + love.wheelmoved(0, -fontheight) + match unfinished.text::sub(-7) { //this is a hacky way to do this... + "glitch!" => { + terminal::corrupt() + } + "choice!" => { + win::play() + } + "o join." || " troll." || "ntions." => { + wrong::play() + } + } + } + } elseif hacked && leveltime > hacked { + terminal::corrupt() + hacked = leveltime + hackamount + hackamount /= 1.22 + if hackamount < 0.00000000000001 { + hacked = nil + hackamount = 0.5 + commands.clear.code() + setmetatable(commands, {}) + commands.restart = start_command + terminal::write("GAME OVER", 1, 1, 0, 0) + terminal::write("Your server was destroyed...will you try again?", 15, 1, 0, 0) + terminal::write("Final Score: " .. score, nil, 1, 0, 0) + terminal::write("You messed up " .. ((mistakes - 1) * 2) .. " times.", nil, 1, 0, 0) + terminal::write("(Type 'restart' to try again)", nil, 1, 0, 0) + score = 0 + mistakes = 1 + } + } +} + +global fn UpdateCanvas() { + love.graphics.clear() + local y = terminal::draw() + if terminal::finished() && !hacked { + love.graphics.setColor(0.125490196, 0.760784314, 0.054901961) + local text = "$ " .. terminal.input[1] + love.graphics.print(text, 5, y) + if math.floor(leveltime) % 2 == 0 { + love.graphics.print("_", 5 + font::getWidth(text), y) + } + } +} + +method love.draw() { + screen::renderTo(UpdateCanvas) + love.graphics.setColor(1, 1, 1) + love.graphics.draw(screen) +} + +method love.resize(_, height) { + screenheight = height - 10 + screen = love.graphics.newCanvas() + love.wheelmoved(0, 0) +} \ No newline at end of file diff --git a/samples/Clue/msgpack.clue b/samples/Clue/msgpack.clue new file mode 100644 index 0000000000..53e6a71d94 --- /dev/null +++ b/samples/Clue/msgpack.clue @@ -0,0 +1,389 @@ +/* + + MessagePack encoder / decoder written in Clue + Originally written in Lua by Sebastian Steinhauer + Forked and ported to Clue by Felice D'Angelo + + This is free and unencumbered software released into the public domain. + + Anyone is free to copy, modify, publish, use, compile, sell, or + distribute this software, either in source code form or as a compiled + binary, for any purpose, commercial or non-commercial, and by any + means. + + In jurisdictions that recognize copyright laws, the author or authors + of this software dedicate any and all copyright interest in the + software to the public domain. We make this dedication for the benefit + of the public at large and to the detriment of our heirs and + successors. We intend this dedication to be an overt act of + relinquishment in perpetuity of all present and future rights to this + software under copyright law. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + + For more information, please refer to + +*/ + +@iflua jit { + local fn pack(...) { + return love.data.pack("string", ...) + } + local fn unpack(...) { + return love.data.unpack(...) + } + local fn mtype(x) { + if type(x) != "number" { + return + } elseif x == math.floor(x) { + return "integer" + } else { + return "float" + } + } + local utf8len = require("utf8").len + local tconcat, tunpack = table.concat, _G.unpack + local ssub = string.sub + local type, pcall, pairs, select = type, pcall, pairs, select +} @else { + @if all(not(lua(5.4)), not(lua(5.3))) { + @print "Warning: Lua version not specified, defaulting to Lua5.4" + } + local {pack, unpack} = string + local mtype, utf8len = math.type, utf8.len + local tconcat, tunpack = table.concat, table.unpack + local ssub = string.sub + local type, pcall, pairs, select = type, pcall, pairs, select +} + +//ENCODER +local encode_value //forward declaration + +local fn is_an_array(value) { + local expected = 1 + for k of value { + if k != expected { + return false + } + expected += 1 + } + return true +} + +local encoder_functions = { + ["nil"] = fn { + return pack("B", 0xc0) + }, + ["boolean"] = fn(value) { + if value { + return pack("B", 0xc3) + } else { + return pack("B", 0xc2) + } + }, + ["number"] = fn(value) { + if mtype(value) == "integer" { + if value >= 0 { + if value < 128 { + return pack("B", value) + } elseif value <= 0xff { + return pack("BB", 0xcc, value) + } elseif value <= 0xffff { + return pack(">BI2", 0xcd, value) + } elseif value <= 0xffffffff { + return pack(">BI4", 0xce, value) + } else { + return pack(">BI8", 0xcf, value) + } + } else { + if value >= -32 { + return pack("B", 0xe0 + (value + 32)) + } elseif value >= -128 { + return pack("Bb", 0xd0, value) + } elseif value >= -32768 { + return pack(">Bi2", 0xd1, value) + } elseif value >= -2147483648 { + return pack(">Bi4", 0xd2, value) + } else { + return pack(">Bi8", 0xd3, value) + } + } + } else { + local test = unpack("f", pack("f", value)) + if test == value { //check if we can use float + return pack(">Bf", 0xca, value) + } else { + return pack(">Bd", 0xcb, value) + } + } + }, + ["string"] = fn(value) { + local len = #value + if utf8len(value) { //check if it is a real utf8 string or just byte junk + if len < 32 { + return pack("B", 0xa0 + len) .. value + } elseif len < 256 { + return pack(">Bs1", 0xd9, value) + } elseif len < 65536 { + return pack(">Bs2", 0xda, value) + } else { + return pack(">Bs4", 0xdb, value) + } + } else { //encode it as byte-junk :) + if len < 256 { + return pack(">Bs1", 0xc4, value) + } elseif len < 65536 { + return pack(">Bs2", 0xc5, value) + } else { + return pack(">Bs4", 0xc6, value) + } + } + }, + ["table"] = fn(value) { + if is_an_array(value) { //it seems to be a proper Lua array + local elements = {} + for i, v of value { + elements[i] = encode_value(v) + } + + local length = #elements + if length < 16 { + return pack(">B", 0x90 + length) .. tconcat(elements) + } elseif length < 65536 { + return pack(">BI2", 0xdc, length) .. tconcat(elements) + } else { + return pack(">BI4", 0xdd, length) .. tconcat(elements) + } + } else { //encode as a map + local elements = {} + for k, v of value { + if type(v) != "function" { + elements[#elements + 1] = encode_value(k) + elements[#elements + 1] = encode_value(v) + } + } + + local length = #elements /_ 2 + if length < 16 { + return pack(">B", 0x80 + length) .. tconcat(elements) + } elseif length < 65536 { + return pack(">BI2", 0xde, length) .. tconcat(elements) + } else { + return pack(">BI4", 0xdf, length) .. tconcat(elements) + } + } + }, + ["function"] = fn { + return pack("B", 0xc0) + } +} + +encode_value = fn(value) { + return encoder_functions[type(value)](value) +} + +local fn encode(...) { + local data = {} + for i = 1, select("#", ...) { + data[#data + 1] = encode_value(select(i, ...)) + } + return tconcat(data) +} + + +//DECODER +local decode_value //forward declaration + +local fn decode_array(data, position, length) { + local elements, value = {} + for i = 1, length { + value, position = decode_value(data, position) + elements[i] = value + } + return elements, position +} + +local fn decode_map(data, position, length) { + local elements, key, value = {} + for i = 1, length { + key, position = decode_value(data, position) + value, position = decode_value(data, position) + elements[key] = value + } + return elements, position +} + +local decoder_functions = { + [0xc0] = fn(data, position) { + return nil, position + }, + [0xc2] = fn(data, position) { + return false, position + }, + [0xc3] = fn(data, position) { + return true, position + }, + [0xc4] = fn(data, position) { + return unpack(">s1", data, position) + }, + [0xc5] = fn(data, position) { + return unpack(">s2", data, position) + }, + [0xc6] = fn(data, position) { + return unpack(">s4", data, position) + }, + [0xca] = fn(data, position) { + return unpack(">f", data, position) + }, + [0xcb] = fn(data, position) { + return unpack(">d", data, position) + }, + [0xcc] = fn(data, position) { + return unpack(">B", data, position) + }, + [0xcd] = fn(data, position) { + return unpack(">I2", data, position) + }, + [0xce] = fn(data, position) { + return unpack(">I4", data, position) + }, + [0xcf] = fn(data, position) { + return unpack(">I8", data, position) + }, + [0xd0] = fn(data, position) { + return unpack(">b", data, position) + }, + [0xd1] = fn(data, position) { + return unpack(">i2", data, position) + }, + [0xd2] = fn(data, position) { + return unpack(">i4", data, position) + }, + [0xd3] = fn(data, position) { + return unpack(">i8", data, position) + }, + [0xd9] = fn(data, position) { + return unpack(">s1", data, position) + }, + [0xda] = fn(data, position) { + return unpack(">s2", data, position) + }, + [0xdb] = fn(data, position) { + return unpack(">s4", data, position) + }, + [0xdc] = fn(data, position) { + local length + length, position = unpack(">I2", data, position) + return decode_array(data, position, length) + }, + [0xdd] = fn(data, position) { + local length + length, position = unpack(">I4", data, position) + return decode_array(data, position, length) + }, + [0xde] = fn(data, position) { + local length + length, position = unpack(">I2", data, position) + return decode_map(data, position, length) + }, + [0xdf] = fn(data, position) { + local length + length, position = unpack(">I4", data, position) + return decode_map(data, position, length) + }, +} + +//add fix-array, fix-map, fix-string, fix-int stuff +for i = 0x00, 0x7f { + decoder_functions[i] = fn(data, position) { + return i, position + } +} +for i = 0x80, 0x8f { + decoder_functions[i] = fn(data, position) { + return decode_map(data, position, i - 0x80) + } +} +for i = 0x90, 0x9f { + decoder_functions[i] = fn(data, position) { + return decode_array(data, position, i - 0x90) + } +} +for i = 0xa0, 0xbf { + decoder_functions[i] = fn(data, position) { + local length = i - 0xa0 + return ssub(data, position, position + length - 1), position + length + } +} +for i = 0xe0, 0xff { + decoder_functions[i] = fn(data, position) { + return -32 + (i - 0xe0), position + } +} + +decode_value = fn(data, position) { + local byte, value + byte, position = unpack("B", data, position) + value, position = decoder_functions[byte](data, position) + return value, position +} + +//INTERFACE +return { + _AUTHOR = "Felice D'Angelo ", + _VERSION = "0.2.1", + + //primary encode function + encode = fn(...) { + local data, ok = {} + for i = 1, select("#", ...) { + ok, data[i] = pcall(encode_value, select(i, ...)) + if !ok { + return nil, "cannot encode MessagePack" + } + } + return tconcat(data) + }, + + //encode just one value + encode_one = fn(value) { + local ok, data = pcall(encode_value, value) + if ok { + return data + } else { + return nil, "cannot encode MessagePack" + } + }, + + //primary decode function + decode = fn(data, position) { + local values, value, ok = {} + position ||= 1 + while position <= #data { + ok, value, position = pcall(decode_value, data, position) + if ok { + values[#values + 1] = value + } else { + return nil, "cannot decode MessagePack" + } + } + return tunpack(values) + }, + + //decode just one value + decode_one = fn(data, position) { + local value, ok + ok, value, position = pcall(decode_value, data, position || 1) + if ok { + return value, position + } else { + return nil, "cannot decode MessagePack" + } + }, +} diff --git a/samples/Clue/player.clue b/samples/Clue/player.clue new file mode 100644 index 0000000000..459c49c35e --- /dev/null +++ b/samples/Clue/player.clue @@ -0,0 +1,162 @@ +static commands +static offset = 0 +static pointer = 1 + +local utf8 = require("utf8") +local terminal = import("terminal") + +local exiting = false +local beep = love.audio.newSource("assets/beep.ogg", "static") +local key_press = love.audio.newSource("assets/key.ogg", "static") + +commands = { + exit = { + desc = "Quit the game." + code = fn { + if exiting { + love.event.quit() + } else { + exiting = true + terminal::write("Are you sure?", nil, 1, 0, 0) + terminal::write("(Type 'exit' again to confirm)") + } + } + } + help = { + desc = "Display this message." + code = fn { + terminal::write("List of currently available commands:") + for k, v of commands { + terminal::write(string.format("%s - %s", k::upper(), v.desc)) + } + local game_commands = getmetatable(commands)?.__index + if game_commands { + for k, v of game_commands { + terminal::write(string.format("%s - %s", k::upper(), v.desc)) + } + } + } + } + fps = { + desc = "Display the game's FPS." + code = fn { + local fps = love.timer.getFPS() + terminal::write("FPS: " .. tostring(fps), 30, (1 - fps / 60) * 2, fps / 60, 0) + } + } + memory = { + desc = "Display the amount of memory in use." + code = fn { + terminal::write(string.format("Used memory: %dkb", collectgarbage("count"))) + } + } + clear = { + desc = "Clears the terminal." + code = fn { + for k, _ in terminal { + terminal[k] = nil + } + love.wheelmoved(0, 0) + collectgarbage("collect") + } + } + guide = { + desc = "Explains how to play the game." + code = fn { + terminal::write("Welcome to IP Please!") + terminal::write("You are the admin of a private server.") + terminal::write("Many people want to join, your job is to let them in.") + terminal::write("(Type 'allow' to let a user in)") + terminal::write("Hackers may try to infiltrate, do not let them in.") + terminal::write("(Type 'deny' to not let a user in)") + terminal::write("Hackers will use older entry codes that are no longer valid.") + terminal::write("Valid codes change every 30 seconds.") + terminal::write("(Type 'codes' to get a list of currently valid codes.)") + terminal::write("Trolls will try to join with high ages (80+), deny them.") + terminal::write("Also, deny anyone younger than 14.") + terminal::write("Lastly, the server may glitch, you have to prevent that.") + terminal::write("To do that, deny any user with a number above 255 in their IP.") + terminal::write("Allowing and denying users correctly will grant you points.") + terminal::write("(The faster you are the more points you get)") + terminal::write("Messing up may lead to the end of the server.") + terminal::write("Good luck, and thanks for playing!", 60, 1, 1, 0) + terminal::write("(Type 'start' to begin)") + } + } + start = { + desc = "Starts the game." + code = fn { + beep::play() + leveltime = 0 + terminal::write("Starting server...", 5) + terminal::write("Done!") + terminal::write("Reading first user's information...", 15) + commands.start = nil + commands.restart = nil + setmetatable(commands, { + __index = import("game") + }) + commands.user.code(3) + } + } +} + +method love.keypressed(key, _, isrepeat) { + if hacked { + return + } + if !isrepeat { + key_press::seek(0) + key_press::play() + } + love.wheelmoved(0, -math.huge) + if terminal::finished() { + local input = terminal.input[1]::gsub("%s+", "") + match key { + "up" if pointer < #terminal.input => { + pointer += 1 + terminal.input[1] = terminal.input[pointer] + } + "down" if pointer > 1 => { + pointer -= 1 + terminal.input[1] = terminal.input[pointer] + } + "backspace" => { + local byteoffset = utf8.offset(input, -1) + if byteoffset { + terminal.input[1] = $::sub(1, byteoffset - 1) + } + } + "return" => { + pointer = 1 + if input == "" { + terminal.input[1] = "" + return + } + local command = commands[input::lower()]?.code + if command { + command() + } else { + terminal::write(input .. ": command not found", nil, 1, 0, 0) + } + if input != "exit" { + exiting = false + } + table.insert(terminal.input, 1, "") + } + } + } +} + +method love.textinput(t) { + terminal.input[1] ..= t + love.wheelmoved(0, -math.huge) +} + +method love.wheelmoved(_, y) { + if hackamount < 0.5 { + return + } + local terminal_size = -(((#terminal - #terminal.unfinished) + 1) * fontheight - screenheight) + offset = math.min(math.max($ + y * fontheight, math.min(terminal_size, 0)), 0) +} \ No newline at end of file diff --git a/samples/Clue/terminal.clue b/samples/Clue/terminal.clue new file mode 100644 index 0000000000..7ec9333725 --- /dev/null +++ b/samples/Clue/terminal.clue @@ -0,0 +1,77 @@ +static errors = 0 + +local utf8 = require("utf8") + +local error = love.audio.newSource("assets/error.ogg", "static") + +return { + input = {""} + unfinished = {} + write = fn(self, text, speed = 120, r = 0.125490196, g = 0.760784314, b = 0.054901961) { + local text = { + progress = 0 + speed = $ + text = $ + r = $ + g = $ + b = $ + } + table.insert(self, text) + table.insert(self.unfinished, text) + } + corrupt = fn(self) { + if !error::isPlaying() && errors > 0 { + error::play() + errors -= 1 + } + local y = 5 + offset - fontheight + for _, line in self { + y += fontheight + if y < -fontheight || y > screenheight + fontheight { + continue + } + local len = utf8.len(line.text) + local i = love.math.random(len) + local corrupted = "" + for p, c with utf8.codes(line.text) { + corrupted ..= p == i || p == love.math.random(len) + ? (hackamount > 0.00005 + ? string.char(love.math.random(33, 122)) + : " ") + : utf8.char(c) + } + line.text = corrupted + line.r = love.math.random() + line.g = love.math.random() + line.b = love.math.random() + } + } + finished = fn(self) { + return #self.unfinished == 0 + } + draw = fn(self) { + local y = 5 + offset - fontheight + for i, line in self { + y += fontheight + if y < -fontheight || y > screenheight + fontheight { + continue + } + local {progress, text, r, g, b} = line + love.graphics.setColor(r, g, b) + if !progress { + love.graphics.print(text, 5, y) + } elseif progress > 0 { + local toprint = "" + local progress = math.ceil(progress) + for p, c with utf8.codes(text) { + toprint ..= utf8.char(c) + if p >= progress { + break + } + } + love.graphics.print(toprint .. "▇", 5, y) + } + } + return y + fontheight + } +} \ No newline at end of file diff --git a/samples/Daslang/ecs.das b/samples/Daslang/ecs.das new file mode 100644 index 0000000000..6937090b11 --- /dev/null +++ b/samples/Daslang/ecs.das @@ -0,0 +1,233 @@ +options indenting = 2 + +options no_unused_block_arguments = false +options no_unused_function_arguments = false +options multiple_contexts +options strict_smart_pointers = true + +struct EntityId { + id: uint; +} + +let INVALID_ENTITY_ID = EntityId(id=0xFFFFFFFFu); + +def operator == (a: EntityId; b: EntityId): bool { + return a.id == b.id; +} + +def operator != (a: EntityId; b: EntityId): bool { + return a.id != b.id; +} + +struct Position { + x: float; + y: float; +} + +struct Velocity { + dx: float; + dy: float; +} + +struct Health { + current: int; + max: int; +} + +let MAX_ENTITIES = 10; +var entity_id_counter: uint = 0u; +var active_entities: int = 0; + +var positions: array; +var velocities: array; +var healths: array; + +var has_position: array; +var has_velocity: array; +var has_health: array; + +def create_entity(): EntityId { + if (active_entities < MAX_ENTITIES) { + let new_id = entity_id_counter; + entity_id_counter++; + var eid = EntityId(id=new_id); + let index = int(eid.id); + + if (index >= length(has_position)) { + let new_size = index + 1; + if (length(positions) < new_size) resize(positions, new_size); + if (length(velocities) < new_size) resize(velocities, new_size); + if (length(healths) < new_size) resize(healths, new_size); + if (length(has_position) < new_size) resize(has_position, new_size); + if (length(has_velocity) < new_size) resize(has_velocity, new_size); + if (length(has_health) < new_size) resize(has_health, new_size); + } + + has_position[index] = false; + has_velocity[index] = false; + has_health[index] = false; + active_entities++; + return eid; + } else { + return EntityId(id=INVALID_ENTITY_ID.id); + } +} + +def add_position_component(eid: EntityId; comp: Position) { + if (eid != INVALID_ENTITY_ID && eid.id < entity_id_counter) { + let index = int(eid.id); + positions[index] = comp; + has_position[index] = true; + } +} + +def add_velocity_component(eid: EntityId; comp: Velocity) { + if (eid != INVALID_ENTITY_ID && eid.id < entity_id_counter) { + let index = int(eid.id); + velocities[index] = comp; + has_velocity[index] = true; + } +} + +def add_health_component(eid: EntityId; comp: Health) { + if (eid != INVALID_ENTITY_ID && eid.id < entity_id_counter) { + let index = int(eid.id); + healths[index] = comp; + has_health[index] = true; + } +} + +def remove_position_component(eid: EntityId) { + if (eid != INVALID_ENTITY_ID && eid.id < entity_id_counter) { + has_position[int(eid.id)] = false; + } +} + +def remove_velocity_component(eid: EntityId) { + if (eid != INVALID_ENTITY_ID && eid.id < entity_id_counter) { + has_velocity[int(eid.id)] = false; + } +} + +def remove_health_component(eid: EntityId) { + if (eid != INVALID_ENTITY_ID && eid.id < entity_id_counter) { + has_health[int(eid.id)] = false; + } +} + +def movement_system(dt: float) { + unsafe { + for (i_idx in range(0, int(entity_id_counter))) { + if (has_position[i_idx] && has_velocity[i_idx]) { + var pos: Position& = positions[i_idx]; + let vel: Velocity& = velocities[i_idx]; + pos.x += vel.dx * dt; + pos.y += vel.dy * dt; + } + } + } +} + +def damage_system(damage_amount: int) { + unsafe { + for (i_idx in range(0, int(entity_id_counter))) { + if (has_health[i_idx] && has_velocity[i_idx]) { + var hp: Health& = healths[i_idx]; + hp.current -= damage_amount; + if (hp.current < 0) { + hp.current = 0; + } + } + } + } +} + +def cleanup_system() { + unsafe { + for (i_idx in range(0, int(entity_id_counter))) { + if (has_health[i_idx]) { + let hp: Health& = healths[i_idx]; + if (hp.current <= 0) { + let current_eid = EntityId(id=uint(i_idx)); + print("Entity {current_eid.id} has run out of health. Removing components.\n"); + remove_position_component(current_eid); + remove_velocity_component(current_eid); + remove_health_component(current_eid); + } + } + } + } +} + +def print_entity_status_system() { + unsafe { + for (i_idx in range(0, int(entity_id_counter))) { + let current_eid = EntityId(id=uint(i_idx)); + var status_string = "Entity {current_eid.id}:"; + var has_any_component_for_this_id = false; + + if (i_idx < length(has_position) && has_position[i_idx]) { + let pos: Position& = positions[i_idx]; + status_string += " Pos({pos.x},{pos.y})"; + has_any_component_for_this_id = true; + } + if (i_idx < length(has_velocity) && has_velocity[i_idx]) { + let vel: Velocity& = velocities[i_idx]; + status_string += " Vel({vel.dx},{vel.dy})"; + has_any_component_for_this_id = true; + } + if (i_idx < length(has_health) && has_health[i_idx]) { + let hp: Health& = healths[i_idx]; + status_string += " HP({hp.current}/{hp.max})"; + has_any_component_for_this_id = true; + } + + if (has_any_component_for_this_id) { + print("{status_string}\n"); + } + } + } +} + +[export] +def main() { + let e1 = create_entity(); + if (e1 != INVALID_ENTITY_ID) { + add_position_component(e1, Position(x=0.0, y=0.0)); + add_velocity_component(e1, Velocity(dx=1.0, dy=0.5)); + add_health_component(e1, Health(current=100, max=100)); + } + + let e2 = create_entity(); + if (e2 != INVALID_ENTITY_ID) { + add_position_component(e2, Position(x=10.0, y=5.0)); + add_health_component(e2, Health(current=50, max=50)); + } + + let e3 = create_entity(); + if (e3 != INVALID_ENTITY_ID) { + add_position_component(e3, Position(x=-5.0, y=-5.0)); + add_velocity_component(e3, Velocity(dx=-0.2, dy=1.0)); + add_health_component(e3, Health(current=75, max=75)); + } + + let time_step = 1.0; + let base_damage = 30; + + for (i_step in range(0, 5)) { + print("--- Simulation Step {i_step} ---\n"); + movement_system(time_step); + damage_system(base_damage); + cleanup_system(); + print_entity_status_system(); + if (i_step == 1) { + let e4 = create_entity(); + if (e4 != INVALID_ENTITY_ID) { + print("Adding new entity e4 (id {e4.id}) at step {i_step}\n"); + add_position_component(e4, Position(x=2.0, y=2.0)); + add_velocity_component(e4, Velocity(dx=0.1, dy=-0.1)); + add_health_component(e4, Health(current=120, max=120)); + } + } + } +} \ No newline at end of file diff --git a/samples/Daslang/terrain.das b/samples/Daslang/terrain.das new file mode 100644 index 0000000000..2628401f99 --- /dev/null +++ b/samples/Daslang/terrain.das @@ -0,0 +1,144 @@ +require math + +struct HeightMap { + width: int + height: int + data: array +} + +def simple_noise(x, y: float): float { + let ix = int(x) + let iy = int(y) + let fx = x - float(ix) + let fy = y - float(iy) + + let hash = (ix * 73856093) ^ (iy * 19349663) + let noise = float(hash % 1000) / 500.0f - 1.0f + + return noise * fx * fy +} + +def generate_terrain(width, height: int) { + var heightmap = HeightMap(width = width, height = height) + heightmap.data |> resize(width * height) + + for (y in range(height)) { + for (x in range(width)) { + let fx = float(x) * 0.1f + let fy = float(y) * 0.1f + + var height_value = 0.0f + height_value += simple_noise(fx, fy) * 50.0f + height_value += simple_noise(fx * 2.0f, fy * 2.0f) * 25.0f + height_value += simple_noise(fx * 4.0f, fy * 4.0f) * 12.5f + + heightmap.data[y * width + x] = height_value + } + } + + return <- heightmap +} + +def smooth_terrain(var heightmap: HeightMap) { + var temp_data: array + temp_data |> resize(length(heightmap.data)) + + for (y in range(1, heightmap.height - 1)) { + for (x in range(1, heightmap.width - 1)) { + let idx = y * heightmap.width + x + var sum = 0.0f + + for (dy in range(-1, 2)) { + for (dx in range(-1, 2)) { + let neighbor_idx = (y + dy) * heightmap.width + (x + dx) + sum += heightmap.data[neighbor_idx] + } + } + + temp_data[idx] = sum / 9.0f + } + } + + for (i in range(length(heightmap.data))) { + heightmap.data[i] = temp_data[i] + } +} + +def get_height(heightmap: HeightMap; x, y: int): float { + if (x >= 0 && x < heightmap.width && y >= 0 && y < heightmap.height) { + return heightmap.data[y * heightmap.width + x] + } + return 0.0f +} + +def find_spawn_location(heightmap: HeightMap): int2 { + for (y in range(heightmap.height)) { + for (x in range(heightmap.width)) { + let h = get_height(heightmap, x, y) + if (h > 5.0f && h < 30.0f) { + return int2(x, y) + } + } + } + + return int2(heightmap.width / 2, heightmap.height / 2) +} + +def calculate_slope(heightmap: HeightMap; x, y: int): float { + let center = get_height(heightmap, x, y) + let right = get_height(heightmap, x + 1, y) + let down = get_height(heightmap, x, y + 1) + + let dx = right - center + let dy = down - center + + return sqrt(dx * dx + dy * dy) +} + +def print_terrain_section(heightmap: HeightMap; start_x, start_y, size: int) { + print("Terrain heights:\n") + for (y in range(start_y, start_y + size)) { + var line = "" + for (x in range(start_x, start_x + size)) { + let h = get_height(heightmap, x, y) + if (h < 0.0f) { + line += "~ " + } elif (h < 10.0f) { + line += ". " + } elif (h < 30.0f) { + line += "^ " + } else { + line += "# " + } + } + print(line) + } +} + +[export] +def main() { + print("Generating 32x32 terrain\n") + + var terrain <- generate_terrain(32, 32) + + print("Smoothing terrain...\n") + smooth_terrain(terrain) + + let spawn = find_spawn_location(terrain) + let spawn_height = get_height(terrain, spawn.x, spawn.y) + print("Spawn location: {spawn.x}, {spawn.y} at height {spawn_height}\n") + + print_terrain_section(terrain, 10, 10, 12) + + print("\nSlope analysis around spawn:\n") + for (dy in range(-2, 3)) { + for (dx in range(-2, 3)) { + let x = spawn.x + dx + let y = spawn.y + dy + let slope = calculate_slope(terrain, x, y) + if (slope > 15.0f) { + print("Steep slope at {x}, {y}: {slope}\n") + } + } + } +} \ No newline at end of file diff --git a/samples/GDShader/dissolve.gdshader b/samples/GDShader/dissolve.gdshader new file mode 100644 index 0000000000..9fbea6ebc7 --- /dev/null +++ b/samples/GDShader/dissolve.gdshader @@ -0,0 +1,24 @@ +// Taken from https://github.com/gdquest-demos/godot-shaders/blob/main/godot/Shaders/dissolve.gdshader + +shader_type spatial; +render_mode depth_prepass_alpha, cull_disabled; + +uniform vec4 albedo : source_color; +uniform sampler2D texture_albedo : source_color; + +uniform vec4 emission_color : source_color = vec4(1); +uniform float emission_amount; + +uniform sampler2D dissolve_texture; +uniform float burn_size : hint_range(0, 2); +uniform float dissolve_amount : hint_range(0, 1); + +void fragment() { + vec4 albedo_tex = texture(texture_albedo, UV); + ALBEDO = albedo.rgb * albedo_tex.rgb; + + float sample = texture(dissolve_texture, UV).r; + float emission_value = 1.0 - smoothstep(dissolve_amount, dissolve_amount + burn_size, sample); + EMISSION = vec3(emission_value * emission_amount * emission_color.rgb); + ALPHA = smoothstep(dissolve_amount - burn_size, dissolve_amount, sample); +} \ No newline at end of file diff --git a/samples/GDShader/first_shader.gdshader b/samples/GDShader/first_shader.gdshader new file mode 100644 index 0000000000..e77708f63f --- /dev/null +++ b/samples/GDShader/first_shader.gdshader @@ -0,0 +1,20 @@ +// Taken directly from Godot Engine documentation +// https://docs.godotengine.org/en/stable/tutorials/shaders/your_first_shader/your_first_3d_shader.html + +shader_type spatial; + +uniform float height_scale = 0.5; +uniform sampler2D noise; +uniform sampler2D normalmap; + +varying vec2 tex_position; + +void vertex() { + tex_position = VERTEX.xz / 2.0 + 0.5; + float height = texture(noise, tex_position).x; + VERTEX.y += height * height_scale; +} + +void fragment() { + NORMAL_MAP = texture(normalmap, tex_position).xyz; +} \ No newline at end of file diff --git a/samples/GDShader/gaussian_blur.gdshader b/samples/GDShader/gaussian_blur.gdshader new file mode 100644 index 0000000000..411028595a --- /dev/null +++ b/samples/GDShader/gaussian_blur.gdshader @@ -0,0 +1,30 @@ +// Taken from https://github.com/gdquest-demos/godot-shaders/blob/main/godot/Shaders/gaussian_blur.gdshader + +shader_type canvas_item; + +uniform vec2 blur_scale = vec2(1, 0); + +const float SAMPLES = 71.0; +const float TAU = 6.283185307179586476925286766559; + +float gaussian(float x) { + float x_squared = x * x; + float width = 1.0 / sqrt(TAU * SAMPLES); + + return width * exp((x_squared / (2.0 * SAMPLES)) * -1.0); +} + +void fragment() { + vec2 scale = TEXTURE_PIXEL_SIZE * blur_scale; + + float total_weight = 0.0; + vec4 color = vec4(0.0); + + for (int i = -int(SAMPLES) / 2; i < int(SAMPLES) / 2; ++i) { + float weight = gaussian(float(i)); + color += texture(TEXTURE, UV + scale * vec2(float(i))) * weight; + total_weight += weight; + } + + COLOR = color / total_weight; +} \ No newline at end of file diff --git a/samples/GDShader/include.gdshaderinc b/samples/GDShader/include.gdshaderinc new file mode 100644 index 0000000000..b07a60748c --- /dev/null +++ b/samples/GDShader/include.gdshaderinc @@ -0,0 +1,10 @@ +// Taken directly from Godot Engine documentation +// https://docs.godotengine.org/en/stable/tutorials/shaders/shader_reference/shader_preprocessor.html + +// fancy_color.gdshaderinc + +// While technically allowed, there is usually no `shader_type` declaration in include files. + +vec3 get_fancy_color() { + return vec3(0.3, 0.6, 0.9); +} \ No newline at end of file diff --git a/samples/GDShader/stylized_grass.gdshader b/samples/GDShader/stylized_grass.gdshader new file mode 100644 index 0000000000..998db9579b --- /dev/null +++ b/samples/GDShader/stylized_grass.gdshader @@ -0,0 +1,79 @@ +// Shader from https://godotshaders.com/shader/stylized-grass-with-wind-and-deformation/ +shader_type spatial; +render_mode cull_disabled, unshaded; + +uniform float wind_speed = 0.2; +uniform float wind_strength = 2.0; +// How big, in world space, is the noise texture +// wind will tile every wind_texture_tile_size +uniform float wind_texture_tile_size = 20.0; +uniform float wind_vertical_strength = 0.3; +uniform vec2 wind_horizontal_direction = vec2(1.0,0.5); + +uniform sampler2D color_ramp : hint_black_albedo; +// we need a tiling noise here! +uniform sampler2D wind_noise : hint_black; + +uniform vec3 character_position; +uniform float character_radius = 3.0; +uniform sampler2D character_distance_falloff_curve : hint_black_albedo; +uniform float character_push_strength = 1.0; + +varying float debug_wind; + +void vertex() { + + vec3 world_vert = (WORLD_MATRIX * vec4(VERTEX, 1.0)).xyz; + + vec2 normalized_wind_direction = normalize(wind_horizontal_direction); + vec2 world_uv = world_vert.xz / wind_texture_tile_size + normalized_wind_direction * TIME * wind_speed; + // we displace only the top part of the mesh + // note that this means that the mesh needs to have UV in a way that the bottom of UV space + // is at the top of the mesh + float displacement_affect = (1.0 - UV.y); + float wind_noise_intensity = (textureLod(wind_noise, world_uv , 0.0).r - 0.5); + + // We convert the direction of the wind into vertex space from world space + // if we used it directly in vertex space, rotated blades of grass wouldn't behave properly + vec2 vert_space_horizontal_dir = (inverse(WORLD_MATRIX) * vec4(wind_horizontal_direction, 0.0,0.0)).xy; + vert_space_horizontal_dir = normalize(vert_space_horizontal_dir); + + vec3 bump_wind = vec3( + wind_noise_intensity * vert_space_horizontal_dir.x, + 1.0 - wind_noise_intensity, + wind_noise_intensity * vert_space_horizontal_dir.y + ); + normalize(bump_wind); + bump_wind *= vec3( + wind_strength, + wind_vertical_strength, + wind_strength + ); + VERTEX += bump_wind * displacement_affect; + + // At the moment the blades are pushed away in a perfectly circular manner. + // We could distort the distance to the character based on a noise, to break a bit the + // circular shape. We could distort the falloff by sampling in a noise based on the xz coordinates. + // The task is left to the reader + + vec3 dir_to_character = character_position - WORLD_MATRIX[3].xyz; + // uncomment the following line to have a horizontal only character push +// dir_to_character.y = 0.0; + float distance_to_character = length(dir_to_character); + float falloff = 1.0 - smoothstep(0.0, 1.0, distance_to_character/character_radius); + // Because we operate in vertex space, we need to convert the direction to the character + // in vertex space. Otherwise, it wouldn't work for rotated blades of grass. + // comment the next line to observe how the blades are not all facing away from the character. + dir_to_character = (inverse(WORLD_MATRIX) * vec4(dir_to_character, 0.0)).xyz; + dir_to_character = normalize(dir_to_character); + + // sample the curve based on how far we are from the character, in normalized coordinates + float falloff_curve = texture(character_distance_falloff_curve, vec2(falloff)).x; + // direction to character is inverted because we want to point away from it + VERTEX += normalize(-dir_to_character) * falloff_curve * character_push_strength * displacement_affect; + +} + +void fragment() { + ALBEDO = texture(color_ramp, vec2(1.0 - UV.y, 0)).rgb ; +} \ No newline at end of file diff --git a/samples/GDShader/toon_water.gdshader b/samples/GDShader/toon_water.gdshader new file mode 100644 index 0000000000..b2f656db38 --- /dev/null +++ b/samples/GDShader/toon_water.gdshader @@ -0,0 +1,199 @@ +// Original shader - https://godotshaders.com/shader/wind-waker-water-no-textures-needed/ +// Wind Waker style water - NekotoArts +// Adapted from https://www.shadertoy.com/view/3tKBDz +// After which I added in some fractal Brownian motion +// as well as vertex displacement + +shader_type spatial; + +uniform vec4 WATER_COL : hint_color = vec4(0.04, 0.38, 0.88, 1.0); +uniform vec4 WATER2_COL : hint_color = vec4(0.04, 0.35, 0.78, 1.0); +uniform vec4 FOAM_COL : hint_color = vec4(0.8125, 0.9609, 0.9648, 1.0); +uniform float distortion_speed = 2.0; +uniform vec2 tile = vec2(5.0, 5.0); +uniform float height = 2.0; +uniform vec2 wave_size = vec2(2.0, 2.0); +uniform float wave_speed = 1.5; + +const float M_2PI = 6.283185307; +const float M_6PI = 18.84955592; + +float random(vec2 uv) { + return fract(sin(dot(uv.xy, + vec2(12.9898,78.233))) * + 43758.5453123); +} + +float noise(vec2 uv) { + vec2 uv_index = floor(uv); + vec2 uv_fract = fract(uv); + + // Four corners in 2D of a tile + float a = random(uv_index); + float b = random(uv_index + vec2(1.0, 0.0)); + float c = random(uv_index + vec2(0.0, 1.0)); + float d = random(uv_index + vec2(1.0, 1.0)); + + vec2 blur = smoothstep(0.0, 1.0, uv_fract); + + return mix(a, b, blur.x) + + (c - a) * blur.y * (1.0 - blur.x) + + (d - b) * blur.x * blur.y; +} + +float fbm(vec2 uv) { + int octaves = 6; + float amplitude = 0.5; + float frequency = 3.0; + float value = 0.0; + + for(int i = 0; i < octaves; i++) { + value += amplitude * noise(frequency * uv); + amplitude *= 0.5; + frequency *= 2.0; + } + return value; +} + +float circ(vec2 pos, vec2 c, float s) +{ + c = abs(pos - c); + c = min(c, 1.0 - c); + + return smoothstep(0.0, 0.002, sqrt(s) - sqrt(dot(c, c))) * -1.0; +} + +// Foam pattern for the water constructed out of a series of circles +float waterlayer(vec2 uv) +{ + uv = mod(uv, 1.0); // Clamp to [0..1] + + float ret = 1.0; + ret += circ(uv, vec2(0.37378, 0.277169), 0.0268181); + ret += circ(uv, vec2(0.0317477, 0.540372), 0.0193742); + ret += circ(uv, vec2(0.430044, 0.882218), 0.0232337); + ret += circ(uv, vec2(0.641033, 0.695106), 0.0117864); + ret += circ(uv, vec2(0.0146398, 0.0791346), 0.0299458); + ret += circ(uv, vec2(0.43871, 0.394445), 0.0289087); + ret += circ(uv, vec2(0.909446, 0.878141), 0.028466); + ret += circ(uv, vec2(0.310149, 0.686637), 0.0128496); + ret += circ(uv, vec2(0.928617, 0.195986), 0.0152041); + ret += circ(uv, vec2(0.0438506, 0.868153), 0.0268601); + ret += circ(uv, vec2(0.308619, 0.194937), 0.00806102); + ret += circ(uv, vec2(0.349922, 0.449714), 0.00928667); + ret += circ(uv, vec2(0.0449556, 0.953415), 0.023126); + ret += circ(uv, vec2(0.117761, 0.503309), 0.0151272); + ret += circ(uv, vec2(0.563517, 0.244991), 0.0292322); + ret += circ(uv, vec2(0.566936, 0.954457), 0.00981141); + ret += circ(uv, vec2(0.0489944, 0.200931), 0.0178746); + ret += circ(uv, vec2(0.569297, 0.624893), 0.0132408); + ret += circ(uv, vec2(0.298347, 0.710972), 0.0114426); + ret += circ(uv, vec2(0.878141, 0.771279), 0.00322719); + ret += circ(uv, vec2(0.150995, 0.376221), 0.00216157); + ret += circ(uv, vec2(0.119673, 0.541984), 0.0124621); + ret += circ(uv, vec2(0.629598, 0.295629), 0.0198736); + ret += circ(uv, vec2(0.334357, 0.266278), 0.0187145); + ret += circ(uv, vec2(0.918044, 0.968163), 0.0182928); + ret += circ(uv, vec2(0.965445, 0.505026), 0.006348); + ret += circ(uv, vec2(0.514847, 0.865444), 0.00623523); + ret += circ(uv, vec2(0.710575, 0.0415131), 0.00322689); + ret += circ(uv, vec2(0.71403, 0.576945), 0.0215641); + ret += circ(uv, vec2(0.748873, 0.413325), 0.0110795); + ret += circ(uv, vec2(0.0623365, 0.896713), 0.0236203); + ret += circ(uv, vec2(0.980482, 0.473849), 0.00573439); + ret += circ(uv, vec2(0.647463, 0.654349), 0.0188713); + ret += circ(uv, vec2(0.651406, 0.981297), 0.00710875); + ret += circ(uv, vec2(0.428928, 0.382426), 0.0298806); + ret += circ(uv, vec2(0.811545, 0.62568), 0.00265539); + ret += circ(uv, vec2(0.400787, 0.74162), 0.00486609); + ret += circ(uv, vec2(0.331283, 0.418536), 0.00598028); + ret += circ(uv, vec2(0.894762, 0.0657997), 0.00760375); + ret += circ(uv, vec2(0.525104, 0.572233), 0.0141796); + ret += circ(uv, vec2(0.431526, 0.911372), 0.0213234); + ret += circ(uv, vec2(0.658212, 0.910553), 0.000741023); + ret += circ(uv, vec2(0.514523, 0.243263), 0.0270685); + ret += circ(uv, vec2(0.0249494, 0.252872), 0.00876653); + ret += circ(uv, vec2(0.502214, 0.47269), 0.0234534); + ret += circ(uv, vec2(0.693271, 0.431469), 0.0246533); + ret += circ(uv, vec2(0.415, 0.884418), 0.0271696); + ret += circ(uv, vec2(0.149073, 0.41204), 0.00497198); + ret += circ(uv, vec2(0.533816, 0.897634), 0.00650833); + ret += circ(uv, vec2(0.0409132, 0.83406), 0.0191398); + ret += circ(uv, vec2(0.638585, 0.646019), 0.0206129); + ret += circ(uv, vec2(0.660342, 0.966541), 0.0053511); + ret += circ(uv, vec2(0.513783, 0.142233), 0.00471653); + ret += circ(uv, vec2(0.124305, 0.644263), 0.00116724); + ret += circ(uv, vec2(0.99871, 0.583864), 0.0107329); + ret += circ(uv, vec2(0.894879, 0.233289), 0.00667092); + ret += circ(uv, vec2(0.246286, 0.682766), 0.00411623); + ret += circ(uv, vec2(0.0761895, 0.16327), 0.0145935); + ret += circ(uv, vec2(0.949386, 0.802936), 0.0100873); + ret += circ(uv, vec2(0.480122, 0.196554), 0.0110185); + ret += circ(uv, vec2(0.896854, 0.803707), 0.013969); + ret += circ(uv, vec2(0.292865, 0.762973), 0.00566413); + ret += circ(uv, vec2(0.0995585, 0.117457), 0.00869407); + ret += circ(uv, vec2(0.377713, 0.00335442), 0.0063147); + ret += circ(uv, vec2(0.506365, 0.531118), 0.0144016); + ret += circ(uv, vec2(0.408806, 0.894771), 0.0243923); + ret += circ(uv, vec2(0.143579, 0.85138), 0.00418529); + ret += circ(uv, vec2(0.0902811, 0.181775), 0.0108896); + ret += circ(uv, vec2(0.780695, 0.394644), 0.00475475); + ret += circ(uv, vec2(0.298036, 0.625531), 0.00325285); + ret += circ(uv, vec2(0.218423, 0.714537), 0.00157212); + ret += circ(uv, vec2(0.658836, 0.159556), 0.00225897); + ret += circ(uv, vec2(0.987324, 0.146545), 0.0288391); + ret += circ(uv, vec2(0.222646, 0.251694), 0.00092276); + ret += circ(uv, vec2(0.159826, 0.528063), 0.00605293); + return max(ret, 0.0); +} + +// Procedural texture generation for the water +vec3 water(vec2 uv, vec3 cdir, float iTime) +{ + uv *= vec2(0.25); + uv += fbm(uv) * 0.2; + + // Parallax height distortion with two directional waves at + // slightly different angles. + vec2 a = 0.025 * cdir.xz / cdir.y; // Parallax offset + float h = sin(uv.x + iTime); // Height at UV + uv += a * h; + h = sin(0.841471 * uv.x - 0.540302 * uv.y + iTime); + uv += a * h; + + // Texture distortion + float d1 = mod(uv.x + uv.y, M_2PI); + float d2 = mod((uv.x + uv.y + 0.25) * 1.3, M_6PI); + d1 = iTime * 0.07 + d1; + d2 = iTime * 0.5 + d2; + vec2 dist = vec2( + sin(d1) * 0.15 + sin(d2) * 0.05, + cos(d1) * 0.15 + cos(d2) * 0.05 + ); + + vec3 ret = mix(WATER_COL.rgb, WATER2_COL.rgb, waterlayer(uv + dist.xy)); + ret = mix(ret, FOAM_COL.rgb, waterlayer(vec2(1.0) - uv - dist.yx)); + return ret; +} + + +void vertex(){ + float time = TIME * wave_speed; + vec2 uv = UV * wave_size; + float d1 = mod(uv.x + uv.y, M_2PI); + float d2 = mod((uv.x + uv.y + 0.25) * 1.3, M_6PI); + d1 = time * 0.07 + d1; + d2 = time * 0.5 + d2; + vec2 dist = vec2( + sin(d1) * 0.15 + sin(d2) * 0.05, + cos(d1) * 0.15 + cos(d2) * 0.05 + ); + VERTEX.y += dist.y * height; +} + +void fragment() +{ + vec2 uv = UV; + + ALBEDO = vec3(water(uv * tile, vec3(0,1,0), TIME * distortion_speed)); +} \ No newline at end of file diff --git a/samples/HIP/MatrixMultiplication.hip b/samples/HIP/MatrixMultiplication.hip new file mode 100644 index 0000000000..ec4534bbdd --- /dev/null +++ b/samples/HIP/MatrixMultiplication.hip @@ -0,0 +1,105 @@ +// MIT License +// +// Original source: +// https://github.com/ROCm/rocm-examples +// Copyright (c) 2022-2023 Advanced Micro Devices, Inc. +// +// Modified and reduced for Linguist sample use by Young-TW +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +#include +#include +#include +#include +#include + +constexpr unsigned int BlockSize = 16; + +__global__ void matrix_multiplication_kernel(const float* A, + const float* B, + float* C, + const unsigned int a_cols) { + unsigned int tx = threadIdx.x; + unsigned int ty = threadIdx.y; + unsigned int bx = blockIdx.x; + unsigned int by = blockIdx.y; + unsigned int b_cols = blockDim.x * gridDim.x; + unsigned int steps = a_cols / BlockSize; + float thread_result = 0.0F; + + for (unsigned int step = 0; step < steps; ++step) + { + __shared__ float a_values[BlockSize][BlockSize]; + __shared__ float b_values[BlockSize][BlockSize]; + + unsigned int a_idx = BlockSize * (a_cols * by + step); + unsigned int b_idx = BlockSize * (b_cols * step + bx); + + a_values[ty][tx] = A[a_idx + a_cols * ty + tx]; + b_values[ty][tx] = B[b_idx + b_cols * ty + tx]; + + __syncthreads(); + + for (unsigned int i = 0; i < BlockSize; ++i) + { + thread_result += a_values[ty][i] * b_values[i][tx]; + } + + __syncthreads(); + } + + unsigned int block_offset = b_cols * BlockSize * by + BlockSize * bx; + C[block_offset + b_cols * ty + tx] = thread_result; +} + +int main() { + constexpr unsigned int a_rows = 256, a_cols = 128, b_cols = 128; + constexpr unsigned int b_rows = a_cols; + constexpr unsigned int c_rows = a_rows, c_cols = b_cols; + const size_t a_bytes = sizeof(float) * a_rows * a_cols; + const size_t b_bytes = sizeof(float) * b_rows * b_cols; + const size_t c_bytes = sizeof(float) * c_rows * c_cols; + + std::vector A(a_rows * a_cols, 1.0f); + std::vector B(b_rows * b_cols, 0.5f); + std::vector C(c_rows * c_cols); + + float *d_A, *d_B, *d_C; + hipMalloc(&d_A, a_bytes); + hipMalloc(&d_B, b_bytes); + hipMalloc(&d_C, c_bytes); + hipMemcpy(d_A, A.data(), a_bytes, hipMemcpyHostToDevice); + hipMemcpy(d_B, B.data(), b_bytes, hipMemcpyHostToDevice); + + dim3 block_dim(BlockSize, BlockSize); + dim3 grid_dim(c_cols / BlockSize, c_rows / BlockSize); + matrix_multiplication_kernel<<>>(d_A, d_B, d_C, a_cols); + hipDeviceSynchronize(); + + hipMemcpy(C.data(), d_C, c_bytes, hipMemcpyDeviceToHost); + + hipFree(d_A); hipFree(d_B); hipFree(d_C); + + if (std::abs(C[0] - a_cols * 0.5f) < 1e-3f) { + std::cout << "Validation passed.\n"; + } else { + std::cout << "Validation failed.\n"; + } +} diff --git a/samples/INI/metrics.frm b/samples/INI/metrics.frm new file mode 100644 index 0000000000..07588eb23d --- /dev/null +++ b/samples/INI/metrics.frm @@ -0,0 +1,15 @@ +TYPE=VIEW +query=(select lower(`performance_schema`.`global_status`.`VARIABLE_NAME`) AS `Variable_name`,`performance_schema`.`global_status`.`VARIABLE_VALUE` AS `Variable_value`,\'Global Status\' AS `Type`,\'YES\' AS `Enabled` from `performance_schema`.`global_status`) union all (select `information_schema`.`INNODB_METRICS`.`NAME` AS `Variable_name`,`information_schema`.`INNODB_METRICS`.`COUNT` AS `Variable_value`,concat(\'InnoDB Metrics - \',`information_schema`.`INNODB_METRICS`.`SUBSYSTEM`) AS `Type`,if((`information_schema`.`INNODB_METRICS`.`STATUS` = \'enabled\'),\'YES\',\'NO\') AS `Enabled` from `information_schema`.`INNODB_METRICS` where (`information_schema`.`INNODB_METRICS`.`NAME` not in (\'lock_row_lock_time\',\'lock_row_lock_time_avg\',\'lock_row_lock_time_max\',\'lock_row_lock_waits\',\'buffer_pool_reads\',\'buffer_pool_read_requests\',\'buffer_pool_write_requests\',\'buffer_pool_wait_free\',\'buffer_pool_read_ahead\',\'buffer_pool_read_ahead_evicted\',\'buffer_pool_pages_total\',\'buffer_pool_pages_misc\',\'buffer_pool_pages_data\',\'buffer_pool_bytes_data\',\'buffer_pool_pages_dirty\',\'buffer_pool_bytes_dirty\',\'buffer_pool_pages_free\',\'buffer_pages_created\',\'buffer_pages_written\',\'buffer_pages_read\',\'buffer_data_reads\',\'buffer_data_written\',\'file_num_open_files\',\'os_log_bytes_written\',\'os_log_fsyncs\',\'os_log_pending_fsyncs\',\'os_log_pending_writes\',\'log_waits\',\'log_write_requests\',\'log_writes\',\'innodb_dblwr_writes\',\'innodb_dblwr_pages_written\',\'innodb_page_size\'))) union all (select \'memory_current_allocated\' AS `Variable_name`,sum(`performance_schema`.`memory_summary_global_by_event_name`.`CURRENT_NUMBER_OF_BYTES_USED`) AS `Variable_value`,\'Performance Schema\' AS `Type`,if(((select count(0) from `performance_schema`.`setup_instruments` where ((`performance_schema`.`setup_instruments`.`NAME` like \'memory/%\') and (`performance_schema`.`setup_instruments`.`ENABLED` = \'YES\'))) = 0),\'NO\',if(((select count(0) from `performance_schema`.`setup_instruments` where ((`performance_schema`.`setup_instruments`.`NAME` like \'memory/%\') and (`performance_schema`.`setup_instruments`.`ENABLED` = \'YES\'))) = (select count(0) from `performance_schema`.`setup_instruments` where (`performance_schema`.`setup_instruments`.`NAME` like \'memory/%\'))),\'YES\',\'PARTIAL\')) AS `Enabled` from `performance_schema`.`memory_summary_global_by_event_name`) union all (select \'memory_total_allocated\' AS `Variable_name`,sum(`performance_schema`.`memory_summary_global_by_event_name`.`SUM_NUMBER_OF_BYTES_ALLOC`) AS `Variable_value`,\'Performance Schema\' AS `Type`,if(((select count(0) from `performance_schema`.`setup_instruments` where ((`performance_schema`.`setup_instruments`.`NAME` like \'memory/%\') and (`performance_schema`.`setup_instruments`.`ENABLED` = \'YES\'))) = 0),\'NO\',if(((select count(0) from `performance_schema`.`setup_instruments` where ((`performance_schema`.`setup_instruments`.`NAME` like \'memory/%\') and (`performance_schema`.`setup_instruments`.`ENABLED` = \'YES\'))) = (select count(0) from `performance_schema`.`setup_instruments` where (`performance_schema`.`setup_instruments`.`NAME` like \'memory/%\'))),\'YES\',\'PARTIAL\')) AS `Enabled` from `performance_schema`.`memory_summary_global_by_event_name`) union all (select \'NOW()\' AS `Variable_name`,now(3) AS `Variable_value`,\'System Time\' AS `Type`,\'YES\' AS `Enabled`) union all (select \'UNIX_TIMESTAMP()\' AS `Variable_name`,round(unix_timestamp(now(3)),3) AS `Variable_value`,\'System Time\' AS `Type`,\'YES\' AS `Enabled`) order by `Type`,`Variable_name` +md5=68a03cdfba4893ad11e38b2bc8f1e1b0 +updatable=0 +algorithm=1 +definer_user=mysql.sys +definer_host=localhost +suid=0 +with_check_option=0 +timestamp=2017-11-09 12:59:13 +create-version=1 +source=( SELECT LOWER(VARIABLE_NAME) AS Variable_name, VARIABLE_VALUE AS Variable_value, \'Global Status\' AS Type, \'YES\' AS Enabled FROM performance_schema.global_status ) UNION ALL ( SELECT NAME AS Variable_name, COUNT AS Variable_value, CONCAT(\'InnoDB Metrics - \', SUBSYSTEM) AS Type, IF(STATUS = \'enabled\', \'YES\', \'NO\') AS Enabled FROM information_schema.INNODB_METRICS WHERE NAME NOT IN ( \'lock_row_lock_time\', \'lock_row_lock_time_avg\', \'lock_row_lock_time_max\', \'lock_row_lock_waits\', \'buffer_pool_reads\', \'buffer_pool_read_requests\', \'buffer_pool_write_requests\', \'buffer_pool_wait_free\', \'buffer_pool_read_ahead\', \'buffer_pool_read_ahead_evicted\', \'buffer_pool_pages_total\', \'buffer_pool_pages_misc\', \'buffer_pool_pages_data\', \'buffer_pool_bytes_data\', \'buffer_pool_pages_dirty\', \'buffer_pool_bytes_dirty\', \'buffer_pool_pages_free\', \'buffer_pages_created\', \'buffer_pages_written\', \'buffer_pages_read\', \'buffer_data_reads\', \'buffer_data_written\', \'file_num_open_files\', \'os_log_bytes_written\', \'os_log_fsyncs\', \'os_log_pending_fsyncs\', \'os_log_pending_writes\', \'log_waits\', \'log_write_requests\', \'log_writes\', \'innodb_dblwr_writes\', \'innodb_dblwr_pages_written\', \'innodb_page_size\') ) UNION ALL ( SELECT \'memory_current_allocated\' AS Variable_name, SUM(CURRENT_NUMBER_OF_BYTES_USED) AS Variable_value, \'Performance Schema\' AS Type, IF((SELECT COUNT(*) FROM performance_schema.setup_instruments WHERE NAME LIKE \'memory/%\' AND ENABLED = \'YES\') = 0, \'NO\', IF((SELECT COUNT(*) FROM performance_schema.setup_instruments WHERE NAME LIKE \'memory/%\' AND ENABLED = \'YES\') = (SELECT COUNT(*) FROM performance_schema.setup_instruments WHERE NAME LIKE \'memory/%\'), \'YES\', \'PARTIAL\')) AS Enabled FROM performance_schema.memory_summary_global_by_event_name ) UNION ALL ( SELECT \'memory_total_allocated\' AS Variable_name, SUM(SUM_NUMBER_OF_BYTES_ALLOC) AS Variable_value, \'Performance Schema\' AS Type, IF((SELECT COUNT(*) FROM performance_schema.setup_instruments WHERE NAME LIKE \'memory/%\' AND ENABLED = \'YES\') = 0, \'NO\', IF((SELECT COUNT(*) FROM performance_schema.setup_instruments WHERE NAME LIKE \'memory/%\' AND ENABLED = \'YES\') = (SELECT COUNT(*) FROM performance_schema.setup_instruments WHERE NAME LIKE \'memory/%\'), \'YES\', \'PARTIAL\')) AS Enabled FROM performance_schema.memory_summary_global_by_event_name ) UNION ALL ( SELECT \'NOW()\' AS Variable_name, NOW(3) AS Variable_value, \'System Time\' AS Type, \'YES\' AS Enabled ) UNION ALL ( SELECT \'UNIX_TIMESTAMP()\' AS Variable_name, ROUND(UNIX_TIMESTAMP(NOW(3)), 3) AS Variable_value, \'System Time\' AS Type, \'YES\' AS Enabled ) ORDER BY Type, Variable_name +client_cs_name=utf8 +connection_cl_name=utf8_general_ci +view_body_utf8=(select lower(`performance_schema`.`global_status`.`VARIABLE_NAME`) AS `Variable_name`,`performance_schema`.`global_status`.`VARIABLE_VALUE` AS `Variable_value`,\'Global Status\' AS `Type`,\'YES\' AS `Enabled` from `performance_schema`.`global_status`) union all (select `information_schema`.`INNODB_METRICS`.`NAME` AS `Variable_name`,`information_schema`.`INNODB_METRICS`.`COUNT` AS `Variable_value`,concat(\'InnoDB Metrics - \',`information_schema`.`INNODB_METRICS`.`SUBSYSTEM`) AS `Type`,if((`information_schema`.`INNODB_METRICS`.`STATUS` = \'enabled\'),\'YES\',\'NO\') AS `Enabled` from `information_schema`.`INNODB_METRICS` where (`information_schema`.`INNODB_METRICS`.`NAME` not in (\'lock_row_lock_time\',\'lock_row_lock_time_avg\',\'lock_row_lock_time_max\',\'lock_row_lock_waits\',\'buffer_pool_reads\',\'buffer_pool_read_requests\',\'buffer_pool_write_requests\',\'buffer_pool_wait_free\',\'buffer_pool_read_ahead\',\'buffer_pool_read_ahead_evicted\',\'buffer_pool_pages_total\',\'buffer_pool_pages_misc\',\'buffer_pool_pages_data\',\'buffer_pool_bytes_data\',\'buffer_pool_pages_dirty\',\'buffer_pool_bytes_dirty\',\'buffer_pool_pages_free\',\'buffer_pages_created\',\'buffer_pages_written\',\'buffer_pages_read\',\'buffer_data_reads\',\'buffer_data_written\',\'file_num_open_files\',\'os_log_bytes_written\',\'os_log_fsyncs\',\'os_log_pending_fsyncs\',\'os_log_pending_writes\',\'log_waits\',\'log_write_requests\',\'log_writes\',\'innodb_dblwr_writes\',\'innodb_dblwr_pages_written\',\'innodb_page_size\'))) union all (select \'memory_current_allocated\' AS `Variable_name`,sum(`performance_schema`.`memory_summary_global_by_event_name`.`CURRENT_NUMBER_OF_BYTES_USED`) AS `Variable_value`,\'Performance Schema\' AS `Type`,if(((select count(0) from `performance_schema`.`setup_instruments` where ((`performance_schema`.`setup_instruments`.`NAME` like \'memory/%\') and (`performance_schema`.`setup_instruments`.`ENABLED` = \'YES\'))) = 0),\'NO\',if(((select count(0) from `performance_schema`.`setup_instruments` where ((`performance_schema`.`setup_instruments`.`NAME` like \'memory/%\') and (`performance_schema`.`setup_instruments`.`ENABLED` = \'YES\'))) = (select count(0) from `performance_schema`.`setup_instruments` where (`performance_schema`.`setup_instruments`.`NAME` like \'memory/%\'))),\'YES\',\'PARTIAL\')) AS `Enabled` from `performance_schema`.`memory_summary_global_by_event_name`) union all (select \'memory_total_allocated\' AS `Variable_name`,sum(`performance_schema`.`memory_summary_global_by_event_name`.`SUM_NUMBER_OF_BYTES_ALLOC`) AS `Variable_value`,\'Performance Schema\' AS `Type`,if(((select count(0) from `performance_schema`.`setup_instruments` where ((`performance_schema`.`setup_instruments`.`NAME` like \'memory/%\') and (`performance_schema`.`setup_instruments`.`ENABLED` = \'YES\'))) = 0),\'NO\',if(((select count(0) from `performance_schema`.`setup_instruments` where ((`performance_schema`.`setup_instruments`.`NAME` like \'memory/%\') and (`performance_schema`.`setup_instruments`.`ENABLED` = \'YES\'))) = (select count(0) from `performance_schema`.`setup_instruments` where (`performance_schema`.`setup_instruments`.`NAME` like \'memory/%\'))),\'YES\',\'PARTIAL\')) AS `Enabled` from `performance_schema`.`memory_summary_global_by_event_name`) union all (select \'NOW()\' AS `Variable_name`,now(3) AS `Variable_value`,\'System Time\' AS `Type`,\'YES\' AS `Enabled`) union all (select \'UNIX_TIMESTAMP()\' AS `Variable_name`,round(unix_timestamp(now(3)),3) AS `Variable_value`,\'System Time\' AS `Type`,\'YES\' AS `Enabled`) order by `Type`,`Variable_name` \ No newline at end of file diff --git a/samples/KiCad Schematic/Regulator_Current.kicad_sym b/samples/KiCad Schematic/Regulator_Current.kicad_sym new file mode 100644 index 0000000000..9213a230ad --- /dev/null +++ b/samples/KiCad Schematic/Regulator_Current.kicad_sym @@ -0,0 +1,208 @@ +(kicad_symbol_lib + (version 20231120) + (generator "kicad_symbol_editor") + (generator_version "8.0") + (symbol "HV100K5-G" + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (property "Reference" "U" + (at -5.08 8.89 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "HV100K5-G" + (at 1.27 8.89 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Package_TO_SOT_SMD:SOT-223-3_TabPin2" + (at 0 -12.7 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "http://ww1.microchip.com/downloads/en/devicedoc/hv100%20b060513.pdf" + (at 8.89 1.27 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Hot-Swap Current Limiter Controller, SOT223" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_keywords" "Hot-Swap Current Limiter" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_fp_filters" "SOT?223*TabPin2*" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (symbol "HV100K5-G_0_1" + (rectangle + (start -5.08 7.62) + (end 5.08 -7.62) + (stroke + (width 0.254) + (type default) + ) + (fill + (type background) + ) + ) + ) + (symbol "HV100K5-G_1_1" + (pin power_in line + (at 0 10.16 270) + (length 2.54) + (name "VPP" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin power_in line + (at 0 -10.16 90) + (length 2.54) + (name "VNN" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin output line + (at 7.62 0 180) + (length 2.54) + (name "GATE" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + ) + (symbol "HV101K5-G" + (extends "HV100K5-G") + (property "Reference" "U" + (at -5.08 8.89 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "HV101K5-G" + (at 1.27 8.89 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Package_TO_SOT_SMD:SOT-223-3_TabPin2" + (at 0 -12.7 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "http://www.supertex.com/pdf/datasheets/HV100.pdf" + (at 8.89 1.27 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Hot-Swap Current Limiter Controller, SOT223" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_keywords" "Hot-Swap Current Limiter" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_fp_filters" "SOT?223*TabPin2*" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + ) +) \ No newline at end of file diff --git a/samples/Koka/community-docs.kk b/samples/Koka/community-docs.kk new file mode 100644 index 0000000000..3bd445c6ec --- /dev/null +++ b/samples/Koka/community-docs.kk @@ -0,0 +1,193 @@ +/* +MIT License + +Copyright (c) 2024 koka-community + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ +fun list/show(l: list, ?show: (a) -> string): string + "[" ++ l.map(show).join(", ") ++ "]" + +fun tuple/show(l: (a,b), ?a/show: (a) -> string, ?b/show: (b) -> string): string + match l + (a, b) -> "(" ++ a.show ++ ", " ++ b.show ++ ")" + +// A special show for characters +// When resolving an implicit parameter `?show` the +// `chars/show` will be preferred over `list/show` as the chain is shorter +fun chars/show( cs : list ) : string + "\"" ++ cs.map(string).join ++ "\"" + +l2.show +// will be inferred as +l2.list/show(?show=fn(l) l.list/show(?show=int/show)) +// with all of the implicit parameters eta expanded and filled in explicitly. + +fun nl/show(l: list, ?show: (a) -> string): string + l.map(show).join("\n") + +fun padded/show(i: int): string + if i < 10 then "0" ++ i.show else i.show + +value struct paddedlist {inner : list} +fun padded/show(pl: paddedlist): string + pl.inner.show(?show=padded/show) + +named effect file + fun read-line() : string // `:(file) -> a` +// a (named) handler instance for files +fun file(fname, action) + var content := read-text-file(fname.path).lines + with f <- named handler + fun read-line() + match content + Nil -> "" + Cons(x,xx) -> { content := xx; x } + action(f) +pub fun main() + with f1 <- file("package.yaml") + with f2 <- file("stack.yaml") + println( f1.read-line() ++ "\n" ++ f2.read-line() ) + +fun wrong-escape1() + with f <- file("stack.yaml") + f +pub fun test() + val f = wrong-escape1() + f.read-line.println + +named scoped effect file + fun read-line() : string // `: (f : file) -> scope string` +// a handler instance for files +fun file2(fname : string, action : forall file -> |e> a ) : e a + var i := 0 + with f <- named handler + fun read-line() + i := i + 1 + (fname ++ ": line " ++ i.show) + action(f) + +open type mytype + Constr1(a: int) + Constr2(b: string) + +extend type mytype + Constr3(c: float64) + +alias i-to-s = int -> string +alias i-to-s-e = int -> e string + +alias pure = +alias st = ,read,write> + +fun sum(xs: list): int + match xs + Nil -> 0 + Cons(x, xs) -> x + sum(xs) + +// BEGIN:sum-first-two +fun sum-first-two(xs: list): list + match xs + Cons(x, tail as Cons(y, _)) -> Cons(x + y, tail) + xs' -> xs' +// END:sum-first-two + +// BEGIN:gather-positives +fun gather-positives(xs: list): list + match xs + Nil -> Nil + Cons(x, xs) | x > 0 -> Cons(x, gather-positives(xs)) + Cons(_, xs) -> gather-positives(xs) +// END:gather-positives + +// BEGIN:sum-first-two2 +fun sum-first-two2(xs: list): list + match xs + Cons(x, tail as Cons(y, _)) -> Cons(x + y, tail) + xs' -> xs' +// END:sum-first-two2 + +// BEGIN:gather-positives2 +fun gather-positives2(xs: list): list + match xs + Nil -> Nil + Cons(x, xs) | x > 0 -> Cons(x, gather-positives2(xs)) + Cons(_, xs) -> gather-positives2(xs) +// END:gather-positives2 + +pub effect fail + final ctl fail(info: b) : a + +linear effect pretty + val indentation: int + fun print(s: string): () + +extern sizeofint(): int32 + c inline "sizeof(int)" + js inline "4" + +extern add(x: int32, y: int32): int32 + c inline "($1 + $2)" + js inline "$1 + $2" + +extern add2(x: int32, y: int32): int32 + c "add" + js "add" + +extern kk_add(x: int32, y: int32): int32 + c "kk_add" + js "kk_add" + +extern import + c file "my_file.h" + js file "my_file.js" + +extern import + c file "my_file" + +extern kk_closure(f: () -> int32): int32 + c "kk_closure" + +type tree + Tip + Bin( left: tree, value : int, right: tree ) + +fbip fun tmap-inorder( t : tree, f : int -> int ) : tree + match t + Bin(l,x,r) -> Bin( l.tmap-inorder(f), f(x), r.tmap-inorder(f) ) + Tip -> Tip + +type visitor + Done + BinR( right:tree, value : int, visit : visitor ) + BinL( left:tree, value : int, visit : visitor ) + +type direction + Up + Down + +fip fun tmap( f : int -> int, t : tree, visit : visitor, d : direction ) + match d + Down -> match t // going down a left spine + Bin(l,x,r) -> tmap(f,l,BinR(r,x,visit),Down) // A + Tip -> tmap(f,Tip,visit,Up) // B + Up -> match visit // go up through the visitor + Done -> t // C + BinR(r,x,v) -> tmap(f,r,BinL(t,f(x),v),Down) // D + BinL(l,x,v) -> tmap(f,Bin(l,x,t),v,Up) // E \ No newline at end of file diff --git a/samples/Koka/official-tutorial1.kk b/samples/Koka/official-tutorial1.kk new file mode 100644 index 0000000000..d813bb0f50 --- /dev/null +++ b/samples/Koka/official-tutorial1.kk @@ -0,0 +1,282 @@ +/*---------------------------------------------------------------------------- + Copyright 2012-2021, Microsoft Research, Daan Leijen + + Licensed under the Apache License, Version 2.0 ("The Licence"). You may not + use this file except in compliance with the License. A copy of the License + can be found in the LICENSE file at the root of this distribution. +----------------------------------------------------------------------------*/ + +import std/num/float64 + +fun main() { + println("Hello world!") // println output +} + +fun encode( s : string, shift : int ) + fun encode-char(c) + if c < 'a' || c > 'z' then return c + val base = (c - 'a').int + val rot = (base + shift) % 26 + (rot.char + 'a') + s.map(encode-char) + +fun caesar( s : string ) : string + s.encode( 3 ) + +fun showit( s : string ) + s.encode(3).count.println + +fun encode2( s : string, shift : int ) + s.map( fn(c) + if c < 'a' || c > 'z' then return c + val base = (c - 'a').int + val rot = (base + shift) % 26 + (rot.char + 'a') + ) + +fun print10() + for(1,10) fn(i) + println(i) + +fun printhi10() + repeat(10) + println("hi") + +fun print11() + var i := 10 + while { i >= 0 } + println(i) + i := i - 1 + +fun twice(f) + f() + f() + +fun test-twice() + twice + twice + println("hi") + +pub fun test-with1() + with twice + with twice + println("hi") + +pub fun test-with2() { + with x <- list(1,10).foreach + println(x) +} + +fun test-finally() + with finally{ println("exiting..") } + println("entering..") + throw("oops") + 42 + +// declare an abstract operation: emit, how it emits is defined dynamically by a handler. +effect fun emit(msg : string) : () + +// emit a standard greeting. +fun hello() : emit () + emit("hello world!") + +// emit a standard greeting to the console. +pub fun hello-console1() : console () + with handler + fun emit(msg) println(msg) + hello() + +fun world() + replace-all("hi there", "there", "world") // returns "hi world" + +fun world2() + "hi there".replace-all( repl="world", pattern="there" ) + +fun sublist( xs : list, start : int, len : int = xs.length ) : list + if start <= 0 return xs.take(len) + match xs + Nil -> Nil + Cons(_,xx) -> xx.sublist(start - 1, len) + +// The letter frequency table for English +val english = [8.2,1.5,2.8,4.3,12.7,2.2, + 2.0,6.1,7.0,0.2,0.8,4.0,2.4, + 6.7,7.5,1.9,0.1, 6.0,6.3,9.1, + 2.8,1.0,2.4,0.2,2.0,0.1] + +// Small helper functions +fun percent( n : int, m : int ) + 100.0 * (n.float64 / m.float64) + +fun rotate( xs : list, n : int ) : list + xs.drop(n) ++ xs.take(n) + +// Calculate a frequency table for a string +fun freqs( s : string ) : list + val lowers = list('a','z') + val occurs = lowers.map( fn(c) s.count(c.string) ) + val total = occurs.sum + occurs.map( fn(i) percent(i,total) ) + +// Calculate how well two frequency tables match according +// to the _chi-square_ statistic. +fun chisqr( xs : list, ys : list ) : float64 + zipwith(xs,ys, fn(x,y) ((x - y)^2.0)/y ).foldr(0.0,(+)) + +// Crack a Caesar encoded string +fun uncaesar( s : string ) : string + val table = freqs(s) // build a frequency table for `s` + val chitab = list(0,25).map fn(n) // build a list of chisqr numbers for each shift between 0 and 25 + chisqr( table.rotate(n), english ) + + val min = chitab.minimum() // find the mininal element + val shift = chitab.index-of( fn(f) f == min ).negate // and use its position as our shift + s.encode( shift ) + +fun test-uncaesar() + println( uncaesar( "nrnd lv d ixq odqjxdjh" ) ) + +fun square1( x : int ) : total int { x*x } +fun square2( x : int ) : console int { println( "a not so secret side-effect" ); x*x } +fun square3( x : int ) : div int { x * square3( x ) } +fun square4( x : int ) : exn int { throw( "oops" ); x*x } + +fun square5( x : int ) : int + x*x + +fun square6( x : int ) : _e int + println("I did not want to write down the \"console\" effect") + x*x + +fun combine-effects() + val i = srandom-int() // non-deterministic + throw("oops") // exception raising + combine-effects() // and non-terminating + +alias pure = + +fun map : (xs : list, f : (a) -> e b) -> e list + match xs + Cons(x,xx) -> Cons(f(x), xx.map(f)) + Nil -> Nil + +fun looptest() + while { is-odd(srandom-int()) } + throw("odd") + +fun fib(n : int) : div int + if n <= 0 then 0 + elif n == 1 then 1 + else fib(n - 1) + fib(n - 2) + +fun fib2(n) + var x := 0 + var y := 1 + repeat(n) + val y0 = y + y := x+y + x := y0 + x + +fun wrong() : (() -> console ()) + var x := 1 + (fn(){ x := x + 1; println(x) }) + +fun fib3(n) + val x = ref(0) + val y = ref(1) + repeat(n) + val y0 = !y + y := !x + !y + x := y0 + !x + +struct person + age : int + name : string + realname : string = name + +val brian = Person( 29, "Brian" ) + +fun birthday( p : person ) : person + p( age = p.age + 1 ) + +fun copy( p, age = p.age, name = p.name, realname = p.realname ) + Person(age, name, realname) + +type color + Red + Green + Blue + +type void + +type () + () + +type bool + False + True + +type number + Infinity + Integer( i : int ) + +type list + Nil + Cons{ head : a; tail : list } + +struct person2{ age : int; name : string; realname : string = name } + +type person3 + Person{ age : int; name : string; realname : string = name } + +type person4 + Person + age : int + name : string + realname : string = name + +value struct argb{ alpha: int; color-red: int; color-green: int; color-blue: int } + +effect raise + ctl raise( msg : string ) : a + +fun safe-divide( x : int, y : int ) : raise int + if y==0 then raise("div-by-zero") else x / y + +fun raise-const() : int + with handler + ctl raise(msg) 42 + 8 + safe-divide(1,0) + +fun raise-const1() : int + with ctl raise(msg) 42 + 8 + safe-divide(1,0) + +effect ask // or: effect ctl ask() : a + ctl ask() : a + +fun add-twice() : ask int + ask() + ask() + +fun ask-const() : int + with ctl ask() resume(21) + add-twice() + +fun ask-random() : random int + with ctl ask() resume(random-int()) + add-twice() + +fun ask-once() : int + var count := 0 + with ctl ask() + count := count + 1 + if count <= 1 then resume(42) else 0 + add-twice() + +fun ask-const2() : int + with fun ask() 21 + add-twice() + +effect ask2 + fun ask() : a diff --git a/samples/Koka/official-tutorial2.kk b/samples/Koka/official-tutorial2.kk new file mode 100644 index 0000000000..7191c56dd2 --- /dev/null +++ b/samples/Koka/official-tutorial2.kk @@ -0,0 +1,231 @@ +/*---------------------------------------------------------------------------- + Copyright 2012-2021, Microsoft Research, Daan Leijen + + Licensed under the Apache License, Version 2.0 ("The Licence"). You may not + use this file except in compliance with the License. A copy of the License + can be found in the LICENSE file at the root of this distribution. +----------------------------------------------------------------------------*/ + +effect val width : int + +fun pretty-internal( line : string ) : width string + line.truncate(width) + +fun pretty-thin(d : doc) : string + with val width = 40 + pretty(d) + +effect fun emit( msg : string ) : () + +fun ehello() : emit () + emit("hello") + emit("world") + +fun ehello-console() : console () + with fun emit(msg) println(msg) + ehello() + +fun emit-console( action ) + with fun emit(msg) println(msg) + action() + +val emit-console2 = handler + fun emit(msg) println(msg) + +fun ehello-console2() : console () + with emit-console + ehello() + +fun emit-collect( action : () -> () ) : e string + var lines := [] + with handler + return(x) lines.reverse.join("\n") + fun emit(msg) lines := Cons(msg,lines) + action() + +fun ehello-commit() : string + with emit-collect + ehello() + +fun catch( hnd : (string) -> e a, action : () -> a ) : e a + with ctl raise(msg) hnd(msg) + action() + +fun catch-example() + with catch( fn(msg){ println("error: " ++ msg); 42 } ) + safe-divide(1,0) + +fun raise-maybe( action : () -> a ) : e maybe + with handler + return(x) Just(x) // normal return: wrap in Just + ctl raise(msg) Nothing // exception: return Nothing directly + action() + +fun div42() + (raise-maybe{ safe-divide(1,0) }).default(42) + +effect state + fun get() : a + fun set( x : a ) : () + +fun sumdown( sum : int = 0 ) : ,div> int + val i = get() + if i <= 0 then sum else + set( i - 1 ) + sumdown( sum + i ) + +fun state( init : a, action : () -> ,div|e> b ) : b + var st := init + with handler + fun get() st + fun set(i) st := i + action() + +fun pstate( init : a, action : () -> ,div|e> b ) : (b,a) + var st := init + with handler + return(x) (x,st) // pair with the final state + fun get() st + fun set(i) st := i + action() + +fun pstate2( init : a, action : () -> ,div|e> b ) : (b,a) + var st := init + with return(x) (x,st) + with handler + fun get() st + fun set(i) st := i + action() + +fun no-odds() : > int + val i = get() + if i.is-odd then raise("no odds") else + set(i / 2) + i + +fun state-raise(init) : div (maybe,int) + with pstate(init) + with raise-maybe + no-odds() + +fun raise-state(init) : div maybe<(int,int)> + with raise-maybe + with pstate(init) + no-odds() + +fun mask-emit() + with fun emit(msg) println("outer:" ++ msg) + with fun emit(msg) println("inner:" ++ msg) + emit("hi") + mask + emit("there") + +fun mask-print( action : () -> e int ) : e int + with ctl raise(msg) 42 + val x = mask(action) + if x.is-odd then raise("wrong") // internal exception + x + +effect val peek : a // get the state +effect ctl poke( x : a ) : () // set the state to x + +fun ppstate( init : a, action : () -> ,poke|e> b ) : e b + with val peek = init + with ctl poke(x) + mask + with val peek = x + resume(()) + action() + +fun emit-quoted1( action : () -> a ) : a + with fun emit(msg) emit("\"" ++ msg ++ "\"") + action() + +fun emit-quoted2( action : () -> a ) : a + with override fun emit(msg) emit("\"" ++ msg ++ "\"" ) + action() + +fun extra-wide( action ) + with override val width = 2*width + action() + +effect ctl choice() : bool + +fun xor() : choice bool + val p = choice() + val q = choice() + if p then !q else q + +fun choice-random(action : () -> a) : a + with fun choice() random-bool() + action() + +fun choice-all(action : () -> a) : e list + with handler + return(x) [x] + ctl choice() resume(False) ++ resume(True) + action() + +fun surprising() : > bool + val p = choice() + val i = get() + set(i+1) + if i>0 && p then xor() else False + +fun state-choice() : div (list,int) + pstate(0) + choice-all(surprising) + +fun choice-state() : div list<(bool,int)> + choice-all + pstate(0,surprising) + +type fhandle +fun fopen( path : string ) : fhandle +fun hreadline( h : fhandle ) : string +fun hclose( h : fhandle ) : () + +effect fun fread() : string + +fun with-file( path : string, action : () -> a ) : a + val h = fopen(path) + with handler + return(x) { hclose(h); x } + fun fread() hreadline(h) + action() + +fun with-file( path : string, action : () -> a ) : a + val h = fopen(path) + with finally + hclose(h) + with fun fread() + hreadline(h) + action() + +type tree + Tip + Bin( left: tree, value : int, right: tree ) + +fun tmap-inorder( t : tree, f : int -> int ) : tree + match t + Bin(l,x,r) -> Bin( l.tmap-inorder(f), f(x), r.tmap-inorder(f) ) + Tip -> Tip + +type visitor + Done + BinR( right:tree, value : int, visit : visitor ) + BinL( left:tree, value : int, visit : visitor ) + +type direction + Up + Down + +fun tmap( f : int -> int, t : tree, visit : visitor, d : direction ) + match d + Down -> match t // going down a left spine + Bin(l,x,r) -> tmap(f,l,BinR(r,x,visit),Down) // A + Tip -> tmap(f,Tip,visit,Up) // B + Up -> match visit // go up through the visitor + Done -> t // C + BinR(r,x,v) -> tmap(f,r,BinL(t,f(x),v),Down) // D + BinL(l,x,v) -> tmap(f,Bin(l,x,t),v,Up) // E diff --git a/samples/Leo/fibonacci.leo b/samples/Leo/fibonacci.leo new file mode 100644 index 0000000000..c704ce3873 --- /dev/null +++ b/samples/Leo/fibonacci.leo @@ -0,0 +1,50 @@ +// This program follows the license outlined, here: https://github.com/ProvableHQ/leo/blob/mainnet/LICENSE.md + +program fibonacci.aleo { + // This calculates the n-th fibonacci number (up to 64th) + transition fibonacci(public n: u8) -> u128 { + assert(n <= 64u8); + + let f0: u128 = 0u128; + let f1: u128 = 1u128; + let c: u8 = 0u8; + + let z: u8 = reverse_bits(n); + + for i:u8 in 0u8..8u8 { + if n > 0u8 { + let f2i1: u128 = f1 * f1 + f0 * f0; + let f2i: u128 = f0 * (2u128 * f1 - f0); + if z & 1u8.shl(c) == 0u8 { + f0 = f2i; + f1 = f2i1; + } else { + f0 = f2i1; + f1 = f2i + f2i1; + } + c = c + 1u8; + n = n >> 1u8; + } + } + + return f0; + } + + function reverse_bits(n: u8) -> u8 { + let reverse: u8 = 0u8; + + for i:u8 in 0u8..8u8 { + if n > 0u8 { + reverse = reverse << 1u8; + + if n & 1u8 == 1u8 { + reverse ^= 1u8; + } + + n = n >> 1u8; + } + } + + return reverse; + } +} diff --git a/samples/Leo/groups.leo b/samples/Leo/groups.leo new file mode 100644 index 0000000000..43968c9de5 --- /dev/null +++ b/samples/Leo/groups.leo @@ -0,0 +1,20 @@ +// This program follows the license outlined, here: https://github.com/ProvableHQ/leo/blob/mainnet/LICENSE.md + +program groups.aleo { + // This function takes a group coordinate as input `a` and performs several operations which should output the `0group`. + // Note that the operations can be called as associated functions on the `a` variable. + + transition main(a: group) -> group { + // unary + let b: group = a.double(); // 2a + let c: group = b.neg(); // -2a + + // binary + let d: group = (a * 2scalar).add(c); + + // generator + let e: group = group::GEN; + + return d + e; + } +} diff --git a/samples/Leo/twoadicity.leo b/samples/Leo/twoadicity.leo new file mode 100644 index 0000000000..4063490dce --- /dev/null +++ b/samples/Leo/twoadicity.leo @@ -0,0 +1,30 @@ +// This program follows the license outlined, here: https://github.com/AleoHQ/leo/blob/mainnet/LICENSE.md + +program twoadicity.aleo { + // This function calculates the number of powers of two ("twoadicity") + // in the prime factorization of the input number `n`. + transition main(public n: field) -> u8 { + let remaining_n: field = n; + let powers_of_two: u8 = 0u8; + // Since field ints are 253 bits or fewer, any number in the field + // will have at most 252 powers of two in its prime factoring. + for i:u8 in 0u8..252u8 { + if is_even_and_nonzero(remaining_n) { + remaining_n = remaining_n / 2field; + powers_of_two = powers_of_two + 1u8; + } + } + return powers_of_two; + } + + /* We define the is_even predicate on fields as follows. + If n is even and nonzero, clearly n/2 < n. + If n is odd, n-p is a field-equivalent negative number that is even, and + (n-p)/2 is a field-equivalent negative number closer to 0, greater than n-p. + If we add p to both of these negative numbers, we have + n/2 = (n-p)/2 + p = (n+p)/2 is greater than n and still less than p. + */ + function is_even_and_nonzero (n: field) -> bool { + return n / 2field < n; + } +} diff --git a/samples/Leo/vote.leo b/samples/Leo/vote.leo new file mode 100644 index 0000000000..11bac2fa5b --- /dev/null +++ b/samples/Leo/vote.leo @@ -0,0 +1,88 @@ +// This program follows the license outlined, here: https://github.com/AleoHQ/leo/blob/mainnet/LICENSE.md + +program vote.aleo { + // Proposal details + struct ProposalInfo { + title: field, + content: field, + proposer: address, + } + + // Proposal record records proposal info publicly + record Proposal { + owner: address, + id: field, + info: ProposalInfo, + } + + // Save proposal info in public storage. + mapping proposals: field => ProposalInfo; + + // Privacy tickets to vote + record Ticket { + owner: address, + pid: field, + } + + // Count the total tickets issued for each proposal + mapping tickets: field => u64; + + mapping agree_votes: field => u64; + + mapping disagree_votes: field => u64; + + // Propose a new proposal to vote on. + async transition propose(public info: ProposalInfo) -> (Proposal, Future) { + // Authenticate proposer. + assert_eq(self.caller, info.proposer); + + // Generate a new proposal id. + let id: field = BHP256::hash_to_field(info.title); + + + // Return a new record for the proposal. + // Finalize the proposal id. + return (Proposal { owner: self.caller, id, info }, finalize_propose(id)); + } + // Create a new proposal in the "tickets" mapping. + async function finalize_propose(public id: field) { + Mapping::set(tickets, id, 0u64); + } + + // Create a new ticket to vote with. + async transition new_ticket( + public pid: field, + public voter: address, + ) -> (Ticket, Future) { + + // Finalize the proposal id for the ticket. + return (Ticket { owner: voter, pid }, finalize_new_ticket(pid)); + } + // Create a new ticket on a proposal in the "tickets" mapping. + async function finalize_new_ticket(public pid: field) { + let current: u64 = Mapping::get_or_use(tickets, pid, 0u64); + Mapping::set(tickets, pid, current + 1u64); + } + + // Vote privately to agree with a proposal. + async transition agree(ticket: Ticket) -> Future { + // Finalize this vote. + return finalize_agree(ticket.pid); + } + async function finalize_agree(public pid: field) { + // Publicly increment the number of agree votes. + let current: u64 = Mapping::get_or_use(agree_votes, pid, 0u64); + Mapping::set(agree_votes, pid, current + 1u64); + } + + // Vote privately to disagree with a proposal. + async transition disagree(ticket: Ticket) -> Future { + // Finalize this vote. + return finalize_disagree(ticket.pid); + } + async function finalize_disagree(pid: field) { + // Publicly increment the number of disagree votes. + let current: u64 = Mapping::get_or_use(disagree_votes, pid, 0u64); + Mapping::set(disagree_votes, pid, current + 1u64); + } +} diff --git a/samples/M3U/Bolt Thrower - Those Once Loyal.m3u b/samples/M3U/Bolt Thrower - Those Once Loyal.m3u new file mode 100644 index 0000000000..ff7fd19fde --- /dev/null +++ b/samples/M3U/Bolt Thrower - Those Once Loyal.m3u @@ -0,0 +1,25 @@ +#EXTM3U +#EXTALB:Those Once Loyal (2005) +#EXTART:Bolt Thrower +#EXTGENRE:Death Metal +#EXTALBUMARTURL:https://coverartarchive.org/release-group/180923eb-59de-331e-a724-77ec6b4abe2c/front +#EXTINF:278,Bolt Thrower - At First Light +/Users/Alhadis/Music/Bolt Thrower/Those Once Loyal/01 At First Light.mp3 +#EXTINF:221,Bolt Thrower - Entrenched +/Users/Alhadis/Music/Bolt Thrower/Those Once Loyal/02 Entrenched.mp3 +#EXTINF:281,Bolt Thrower - The Killchain +/Users/Alhadis/Music/Bolt Thrower/Those Once Loyal/03 The Killchain.mp3 +#EXTINF:243,Bolt Thrower - Granite Wall +/Users/Alhadis/Music/Bolt Thrower/Those Once Loyal/04 Granite Wall.mp3 +#EXTINF:254,Bolt Thrower - Those Once Loyal +/Users/Alhadis/Music/Bolt Thrower/Those Once Loyal/05 Those Once Loyal.mp3 +#EXTINF:255,Bolt Thrower - Anti-Tank (Dead Armour) +/Users/Alhadis/Music/Bolt Thrower/Those Once Loyal/06 Anti-Tank (Dead Armour).mp3 +#EXTINF:190,Bolt Thrower - Last Stand of Humanity +/Users/Alhadis/Music/Bolt Thrower/Those Once Loyal/07 Last Stand of Humanity.mp3 +#EXTINF:318,Bolt Thrower - Salvo +/Users/Alhadis/Music/Bolt Thrower/Those Once Loyal/08 Salvo.mp3 +#EXTINF:327,Bolt Thrower - When Cannons Fade +/Users/Alhadis/Music/Bolt Thrower/Those Once Loyal/09 When Cannons Fade.mp3 +#EXTINF:250,Bolt Thrower - A Symbol of Eight +/Users/Alhadis/Music/Bolt Thrower/Those Once Loyal/10 A Symbol of Eight.mp3 diff --git a/samples/M3U/M+.m3u8 b/samples/M3U/M+.m3u8 new file mode 100644 index 0000000000..9b194bc55f --- /dev/null +++ b/samples/M3U/M+.m3u8 @@ -0,0 +1,15 @@ +#EXTM3U +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=929819,RESOLUTION=960x540 +http://210.210.155.37/uq2663/h/h242/01.m3u8 +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=470037,RESOLUTION=320x240 +http://210.210.155.37/uq2663/h/h242/index.m3u8 +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2238993,RESOLUTION=960x540 +http://210.210.155.37/uq2663/h/h242/02.m3u8 + + +##EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=929819,RESOLUTION=960x540 +##http://edge.linknetott.swiftserve.com/channelgroup2/cg233production/ch372/02.m3u8 +##EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=470037,RESOLUTION=320x240 +##http://edge.linknetott.swiftserve.com/channelgroup2/cg233production/ch372/01.m3u8 +##EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2238993,RESOLUTION=960x540 +##http://edge.linknetott.swiftserve.com/channelgroup2/cg233production/ch372/03.m3u8 diff --git a/samples/M3U/au.m3u b/samples/M3U/au.m3u new file mode 100644 index 0000000000..810351d685 --- /dev/null +++ b/samples/M3U/au.m3u @@ -0,0 +1,35 @@ +#EXTM3U x-tvg-url="http://i.mjh.nz/nzau/epg.xml.gz" +#EXTINF:-1 tvg-id="tv.101002210221" tvg-name="ABC" tvg-language="English" tvg-logo="https://www.abc.net.au/tv/epg/images/channels/ABC1_60x53.png" group-title="News",ABC +https://i.mjh.nz/au/Brisbane/tv.101002410241.m3u8 +#EXTINF:-1 tvg-id="tv.101002210222" tvg-name="ABC COMEDY/ABC KIDS NSW" tvg-language="English" tvg-logo="https://www.abc.net.au/tv/epg/images/channels/ABC2_76x37.png" group-title="News",ABC Comedy +https://i.mjh.nz/au/Brisbane/tv.abc2.m3u8 +#EXTINF:-1 tvg-id="tv.101002210222" tvg-name="ABC COMEDY/ABC KIDS NSW" tvg-language="English" tvg-logo="https://www.abc.net.au/cm/rimage/11251996-1x1-large.png" group-title="News",ABC Kids +https://i.mjh.nz/au/Brisbane/tv.101002210222.m3u8 +#EXTINF:-1 tvg-id="tv.101002210224" tvg-name="ABC ME" tvg-language="English" tvg-logo="https://www.abc.net.au/cm/rimage/11416782-1x1-large.png" group-title="News",ABC ME +https://i.mjh.nz/au/Brisbane/tv.101002210224.m3u8 +#EXTINF:-1 tvg-id="tv.acctv" tvg-name="ACCTV" tvg-language="English" tvg-logo="https://i.imgur.com/lokNx1U.png" group-title="Religious",ACCTV +http://i.mjh.nz/au/Melbourne/tv.acctv.m3u8 +#EXTINF:-1 tvg-id="tv.acctv" tvg-name="ACCTV" tvg-language="English" tvg-logo="https://i.imgur.com/lokNx1U.png" group-title="Religious",ACCTV +http://live-mobile.cdn01.net/hls-live/202E1F/default/mobile/stream_14949_1.m3u8?source=othersites&attempt=1 +#EXTINF:-1 tvg-id="" tvg-name="" tvg-language="English" tvg-logo="https://i.imgur.com/mdNV8tQ.jpg" group-title="News",Australia Channel +https://austchannel-live.akamaized.net/hls/live/2002729/austchannel-news/master1280x720.m3u8 +#EXTINF:-1 tvg-id="" tvg-name="" tvg-language="English" tvg-logo="https://i.imgur.com/VsvBUCa.jpg" group-title="Business",Bloomberg TV Australia +https://liveprodapnortheast.global.ssl.fastly.net/btv/desktop/aus_live.m3u8 +#EXTINF:-1 tvg-id="" tvg-name="" tvg-language="English" tvg-logo="https://i.imgur.com/VsvBUCa.jpg" group-title="Business",Bloomberg TV Australia +https://liveprodapnortheast.global.ssl.fastly.net/oz1/Channel-OZTVqvs-AWS-tokyo-1/Source-OZTVqvs-1000-1_live.m3u8 +#EXTINF:-1 tvg-id="" tvg-name="" tvg-language="English" tvg-logo="https://i.imgur.com/2KzCShW.png" group-title="Shop",Expo Channel +http://tvsn-i.akamaihd.net/hls/live/261837/expo/expo_750.m3u8 +#EXTINF:-1 tvg-id="tv.fox.sports.news" tvg-name="Fox Sports News" tvg-language="English" tvg-logo="https://i.imgur.com/Kxem8ae.jpg" group-title="Sport",Fox Sports News +https://austchannel-live.akamaized.net/hls/live/2002736/austchannel-sport/master1280x720.m3u8 +#EXTINF:-1 tvg-id="tv.101305020528" tvg-name="RACING.COM" tvg-language="English" tvg-logo="https://i.imgur.com/1M4zMdC.png" group-title="Sport",Racing.com +https://racingvic-i.akamaized.net/hls/live/598695/racingvic/1500.m3u8 +#EXTINF:-1 tvg-id="tv.101305020528" tvg-name="RACING.COM" tvg-language="English" tvg-logo="https://i.imgur.com/1M4zMdC.png" group-title="Sport",Racing.com +https://racingvic-i.akamaized.net/hls/live/598695/racingvic/628.m3u8 +#EXTINF:-1 tvg-id="tv.101305020528" tvg-name="RACING.COM" tvg-language="English" tvg-logo="https://i.imgur.com/1M4zMdC.png" group-title="Sport",Racing.com +https://racingvic-i.akamaized.net/hls/live/598695/racingvic/628.m3u8?fluxustv.m3u8 +#EXTINF:-1 tvg-id="" tvg-name="" tvg-language="English" tvg-logo="https://i.imgur.com/Wl0iGsD.png" group-title="News",Sky News Extra 1 +https://skynewsau-live.akamaized.net/hls/live/2002689/skynewsau-extra1/master.m3u8 +#EXTINF:-1 tvg-id="" tvg-name="" tvg-language="English" tvg-logo="https://i.imgur.com/Wl0iGsD.png" group-title="News",Sky News Extra 2 +https://skynewsau-live.akamaized.net/hls/live/2002690/skynewsau-extra2/master.m3u8 +#EXTINF:-1 tvg-id="" tvg-name="" tvg-language="English" tvg-logo="https://i.imgur.com/Wl0iGsD.png" group-title="News",Sky News Extra 3 +https://skynewsau-live.akamaized.net/hls/live/2002691/skynewsau-extra3/master.m3u8 diff --git a/samples/M3U/gn.m3u b/samples/M3U/gn.m3u new file mode 100644 index 0000000000..2db202c795 --- /dev/null +++ b/samples/M3U/gn.m3u @@ -0,0 +1,5 @@ +#EXTM3U +#EXTINF:-1 tvg-id="" tvg-name="" tvg-logo="https://i.imgur.com/EX4DCTN.png" group-title="",CIS TV +http://162.212.178.131:1935/CDNLIVE/CISTV/master.m3u8 +#EXTINF:-1 tvg-id="" tvg-name="" tvg-logo="https://i.imgur.com/moTF5EE.jpg" group-title="",RTG KOLOMA +https://dcunilive38-lh.akamaihd.net/i/dclive_1@690091/index_150_av-p.m3u8?sd=10&rebase=on diff --git a/samples/Python/uv-download-countries-info b/samples/Python/uv-download-countries-info new file mode 100644 index 0000000000..2070313fd7 --- /dev/null +++ b/samples/Python/uv-download-countries-info @@ -0,0 +1,30 @@ +#!/usr/bin/env -S uv run --script +# /// script +# dependencies = [ +# "pandas", +# "lxml" +# ] +# /// + +"""Download names, country codes etc. of all countries of the world. A Standalone Uv python script. + +Run this script in terminal: +$ chmod +x ./uv-download-countries-info # make script executable +$ ./uv-download-countries-info # run script + +Code source: https://www.kaggle.com/datasets/sohangchopra/countries-with-aliases-alternative-english-names/ + +How to write a uv script: https://docs.astral.sh/uv/guides/scripts/#declaring-script-dependencies +""" +import pandas as pd + +print('Downloading table from wikipedia...') +country_tables = pd.read_html( + 'https://en.wikipedia.org/wiki/List_of_alternative_country_names', + header=0 # first row is header +) +df = pd.concat([df for df in country_tables if not df.empty]) +df['Description'] = df['Description'].str.removesuffix('a').str.strip() +print("Countries of the World:\n", df) +df.to_csv('wikipedia_countries.csv', index=False, encoding='utf-8-sig') +print('Saved downloaded data to wikipedia_countries.csv') diff --git a/samples/ReScript/RedBlackTree.resi b/samples/ReScript/RedBlackTree.resi new file mode 100644 index 0000000000..5bd2fdeb14 --- /dev/null +++ b/samples/ReScript/RedBlackTree.resi @@ -0,0 +1,115 @@ +type nodeColor = Red | Black + +type rec node<'value> = { + mutable left: option>, + mutable right: option>, + mutable parent: option>, + mutable sum: float, + mutable color: nodeColor, + mutable height: float, + mutable value: 'value, +} + +type t<'value> = { + mutable size: int, + mutable root: option>, + compare: (. 'value, 'value) => int, +} + +let createNode: (~color: nodeColor, ~value: 'a, ~height: float) => node<'a> + +external castNotOption: option<'a> => 'a = "%identity" + +let updateSumRecursive: ('a, node<'b>) => unit + +let grandParentOf: node<'a> => option> + +let isLeft: node<'a> => bool + +let leftOrRightSet: (~node: node<'a>, node<'b>, option>) => unit + +let siblingOf: node<'a> => option> + +let uncleOf: node<'a> => option> + +let findNode: (t<'a>, option>, 'a) => option> + +let has: (t<'a>, 'a) => bool + +let peekMinNode: option> => option> + +let peekMaxNode: option> => option> + +let rotateLeft: (t<'a>, node<'a>) => unit + +let rotateRight: (t<'a>, node<'a>) => unit + +let findInsert: (t<'a>, option>, node<'a>, 'a) => option> + +let _addLoop: (t<'a>, node<'a>) => unit + +let add: (t<'a>, 'a, ~height: float) => option> + +let removeNode: (t<'a>, node<'a>) => unit + +let remove: (t<'a>, 'a) => bool + +let findNodeThroughCallback: ('a, option>, (. node<'b>) => int) => option> + +let removeThroughCallback: (t<'a>, (. node<'a>) => int) => bool + +let make: (~compare: (. 'a, 'a) => int) => t<'a> + +let makeWith: (Js.Array2.t<('a, float)>, ~compare: (. 'a, 'a) => int) => t<'a> + +let heightOfInterval: (t<'a>, option<'a>, option<'a>) => float + +let firstVisibleNode: (option>, float) => option> + +let lastVisibleNode: (option>, float) => option> + +let firstVisibleValue: (t<'a>, ~top: float) => option<'a> + +let leftmost: node<'a> => node<'a> + +let firstRightParent: node<'a> => option> + +let nextNode: node<'a> => option> + +let sumLeftSpine: (node<'a>, ~fromRightChild: bool) => float + +let getY: node<'a> => float + +let iterate: ( + ~inclusive: bool, + option>, + option>, + ~callback: (. node<'a>) => unit, +) => unit + +let iterateWithY: ( + ~y: float=?, + ~inclusive: bool, + option>, + option>, + ~callback: (. node<'a>, float) => unit, +) => unit + +let updateSum: (option>, ~delta: float) => unit + +let updateHeight: (node<'a>, ~height: float) => unit + +type oldNewVisible<'value> = {mutable old: array<'value>, mutable new: array<'value>} + +let getAnchorDelta: (t<'a>, ~anchor: option<('a, float)>) => float + +let onChangedVisible: ( + ~anchor: option<('a, float)>=?, + t<'a>, + ~oldNewVisible: oldNewVisible<'a>, + ~top: float, + ~bottom: float, + ~appear: (. node<'a>, float) => unit, + ~remained: (. node<'a>, float) => unit, + ~disappear: (. 'a) => unit, +) => unit diff --git a/samples/Coq/Computation.v b/samples/Rocq Prover/Computation.v similarity index 100% rename from samples/Coq/Computation.v rename to samples/Rocq Prover/Computation.v diff --git a/samples/Coq/Imp.v b/samples/Rocq Prover/Imp.v similarity index 100% rename from samples/Coq/Imp.v rename to samples/Rocq Prover/Imp.v diff --git a/samples/Coq/JsCorrectness.v b/samples/Rocq Prover/JsCorrectness.v similarity index 100% rename from samples/Coq/JsCorrectness.v rename to samples/Rocq Prover/JsCorrectness.v diff --git a/samples/Coq/JsInterpreterExtraction.v b/samples/Rocq Prover/JsInterpreterExtraction.v similarity index 100% rename from samples/Coq/JsInterpreterExtraction.v rename to samples/Rocq Prover/JsInterpreterExtraction.v diff --git a/samples/Coq/JsNumber.v b/samples/Rocq Prover/JsNumber.v similarity index 100% rename from samples/Coq/JsNumber.v rename to samples/Rocq Prover/JsNumber.v diff --git a/samples/Coq/JsPrettyInterm.v b/samples/Rocq Prover/JsPrettyInterm.v similarity index 100% rename from samples/Coq/JsPrettyInterm.v rename to samples/Rocq Prover/JsPrettyInterm.v diff --git a/samples/Coq/Lists.v b/samples/Rocq Prover/Lists.v similarity index 100% rename from samples/Coq/Lists.v rename to samples/Rocq Prover/Lists.v diff --git a/samples/Coq/Main.v b/samples/Rocq Prover/Main.v similarity index 100% rename from samples/Coq/Main.v rename to samples/Rocq Prover/Main.v diff --git a/samples/Coq/Poly.v b/samples/Rocq Prover/Poly.v similarity index 100% rename from samples/Coq/Poly.v rename to samples/Rocq Prover/Poly.v diff --git a/samples/Coq/Rel.v b/samples/Rocq Prover/Rel.v similarity index 100% rename from samples/Coq/Rel.v rename to samples/Rocq Prover/Rel.v diff --git a/samples/Coq/Smallstep.v b/samples/Rocq Prover/Smallstep.v similarity index 100% rename from samples/Coq/Smallstep.v rename to samples/Rocq Prover/Smallstep.v diff --git a/samples/Coq/Spec.v b/samples/Rocq Prover/Spec.v similarity index 100% rename from samples/Coq/Spec.v rename to samples/Rocq Prover/Spec.v diff --git a/samples/Coq/Stlc.v b/samples/Rocq Prover/Stlc.v similarity index 100% rename from samples/Coq/Stlc.v rename to samples/Rocq Prover/Stlc.v diff --git a/samples/SMT/as-left.z3 b/samples/SMT/as-left.z3 new file mode 100644 index 0000000000..0125901fef --- /dev/null +++ b/samples/SMT/as-left.z3 @@ -0,0 +1,30 @@ +; FILE FROM https://github.com/hipsleek/hipsleek/blob/6cb3008bc7a3bc633ec59446892705899619e392/demo/array/as-left.z3 +; MIT LICENSE + +;; proof extracted from arr_sum_left.java +(set-logic AUFNIA) +(declare-fun v_int_25_629 () Int) +(declare-fun ahalb () Int) +(declare-fun ahaub () Int) +(declare-fun v_int_25_639 () Int) +(declare-fun a () (Array Int Int)) +(declare-fun i () Int) +(declare-fun j () Int) +(declare-fun v_int_25_590' () Int) +(declare-fun sumarray ((Array Int Int) Int Int Int) Bool) +;; lemma below can be added by hand .. +;; (assert (forall (a (Array Int Int)) (i Int) (j Int) (s Int) (= (sumarray a i j s) (or (and (> i j) (= s 0)) (or (and (= i j) (= s (select a i))) (and (< i j) (sumarray a i (- j 1) (- s (select a j))))))))) +(assert (forall (a (Array Int Int)) (i Int) (j Int) (s Int) (= (sumarray a i j s) (or (and (> i j) (= s 0)) (or (and (= i j) (= s (select a i))) (and (< i j) (sumarray a (+ i 1) j (- s (select a i))))))))) +;; more concise lemma .. == is better than => +;;(assert (forall (a (Array Int Int)) (i Int) (j Int) (s Int) (=> (< i j) (= (sumarray a i j s) (sumarray a i (- j 1) (- s (select a j))) ) ) )) +(assert (forall (a (Array Int Int)) (i Int) (j Int) (s Int) (=> (< i j) (=> (sumarray a i (- j 1) (- s (select a j))) (sumarray a i j s) ) ) )) +(assert (<= v_int_25_629 ahaub)) +(assert (<= i j)) +(assert (= (+ v_int_25_629 1) j)) +(assert (<= ahalb i)) +(assert (sumarray a i v_int_25_629 v_int_25_639)) +(assert (<= ahalb j)) +(assert (<= j ahaub)) +(assert (= v_int_25_590' (+ (select a j) v_int_25_639))) +(assert (not (sumarray a i j v_int_25_590'))) +(check-sat) diff --git a/samples/Sail/basics.sail b/samples/Sail/basics.sail new file mode 100644 index 0000000000..548a58f7e9 --- /dev/null +++ b/samples/Sail/basics.sail @@ -0,0 +1,113 @@ +// This example introduces most basic features of Sail. +/* Comments are C-style. /* Blocks comments can be nested. */ */ + +// Sail supports configurable indexing endianness. Dec is the most common +// option. It must be declared globally. +default Order dec + +// C-style includes are supported. `prelude.sail` is from the Sail standard +// library and includes some common things. +$include + +// Global mutable variables are introduced with `register`. +// They must include a type (int) and can include an initialiser (= 0). +// `int` is the type for all integers (any size, like in Python). +// Try changing this to 10000000000000000000000000000000000000000000000000. +register my_global_int : int = 0 + +// `nat` is the type for natural numbers (>= 0). Try changing the 3 to -3. +register not_negative : nat = 3 + +// There's also a `range(M, N)` type for integers in [M, N] (inclusive). +// Try changing this to 0 +register month : range(1, 12) = 1 + +// Immutable globals variables are declared with let. +// Real numbers are supported, using libgmp (which represents them as +// arbitrary length integer fractions). Although supported, they are very +// rarely used in Sail code. +let pi : real = 3.141 + +// This is a simple function. Sail is expression-based like Rust, OCaml, +// Haskell, etc. Braces are not required for function bodies if they are +// a single expression. +function add_ints(a : int, b : int) -> int = a + b + +// As usual in expression-based languages, if and match are also expressions. +function max1(a : int, b : int) -> int = if a > b then a else b + +// You can use traditional imperative forms too but it isn't recommended. +function max2(a : int, b : int) -> int = { + if a > b then { + return a; + } else { + return b; + } +} + +// It has standard ML/Rust style `match`. +function month_name(month : range(1, 12)) -> string = + match month { + 1 => "Jan", + 2 => "Feb", + // Alternate patterns are not yet supported. + // 3 | 4 => "March or April", + // _ is a wildcard. + _ => "Whatever", + } + +// You can define a `main()` function which will be compiled to `zmain()` in C. +// The name mangling system for C is Z-encoding which basically double all +// z's and prepends a z. E.g. size -> zsizze +// +// Main returns `unit` which is like a 0-length tuple. It's used in places you +// might use `void` in C. Unlike `void` you can make a value of `unit` by writing +// `()`. +// +// Sail will optionally generate a C `main()` function that calls `zmain()` +// (this code). +function main() -> unit = { + // The standard print function. + print_endline("Hello world"); + + // `let` introduces immutable variables. + let a : int = 5; + // They can be shadowed with the same name. + let a : string = "5"; + // Type annotations are not always required - often they can be inferred. + let a = 5; + // Because they are immutable you cannot do this: + a = 6; + + // Mutable variables use `var`. + var a : int = 5; + // This is now ok. + a = 6; + + // One small gotcha is that the inferred type for 5 is int(5). So this + var a = 5; + // is equivalent to this + var a : int(5) = 5; + // And because its type is literally the number 5, you can't assign + // any other numbers to it. + // a = 6; // compile error +} + +// Being aimed at ISA specifications, Sail has very good support for bit vectors. +function reverse_endianness(word : bits(16)) -> bits(16) = + // @ means concatenation. Since we declared `default Order dec` all + // of these indices and concatenations happen in Little Endian notational + // order. This doesn't mean that the underlying data is Little Endian though. + // + // .. selects a bit range. This is inclusive. Currently there is no + // half-open syntax (8 >.. 0) but this is planned. + word[7 .. 0] @ word[15 .. 8] + +// Sail has an advanced type system for bit vectors and integers which means +// they can almost always be checked at compile time. +// +// Try changing 7 to 8 here. +function lowest_byte(word : bits(16)) -> bits(8) = word[7 .. 0] + +// Check the other examples for more features. Or see the Sail manual here: +// https://alasdair.github.io/manual.html diff --git a/samples/Sail/bitfields.sail b/samples/Sail/bitfields.sail new file mode 100644 index 0000000000..6099393339 --- /dev/null +++ b/samples/Sail/bitfields.sail @@ -0,0 +1,35 @@ +default Order dec + +$include +$include + +// Bitfields are useful for registers. You can take an underlying bitvector +// and allow naming bits in them. + +bitfield Status : bits(32) = { + U : 31, + // Not all bits need to have a corresponding field, and fields can overlap. + A : 0, + lowest_byte : 7 .. 0, + upper_byte : 31 .. 24, +} + +function main() -> unit = { + // To create a new bitfield, use Mk_. + var status = Mk_Status(0x00000000); + + // You can update mutable variables (including `register`s) imperatively: + status[lowest_byte] = status[upper_byte]; + + // You can access the underlying bitvector via the special field `bits`. + status.bits = 0x11223344; + + // You can also do functional-style immutable updates. + let status = [ + status with + U = 0b1, + lowest_byte = 0xFF, + ]; + + print_endline(bits_str(status.bits)); +} diff --git a/samples/Sail/bitvectors.sail b/samples/Sail/bitvectors.sail new file mode 100644 index 0000000000..1e56593ab1 --- /dev/null +++ b/samples/Sail/bitvectors.sail @@ -0,0 +1,48 @@ +default Order dec + +$include +$include + +// Sail has excellent support for bit vectors. These have the type `bits(N)`. +let status : bits(32) = 0x11223344 + +// Bit vector literals are written 0x.. or 0b... +// Leading zeros are significant - the affect the size of the literal. +// This is ok: +register byte0 : bits(8) = 0x01 +// This is an error: +// register byte1 : bits(8) = 0x1 + +function main() -> unit = { + // @ means concatenation. With 'default Order dec' concatenation is written + // in Big Endian order. + assert(0x12 @ 0x34 == 0x1234); + + // Individual bits or ranges of bits can be accessed like this. + // Note that the range is inclusive. + assert(status[0] == bitzero); + assert(status[7 .. 0] == 0x44); + + // You can update mutable bit vectors like this: + byte0[3 .. 0] = 0b1100; + // Or in immutable function style: + let byte2 = [ + byte0 with + 3 .. 0 = 0xA, + ]; + + // You can convert a bit vector to a string with `bits_str()`. If it is + // a multiple of 4 bits it will be printed in hex, otherwise binary. + print_endline(bits_str(byte2[2 .. 0])); + + // Pattern matching also supports bit vectors. + match byte2 { + upper @ 0b010 => { + print_endline(bits_str(upper)); + }, + 0b10 @ lower => { + print_endline(bits_str(lower)); + }, + _ => (), + }; +} diff --git a/samples/Sail/match.sail b/samples/Sail/match.sail new file mode 100644 index 0000000000..3def61151e --- /dev/null +++ b/samples/Sail/match.sail @@ -0,0 +1,52 @@ +default Order dec + +$include +$include + +// Sail has pattern matching similar to Rust, OCaml and other functional languages. +// A notable difference is that it doesn't support combining identical branches. + +function suit_name(suit : range(0, 3)) -> string = + match suit { + 0 => "hearts", + 1 => "diamonds", + 2 => "clubs", + 3 => "spaces", + } + +// _ is a wildcard + +function map_add(a : option(int), b : option(int)) -> option(int) = + match (a, b) { + (Some(a), Some(b)) => Some(a + b), + _ => None(), + } + +// Sail copies a minor footgun from other functional languages. + +function ordinal(x : nat) -> string = + match x { + 0 => "zeroth", + 1 => "first", + 2 => "second", + 3 => "third", + other => concat_str(dec_str(other), "th"), + } + +// Here `other` creates a new variable bound to `x`. +// Unfortunately it can catch you out. The following code appears correct and +// will compile (with warnings), but actually the function always returns 2. +// Rust and OCaml also suffer from this flaw. + +let ONE = 1 +let TWO = 2 +let THREE = 3 + +function add_one(x : range(1, 3)) -> range(2, 4) = + match x { + ONE => 2, + TWO => 3, + THREE => 4, + } + +function main() -> unit = () diff --git a/samples/Sail/riscv_insts_zbb.sail b/samples/Sail/riscv_insts_zbb.sail new file mode 100644 index 0000000000..bad917b75d --- /dev/null +++ b/samples/Sail/riscv_insts_zbb.sail @@ -0,0 +1,363 @@ +// Example from https://github.com/riscv/sail-riscv/blob/master/model/riscv_insts_zbb.sail + +/*=======================================================================================*/ +/* This Sail RISC-V architecture model, comprising all files and */ +/* directories except where otherwise noted is subject the BSD */ +/* two-clause license in the LICENSE file. */ +/* */ +/* SPDX-License-Identifier: BSD-2-Clause */ +/*=======================================================================================*/ + +function clause currentlyEnabled(Ext_Zbb) = hartSupports(Ext_Zbb) | currentlyEnabled(Ext_B) +function clause currentlyEnabled(Ext_Zbkb) = hartSupports(Ext_Zbkb) + +/* ****************************************************************** */ +union clause ast = RISCV_RORIW : (bits(5), regidx, regidx) + +mapping clause encdec = RISCV_RORIW(shamt, rs1, rd) + <-> 0b0110000 @ shamt @ encdec_reg(rs1) @ 0b101 @ encdec_reg(rd) @ 0b0011011 + when (currentlyEnabled(Ext_Zbb) | currentlyEnabled(Ext_Zbkb)) & xlen == 64 + +mapping clause assembly = RISCV_RORIW(shamt, rs1, rd) + <-> "roriw" ^ spc() ^ reg_name(rd) ^ sep() ^ reg_name(rs1) ^ sep() ^ hex_bits_5(shamt) + +function clause execute (RISCV_RORIW(shamt, rs1, rd)) = { + let rs1_val = (X(rs1))[31..0]; + let result : xlenbits = sign_extend(rs1_val >>> shamt); + X(rd) = result; + RETIRE_SUCCESS +} + +/* ****************************************************************** */ +union clause ast = RISCV_RORI : (bits(6), regidx, regidx) + +mapping clause encdec = RISCV_RORI(shamt, rs1, rd) + <-> 0b011000 @ shamt @ encdec_reg(rs1) @ 0b101 @ encdec_reg(rd) @ 0b0010011 + when (currentlyEnabled(Ext_Zbb) | currentlyEnabled(Ext_Zbkb)) & (xlen == 64 | shamt[5] == bitzero) + +mapping clause assembly = RISCV_RORI(shamt, rs1, rd) + <-> "rori" ^ spc() ^ reg_name(rd) ^ sep() ^ reg_name(rs1) ^ sep() ^ hex_bits_6(shamt) + +function clause execute (RISCV_RORI(shamt, rs1, rd)) = { + let rs1_val = X(rs1); + let result : xlenbits = if xlen == 32 + then rs1_val >>> shamt[4..0] + else rs1_val >>> shamt; + X(rd) = result; + RETIRE_SUCCESS +} + +/* ****************************************************************** */ +union clause ast = ZBB_RTYPEW : (regidx, regidx, regidx, bropw_zbb) + +mapping clause encdec = ZBB_RTYPEW(rs2, rs1, rd, RISCV_ROLW) + <-> 0b0110000 @ encdec_reg(rs2) @ encdec_reg(rs1) @ 0b001 @ encdec_reg(rd) @ 0b0111011 + when (currentlyEnabled(Ext_Zbb) | currentlyEnabled(Ext_Zbkb)) & xlen == 64 + +mapping clause encdec = ZBB_RTYPEW(rs2, rs1, rd, RISCV_RORW) + <-> 0b0110000 @ encdec_reg(rs2) @ encdec_reg(rs1) @ 0b101 @ encdec_reg(rd) @ 0b0111011 + when (currentlyEnabled(Ext_Zbb) | currentlyEnabled(Ext_Zbkb)) & xlen == 64 + +mapping zbb_rtypew_mnemonic : bropw_zbb <-> string = { + RISCV_ROLW <-> "rolw", + RISCV_RORW <-> "rorw" +} + +mapping clause assembly = ZBB_RTYPEW(rs2, rs1, rd, op) + <-> zbb_rtypew_mnemonic(op) ^ spc() ^ reg_name(rd) ^ sep() ^ reg_name(rs1) ^ sep() ^ reg_name(rs2) + +function clause execute (ZBB_RTYPEW(rs2, rs1, rd, op)) = { + let rs1_val = (X(rs1))[31..0]; + let shamt = (X(rs2))[4..0]; + let result : bits(32) = match op { + RISCV_ROLW => rs1_val <<< shamt, + RISCV_RORW => rs1_val >>> shamt + }; + X(rd) = sign_extend(result); + RETIRE_SUCCESS +} + +/* ****************************************************************** */ +union clause ast = ZBB_RTYPE : (regidx, regidx, regidx, brop_zbb) + +mapping clause encdec = ZBB_RTYPE(rs2, rs1, rd, RISCV_ANDN) + <-> 0b0100000 @ encdec_reg(rs2) @ encdec_reg(rs1) @ 0b111 @ encdec_reg(rd) @ 0b0110011 + when currentlyEnabled(Ext_Zbb) | currentlyEnabled(Ext_Zbkb) + +mapping clause encdec = ZBB_RTYPE(rs2, rs1, rd, RISCV_ORN) + <-> 0b0100000 @ encdec_reg(rs2) @ encdec_reg(rs1) @ 0b110 @ encdec_reg(rd) @ 0b0110011 + when currentlyEnabled(Ext_Zbb) | currentlyEnabled(Ext_Zbkb) + +mapping clause encdec = ZBB_RTYPE(rs2, rs1, rd, RISCV_XNOR) + <-> 0b0100000 @ encdec_reg(rs2) @ encdec_reg(rs1) @ 0b100 @ encdec_reg(rd) @ 0b0110011 + when currentlyEnabled(Ext_Zbb) | currentlyEnabled(Ext_Zbkb) + +mapping clause encdec = ZBB_RTYPE(rs2, rs1, rd, RISCV_MAX) + <-> 0b0000101 @ encdec_reg(rs2) @ encdec_reg(rs1) @ 0b110 @ encdec_reg(rd) @ 0b0110011 + when currentlyEnabled(Ext_Zbb) + +mapping clause encdec = ZBB_RTYPE(rs2, rs1, rd, RISCV_MAXU) + <-> 0b0000101 @ encdec_reg(rs2) @ encdec_reg(rs1) @ 0b111 @ encdec_reg(rd) @ 0b0110011 + when currentlyEnabled(Ext_Zbb) + +mapping clause encdec = ZBB_RTYPE(rs2, rs1, rd, RISCV_MIN) + <-> 0b0000101 @ encdec_reg(rs2) @ encdec_reg(rs1) @ 0b100 @ encdec_reg(rd) @ 0b0110011 + when currentlyEnabled(Ext_Zbb) + +mapping clause encdec = ZBB_RTYPE(rs2, rs1, rd, RISCV_MINU) + <-> 0b0000101 @ encdec_reg(rs2) @ encdec_reg(rs1) @ 0b101 @ encdec_reg(rd) @ 0b0110011 + when currentlyEnabled(Ext_Zbb) + +mapping clause encdec = ZBB_RTYPE(rs2, rs1, rd, RISCV_ROL) + <-> 0b0110000 @ encdec_reg(rs2) @ encdec_reg(rs1) @ 0b001 @ encdec_reg(rd) @ 0b0110011 + when currentlyEnabled(Ext_Zbb) | currentlyEnabled(Ext_Zbkb) + +mapping clause encdec = ZBB_RTYPE(rs2, rs1, rd, RISCV_ROR) + <-> 0b0110000 @ encdec_reg(rs2) @ encdec_reg(rs1) @ 0b101 @ encdec_reg(rd) @ 0b0110011 + when currentlyEnabled(Ext_Zbb) | currentlyEnabled(Ext_Zbkb) + +mapping zbb_rtype_mnemonic : brop_zbb <-> string = { + RISCV_ANDN <-> "andn", + RISCV_ORN <-> "orn", + RISCV_XNOR <-> "xnor", + RISCV_MAX <-> "max", + RISCV_MAXU <-> "maxu", + RISCV_MIN <-> "min", + RISCV_MINU <-> "minu", + RISCV_ROL <-> "rol", + RISCV_ROR <-> "ror" +} + +mapping clause assembly = ZBB_RTYPE(rs2, rs1, rd, op) + <-> zbb_rtype_mnemonic(op) ^ spc() ^ reg_name(rd) ^ sep() ^ reg_name(rs1) ^ sep() ^ reg_name(rs2) + +function clause execute (ZBB_RTYPE(rs2, rs1, rd, op)) = { + let rs1_val = X(rs1); + let rs2_val = X(rs2); + let result : xlenbits = match op { + RISCV_ANDN => rs1_val & ~(rs2_val), + RISCV_ORN => rs1_val | ~(rs2_val), + RISCV_XNOR => ~(rs1_val ^ rs2_val), + RISCV_MAX => to_bits(xlen, max(signed(rs1_val), signed(rs2_val))), + RISCV_MAXU => to_bits(xlen, max(unsigned(rs1_val), unsigned(rs2_val))), + RISCV_MIN => to_bits(xlen, min(signed(rs1_val), signed(rs2_val))), + RISCV_MINU => to_bits(xlen, min(unsigned(rs1_val), unsigned(rs2_val))), + RISCV_ROL => if xlen == 32 + then rs1_val <<< rs2_val[4..0] + else rs1_val <<< rs2_val[5..0], + RISCV_ROR => if xlen == 32 + then rs1_val >>> rs2_val[4..0] + else rs1_val >>> rs2_val[5..0] + }; + X(rd) = result; + RETIRE_SUCCESS +} + +/* ****************************************************************** */ +union clause ast = ZBB_EXTOP : (regidx, regidx, extop_zbb) + +mapping clause encdec = ZBB_EXTOP(rs1, rd, RISCV_SEXTB) + <-> 0b0110000 @ 0b00100 @ encdec_reg(rs1) @ 0b001 @ encdec_reg(rd) @ 0b0010011 + when currentlyEnabled(Ext_Zbb) + +mapping clause encdec = ZBB_EXTOP(rs1, rd, RISCV_SEXTH) + <-> 0b0110000 @ 0b00101 @ encdec_reg(rs1) @ 0b001 @ encdec_reg(rd) @ 0b0010011 + when currentlyEnabled(Ext_Zbb) + +mapping clause encdec = ZBB_EXTOP(rs1, rd, RISCV_ZEXTH) + <-> 0b0000100 @ 0b00000 @ encdec_reg(rs1) @ 0b100 @ encdec_reg(rd) @ 0b0110011 + when currentlyEnabled(Ext_Zbb) & xlen == 32 + +mapping clause encdec = ZBB_EXTOP(rs1, rd, RISCV_ZEXTH) + <-> 0b0000100 @ 0b00000 @ encdec_reg(rs1) @ 0b100 @ encdec_reg(rd) @ 0b0111011 + when currentlyEnabled(Ext_Zbb) & xlen == 64 + +mapping zbb_extop_mnemonic : extop_zbb <-> string = { + RISCV_SEXTB <-> "sext.b", + RISCV_SEXTH <-> "sext.h", + RISCV_ZEXTH <-> "zext.h" +} + +mapping clause assembly = ZBB_EXTOP(rs1, rd, op) + <-> zbb_extop_mnemonic(op) ^ spc() ^ reg_name(rd) ^ sep() ^ reg_name(rs1) + +function clause execute (ZBB_EXTOP(rs1, rd, op)) = { + let rs1_val = X(rs1); + let result : xlenbits = match op { + RISCV_SEXTB => sign_extend(rs1_val[7..0]), + RISCV_SEXTH => sign_extend(rs1_val[15..0]), + RISCV_ZEXTH => zero_extend(rs1_val[15..0]) + }; + X(rd) = result; + RETIRE_SUCCESS +} + +/* ****************************************************************** */ +union clause ast = RISCV_REV8 : (regidx, regidx) + +mapping clause encdec = RISCV_REV8(rs1, rd) + <-> 0b011010011000 @ encdec_reg(rs1) @ 0b101 @ encdec_reg(rd) @ 0b0010011 + when (currentlyEnabled(Ext_Zbb) | currentlyEnabled(Ext_Zbkb)) & xlen == 32 + +mapping clause encdec = RISCV_REV8(rs1, rd) + <-> 0b011010111000 @ encdec_reg(rs1) @ 0b101 @ encdec_reg(rd) @ 0b0010011 + when (currentlyEnabled(Ext_Zbb) | currentlyEnabled(Ext_Zbkb)) & xlen == 64 + +mapping clause assembly = RISCV_REV8(rs1, rd) + <-> "rev8" ^ spc() ^ reg_name(rd) ^ sep() ^ reg_name(rs1) + +function clause execute (RISCV_REV8(rs1, rd)) = { + let rs1_val = X(rs1); + var result : xlenbits = zeros(); + foreach (i from 0 to (xlen - 8) by 8) + result[(i + 7) .. i] = rs1_val[(xlen - i - 1) .. (xlen - i - 8)]; + X(rd) = result; + RETIRE_SUCCESS +} + +/* ****************************************************************** */ +union clause ast = RISCV_ORCB : (regidx, regidx) + +mapping clause encdec = RISCV_ORCB(rs1, rd) + <-> 0b001010000111 @ encdec_reg(rs1) @ 0b101 @ encdec_reg(rd) @ 0b0010011 + when currentlyEnabled(Ext_Zbb) + +mapping clause assembly = RISCV_ORCB(rs1, rd) + <-> "orc.b" ^ spc() ^ reg_name(rd) ^ sep() ^ reg_name(rs1) + +function clause execute (RISCV_ORCB(rs1, rd)) = { + let rs1_val = X(rs1); + var result : xlenbits = zeros(); + foreach (i from 0 to (xlen - 8) by 8) + result[(i + 7) .. i] = if rs1_val[(i + 7) .. i] == zeros() + then 0x00 + else 0xFF; + X(rd) = result; + RETIRE_SUCCESS +} + +/* ****************************************************************** */ +union clause ast = RISCV_CPOP : (regidx, regidx) + +mapping clause encdec = RISCV_CPOP(rs1, rd) + <-> 0b011000000010 @ encdec_reg(rs1) @ 0b001 @ encdec_reg(rd) @ 0b0010011 + when currentlyEnabled(Ext_Zbb) + +mapping clause assembly = RISCV_CPOP(rs1, rd) + <-> "cpop" ^ spc() ^ reg_name(rd) ^ sep() ^ reg_name(rs1) + +function clause execute (RISCV_CPOP(rs1, rd)) = { + let rs1_val = X(rs1); + var result : nat = 0; + foreach (i from 0 to (xlen_val - 1)) + if rs1_val[i] == bitone then result = result + 1; + X(rd) = to_bits(xlen, result); + RETIRE_SUCCESS +} + +/* ****************************************************************** */ +union clause ast = RISCV_CPOPW : (regidx, regidx) + +mapping clause encdec = RISCV_CPOPW(rs1, rd) + <-> 0b011000000010 @ encdec_reg(rs1) @ 0b001 @ encdec_reg(rd) @ 0b0011011 + when currentlyEnabled(Ext_Zbb) & xlen == 64 + +mapping clause assembly = RISCV_CPOPW(rs1, rd) + <-> "cpopw" ^ spc() ^ reg_name(rd) ^ sep() ^ reg_name(rs1) + +function clause execute (RISCV_CPOPW(rs1, rd)) = { + let rs1_val = X(rs1); + var result : nat = 0; + foreach (i from 0 to 31) + if rs1_val[i] == bitone then result = result + 1; + X(rd) = to_bits(xlen, result); + RETIRE_SUCCESS +} + +/* ****************************************************************** */ +union clause ast = RISCV_CLZ : (regidx, regidx) + +mapping clause encdec = RISCV_CLZ(rs1, rd) + <-> 0b011000000000 @ encdec_reg(rs1) @ 0b001 @ encdec_reg(rd) @ 0b0010011 + when currentlyEnabled(Ext_Zbb) + +mapping clause assembly = RISCV_CLZ(rs1, rd) + <-> "clz" ^ spc() ^ reg_name(rd) ^ sep() ^ reg_name(rs1) + +function clause execute (RISCV_CLZ(rs1, rd)) = { + let rs1_val = X(rs1); + var result : nat = 0; + var done : bool = false; + foreach (i from (xlen - 1) downto 0) + if not(done) then if rs1_val[i] == bitzero + then result = result + 1 + else done = true; + X(rd) = to_bits(xlen, result); + RETIRE_SUCCESS +} + +/* ****************************************************************** */ +union clause ast = RISCV_CLZW : (regidx, regidx) + +mapping clause encdec = RISCV_CLZW(rs1, rd) + <-> 0b011000000000 @ encdec_reg(rs1) @ 0b001 @ encdec_reg(rd) @ 0b0011011 + when currentlyEnabled(Ext_Zbb) & xlen == 64 + +mapping clause assembly = RISCV_CLZW(rs1, rd) + <-> "clzw" ^ spc() ^ reg_name(rd) ^ sep() ^ reg_name(rs1) + +function clause execute (RISCV_CLZW(rs1, rd)) = { + let rs1_val = X(rs1); + var result : nat = 0; + var done : bool = false; + foreach (i from 31 downto 0) + if not(done) then if rs1_val[i] == bitzero + then result = result + 1 + else done = true; + X(rd) = to_bits(xlen, result); + RETIRE_SUCCESS +} + +/* ****************************************************************** */ +union clause ast = RISCV_CTZ : (regidx, regidx) + +mapping clause encdec = RISCV_CTZ(rs1, rd) + <-> 0b011000000001 @ encdec_reg(rs1) @ 0b001 @ encdec_reg(rd) @ 0b0010011 + when currentlyEnabled(Ext_Zbb) + +mapping clause assembly = RISCV_CTZ(rs1, rd) + <-> "ctz" ^ spc() ^ reg_name(rd) ^ sep() ^ reg_name(rs1) + +function clause execute (RISCV_CTZ(rs1, rd)) = { + let rs1_val = X(rs1); + var result : nat = 0; + var done : bool = false; + foreach (i from 0 to (xlen - 1)) + if not(done) then if rs1_val[i] == bitzero + then result = result + 1 + else done = true; + X(rd) = to_bits(xlen, result); + RETIRE_SUCCESS +} + +/* ****************************************************************** */ +union clause ast = RISCV_CTZW : (regidx, regidx) + +mapping clause encdec = RISCV_CTZW(rs1, rd) + <-> 0b011000000001 @ encdec_reg(rs1) @ 0b001 @ encdec_reg(rd) @ 0b0011011 + when currentlyEnabled(Ext_Zbb) & xlen == 64 + +mapping clause assembly = RISCV_CTZW(rs1, rd) + <-> "ctzw" ^ spc() ^ reg_name(rd) ^ sep() ^ reg_name(rs1) + +function clause execute (RISCV_CTZW(rs1, rd)) = { + let rs1_val = X(rs1); + var result : nat = 0; + var done : bool = false; + foreach (i from 0 to 31) + if not(done) then if rs1_val[i] == bitzero + then result = result + 1 + else done = true; + X(rd) = to_bits(xlen, result); + RETIRE_SUCCESS +} \ No newline at end of file diff --git a/samples/Sail/types.sail b/samples/Sail/types.sail new file mode 100644 index 0000000000..73025ebfba --- /dev/null +++ b/samples/Sail/types.sail @@ -0,0 +1,65 @@ +default Order dec + +$include +$include +$include + +// Basic types are: + +// Any integer, limited only by your computer's memory! +let a : int = 1000000000000000000000000000000000000000000000000000000000000000 + +// Any natural number (non-negative integer). +let b : nat = 1000000000000000000000000000000000000000000000000000000000000000 + +// An inclusive range of integers. +let c : range(1, 6) = 3 + +// Strings. Sail only has very basic string support, mainly for logging and +// assembly/disassembly support. +let d : string = "hello" + +// Boolean +let e : bool = false + +// Unit (like an empty tuple; roughly equivalent to 'void'). +let f : unit = () + +// Bit vector. Note that bit-vector literals are written in hex or binary +// and leading zeros are significant! 0xF is a 4-bit bitvector, but 0x0F is +// an 8-bit bitvector. Try changing this to 0xF or 0b1010101. +let g : bits(8) = 0x0F + +// More complex types are: + +// Standard functional option and result types. +let h : option(int) = Some(5) +let i : option(nat) = None() + +let j : result(int, unit) = Ok(5) +let k : result(int, unit) = Err(()) + +// Fixed-length vectors. +let l : vector(4, int) = [1, 2, 3, 4] + +// Dynamically sized linked lists. +let m : list(int) = [|1, 2, 3, 4|] + +// Custom enum, union and struct types are supported. + +// Enums are not namespaced; so you refer to `Red` directly, not `Primary::Red`. +enum Primary = { Red, Green, Blue } + +// Unions are tagged (same as `enum` in Rust), and decoded using `match`. +union Instruction = { + FullSize : bits(32), + Compressed : bits(16), +} + +struct ExecutionStep = { + pc : bits(32), + instruction : Instruction, + retired : bool, +} + +function main() -> unit = () diff --git a/samples/Tor Config/filenames/torrc b/samples/Tor Config/filenames/torrc new file mode 100644 index 0000000000..795229b5d7 --- /dev/null +++ b/samples/Tor Config/filenames/torrc @@ -0,0 +1,12 @@ +ControlSocket /run/tor/control +ControlSocketsGroupWritable 1 +CookieAuthentication 1 +CookieAuthFileGroupReadable 1 +CookieAuthFile /run/tor/control.authcookie +DataDirectory /var/lib/tor +ExitPolicy reject6 *:*, reject *:* +ExitRelay 0 +IPv6Exit 0 +Log notice stdout +PublishServerDescriptor 0 +SOCKSPort 0.0.0.0:9050 diff --git a/samples/Untyped Plutus Core/add_numbers.uplc b/samples/Untyped Plutus Core/add_numbers.uplc new file mode 100644 index 0000000000..6994f88b32 --- /dev/null +++ b/samples/Untyped Plutus Core/add_numbers.uplc @@ -0,0 +1,4 @@ +(program + 1.0.0 + [ [ (builtin addInteger) (con integer 1) ] (con integer 2) ] +) \ No newline at end of file diff --git a/samples/Untyped Plutus Core/always_true.uplc b/samples/Untyped Plutus Core/always_true.uplc new file mode 100644 index 0000000000..5934ebe7a1 --- /dev/null +++ b/samples/Untyped Plutus Core/always_true.uplc @@ -0,0 +1,120 @@ +(program + 1.0.0 + [ + (lam + i_0 + [ + (lam + i_1 + [ + (lam + i_2 + [ + (lam + i_3 + (lam + i_4 + [ + (lam + i_5 + (lam + i_6 + [ + (lam + i_7 + (lam + i_8 + (force + [ + [ + [ i_3 (con bool True) ] + (delay (con unit ())) + ] + (delay [ (error ) (force (error )) ]) + ] + ) + ) + ) + [ + (lam + i_9 + (force + [ + [ + [ + i_3 + [ + [ + (builtin equalsInteger) + (con integer 0) + ] + [ i_2 i_9 ] + ] + ] + (delay + (force + [ + [ + [ i_0 [ i_1 i_9 ] ] + (delay (con unit ())) + ] + (delay (error )) + ] + ) + ) + ] + (delay (error )) + ] + ) + ) + [ (builtin unConstrData) i_6 ] + ] + ] + ) + ) + [ + (lam + i_10 + (force + [ + [ + [ + i_3 + [ + [ (builtin equalsInteger) (con integer 0) ] + [ i_2 i_10 ] + ] + ] + (delay + (force + [ + [ + [ i_0 [ i_1 i_10 ] ] + (delay (con unit ())) + ] + (delay (error )) + ] + ) + ) + ] + (delay (error )) + ] + ) + ) + [ (builtin unConstrData) i_4 ] + ] + ] + ) + ) + (force (builtin ifThenElse)) + ] + ) + (force (force (builtin fstPair))) + ] + ) + (force (force (builtin sndPair))) + ] + ) + (force (force (builtin chooseList))) + ] +) \ No newline at end of file diff --git a/samples/Vento/index.vto b/samples/Vento/index.vto new file mode 100644 index 0000000000..016e52534f --- /dev/null +++ b/samples/Vento/index.vto @@ -0,0 +1,67 @@ +--- +layout: ./base.vto +page_css: docs.css +--- + +
+ {{ include "templates/doc-navbar.vto" }} + +
+
+

{{ title }}

+ {{ description |> md }} + + {{ include "templates/toc.vto" }} +
+ +
+ + + +
+
diff --git a/samples/XML/Robots.slnx b/samples/XML/Robots.slnx new file mode 100644 index 0000000000..a56dadf61d --- /dev/null +++ b/samples/XML/Robots.slnx @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/samples/Zmodel/blog.zmodel b/samples/Zmodel/blog.zmodel new file mode 100644 index 0000000000..6abc784d09 --- /dev/null +++ b/samples/Zmodel/blog.zmodel @@ -0,0 +1,88 @@ +// This is your Prisma schema file, +// learn more about it in the docs: https://pris.ly/d/prisma-schema + +generator client { + provider = "prisma-client-js" +} + +datasource db { + provider = "sqlite" + // NOTE: When using mysql or sqlserver, uncomment the @db.Text annotations in model Account below + // Further reading: + // https://next-auth.js.org/adapters/prisma#create-the-prisma-schema + // https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#string + url = env("DATABASE_URL") +} + +plugin hooks { + provider = '@zenstackhq/tanstack-query' + target = 'react' + version = 'v5' + output = "./src/lib/hooks" +} + +model Post { + id Int @id @default(autoincrement()) + name String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + createdBy User @relation(fields: [createdById], references: [id]) + createdById String + + @@index([name]) +} + +// Necessary for Next auth +model Account { + id String @id @default(cuid()) + userId String + type String + provider String + providerAccountId String + refresh_token String? // @db.Text + access_token String? // @db.Text + expires_at Int? + token_type String? + scope String? + id_token String? // @db.Text + session_state String? + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + refresh_token_expires_in Int? + + @@unique([provider, providerAccountId]) +} + +model Session { + id String @id @default(cuid()) + sessionToken String @unique + userId String + expires DateTime + user User @relation(fields: [userId], references: [id], onDelete: Cascade) +} + +model User { + id String @id @default(cuid()) + name String? + email String? @unique + emailVerified DateTime? + password String @password @omit + image String? + accounts Account[] + sessions Session[] + posts Post[] + + // everyone can signup, and user profile is also publicly readable + @@allow('create,read', true) + + // only the user can update or delete their own profile + @@allow('update,delete', auth() == this) +} + +model VerificationToken { + identifier String + token String @unique + expires DateTime + + @@unique([identifier, token]) +} diff --git a/samples/Zmodel/saas.zmodel b/samples/Zmodel/saas.zmodel new file mode 100644 index 0000000000..955f7a80b4 --- /dev/null +++ b/samples/Zmodel/saas.zmodel @@ -0,0 +1,96 @@ +datasource db { + provider="sqlite" + url="file:./dev.db" +} + +generator client { + provider = "prisma-client-js" +} + +/** + * Model for a user + */ +model User { + id String @id @default(uuid()) + email String @unique + password String? @password @omit + name String? + orgs Organization[] + posts Post[] + groups Group[] + + // can be created by anyone, even not logged in + @@allow('create', true) + // can be read by users in the same organization + @@allow('read', orgs?[members?[auth() == this]]) + // full access by oneself + @@allow('all', auth() == this) +} + +/** + * Model for a organization + */ +model Organization { + id String @id @default(uuid()) + name String + members User[] + post Post[] + groups Group[] + + // everyone can create a organization + @@allow('create', true) + // any user in the organization can read the organization + @@allow('read', members?[auth().id == id]) +} + +/** +* Base model for all entites in a organization +*/ +abstract model organizationBaseEntity { + id String @id @default(uuid()) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + isDeleted Boolean @default(false) @omit + isPublic Boolean @default(false) + owner User @relation(fields: [ownerId], references: [id], onDelete: Cascade) + ownerId String + org Organization @relation(fields: [orgId], references: [id], onDelete: Cascade) + orgId String + groups Group[] + + // when create, owner must be set to current user, and user must be in the organization + @@allow('create', owner == auth() && org.members?[id == auth().id]) + // only the owner can update it and is not allowed to change the owner + @@allow('update', owner == auth() && org.members?[id == auth().id] && future().owner == owner) + // allow owner to read + @@allow('read', owner == auth()) + // allow shared group members to read it + @@allow('read', groups?[users?[id == auth().id]]) + // allow organization to access if public + @@allow('read', isPublic && org.members?[id == auth().id]) + // can not be read if deleted + @@deny('all', isDeleted == true) +} + +/** +* Model for a post +*/ +model Post extends organizationBaseEntity { + title String + content String +} + +/** + * Model for a group + */ +model Group { + id String @id @default(uuid()) + name String + users User[] + posts Post[] + org Organization @relation(fields: [orgId], references: [id]) + orgId String + + // group is shared by organization + @@allow('all', org.members?[auth().id == id]) +} \ No newline at end of file diff --git a/samples/Zmodel/todo.zmodel b/samples/Zmodel/todo.zmodel new file mode 100644 index 0000000000..25d918defd --- /dev/null +++ b/samples/Zmodel/todo.zmodel @@ -0,0 +1,178 @@ +/* +* Sample model for a collaborative Todo app +*/ + +datasource db { + provider = 'sqlite' + url = 'file:./dev.db' +} + +generator js { + provider = 'prisma-client-js' +} + +plugin enhancer { + provider = '@core/enhancer' + generatePermissionChecker = true +} + +plugin hooks { + provider = '@zenstackhq/swr' + output = 'lib/hooks' +} + + +/** + * Model for a space in which users can collaborate on Lists and Todos + */ +model Space { + id String @id @default(uuid()) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + name String @length(4, 50) + slug String @unique @regex('^[0-9a-zA-Z]{4,16}$') + members SpaceUser[] + lists List[] + + // require login + @@deny('all', auth() == null) + + // everyone can create a space + @@allow('create', true) + + // any user in the space can read the space + @@allow('read', members?[user == auth()]) + + // space admin can update and delete + @@allow('update,delete', members?[user == auth() && role == 'ADMIN']) + + @@deny('update', future().members?[user == auth()]) +} + +/** + * Model representing membership of a user in a space + */ +model SpaceUser { + id String @id @default(uuid()) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + space Space @relation(fields: [spaceId], references: [id], onDelete: Cascade) + spaceId String + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + userId String + role String + @@unique([userId, spaceId]) + + // require login + @@deny('all', auth() == null) + + // space admin can create/update/delete + @@allow('create,update,delete', space.members?[user == auth() && role == 'ADMIN']) + + // user can read entries for spaces which he's a member of + @@allow('read', space.members?[user == auth()]) +} + +/** + * Model for a user + */ +model User { + id String @id @default(uuid()) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + email String @unique @email + emailVerified DateTime? + password String? @password @omit + name String? + spaces SpaceUser[] + image String? @url + lists List[] + todos Todo[] + + // next-auth + accounts Account[] + + // can be created by anyone, even not logged in + @@allow('create', true) + + // can be read by users sharing any space + @@allow('read', spaces?[space.members?[user == auth()]]) + + // full access by oneself + @@allow('all', auth() == this) +} + +abstract model BaseEntity { + id String @id @default(uuid()) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + space Space @relation(fields: [spaceId], references: [id], onDelete: Cascade) + spaceId String + owner User @relation(fields: [ownerId], references: [id], onDelete: Cascade) + ownerId String @default(auth().id) + + // can be read by owner or space members + @@allow('read', owner == auth() || (space.members?[user == auth()])) + + // when create, owner must be set to current user, and user must be in the space + @@allow('create', owner == auth() && space.members?[user == auth()]) + + // when create, owner must be set to current user, and user must be in the space + // update is not allowed to change owner + @@allow('update', owner == auth() && space.members?[user == auth()] && future().owner == owner) + + // can be deleted by owner + @@allow('delete', owner == auth()) +} + +/** + * Model for a Todo list + */ +model List extends BaseEntity { + title String @length(1, 100) + private Boolean @default(false) + todos Todo[] + + // can't be read by others if it's private + @@deny('read', private == true && owner != auth()) +} + +/** + * Model for a single Todo + */ +model Todo { + id String @id @default(uuid()) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + owner User @relation(fields: [ownerId], references: [id], onDelete: Cascade) + ownerId String @default(auth().id) + list List @relation(fields: [listId], references: [id], onDelete: Cascade) + listId String + title String @length(1, 100) + completedAt DateTime? + + // full access if the parent list is readable + @@allow('all', check(list, 'read')) +} + +/** + * Next-auth user account + */ +model Account { + id String @id @default(uuid()) + userId String + type String + provider String + providerAccountId String + refresh_token String? + refresh_token_expires_in Int? + access_token String? + expires_at Int? + token_type String? + scope String? + id_token String? + session_state String? + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + @@unique([provider, providerAccountId]) +} \ No newline at end of file diff --git a/test/test_generated.rb b/test/test_generated.rb index bb03f971e2..6ec4eed3c3 100644 --- a/test/test_generated.rb +++ b/test/test_generated.rb @@ -17,7 +17,7 @@ def generated_without_loading_data(blob, negate = false) begin expected = !negate actual = Generated.generated?(blob, lambda { raise DataLoadedError.new }) - assert(expected == !!actual, error_message(blob, negate)) + assert(expected == actual, error_message(blob, negate)) rescue DataLoadedError assert false, "Data was loaded when calling generated? on #{blob}" end @@ -114,6 +114,9 @@ def test_check_generated # Minified files generated_sample_loading_data("JavaScript/jquery-1.6.1.min.js") + # MySQL View Definition Format (INI) + generated_sample_loading_data("INI/metrics.frm") + # JavaScript with source-maps generated_sample_loading_data("JavaScript/namespace.js") generated_fixture_loading_data("Generated/inline.js") @@ -198,6 +201,9 @@ def test_check_generated # jOOQ generated_sample_loading_data("Java/generated-jooq-table.java") + # Package.resolved + generated_sample_without_loading_data("JSON/filenames/Package.resolved") + # poetry generated_sample_without_loading_data("TOML/filenames/poetry.lock") diff --git a/test/test_heuristics.rb b/test/test_heuristics.rb index 544b2234fb..2f5bfe3374 100755 --- a/test/test_heuristics.rb +++ b/test/test_heuristics.rb @@ -313,6 +313,13 @@ def test_bs_by_heuristics }) end + def test_bst_by_heuristics + assert_heuristics({ + "BibTeX Style" => all_fixtures("BibTeX Style", "*.bst"), + "BuildStream" => all_fixtures("BuildStream", "*.bst") + }) + end + def test_builds_by_heuristics assert_heuristics({ nil => all_fixtures("Text"), @@ -455,6 +462,7 @@ def test_frm_by_heuristics assert_heuristics({ "VBA" => all_fixtures("VBA", "*.frm"), "Visual Basic 6.0" => all_fixtures("Visual Basic 6.0", "*.frm"), + "INI" => all_fixtures("INI", "*.frm"), }) end @@ -1102,7 +1110,7 @@ def test_url_by_heuristics def test_v_by_heuristics assert_heuristics({ - "Coq" => all_fixtures("Coq", "*.v"), + "Rocq Prover" => all_fixtures("Rocq Prover", "*.v"), "V" => all_fixtures("V", "*.v"), "Verilog" => all_fixtures("Verilog", "*.v") }) diff --git a/test/test_language.rb b/test/test_language.rb index 9bed1a417e..4acdc6c013 100644 --- a/test/test_language.rb +++ b/test/test_language.rb @@ -355,10 +355,10 @@ def test_all_languages_have_grammars scopes = YAML.load(File.read(File.expand_path("../../grammars.yml", __FILE__))).values.flatten missing = Language.all.reject { |language| language.tm_scope == "none" || scopes.include?(language.tm_scope) } message = "The following languages' scopes are not listed in grammars.yml. Please add grammars for all new languages.\n" - message << "If no grammar exists for a language, mark the language with `tm_scope: none` in lib/linguist/languages.yml.\n" + message += "If no grammar exists for a language, mark the language with `tm_scope: none` in lib/linguist/languages.yml.\n" width = missing.map { |language| language.name.length }.max - message << missing.map { |language| sprintf("%-#{width}s %s", language.name, language.tm_scope) }.sort.join("\n") + message += missing.map { |language| sprintf("%-#{width}s %s", language.name, language.tm_scope) }.sort.join("\n") assert missing.empty?, message end @@ -366,7 +366,7 @@ def test_all_languages_have_scopes languages = YAML.load(File.read(File.expand_path("../../lib/linguist/languages.yml", __FILE__))) missing = languages.reject { |name,language| language.has_key?('tm_scope') } message = "The following languages do not have a `tm_scope` field defined. Use `tm_scope: none` if the language has no grammar.\n" - message << missing.keys.sort.join("\n") + message += missing.keys.sort.join("\n") assert missing.empty?, message end @@ -375,7 +375,7 @@ def test_all_languages_have_type message = "The following languages do not have a type listed in grammars.yml. Please add types for all new languages.\n" width = missing.map { |language| language.name.length }.max - message << missing.map { |language| sprintf("%-#{width}s", language.name) }.sort.join("\n") + message += missing.map { |language| sprintf("%-#{width}s", language.name) }.sort.join("\n") assert missing.empty?, message end @@ -416,10 +416,10 @@ def test_all_languages_have_a_valid_ace_mode missing = Language.all.reject { |language| language.ace_mode == "text" || existing_ace_modes.include?(language.ace_mode) } message = "The following languages do not have an Ace mode listed in languages.yml. Please add an Ace mode for all new languages.\n" - message << "If no Ace mode exists for a language, mark the language with `ace_mode: text` in lib/linguist/languages.yml.\n" + message += "If no Ace mode exists for a language, mark the language with `ace_mode: text` in lib/linguist/languages.yml.\n" width = missing.map { |language| language.name.length }.max - message << missing.map { |language| sprintf("%-#{width}s %s", language.name, language.ace_mode) }.sort.join("\n") + message += missing.map { |language| sprintf("%-#{width}s %s", language.name, language.ace_mode) }.sort.join("\n") assert missing.empty?, message end @@ -462,7 +462,7 @@ def test_all_popular_languages_exist missing = popular - Language.all.map(&:name) message = "The following languages are listed in lib/linguist/popular.yml but not in lib/linguist/languages.yml.\n" - message << missing.sort.join("\n") + message += missing.sort.join("\n") assert missing.empty?, message end diff --git a/test/test_strategies.rb b/test/test_strategies.rb index 9c0bbc8b51..b0015922d4 100644 --- a/test/test_strategies.rb +++ b/test/test_strategies.rb @@ -190,7 +190,8 @@ def test_xml "#{samples_path}/XML/some-ideas.mm", "#{samples_path}/XML/GMOculus.project.gmx", "#{samples_path}/XML/obj_control.object.gmx", - "#{samples_path}/XML/MainView.axaml" + "#{samples_path}/XML/MainView.axaml", + "#{samples_path}/XML/Robots.slnx", ] assert_all_xml all_xml_fixtures("*") - no_root_tag diff --git a/vendor/CodeMirror b/vendor/CodeMirror index eed51d071b..1df33b7ac7 160000 --- a/vendor/CodeMirror +++ b/vendor/CodeMirror @@ -1 +1 @@ -Subproject commit eed51d071bce00302f209d66b8d2cf908b2cb733 +Subproject commit 1df33b7ac759488da69d8d83a792636e7c08c2e2 diff --git a/vendor/README.md b/vendor/README.md index d4f554ffc2..12b8a3bca7 100644 --- a/vendor/README.md +++ b/vendor/README.md @@ -8,11 +8,11 @@ This is a list of grammars that Linguist selects to provide syntax highlighting - **1C Enterprise:** [1c-syntax/vsc-language-1c-bsl](https://github.com/1c-syntax/vsc-language-1c-bsl) - **2-Dimensional Array:** [Alhadis/language-etc](https://github.com/Alhadis/language-etc) -- **4D:** [ayoubserti/lang-4d](https://github.com/ayoubserti/lang-4d) +- **4D:** [4d/language-4d](https://github.com/4d/language-4d) - **ABAP:** [pvl/abap.tmbundle](https://github.com/pvl/abap.tmbundle) - **ABAP CDS:** [FreHu/abap-cds-grammar](https://github.com/FreHu/abap-cds-grammar) - **ABNF:** [Alhadis/language-grammars](https://github.com/Alhadis/language-grammars) -- **AGS Script:** [textmate/c.tmbundle](https://github.com/textmate/c.tmbundle) +- **AGS Script:** [mikomikotaishi/c.tmbundle](https://github.com/mikomikotaishi/c.tmbundle) - **AIDL:** [google/aidl-language](https://github.com/google/aidl-language) - **AL:** [microsoft/AL](https://github.com/microsoft/AL) - **AMPL:** [ampl/sublime-ampl](https://github.com/ampl/sublime-ampl) @@ -28,6 +28,7 @@ This is a list of grammars that Linguist selects to provide syntax highlighting - **Adblock Filter List:** [AdguardTeam/VscodeAdblockSyntax](https://github.com/AdguardTeam/VscodeAdblockSyntax) - **Adobe Font Metrics:** [Alhadis/language-fontforge](https://github.com/Alhadis/language-fontforge) - **Agda:** [agda/agda-github-syntax-highlighting](https://github.com/agda/agda-github-syntax-highlighting) +- **Aiken:** [aiken-lang/vscode-aiken](https://github.com/aiken-lang/vscode-aiken) - **Alloy:** [macekond/Alloy.tmbundle](https://github.com/macekond/Alloy.tmbundle) - **Alpine Abuild:** [atom/language-shellscript](https://github.com/atom/language-shellscript) - **Altium Designer:** [textmate/ini.tmbundle](https://github.com/textmate/ini.tmbundle) @@ -43,7 +44,7 @@ This is a list of grammars that Linguist selects to provide syntax highlighting - **AspectJ:** [pchaigno/sublime-aspectj](https://github.com/pchaigno/sublime-aspectj) - **Assembly:** [Nessphoro/sublimeassembly](https://github.com/Nessphoro/sublimeassembly) - **Astro:** [withastro/language-tools](https://github.com/withastro/language-tools) -- **Asymptote:** [textmate/c.tmbundle](https://github.com/textmate/c.tmbundle) +- **Asymptote:** [mikomikotaishi/c.tmbundle](https://github.com/mikomikotaishi/c.tmbundle) - **AutoHotkey:** [ahkscript/SublimeAutoHotkey](https://github.com/ahkscript/SublimeAutoHotkey) - **AutoIt:** [AutoIt/SublimeAutoItScript](https://github.com/AutoIt/SublimeAutoItScript) - **Avro IDL:** [Jason3S/avro.tmLanguage](https://github.com/Jason3S/avro.tmLanguage) @@ -73,9 +74,10 @@ This is a list of grammars that Linguist selects to provide syntax highlighting - **BrighterScript:** [rokucommunity/vscode-brightscript-language](https://github.com/rokucommunity/vscode-brightscript-language) - **Brightscript:** [rokucommunity/vscode-brightscript-language](https://github.com/rokucommunity/vscode-brightscript-language) - **Browserslist:** [browserslist/browserslist-vscode](https://github.com/browserslist/browserslist-vscode) +- **BuildStream:** [atom/language-yaml](https://github.com/atom/language-yaml) - **C:** [tree-sitter/tree-sitter-c](https://github.com/tree-sitter/tree-sitter-c) 🐌 - **C#:** [tree-sitter/tree-sitter-c-sharp](https://github.com/tree-sitter/tree-sitter-c-sharp) 🐌 -- **C++:** [textmate/c.tmbundle](https://github.com/textmate/c.tmbundle) +- **C++:** [mikomikotaishi/c.tmbundle](https://github.com/mikomikotaishi/c.tmbundle) - **C-ObjDump:** [nanoant/assembly.tmbundle](https://github.com/nanoant/assembly.tmbundle) - **C2hs Haskell:** [atom-haskell/language-haskell](https://github.com/atom-haskell/language-haskell) - **CAP CDS:** [SAP/cds-textmate-grammar](https://github.com/SAP/cds-textmate-grammar) @@ -111,6 +113,7 @@ This is a list of grammars that Linguist selects to provide syntax highlighting - **Clojure:** [atom/language-clojure](https://github.com/atom/language-clojure) - **Closure Templates:** [mthadley/language-closure-templates](https://github.com/mthadley/language-closure-templates) - **Cloud Firestore Security Rules:** [jaysquared/atom-firestore-grammar](https://github.com/jaysquared/atom-firestore-grammar) +- **Clue:** [ClueLang/Clue-for-VSCode](https://github.com/ClueLang/Clue-for-VSCode) - **CoNLL-U:** [odanoburu/conllu-linguist-grammar](https://github.com/odanoburu/conllu-linguist-grammar) - **CodeQL:** [tree-sitter/tree-sitter-ql](https://github.com/tree-sitter/tree-sitter-ql) 🐌 - **CoffeeScript:** [atom/language-coffee-script](https://github.com/atom/language-coffee-script) @@ -120,7 +123,6 @@ This is a list of grammars that Linguist selects to provide syntax highlighting - **Common Workflow Language:** [manabuishii/language-cwl](https://github.com/manabuishii/language-cwl) - **Component Pascal:** [textmate/pascal.tmbundle](https://github.com/textmate/pascal.tmbundle) - **Cool:** [anunayk/cool-tmbundle](https://github.com/anunayk/cool-tmbundle) -- **Coq:** [mkolosick/Sublime-Coq](https://github.com/mkolosick/Sublime-Coq) - **Cpp-ObjDump:** [nanoant/assembly.tmbundle](https://github.com/nanoant/assembly.tmbundle) - **Creole:** [Siddley/Creole](https://github.com/Siddley/Creole) - **Crystal:** [atom-crystal/language-crystal](https://github.com/atom-crystal/language-crystal) @@ -139,9 +141,10 @@ This is a list of grammars that Linguist selects to provide syntax highlighting - **D2:** [terrastruct/d2-vscode](https://github.com/terrastruct/d2-vscode) - **DM:** [spacestation13/dm-syntax](https://github.com/spacestation13/dm-syntax) - **DNS Zone:** [sixty4k/st2-zonefile](https://github.com/sixty4k/st2-zonefile) -- **DTrace:** [textmate/c.tmbundle](https://github.com/textmate/c.tmbundle) +- **DTrace:** [mikomikotaishi/c.tmbundle](https://github.com/mikomikotaishi/c.tmbundle) - **Dafny:** [DafnyVSCode/Dafny-VSCode](https://github.com/DafnyVSCode/Dafny-VSCode) - **Dart:** [dart-lang/dart-syntax-highlight](https://github.com/dart-lang/dart-syntax-highlight) +- **Daslang:** [moleium/daslang-grammar](https://github.com/moleium/daslang-grammar) - **DataWeave:** [mulesoft-labs/data-weave-tmLanguage](https://github.com/mulesoft-labs/data-weave-tmLanguage) - **Debian Package Control File:** [tsbarnes/language-debian](https://github.com/tsbarnes/language-debian) - **DenizenScript:** [DenizenScript/denizenscript-grammar](https://github.com/DenizenScript/denizenscript-grammar) @@ -165,7 +168,7 @@ This is a list of grammars that Linguist selects to provide syntax highlighting - **Edge:** [edge-js/edge-vscode](https://github.com/edge-js/edge-vscode) - **EdgeQL:** [edgedb/edgedb-editor-plugin](https://github.com/edgedb/edgedb-editor-plugin) - **EditorConfig:** [sindresorhus/atom-editorconfig](https://github.com/sindresorhus/atom-editorconfig) -- **Edje Data Collection:** [textmate/c.tmbundle](https://github.com/textmate/c.tmbundle) +- **Edje Data Collection:** [mikomikotaishi/c.tmbundle](https://github.com/mikomikotaishi/c.tmbundle) - **Eiffel:** [textmate/eiffel.tmbundle](https://github.com/textmate/eiffel.tmbundle) - **Elixir:** [elixir-lang/tree-sitter-elixir](https://github.com/elixir-lang/tree-sitter-elixir) 🐌 - **Elvish:** [elves/elvish](https://github.com/elves/elvish) @@ -196,11 +199,12 @@ This is a list of grammars that Linguist selects to provide syntax highlighting - **GCC Machine Description:** [textmate/lisp.tmbundle](https://github.com/textmate/lisp.tmbundle) - **GDB:** [quarnster/SublimeGDB](https://github.com/quarnster/SublimeGDB) - **GDScript:** [godotengine/godot-vscode-plugin](https://github.com/godotengine/godot-vscode-plugin) +- **GDShader:** [godotengine/godot-vscode-plugin](https://github.com/godotengine/godot-vscode-plugin) - **GEDCOM:** [fguitton/vscode-gedcom](https://github.com/fguitton/vscode-gedcom) - **GLSL:** [euler0/sublime-glsl](https://github.com/euler0/sublime-glsl) - **GN:** [devoncarew/language-gn](https://github.com/devoncarew/language-gn) - **GSC:** [Jake-NotTheMuss/CoDT7-Sublime](https://github.com/Jake-NotTheMuss/CoDT7-Sublime) -- **Game Maker Language:** [textmate/c.tmbundle](https://github.com/textmate/c.tmbundle) +- **Game Maker Language:** [mikomikotaishi/c.tmbundle](https://github.com/mikomikotaishi/c.tmbundle) - **Gemfile.lock:** [hmarr/gemfile-lock-tmlanguage](https://github.com/hmarr/gemfile-lock-tmlanguage) - **Gemini:** [printfn/gemini-vscode](https://github.com/printfn/gemini-vscode) - **Genero 4gl:** [FourjsGenero/GeneroFgl.tmbundle](https://github.com/FourjsGenero/GeneroFgl.tmbundle) @@ -237,6 +241,7 @@ This is a list of grammars that Linguist selects to provide syntax highlighting - **Groovy Server Pages:** [textmate/java.tmbundle](https://github.com/textmate/java.tmbundle) - **HAProxy:** [abulimov/atom-language-haproxy](https://github.com/abulimov/atom-language-haproxy) - **HCL:** [hashicorp/syntax](https://github.com/hashicorp/syntax) +- **HIP:** [mikomikotaishi/c.tmbundle](https://github.com/mikomikotaishi/c.tmbundle) - **HLSL:** [tgjones/shaders-tmLanguage](https://github.com/tgjones/shaders-tmLanguage) - **HOCON:** [jacobwgillespie/language-hocon](https://github.com/jacobwgillespie/language-hocon) - **HTML:** [tree-sitter/tree-sitter-html](https://github.com/tree-sitter/tree-sitter-html) 🐌 @@ -308,6 +313,7 @@ This is a list of grammars that Linguist selects to provide syntax highlighting - **KiCad Schematic:** [Alhadis/language-pcb](https://github.com/Alhadis/language-pcb) - **Kickstart:** [wgwoods/language-kickstart](https://github.com/wgwoods/language-kickstart) - **Kit:** [atom/language-html](https://github.com/atom/language-html) +- **Koka:** [koka-community/koka-textmate-grammar](https://github.com/koka-community/koka-textmate-grammar) - **Kotlin:** [nishtahir/language-kotlin](https://github.com/nishtahir/language-kotlin) - **Kusto:** [mmanela/kusto-sublime](https://github.com/mmanela/kusto-sublime) - **LFE:** [textmate/lisp.tmbundle](https://github.com/textmate/lisp.tmbundle) @@ -321,6 +327,7 @@ This is a list of grammars that Linguist selects to provide syntax highlighting - **Latte:** [textmate/php-smarty.tmbundle](https://github.com/textmate/php-smarty.tmbundle) - **Lean:** [leanprover/vscode-lean](https://github.com/leanprover/vscode-lean) - **Lean 4:** [leanprover/vscode-lean4](https://github.com/leanprover/vscode-lean4) +- **Leo:** [ProvableHQ/leo-linguist](https://github.com/ProvableHQ/leo-linguist) - **Less:** [atom/language-less](https://github.com/atom/language-less) - **Lex:** [Alhadis/language-grammars](https://github.com/Alhadis/language-grammars) - **LigoLANG:** [pewulfman/Ligo-grammar](https://github.com/pewulfman/Ligo-grammar) @@ -330,13 +337,14 @@ This is a list of grammars that Linguist selects to provide syntax highlighting - **Literate CoffeeScript:** [atom/language-coffee-script](https://github.com/atom/language-coffee-script) - **Literate Haskell:** [atom-haskell/language-haskell](https://github.com/atom-haskell/language-haskell) - **LiveCode Script:** [Ferruslogic/vscode-livecodescript](https://github.com/Ferruslogic/vscode-livecodescript) -- **LiveScript:** [paulmillr/LiveScript.tmbundle](https://github.com/paulmillr/LiveScript.tmbundle) +- **LiveScript:** [sharktide/livescript-vscode](https://github.com/sharktide/livescript-vscode) - **Logos:** [Cykey/Sublime-Logos](https://github.com/Cykey/Sublime-Logos) - **Logtalk:** [textmate/logtalk.tmbundle](https://github.com/textmate/logtalk.tmbundle) - **LookML:** [atom/language-yaml](https://github.com/atom/language-yaml) - **LoomScript:** [ambethia/Sublime-Loom](https://github.com/ambethia/Sublime-Loom) - **Lua:** [LuaLS/lua.tmbundle](https://github.com/LuaLS/lua.tmbundle) - **Luau:** [JohnnyMorganz/Luau.tmLanguage](https://github.com/JohnnyMorganz/Luau.tmLanguage) +- **M3U:** [Alhadis/language-etc](https://github.com/Alhadis/language-etc) - **M4:** [Alhadis/language-etc](https://github.com/Alhadis/language-etc) - **M4Sugar:** [Alhadis/language-etc](https://github.com/Alhadis/language-etc) - **MATLAB:** [mathworks/MATLAB-Language-grammar](https://github.com/mathworks/MATLAB-Language-grammar) @@ -358,7 +366,7 @@ This is a list of grammars that Linguist selects to provide syntax highlighting - **Mercury:** [sebgod/mercury-tmlanguage](https://github.com/sebgod/mercury-tmlanguage) - **Mermaid:** [Alhadis/language-mermaid](https://github.com/Alhadis/language-mermaid) - **Meson:** [TingPing/language-meson](https://github.com/TingPing/language-meson) -- **Metal:** [textmate/c.tmbundle](https://github.com/textmate/c.tmbundle) +- **Metal:** [mikomikotaishi/c.tmbundle](https://github.com/mikomikotaishi/c.tmbundle) - **Microsoft Visual Studio Solution:** [Nixinova/NovaGrammars](https://github.com/Nixinova/NovaGrammars) - **MiniYAML:** [OpenRA/atom-miniyaml](https://github.com/OpenRA/atom-miniyaml) - **MiniZinc:** [Dekker1/vscode-minizinc](https://github.com/Dekker1/vscode-minizinc) @@ -419,7 +427,7 @@ This is a list of grammars that Linguist selects to provide syntax highlighting - **Opa:** [mads379/opa.tmbundle](https://github.com/mads379/opa.tmbundle) - **Opal:** [artifactz/sublime-opal](https://github.com/artifactz/sublime-opal) - **Open Policy Agent:** [open-policy-agent/vscode-opa](https://github.com/open-policy-agent/vscode-opa) -- **OpenCL:** [textmate/c.tmbundle](https://github.com/textmate/c.tmbundle) +- **OpenCL:** [mikomikotaishi/c.tmbundle](https://github.com/mikomikotaishi/c.tmbundle) - **OpenEdge ABL:** [chriscamicas/abl-tmlanguage](https://github.com/chriscamicas/abl-tmlanguage) - **OpenQASM:** [tareqdandachi/language-qasm](https://github.com/tareqdandachi/language-qasm) - **OpenRC runscript:** [atom/language-shellscript](https://github.com/atom/language-shellscript) @@ -490,7 +498,7 @@ This is a list of grammars that Linguist selects to provide syntax highlighting - **REXX:** [mblocker/rexx-sublime](https://github.com/mblocker/rexx-sublime) - **RMarkdown:** [wooorm/markdown-tm-language](https://github.com/wooorm/markdown-tm-language) - **RON:** [a5huynh/vscode-ron](https://github.com/a5huynh/vscode-ron) -- **RPC:** [textmate/c.tmbundle](https://github.com/textmate/c.tmbundle) +- **RPC:** [mikomikotaishi/c.tmbundle](https://github.com/mikomikotaishi/c.tmbundle) - **RPGLE:** [barrettotte/vscode-ibmi-languages](https://github.com/barrettotte/vscode-ibmi-languages) - **RPM Spec:** [waveclaw/language-rpm-spec](https://github.com/waveclaw/language-rpm-spec) - **RUNOFF:** [Alhadis/language-roff](https://github.com/Alhadis/language-roff) @@ -513,6 +521,7 @@ This is a list of grammars that Linguist selects to provide syntax highlighting - **Riot:** [riot/syntax-highlight](https://github.com/riot/syntax-highlight) - **RobotFramework:** [shellderp/sublime-robot-plugin](https://github.com/shellderp/sublime-robot-plugin) - **Roc:** [ivan-demchenko/roc-vscode-unofficial](https://github.com/ivan-demchenko/roc-vscode-unofficial) +- **Rocq Prover:** [mkolosick/Sublime-Coq](https://github.com/mkolosick/Sublime-Coq) - **Roff:** [Alhadis/language-roff](https://github.com/Alhadis/language-roff) - **Roff Manpage:** [Alhadis/language-roff](https://github.com/Alhadis/language-roff) - **Rouge:** [atom/language-clojure](https://github.com/atom/language-clojure) @@ -532,8 +541,9 @@ This is a list of grammars that Linguist selects to provide syntax highlighting - **STL:** [Alhadis/language-etc](https://github.com/Alhadis/language-etc) - **STON:** [tomas-stefano/smalltalk-tmbundle](https://github.com/tomas-stefano/smalltalk-tmbundle) - **SVG:** [Alhadis/language-etc](https://github.com/Alhadis/language-etc) -- **SWIG:** [textmate/c.tmbundle](https://github.com/textmate/c.tmbundle) +- **SWIG:** [mikomikotaishi/c.tmbundle](https://github.com/mikomikotaishi/c.tmbundle) - **Sage:** [MagicStack/MagicPython](https://github.com/MagicStack/MagicPython) +- **Sail:** [Timmmm/sail_vscode](https://github.com/Timmmm/sail_vscode) - **SaltStack:** [saltstack/atom-salt](https://github.com/saltstack/atom-salt) - **Sass:** [atom/language-sass](https://github.com/atom/language-sass) - **Scala:** [scala/vscode-scala-syntax](https://github.com/scala/vscode-scala-syntax) @@ -600,6 +610,7 @@ This is a list of grammars that Linguist selects to provide syntax highlighting - **TextMate Properties:** [textmate/textmate.tmbundle](https://github.com/textmate/textmate.tmbundle) - **Thrift:** [textmate/thrift.tmbundle](https://github.com/textmate/thrift.tmbundle) - **Toit:** [toitware/ide-tools](https://github.com/toitware/ide-tools) +- **Tor Config:** [Alhadis/language-etc](https://github.com/Alhadis/language-etc) - **Tree-sitter Query:** [jrieken/vscode-tree-sitter-query](https://github.com/jrieken/vscode-tree-sitter-query) - **Turing:** [Alhadis/language-turing](https://github.com/Alhadis/language-turing) - **Turtle:** [peta/turtle.tmbundle](https://github.com/peta/turtle.tmbundle) @@ -608,11 +619,12 @@ This is a list of grammars that Linguist selects to provide syntax highlighting - **TypeScript:** [tree-sitter/tree-sitter-typescript](https://github.com/tree-sitter/tree-sitter-typescript) 🐌 - **TypeSpec:** [microsoft/typespec](https://github.com/microsoft/typespec) - **Typst:** [michidk/typst-grammar](https://github.com/michidk/typst-grammar) -- **Unified Parallel C:** [textmate/c.tmbundle](https://github.com/textmate/c.tmbundle) +- **Unified Parallel C:** [mikomikotaishi/c.tmbundle](https://github.com/mikomikotaishi/c.tmbundle) - **Unity3D Asset:** [atom/language-yaml](https://github.com/atom/language-yaml) - **Unix Assembly:** [calculuswhiz/Assembly-Syntax-Definition](https://github.com/calculuswhiz/Assembly-Syntax-Definition) - **Uno:** [dotnet/csharp-tmLanguage](https://github.com/dotnet/csharp-tmLanguage) - **UnrealScript:** [textmate/java.tmbundle](https://github.com/textmate/java.tmbundle) +- **Untyped Plutus Core:** [aiken-lang/vscode-aiken](https://github.com/aiken-lang/vscode-aiken) - **UrWeb:** [gwalborn/UrWeb-Language-Definition](https://github.com/gwalborn/UrWeb-Language-Definition) - **V:** [0x9ef/vscode-vlang](https://github.com/0x9ef/vscode-vlang) - **VBA:** [serkonda7/vscode-vba](https://github.com/serkonda7/vscode-vba) @@ -622,6 +634,7 @@ This is a list of grammars that Linguist selects to provide syntax highlighting - **Vala:** [technosophos/Vala-TMBundle](https://github.com/technosophos/Vala-TMBundle) - **Valve Data Format:** [Nixinova/NovaGrammars](https://github.com/Nixinova/NovaGrammars) - **Velocity Template Language:** [animecyc/AtomLanguageVelocity](https://github.com/animecyc/AtomLanguageVelocity) +- **Vento:** [ventojs/vscode-vento](https://github.com/ventojs/vscode-vento) - **Verilog:** [textmate/verilog.tmbundle](https://github.com/textmate/verilog.tmbundle) - **Vim Help File:** [Alhadis/language-viml](https://github.com/Alhadis/language-viml) - **Vim Script:** [Alhadis/language-viml](https://github.com/Alhadis/language-viml) @@ -649,9 +662,9 @@ This is a list of grammars that Linguist selects to provide syntax highlighting - **Wollok:** [uqbar-project/wollok-sublime](https://github.com/uqbar-project/wollok-sublime) - **World of Warcraft Addon Data:** [nebularg/language-toc-wow](https://github.com/nebularg/language-toc-wow) - **Wren:** [Nelarius/vscode-wren](https://github.com/Nelarius/vscode-wren) -- **X BitMap:** [textmate/c.tmbundle](https://github.com/textmate/c.tmbundle) +- **X BitMap:** [mikomikotaishi/c.tmbundle](https://github.com/mikomikotaishi/c.tmbundle) - **X Font Directory Index:** [Alhadis/language-fontforge](https://github.com/Alhadis/language-fontforge) -- **X PixMap:** [textmate/c.tmbundle](https://github.com/textmate/c.tmbundle) +- **X PixMap:** [mikomikotaishi/c.tmbundle](https://github.com/mikomikotaishi/c.tmbundle) - **X10:** [x10-lang/x10-highlighting](https://github.com/x10-lang/x10-highlighting) - **XC:** [graymalkin/xc.tmbundle](https://github.com/graymalkin/xc.tmbundle) - **XCompose:** [samcv/language-xcompose](https://github.com/samcv/language-xcompose) @@ -660,7 +673,7 @@ This is a list of grammars that Linguist selects to provide syntax highlighting - **XPages:** [textmate/xml.tmbundle](https://github.com/textmate/xml.tmbundle) - **XProc:** [textmate/xml.tmbundle](https://github.com/textmate/xml.tmbundle) - **XQuery:** [wcandillon/language-jsoniq](https://github.com/wcandillon/language-jsoniq) -- **XS:** [textmate/c.tmbundle](https://github.com/textmate/c.tmbundle) +- **XS:** [mikomikotaishi/c.tmbundle](https://github.com/mikomikotaishi/c.tmbundle) - **XSLT:** [textmate/xml.tmbundle](https://github.com/textmate/xml.tmbundle) - **Xmake:** [xmake-io/xmake-lua.tmbundle](https://github.com/xmake-io/xmake-lua.tmbundle) - **Xojo:** [jimmckay/XojoSyntaxTM](https://github.com/jimmckay/XojoSyntaxTM) @@ -678,6 +691,7 @@ This is a list of grammars that Linguist selects to provide syntax highlighting - **ZenScript:** [CraftTweaker/ZenScript-tmLanguage](https://github.com/CraftTweaker/ZenScript-tmLanguage) - **Zephir:** [phalcon/zephir-sublime](https://github.com/phalcon/zephir-sublime) - **Zig:** [ziglang/sublime-zig-language](https://github.com/ziglang/sublime-zig-language) +- **Zmodel:** [zenstackhq/zenstack](https://github.com/zenstackhq/zenstack) - **cURL Config:** [Alhadis/language-etc](https://github.com/Alhadis/language-etc) - **crontab:** [textmate/cron.tmbundle](https://github.com/textmate/cron.tmbundle) - **desktop:** [Mailaender/desktop.tmbundle](https://github.com/Mailaender/desktop.tmbundle) diff --git a/vendor/grammars/AL b/vendor/grammars/AL index 9a3323f59d..014efc17f7 160000 --- a/vendor/grammars/AL +++ b/vendor/grammars/AL @@ -1 +1 @@ -Subproject commit 9a3323f59ddd1b231c32ded7d527cc727aa19994 +Subproject commit 014efc17f7562264cdb9da2b6c97104b3ff374ae diff --git a/vendor/grammars/Clue-for-VSCode b/vendor/grammars/Clue-for-VSCode new file mode 160000 index 0000000000..340e027aaf --- /dev/null +++ b/vendor/grammars/Clue-for-VSCode @@ -0,0 +1 @@ +Subproject commit 340e027aaffd1894a2bbdf567467424002fbeadf diff --git a/vendor/grammars/Jails b/vendor/grammars/Jails index 1f5c9c5c25..3f4c621fd5 160000 --- a/vendor/grammars/Jails +++ b/vendor/grammars/Jails @@ -1 +1 @@ -Subproject commit 1f5c9c5c256e6e25c3d618e9d694cc0e2f57e3cc +Subproject commit 3f4c621fd5e470ba09ec0b98ac20f514df0b2719 diff --git a/vendor/grammars/LiveScript.tmbundle b/vendor/grammars/LiveScript.tmbundle deleted file mode 160000 index d82aeb737d..0000000000 --- a/vendor/grammars/LiveScript.tmbundle +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d82aeb737d4883d1a74aba7a07053f90211d427b diff --git a/vendor/grammars/NimLime b/vendor/grammars/NimLime index 1b8f439096..5103faa2fa 160000 --- a/vendor/grammars/NimLime +++ b/vendor/grammars/NimLime @@ -1 +1 @@ -Subproject commit 1b8f4390968df8895cf81377b336efd60d21bc0d +Subproject commit 5103faa2fa948bc47843e73287a02a286e1f2cd0 diff --git a/vendor/grammars/NovaGrammars b/vendor/grammars/NovaGrammars index dab82691e1..b675183505 160000 --- a/vendor/grammars/NovaGrammars +++ b/vendor/grammars/NovaGrammars @@ -1 +1 @@ -Subproject commit dab82691e172ad558475967625b5665b369d4182 +Subproject commit b675183505ba8e8931a31351bf62954a18c1a14a diff --git a/vendor/grammars/VscodeAdblockSyntax b/vendor/grammars/VscodeAdblockSyntax index 46b00748d1..a5f81b6b92 160000 --- a/vendor/grammars/VscodeAdblockSyntax +++ b/vendor/grammars/VscodeAdblockSyntax @@ -1 +1 @@ -Subproject commit 46b00748d16c0bc9a465e447e45ef622fca505ab +Subproject commit a5f81b6b92d9913efe1b8bc48d98285da9b5206e diff --git a/vendor/grammars/abl-tmlanguage b/vendor/grammars/abl-tmlanguage index 8adfc1094b..a76d118214 160000 --- a/vendor/grammars/abl-tmlanguage +++ b/vendor/grammars/abl-tmlanguage @@ -1 +1 @@ -Subproject commit 8adfc1094bb79da7fb4c1248b215702704484cba +Subproject commit a76d118214cfbb1f43d4264d408cc2824c1e2011 diff --git a/vendor/grammars/apex-tmLanguage b/vendor/grammars/apex-tmLanguage index 88b3b7175c..9721cf561f 160000 --- a/vendor/grammars/apex-tmLanguage +++ b/vendor/grammars/apex-tmLanguage @@ -1 +1 @@ -Subproject commit 88b3b7175cc0be3edf7e22cf8eecc32911740b05 +Subproject commit 9721cf561fc9f65ba2e74ee2efca4f832e65ce53 diff --git a/vendor/grammars/astro b/vendor/grammars/astro index df90fe5f79..2cbd3f6f01 160000 --- a/vendor/grammars/astro +++ b/vendor/grammars/astro @@ -1 +1 @@ -Subproject commit df90fe5f79978b567387cc1b0cedcc23a43bd156 +Subproject commit 2cbd3f6f01f6ed65adb56d9dcb339cfe2c599031 diff --git a/vendor/grammars/atom-language-julia b/vendor/grammars/atom-language-julia index 68539a4fe2..468db3b826 160000 --- a/vendor/grammars/atom-language-julia +++ b/vendor/grammars/atom-language-julia @@ -1 +1 @@ -Subproject commit 68539a4fe2741e8181a93f5f2b9d5809fc49f805 +Subproject commit 468db3b826c6254cbbbce218ed79bbfa62565407 diff --git a/vendor/grammars/ballerina-grammar b/vendor/grammars/ballerina-grammar index d9c8924600..3475ac28c7 160000 --- a/vendor/grammars/ballerina-grammar +++ b/vendor/grammars/ballerina-grammar @@ -1 +1 @@ -Subproject commit d9c8924600c45ad04e6d966cb0916373f00146d6 +Subproject commit 3475ac28c733d2e1de75e7f617155c964240f647 diff --git a/vendor/grammars/bicep b/vendor/grammars/bicep index 5c1742c975..b228e33380 160000 --- a/vendor/grammars/bicep +++ b/vendor/grammars/bicep @@ -1 +1 @@ -Subproject commit 5c1742c975001fbe38c0ac9e63ae0c992bef0491 +Subproject commit b228e33380f44cc90647ada7f15e20d10bbb5084 diff --git a/vendor/grammars/bikeshed b/vendor/grammars/bikeshed index 56031533b7..de38ee2b57 160000 --- a/vendor/grammars/bikeshed +++ b/vendor/grammars/bikeshed @@ -1 +1 @@ -Subproject commit 56031533b7668986fb8c5153f0d03a86b5f9bd60 +Subproject commit de38ee2b57af487f1c3f1bc5c47670dcf3384396 diff --git a/vendor/grammars/c.tmbundle b/vendor/grammars/c.tmbundle index 80c8e886b6..0425bfb0d0 160000 --- a/vendor/grammars/c.tmbundle +++ b/vendor/grammars/c.tmbundle @@ -1 +1 @@ -Subproject commit 80c8e886b67227096a56aca6b92fe1587f76d603 +Subproject commit 0425bfb0d0f77a1c19e69114d8750fdebf288ef9 diff --git a/vendor/grammars/code-peggy-language b/vendor/grammars/code-peggy-language index 478a3382b4..c4a1d6a727 160000 --- a/vendor/grammars/code-peggy-language +++ b/vendor/grammars/code-peggy-language @@ -1 +1 @@ -Subproject commit 478a3382b4b4c4e645c0ddf0ee2be41aca5f5666 +Subproject commit c4a1d6a72781bba6722024ad08080ec26b0ac5a3 diff --git a/vendor/grammars/creole b/vendor/grammars/creole index 26eab604ff..8c774948f4 160000 --- a/vendor/grammars/creole +++ b/vendor/grammars/creole @@ -1 +1 @@ -Subproject commit 26eab604ff51e0ae2496ff97265f06cf47c21a81 +Subproject commit 8c774948f470b8e8ddef7081892c7e2f2fabe42d diff --git a/vendor/grammars/daslang-grammar b/vendor/grammars/daslang-grammar new file mode 160000 index 0000000000..af39e0fcbe --- /dev/null +++ b/vendor/grammars/daslang-grammar @@ -0,0 +1 @@ +Subproject commit af39e0fcbe4d92ea0452450a5fb99dbc2f6fdb4a diff --git a/vendor/grammars/edgedb-editor-plugin b/vendor/grammars/edgedb-editor-plugin index 110f00b490..11ede4851d 160000 --- a/vendor/grammars/edgedb-editor-plugin +++ b/vendor/grammars/edgedb-editor-plugin @@ -1 +1 @@ -Subproject commit 110f00b490178365afc7914049aa8c5892096e5a +Subproject commit 11ede4851df353b23d0d328b35141840c51803ae diff --git a/vendor/grammars/godot-vscode-plugin b/vendor/grammars/godot-vscode-plugin index d9ea6245d4..29734ea849 160000 --- a/vendor/grammars/godot-vscode-plugin +++ b/vendor/grammars/godot-vscode-plugin @@ -1 +1 @@ -Subproject commit d9ea6245d4becce8097f110015ade130e6fa918c +Subproject commit 29734ea849becb1b4e368b4488e9c7ac3d7e7c00 diff --git a/vendor/grammars/grammar b/vendor/grammars/grammar index 7672011cc8..b6a73607fd 160000 --- a/vendor/grammars/grammar +++ b/vendor/grammars/grammar @@ -1 +1 @@ -Subproject commit 7672011cc8f94c255c8de2615a5cf1ab8b34c197 +Subproject commit b6a73607fda86cc0ecb4273c8ef862a647e7a8cc diff --git a/vendor/grammars/graphiql b/vendor/grammars/graphiql index b495159382..44d0c60922 160000 --- a/vendor/grammars/graphiql +++ b/vendor/grammars/graphiql @@ -1 +1 @@ -Subproject commit b495159382465a2cab6d8592b8bce66fece066fe +Subproject commit 44d0c6092201530844109393b6a214408876da88 diff --git a/vendor/grammars/haxe-TmLanguage b/vendor/grammars/haxe-TmLanguage index ddad8b4c6d..fcc3c81776 160000 --- a/vendor/grammars/haxe-TmLanguage +++ b/vendor/grammars/haxe-TmLanguage @@ -1 +1 @@ -Subproject commit ddad8b4c6d0781ac20be0481174ec1be772c5da5 +Subproject commit fcc3c81776d9e89c8117a84619ce1e1c3fd694be diff --git a/vendor/grammars/ide-tools b/vendor/grammars/ide-tools index 0262e89de1..22c2b8cc7f 160000 --- a/vendor/grammars/ide-tools +++ b/vendor/grammars/ide-tools @@ -1 +1 @@ -Subproject commit 0262e89de1c9b1b4178d548bb4844df0b0cb4339 +Subproject commit 22c2b8cc7fe3f2be42b141e688913e2f41dfd6e3 diff --git a/vendor/grammars/ispc.syntax b/vendor/grammars/ispc.syntax index 7b9dabece0..180b4beb0e 160000 --- a/vendor/grammars/ispc.syntax +++ b/vendor/grammars/ispc.syntax @@ -1 +1 @@ -Subproject commit 7b9dabece0b2f869d83cc1191a0059775f87f50a +Subproject commit 180b4beb0e5e64a6b2c200590ad0b168a5f7fa16 diff --git a/vendor/grammars/koka-textmate-grammar b/vendor/grammars/koka-textmate-grammar new file mode 160000 index 0000000000..93b25e76bb --- /dev/null +++ b/vendor/grammars/koka-textmate-grammar @@ -0,0 +1 @@ +Subproject commit 93b25e76bb6c125d6108e326dde956d0cd5f6a6e diff --git a/vendor/grammars/lang-4d b/vendor/grammars/lang-4d deleted file mode 160000 index db3ca1cd5a..0000000000 --- a/vendor/grammars/lang-4d +++ /dev/null @@ -1 +0,0 @@ -Subproject commit db3ca1cd5acd195c00688eba642ae8ff7644dae7 diff --git a/vendor/grammars/language-4d b/vendor/grammars/language-4d new file mode 160000 index 0000000000..10c3400b2e --- /dev/null +++ b/vendor/grammars/language-4d @@ -0,0 +1 @@ +Subproject commit 10c3400b2ee7b14a7c20de141821caf200f13823 diff --git a/vendor/grammars/language-etc b/vendor/grammars/language-etc index c92244d1aa..ed1933244c 160000 --- a/vendor/grammars/language-etc +++ b/vendor/grammars/language-etc @@ -1 +1 @@ -Subproject commit c92244d1aaf4715e918ee5404f46b5e0fa3e66e5 +Subproject commit ed1933244c7b82e2ddeca5474fc7436866301a5e diff --git a/vendor/grammars/language-macaulay2 b/vendor/grammars/language-macaulay2 index ee398efb8d..33df9c7b21 160000 --- a/vendor/grammars/language-macaulay2 +++ b/vendor/grammars/language-macaulay2 @@ -1 +1 @@ -Subproject commit ee398efb8d5a05b78b4f5c47d74a46bd63487b2f +Subproject commit 33df9c7b216df30f460fc3450c5ef2e285096d33 diff --git a/vendor/grammars/language-toc-wow b/vendor/grammars/language-toc-wow index 47a93276f9..0f0793ac03 160000 --- a/vendor/grammars/language-toc-wow +++ b/vendor/grammars/language-toc-wow @@ -1 +1 @@ -Subproject commit 47a93276f939324ac11f0889518142abc9bb4d07 +Subproject commit 0f0793ac0313e8db4ebb963fd157e6575292a7f3 diff --git a/vendor/grammars/language-tools b/vendor/grammars/language-tools index a338d925a5..d94c100f41 160000 --- a/vendor/grammars/language-tools +++ b/vendor/grammars/language-tools @@ -1 +1 @@ -Subproject commit a338d925a5cb76590f8fcba9577492c9ca9e596c +Subproject commit d94c100f416f5dbe9adfbdb24305537ee9cc326e diff --git a/vendor/grammars/leo-linguist b/vendor/grammars/leo-linguist new file mode 160000 index 0000000000..67d682ce0c --- /dev/null +++ b/vendor/grammars/leo-linguist @@ -0,0 +1 @@ +Subproject commit 67d682ce0c8f1ca09c49d1cafa56be1def4bd25c diff --git a/vendor/grammars/liquid-tm-grammar b/vendor/grammars/liquid-tm-grammar index 91ef1e508a..df3989fc5a 160000 --- a/vendor/grammars/liquid-tm-grammar +++ b/vendor/grammars/liquid-tm-grammar @@ -1 +1 @@ -Subproject commit 91ef1e508a4723c640a15f65b809a279206bed78 +Subproject commit df3989fc5a563fdbad1406d94013ad31ab6f305b diff --git a/vendor/grammars/livescript-vscode b/vendor/grammars/livescript-vscode new file mode 160000 index 0000000000..59eae642ff --- /dev/null +++ b/vendor/grammars/livescript-vscode @@ -0,0 +1 @@ +Subproject commit 59eae642ff88ada8d6d1c59713e0b94df4852e52 diff --git a/vendor/grammars/moonbit-tmLanguage b/vendor/grammars/moonbit-tmLanguage index 3683d548d5..184be8c2b5 160000 --- a/vendor/grammars/moonbit-tmLanguage +++ b/vendor/grammars/moonbit-tmLanguage @@ -1 +1 @@ -Subproject commit 3683d548d5877457f4b0b72e45d924d61f27ae1c +Subproject commit 184be8c2b55e5ef6ddb2d9f5eec9292e21cab57a diff --git a/vendor/grammars/nu-grammar b/vendor/grammars/nu-grammar index 62bb72f6ab..bbdee460ad 160000 --- a/vendor/grammars/nu-grammar +++ b/vendor/grammars/nu-grammar @@ -1 +1 @@ -Subproject commit 62bb72f6ab5a3fb6b3104c38f58cc8d9b0a27a6f +Subproject commit bbdee460ade7c02adbdd12de6b1daaa498e3639b diff --git a/vendor/grammars/pkl.tmbundle b/vendor/grammars/pkl.tmbundle index 3cfd12a10a..af454a169c 160000 --- a/vendor/grammars/pkl.tmbundle +++ b/vendor/grammars/pkl.tmbundle @@ -1 +1 @@ -Subproject commit 3cfd12a10a1e289365398842b5a2764e9e863fd8 +Subproject commit af454a169c7d328d4838e7f33fff111eb8e33967 diff --git a/vendor/grammars/qsharp b/vendor/grammars/qsharp index 1778307756..c8150772af 160000 --- a/vendor/grammars/qsharp +++ b/vendor/grammars/qsharp @@ -1 +1 @@ -Subproject commit 1778307756977cc846421d80ab66b4f77e7c39ee +Subproject commit c8150772afce75621f2ccdb65d30135345f87b5e diff --git a/vendor/grammars/rescript-vscode b/vendor/grammars/rescript-vscode index 79992f1737..9f58cea6fe 160000 --- a/vendor/grammars/rescript-vscode +++ b/vendor/grammars/rescript-vscode @@ -1 +1 @@ -Subproject commit 79992f17373b6f6fc9af5b2e99ca16e5dbd27bf7 +Subproject commit 9f58cea6fe0589f51b1514b6229466a3d8d1705d diff --git a/vendor/grammars/roc-vscode-unofficial b/vendor/grammars/roc-vscode-unofficial index 2b489649d1..f60596f4b8 160000 --- a/vendor/grammars/roc-vscode-unofficial +++ b/vendor/grammars/roc-vscode-unofficial @@ -1 +1 @@ -Subproject commit 2b489649d1e6d658a2423a267a5a41fa346efe99 +Subproject commit f60596f4b8d65937e7a8df2c0b454a3a309aa91e diff --git a/vendor/grammars/rust-syntax b/vendor/grammars/rust-syntax index c7670c5d7e..268fd42cfd 160000 --- a/vendor/grammars/rust-syntax +++ b/vendor/grammars/rust-syntax @@ -1 +1 @@ -Subproject commit c7670c5d7e4b4747d0ff2dab838d1399bd2c518a +Subproject commit 268fd42cfd4aa96a6ed9024a2850d17d6cd2dc7b diff --git a/vendor/grammars/sail_vscode b/vendor/grammars/sail_vscode new file mode 160000 index 0000000000..3dce4a919a --- /dev/null +++ b/vendor/grammars/sail_vscode @@ -0,0 +1 @@ +Subproject commit 3dce4a919a93eac85585ba7ef1c6f3534e8d5ebc diff --git a/vendor/grammars/slang-vscode-extension b/vendor/grammars/slang-vscode-extension index 0b44829f75..ae4509d8f8 160000 --- a/vendor/grammars/slang-vscode-extension +++ b/vendor/grammars/slang-vscode-extension @@ -1 +1 @@ -Subproject commit 0b44829f755a065b5f95746b2512d01a8578ca93 +Subproject commit ae4509d8f899269e0a8b25e1329816b1a4213361 diff --git a/vendor/grammars/slint-tmLanguage b/vendor/grammars/slint-tmLanguage index b0f91f4eb0..5fa0e06c6a 160000 --- a/vendor/grammars/slint-tmLanguage +++ b/vendor/grammars/slint-tmLanguage @@ -1 +1 @@ -Subproject commit b0f91f4eb04731c9f868f382fba3fa5f5ea7840a +Subproject commit 5fa0e06c6a0ba2fa12cb93fe4b56ba37a243ad40 diff --git a/vendor/grammars/smithy-vscode b/vendor/grammars/smithy-vscode index 63cf6da99e..ccef0a0368 160000 --- a/vendor/grammars/smithy-vscode +++ b/vendor/grammars/smithy-vscode @@ -1 +1 @@ -Subproject commit 63cf6da99e6f14019063b7464dfdb9bd65316f7a +Subproject commit ccef0a0368b17707f139f68a006200931a87ffb8 diff --git a/vendor/grammars/sourcepawn-vscode b/vendor/grammars/sourcepawn-vscode index bbdb7646dc..b8acdcecc6 160000 --- a/vendor/grammars/sourcepawn-vscode +++ b/vendor/grammars/sourcepawn-vscode @@ -1 +1 @@ -Subproject commit bbdb7646dc6a79631f919b4bed1644140aa8e564 +Subproject commit b8acdcecc6ef2499ad29219dbc8a181d29d6fdde diff --git a/vendor/grammars/sprocket-vscode b/vendor/grammars/sprocket-vscode index d2246e1e50..2a16cb9ff3 160000 --- a/vendor/grammars/sprocket-vscode +++ b/vendor/grammars/sprocket-vscode @@ -1 +1 @@ -Subproject commit d2246e1e50d1f91201f6dc5c9201ace665d9da50 +Subproject commit 2a16cb9ff34f62c2086553ebb428cd0a27056ea1 diff --git a/vendor/grammars/sublime-odin b/vendor/grammars/sublime-odin index 5d6a0ed41e..f8c146f1ac 160000 --- a/vendor/grammars/sublime-odin +++ b/vendor/grammars/sublime-odin @@ -1 +1 @@ -Subproject commit 5d6a0ed41e41ec3709ec74f40686dc3761d6596e +Subproject commit f8c146f1aca96626d75c7abb39d018aaaaf936c9 diff --git a/vendor/grammars/sublimetext-nasl b/vendor/grammars/sublimetext-nasl index 552a4eaeae..3cb19fdf98 160000 --- a/vendor/grammars/sublimetext-nasl +++ b/vendor/grammars/sublimetext-nasl @@ -1 +1 @@ -Subproject commit 552a4eaeae92745d250f67ab2972159dfc6e02b7 +Subproject commit 3cb19fdf9855f44c93c8025d03576c6221d46145 diff --git a/vendor/grammars/sway-vscode-plugin b/vendor/grammars/sway-vscode-plugin index 8dd0d09cdc..4a081a51a9 160000 --- a/vendor/grammars/sway-vscode-plugin +++ b/vendor/grammars/sway-vscode-plugin @@ -1 +1 @@ -Subproject commit 8dd0d09cdc480358e717c4e814544c0af278f503 +Subproject commit 4a081a51a97094f729d631253296be7e8eda3940 diff --git a/vendor/grammars/swift-tmlanguage b/vendor/grammars/swift-tmlanguage index 6b5f2e4425..d2461f2400 160000 --- a/vendor/grammars/swift-tmlanguage +++ b/vendor/grammars/swift-tmlanguage @@ -1 +1 @@ -Subproject commit 6b5f2e44259da66a06c04793d9554d832d5c19a5 +Subproject commit d2461f240083b2d44be0de67d3a1596c4c87fe00 diff --git a/vendor/grammars/tact-sublime b/vendor/grammars/tact-sublime index c7c5aeb7cd..11fe1c1808 160000 --- a/vendor/grammars/tact-sublime +++ b/vendor/grammars/tact-sublime @@ -1 +1 @@ -Subproject commit c7c5aeb7cdd5a1cdc553c3560754a564b6a8b538 +Subproject commit 11fe1c180824e93f462ed1aacef44a75d6477eb9 diff --git a/vendor/grammars/templ-vscode b/vendor/grammars/templ-vscode index 397f1ff7a2..47596797b6 160000 --- a/vendor/grammars/templ-vscode +++ b/vendor/grammars/templ-vscode @@ -1 +1 @@ -Subproject commit 397f1ff7a257ba6f18e010a6de75342add63d6ea +Subproject commit 47596797b61a2de17f3311d1d6dd4a12cfc56536 diff --git a/vendor/grammars/typespec b/vendor/grammars/typespec index e0a9683ae8..44187f8597 160000 --- a/vendor/grammars/typespec +++ b/vendor/grammars/typespec @@ -1 +1 @@ -Subproject commit e0a9683ae89168b56430df6da753403cd3657e64 +Subproject commit 44187f85974a88e60fd9d43ba766dc299d9b2f64 diff --git a/vendor/grammars/typst-grammar b/vendor/grammars/typst-grammar index b9743f9db3..275f3f62b1 160000 --- a/vendor/grammars/typst-grammar +++ b/vendor/grammars/typst-grammar @@ -1 +1 @@ -Subproject commit b9743f9db3827b5f923924bf4fabe328b9b3b487 +Subproject commit 275f3f62b1af0aedba27a79b59598ce9eeda523e diff --git a/vendor/grammars/vsc-ember-syntax b/vendor/grammars/vsc-ember-syntax index 5971439b47..3eff603c44 160000 --- a/vendor/grammars/vsc-ember-syntax +++ b/vendor/grammars/vsc-ember-syntax @@ -1 +1 @@ -Subproject commit 5971439b47f0002d4786f41c311568be75a719a2 +Subproject commit 3eff603c44a671dbb4cf1115b8f1bdfd60c49d5a diff --git a/vendor/grammars/vsc-language-1c-bsl b/vendor/grammars/vsc-language-1c-bsl index 61ecbd3c58..93be46f229 160000 --- a/vendor/grammars/vsc-language-1c-bsl +++ b/vendor/grammars/vsc-language-1c-bsl @@ -1 +1 @@ -Subproject commit 61ecbd3c58215a9afe461eef5399d1fdf2e9f984 +Subproject commit 93be46f229518cc84128f0837b6f8077941eb95b diff --git a/vendor/grammars/vscode b/vendor/grammars/vscode index 2743752d99..20397a81a0 160000 --- a/vendor/grammars/vscode +++ b/vendor/grammars/vscode @@ -1 +1 @@ -Subproject commit 2743752d99671a261fdcba91cc3eb2708e66407f +Subproject commit 20397a81a0a5c8cb91d5c132cc5610480fa038d7 diff --git a/vendor/grammars/vscode-TalonScript b/vendor/grammars/vscode-TalonScript index 75cbd5bd11..96978ded90 160000 --- a/vendor/grammars/vscode-TalonScript +++ b/vendor/grammars/vscode-TalonScript @@ -1 +1 @@ -Subproject commit 75cbd5bd11582719443aa6fa584089f0c71c7bac +Subproject commit 96978ded90b6983064765e7dc565db5ca6ffcc99 diff --git a/vendor/grammars/vscode-aiken b/vendor/grammars/vscode-aiken new file mode 160000 index 0000000000..c36cf20335 --- /dev/null +++ b/vendor/grammars/vscode-aiken @@ -0,0 +1 @@ +Subproject commit c36cf20335dd002760d87df19d6c0779d0f5e636 diff --git a/vendor/grammars/vscode-antlers-language-server b/vendor/grammars/vscode-antlers-language-server index 157d0eac3d..74d6f49ebf 160000 --- a/vendor/grammars/vscode-antlers-language-server +++ b/vendor/grammars/vscode-antlers-language-server @@ -1 +1 @@ -Subproject commit 157d0eac3de834662d8616fdc828f554b8a73095 +Subproject commit 74d6f49ebf1f102d9128f543c652f78c11ee5765 diff --git a/vendor/grammars/vscode-bitbake b/vendor/grammars/vscode-bitbake index b9d5ecdfa8..67e1b432db 160000 --- a/vendor/grammars/vscode-bitbake +++ b/vendor/grammars/vscode-bitbake @@ -1 +1 @@ -Subproject commit b9d5ecdfa8e362c9c3d6f3b1addd3ec9e3fc97e3 +Subproject commit 67e1b432db573059d199c183157d38257d7c9d0a diff --git a/vendor/grammars/vscode-brightscript-language b/vendor/grammars/vscode-brightscript-language index 195c7e6b5a..a28da3b707 160000 --- a/vendor/grammars/vscode-brightscript-language +++ b/vendor/grammars/vscode-brightscript-language @@ -1 +1 @@ -Subproject commit 195c7e6b5a8de4dfbc1f43d2a2f1bfe3adcb56f3 +Subproject commit a28da3b70790cf4f4d315c663b3f79afcedb64b2 diff --git a/vendor/grammars/vscode-cmake-tools b/vendor/grammars/vscode-cmake-tools index e552a9f931..defc0b5369 160000 --- a/vendor/grammars/vscode-cmake-tools +++ b/vendor/grammars/vscode-cmake-tools @@ -1 +1 @@ -Subproject commit e552a9f93186eb755b47f1164f870499dda8d890 +Subproject commit defc0b5369c64467c3466b1cee3faba9f9633a6a diff --git a/vendor/grammars/vscode-codeql b/vendor/grammars/vscode-codeql index 49bc5e771b..dd6fbdec65 160000 --- a/vendor/grammars/vscode-codeql +++ b/vendor/grammars/vscode-codeql @@ -1 +1 @@ -Subproject commit 49bc5e771b7b893229ed8dfe42b639c8fad31cbf +Subproject commit dd6fbdec65ead3f73946c659f75ae8c068f59f46 diff --git a/vendor/grammars/vscode-gleam b/vendor/grammars/vscode-gleam index 94f893d11f..c771e400c5 160000 --- a/vendor/grammars/vscode-gleam +++ b/vendor/grammars/vscode-gleam @@ -1 +1 @@ -Subproject commit 94f893d11f1c4673da19867b60e80e053c30fb83 +Subproject commit c771e400c5847acdb431881018925d79bc270dda diff --git a/vendor/grammars/vscode-go b/vendor/grammars/vscode-go index eeb3c24fe9..3673270a54 160000 --- a/vendor/grammars/vscode-go +++ b/vendor/grammars/vscode-go @@ -1 +1 @@ -Subproject commit eeb3c24fe991e47e130a0ac70a9b214664b4a0ea +Subproject commit 3673270a540086ac93d176350bd6fd8d30fd058e diff --git a/vendor/grammars/vscode-ibmi-languages b/vendor/grammars/vscode-ibmi-languages index 7fa20a5205..22dc7e05b4 160000 --- a/vendor/grammars/vscode-ibmi-languages +++ b/vendor/grammars/vscode-ibmi-languages @@ -1 +1 @@ -Subproject commit 7fa20a5205f2419148cf511786cfaf21d0b48953 +Subproject commit 22dc7e05b44ea5f07f2e469c2dbf38c7281229a9 diff --git a/vendor/grammars/vscode-jest b/vendor/grammars/vscode-jest index 7d302028e7..c93ec7a278 160000 --- a/vendor/grammars/vscode-jest +++ b/vendor/grammars/vscode-jest @@ -1 +1 @@ -Subproject commit 7d302028e73a76f1077a8afe64e3f9482ca576cb +Subproject commit c93ec7a278ec84c2ac909d16ed155caccaeca933 diff --git a/vendor/grammars/vscode-jsonc-syntax-highlighting b/vendor/grammars/vscode-jsonc-syntax-highlighting index b3a09c9846..163059f763 160000 --- a/vendor/grammars/vscode-jsonc-syntax-highlighting +++ b/vendor/grammars/vscode-jsonc-syntax-highlighting @@ -1 +1 @@ -Subproject commit b3a09c98467d73620b3e92d08d1d1eec3146f6bf +Subproject commit 163059f763575aeb32da7a977dd48a3e49ca476a diff --git a/vendor/grammars/vscode-just b/vendor/grammars/vscode-just index 0eda7b3a0b..e539719363 160000 --- a/vendor/grammars/vscode-just +++ b/vendor/grammars/vscode-just @@ -1 +1 @@ -Subproject commit 0eda7b3a0be1728e7447355cf886601cca84cb84 +Subproject commit e539719363c9a9e36b431efc5546aaee0c840a56 diff --git a/vendor/grammars/vscode-lean b/vendor/grammars/vscode-lean index 0c5aad6956..843c5401fc 160000 --- a/vendor/grammars/vscode-lean +++ b/vendor/grammars/vscode-lean @@ -1 +1 @@ -Subproject commit 0c5aad69566fdebe25132c3f7933fb6eb895db3f +Subproject commit 843c5401fc5795fa30d64fb0207b1d29d00a0916 diff --git a/vendor/grammars/vscode-lean4 b/vendor/grammars/vscode-lean4 index e844f6abe8..5a938adc79 160000 --- a/vendor/grammars/vscode-lean4 +++ b/vendor/grammars/vscode-lean4 @@ -1 +1 @@ -Subproject commit e844f6abe874fde8fda34160e82888476dd9c676 +Subproject commit 5a938adc7913fbb4e177391bc2b762a35ab29153 diff --git a/vendor/grammars/vscode-motoko b/vendor/grammars/vscode-motoko index f2a86c7229..59fe516b7d 160000 --- a/vendor/grammars/vscode-motoko +++ b/vendor/grammars/vscode-motoko @@ -1 +1 @@ -Subproject commit f2a86c7229b949668aa740b684bb6ed5ba28a8fa +Subproject commit 59fe516b7d6107082b8b3540b22f4d36c0519c3d diff --git a/vendor/grammars/vscode-noir b/vendor/grammars/vscode-noir index fdfef7d521..fca148c9f5 160000 --- a/vendor/grammars/vscode-noir +++ b/vendor/grammars/vscode-noir @@ -1 +1 @@ -Subproject commit fdfef7d5211d14a99a87cf9fbf10d74f2cfc8c15 +Subproject commit fca148c9f5570dfbe5426864dff204ed8dd7108d diff --git a/vendor/grammars/vscode-opa b/vendor/grammars/vscode-opa index 189652ae88..4860758bde 160000 --- a/vendor/grammars/vscode-opa +++ b/vendor/grammars/vscode-opa @@ -1 +1 @@ -Subproject commit 189652ae888fd0b57ac453038b68972cbe2d6ab6 +Subproject commit 4860758bdeebc11147578de37cb474a7b736018f diff --git a/vendor/grammars/vscode-prisma b/vendor/grammars/vscode-prisma index f8a2ba5454..b33abea963 160000 --- a/vendor/grammars/vscode-prisma +++ b/vendor/grammars/vscode-prisma @@ -1 +1 @@ -Subproject commit f8a2ba54545c5150770c502e8f6d9c83702506f8 +Subproject commit b33abea963454af19f4711384988486594061deb diff --git a/vendor/grammars/vscode-python b/vendor/grammars/vscode-python index 6b7d8d1c12..9b17438067 160000 --- a/vendor/grammars/vscode-python +++ b/vendor/grammars/vscode-python @@ -1 +1 @@ -Subproject commit 6b7d8d1c12189126dce4c5d6733a74ab7762fb00 +Subproject commit 9b17438067c6a9193bb841f00f16678fcbc95f36 diff --git a/vendor/grammars/vscode-rbs-syntax b/vendor/grammars/vscode-rbs-syntax index b99890fe16..875006de0d 160000 --- a/vendor/grammars/vscode-rbs-syntax +++ b/vendor/grammars/vscode-rbs-syntax @@ -1 +1 @@ -Subproject commit b99890fe161f1f5d9691239cce9ed44aeb5f8e0d +Subproject commit 875006de0d15f845aa0b447ec321657ba8db248f diff --git a/vendor/grammars/vscode-scala-syntax b/vendor/grammars/vscode-scala-syntax index 5537283d9a..856da8603d 160000 --- a/vendor/grammars/vscode-scala-syntax +++ b/vendor/grammars/vscode-scala-syntax @@ -1 +1 @@ -Subproject commit 5537283d9aa49f9b0ee1e2cf129d408b4ece7aa9 +Subproject commit 856da8603d6fcf122b40c976be3f065c70cb363e diff --git a/vendor/grammars/vscode-vba b/vendor/grammars/vscode-vba index 5c7eb1b402..b57630128a 160000 --- a/vendor/grammars/vscode-vba +++ b/vendor/grammars/vscode-vba @@ -1 +1 @@ -Subproject commit 5c7eb1b4023930d52207113d065bedfa17c71619 +Subproject commit b57630128a2f76a0b6aa7c245047a1a2de789bdf diff --git a/vendor/grammars/vscode-vento b/vendor/grammars/vscode-vento new file mode 160000 index 0000000000..3234e7c6a6 --- /dev/null +++ b/vendor/grammars/vscode-vento @@ -0,0 +1 @@ +Subproject commit 3234e7c6a64b55a4acd716ac69c6c1401d3dda57 diff --git a/vendor/grammars/vscode-wit b/vendor/grammars/vscode-wit index e4c1ca60ca..e32c8a6b31 160000 --- a/vendor/grammars/vscode-wit +++ b/vendor/grammars/vscode-wit @@ -1 +1 @@ -Subproject commit e4c1ca60cae7767a6bd4330dd5580f1d9e4f67e3 +Subproject commit e32c8a6b311cb96f936bfa945b2fa8c2710fa4e9 diff --git a/vendor/grammars/vscode_cobol b/vendor/grammars/vscode_cobol index dba0ef913b..e9c08d723f 160000 --- a/vendor/grammars/vscode_cobol +++ b/vendor/grammars/vscode_cobol @@ -1 +1 @@ -Subproject commit dba0ef913b74391d246e81c51c801c8c2e4c79c8 +Subproject commit e9c08d723f9454796f41d47140eafa4f37ff797d diff --git a/vendor/grammars/wgsl-analyzer b/vendor/grammars/wgsl-analyzer index 93ee8f83e3..a645cbc677 160000 --- a/vendor/grammars/wgsl-analyzer +++ b/vendor/grammars/wgsl-analyzer @@ -1 +1 @@ -Subproject commit 93ee8f83e3b7e84c54bf71061dab32445f5d55c5 +Subproject commit a645cbc677dfeacbfd25792022e2b47958351624 diff --git a/vendor/grammars/zenstack b/vendor/grammars/zenstack new file mode 160000 index 0000000000..d8bc32d4d2 --- /dev/null +++ b/vendor/grammars/zenstack @@ -0,0 +1 @@ +Subproject commit d8bc32d4d22737cf3fbaf22e982ada222f6b0b1c diff --git a/vendor/licenses/git_submodule/AL.dep.yml b/vendor/licenses/git_submodule/AL.dep.yml index 0990718a22..eb3583ceec 100644 --- a/vendor/licenses/git_submodule/AL.dep.yml +++ b/vendor/licenses/git_submodule/AL.dep.yml @@ -1,6 +1,6 @@ --- name: AL -version: 9a3323f59ddd1b231c32ded7d527cc727aa19994 +version: 014efc17f7562264cdb9da2b6c97104b3ff374ae type: git_submodule homepage: https://github.com/microsoft/AL license: mit diff --git a/vendor/licenses/git_submodule/Clue-for-VSCode.dep.yml b/vendor/licenses/git_submodule/Clue-for-VSCode.dep.yml new file mode 100644 index 0000000000..6b08456a86 --- /dev/null +++ b/vendor/licenses/git_submodule/Clue-for-VSCode.dep.yml @@ -0,0 +1,31 @@ +--- +name: Clue-for-VSCode +version: 340e027aaffd1894a2bbdf567467424002fbeadf +type: git_submodule +homepage: https://github.com/ClueLang/Clue-for-VSCode.git +license: mit +licenses: +- sources: LICENSE + text: | + MIT License + + Copyright (c) 2023 Felice D'Angelo + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. +notices: [] diff --git a/vendor/licenses/git_submodule/CodeMirror.dep.yml b/vendor/licenses/git_submodule/CodeMirror.dep.yml index b7081e7575..b03fdad2f3 100644 --- a/vendor/licenses/git_submodule/CodeMirror.dep.yml +++ b/vendor/licenses/git_submodule/CodeMirror.dep.yml @@ -1,6 +1,6 @@ --- name: CodeMirror -version: eed51d071bce00302f209d66b8d2cf908b2cb733 +version: 1df33b7ac759488da69d8d83a792636e7c08c2e2 type: git_submodule homepage: https://github.com/codemirror/CodeMirror license: mit @@ -730,6 +730,7 @@ notices: Nina Pypchenko Nisarg Jhaveri nlwillia + noor.masarwa noragrossman Norman Rzepka Nouzbe diff --git a/vendor/licenses/git_submodule/Jails.dep.yml b/vendor/licenses/git_submodule/Jails.dep.yml index 168f09f9ef..efb50c7870 100644 --- a/vendor/licenses/git_submodule/Jails.dep.yml +++ b/vendor/licenses/git_submodule/Jails.dep.yml @@ -1,6 +1,6 @@ --- name: Jails -version: 1f5c9c5c256e6e25c3d618e9d694cc0e2f57e3cc +version: 3f4c621fd5e470ba09ec0b98ac20f514df0b2719 type: git_submodule homepage: https://github.com/SogoCZE/Jails.git license: mit diff --git a/vendor/licenses/git_submodule/LiveScript.tmbundle.dep.yml b/vendor/licenses/git_submodule/LiveScript.tmbundle.dep.yml deleted file mode 100644 index 6fb8c45869..0000000000 --- a/vendor/licenses/git_submodule/LiveScript.tmbundle.dep.yml +++ /dev/null @@ -1,56 +0,0 @@ ---- -name: LiveScript.tmbundle -version: d82aeb737d4883d1a74aba7a07053f90211d427b -type: git_submodule -homepage: https://github.com/paulmillr/LiveScript.tmbundle -license: mit -licenses: -- sources: LICENSE - text: | - The MIT License (MIT) - - Copyright (c) 2012 Paul Miller (http://paulmillr.com/), Jeremy Ashkenas - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -- sources: README.md - text: |- - The MIT License (MIT) - - Copyright (c) 2012 Paul Miller (http://paulmillr.com/) - - Copyright (c) 2012 Jeremy Ashkenas - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the “Software”), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -notices: [] diff --git a/vendor/licenses/git_submodule/NimLime.dep.yml b/vendor/licenses/git_submodule/NimLime.dep.yml index ade5344601..cbaeac17c1 100644 --- a/vendor/licenses/git_submodule/NimLime.dep.yml +++ b/vendor/licenses/git_submodule/NimLime.dep.yml @@ -1,6 +1,6 @@ --- name: NimLime -version: 1b8f4390968df8895cf81377b336efd60d21bc0d +version: 5103faa2fa948bc47843e73287a02a286e1f2cd0 type: git_submodule homepage: https://github.com/nim-lang/NimLime license: mit diff --git a/vendor/licenses/git_submodule/NovaGrammars.dep.yml b/vendor/licenses/git_submodule/NovaGrammars.dep.yml index 7daf6ca43a..7034b00f3f 100644 --- a/vendor/licenses/git_submodule/NovaGrammars.dep.yml +++ b/vendor/licenses/git_submodule/NovaGrammars.dep.yml @@ -1,6 +1,6 @@ --- name: NovaGrammars -version: dab82691e172ad558475967625b5665b369d4182 +version: b675183505ba8e8931a31351bf62954a18c1a14a type: git_submodule homepage: https://github.com/Nixinova/NovaGrammars license: isc diff --git a/vendor/licenses/git_submodule/VscodeAdblockSyntax.dep.yml b/vendor/licenses/git_submodule/VscodeAdblockSyntax.dep.yml index 5018377780..c7ef39c3b9 100644 --- a/vendor/licenses/git_submodule/VscodeAdblockSyntax.dep.yml +++ b/vendor/licenses/git_submodule/VscodeAdblockSyntax.dep.yml @@ -1,6 +1,6 @@ --- name: VscodeAdblockSyntax -version: 46b00748d16c0bc9a465e447e45ef622fca505ab +version: a5f81b6b92d9913efe1b8bc48d98285da9b5206e type: git_submodule homepage: https://github.com/AdguardTeam/VscodeAdblockSyntax.git license: mit diff --git a/vendor/licenses/git_submodule/abl-tmlanguage.dep.yml b/vendor/licenses/git_submodule/abl-tmlanguage.dep.yml index 4bc9621483..8b6010e41e 100644 --- a/vendor/licenses/git_submodule/abl-tmlanguage.dep.yml +++ b/vendor/licenses/git_submodule/abl-tmlanguage.dep.yml @@ -1,6 +1,6 @@ --- name: abl-tmlanguage -version: 8adfc1094bb79da7fb4c1248b215702704484cba +version: a76d118214cfbb1f43d4264d408cc2824c1e2011 type: git_submodule homepage: https://github.com/chriscamicas/abl-tmlanguage license: mit diff --git a/vendor/licenses/git_submodule/apex-tmLanguage.dep.yml b/vendor/licenses/git_submodule/apex-tmLanguage.dep.yml index 182d4571c8..1eacae8968 100644 --- a/vendor/licenses/git_submodule/apex-tmLanguage.dep.yml +++ b/vendor/licenses/git_submodule/apex-tmLanguage.dep.yml @@ -1,6 +1,6 @@ --- name: apex-tmLanguage -version: 88b3b7175cc0be3edf7e22cf8eecc32911740b05 +version: 9721cf561fc9f65ba2e74ee2efca4f832e65ce53 type: git_submodule homepage: https://github.com/forcedotcom/apex-tmLanguage.git license: bsd-3-clause diff --git a/vendor/licenses/git_submodule/astro.dep.yml b/vendor/licenses/git_submodule/astro.dep.yml index 164610c0b4..d2e6ee4cf6 100644 --- a/vendor/licenses/git_submodule/astro.dep.yml +++ b/vendor/licenses/git_submodule/astro.dep.yml @@ -1,6 +1,6 @@ --- name: astro -version: df90fe5f79978b567387cc1b0cedcc23a43bd156 +version: 2cbd3f6f01f6ed65adb56d9dcb339cfe2c599031 type: git_submodule homepage: https://github.com/withastro/language-tools.git license: mit diff --git a/vendor/licenses/git_submodule/atom-language-julia.dep.yml b/vendor/licenses/git_submodule/atom-language-julia.dep.yml index 9953b296c0..118ae2ff96 100644 --- a/vendor/licenses/git_submodule/atom-language-julia.dep.yml +++ b/vendor/licenses/git_submodule/atom-language-julia.dep.yml @@ -1,6 +1,6 @@ --- name: atom-language-julia -version: 68539a4fe2741e8181a93f5f2b9d5809fc49f805 +version: 468db3b826c6254cbbbce218ed79bbfa62565407 type: git_submodule homepage: https://github.com/JuliaEditorSupport/atom-language-julia license: mit diff --git a/vendor/licenses/git_submodule/ballerina-grammar.dep.yml b/vendor/licenses/git_submodule/ballerina-grammar.dep.yml index 049366427e..d057035105 100644 --- a/vendor/licenses/git_submodule/ballerina-grammar.dep.yml +++ b/vendor/licenses/git_submodule/ballerina-grammar.dep.yml @@ -1,6 +1,6 @@ --- name: ballerina-grammar -version: d9c8924600c45ad04e6d966cb0916373f00146d6 +version: 3475ac28c733d2e1de75e7f617155c964240f647 type: git_submodule homepage: https://github.com/ballerina-platform/ballerina-grammar license: apache-2.0 diff --git a/vendor/licenses/git_submodule/bicep.dep.yml b/vendor/licenses/git_submodule/bicep.dep.yml index fa9f1659ae..ba08ae5f69 100644 --- a/vendor/licenses/git_submodule/bicep.dep.yml +++ b/vendor/licenses/git_submodule/bicep.dep.yml @@ -1,6 +1,6 @@ --- name: bicep -version: 5c1742c975001fbe38c0ac9e63ae0c992bef0491 +version: b228e33380f44cc90647ada7f15e20d10bbb5084 type: git_submodule homepage: https://github.com/azure/bicep license: mit diff --git a/vendor/licenses/git_submodule/bikeshed.dep.yml b/vendor/licenses/git_submodule/bikeshed.dep.yml index 581812b45f..00fa98d8a4 100644 --- a/vendor/licenses/git_submodule/bikeshed.dep.yml +++ b/vendor/licenses/git_submodule/bikeshed.dep.yml @@ -1,6 +1,6 @@ --- name: bikeshed -version: 56031533b7668986fb8c5153f0d03a86b5f9bd60 +version: de38ee2b57af487f1c3f1bc5c47670dcf3384396 type: git_submodule homepage: https://github.com/tabatkins/bikeshed.git license: cc0-1.0 diff --git a/vendor/licenses/git_submodule/c.tmbundle.dep.yml b/vendor/licenses/git_submodule/c.tmbundle.dep.yml index 6652b35d72..1cf63be27b 100644 --- a/vendor/licenses/git_submodule/c.tmbundle.dep.yml +++ b/vendor/licenses/git_submodule/c.tmbundle.dep.yml @@ -1,8 +1,8 @@ --- name: c.tmbundle -version: 80c8e886b67227096a56aca6b92fe1587f76d603 +version: 0425bfb0d0f77a1c19e69114d8750fdebf288ef9 type: git_submodule -homepage: https://github.com/textmate/c.tmbundle +homepage: https://github.com/mikomikotaishi/c.tmbundle.git license: permissive licenses: - sources: README.mdown diff --git a/vendor/licenses/git_submodule/code-peggy-language.dep.yml b/vendor/licenses/git_submodule/code-peggy-language.dep.yml index 1dcac559f3..9ed4f895ab 100644 --- a/vendor/licenses/git_submodule/code-peggy-language.dep.yml +++ b/vendor/licenses/git_submodule/code-peggy-language.dep.yml @@ -1,6 +1,6 @@ --- name: code-peggy-language -version: 478a3382b4b4c4e645c0ddf0ee2be41aca5f5666 +version: c4a1d6a72781bba6722024ad08080ec26b0ac5a3 type: git_submodule homepage: https://github.com/peggyjs/code-peggy-language.git license: mit @@ -42,3 +42,6 @@ notices: yy0931 (https://github.com/yy0931) Rene Saarsoo (https://github.com/nene/) Lionel Rowe (https://github.com/lionel-rowe/) + Joe Andaverde (https://github.com/dynajoe) + Michael Klaus (https://github.com/qades78) + So Fujinami (https://github.com/fujidana/) diff --git a/vendor/licenses/git_submodule/creole.dep.yml b/vendor/licenses/git_submodule/creole.dep.yml index aedad7ac53..9b65bfec35 100644 --- a/vendor/licenses/git_submodule/creole.dep.yml +++ b/vendor/licenses/git_submodule/creole.dep.yml @@ -1,6 +1,6 @@ --- name: creole -version: 26eab604ff51e0ae2496ff97265f06cf47c21a81 +version: 8c774948f470b8e8ddef7081892c7e2f2fabe42d type: git_submodule homepage: https://github.com/Siddley/Creole license: mit diff --git a/vendor/licenses/git_submodule/daslang-grammar.dep.yml b/vendor/licenses/git_submodule/daslang-grammar.dep.yml new file mode 100644 index 0000000000..6464f69a85 --- /dev/null +++ b/vendor/licenses/git_submodule/daslang-grammar.dep.yml @@ -0,0 +1,19 @@ +--- +name: daslang-grammar +version: af39e0fcbe4d92ea0452450a5fb99dbc2f6fdb4a +type: git_submodule +homepage: https://github.com/moleium/daslang-grammar.git +license: mit +licenses: +- sources: LICENSE + text: | + Copyright 2025 Mole + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +- sources: README.md + text: MIT. See [LICENSE](LICENSE). +notices: [] diff --git a/vendor/licenses/git_submodule/edgedb-editor-plugin.dep.yml b/vendor/licenses/git_submodule/edgedb-editor-plugin.dep.yml index e6d80f5624..4b8540b796 100644 --- a/vendor/licenses/git_submodule/edgedb-editor-plugin.dep.yml +++ b/vendor/licenses/git_submodule/edgedb-editor-plugin.dep.yml @@ -1,6 +1,6 @@ --- name: edgedb-editor-plugin -version: 110f00b490178365afc7914049aa8c5892096e5a +version: 11ede4851df353b23d0d328b35141840c51803ae type: git_submodule homepage: https://github.com/edgedb/edgedb-editor-plugin.git license: mit diff --git a/vendor/licenses/git_submodule/godot-vscode-plugin.dep.yml b/vendor/licenses/git_submodule/godot-vscode-plugin.dep.yml index 81fd2e2bf8..0a9347e147 100644 --- a/vendor/licenses/git_submodule/godot-vscode-plugin.dep.yml +++ b/vendor/licenses/git_submodule/godot-vscode-plugin.dep.yml @@ -1,6 +1,6 @@ --- name: godot-vscode-plugin -version: d9ea6245d4becce8097f110015ade130e6fa918c +version: 29734ea849becb1b4e368b4488e9c7ac3d7e7c00 type: git_submodule homepage: https://github.com/godotengine/godot-vscode-plugin license: mit diff --git a/vendor/licenses/git_submodule/grammar.dep.yml b/vendor/licenses/git_submodule/grammar.dep.yml index ff60f4298e..21a72c0027 100644 --- a/vendor/licenses/git_submodule/grammar.dep.yml +++ b/vendor/licenses/git_submodule/grammar.dep.yml @@ -1,6 +1,6 @@ --- name: grammar -version: 7672011cc8f94c255c8de2615a5cf1ab8b34c197 +version: b6a73607fda86cc0ecb4273c8ef862a647e7a8cc type: git_submodule homepage: https://github.com/erlang-ls/grammar.git license: apache-2.0 diff --git a/vendor/licenses/git_submodule/graphiql.dep.yml b/vendor/licenses/git_submodule/graphiql.dep.yml index e865fd662e..b11d056d40 100644 --- a/vendor/licenses/git_submodule/graphiql.dep.yml +++ b/vendor/licenses/git_submodule/graphiql.dep.yml @@ -1,6 +1,6 @@ --- name: graphiql -version: b495159382465a2cab6d8592b8bce66fece066fe +version: 44d0c6092201530844109393b6a214408876da88 type: git_submodule homepage: https://github.com/graphql/graphiql.git license: mit diff --git a/vendor/licenses/git_submodule/haxe-TmLanguage.dep.yml b/vendor/licenses/git_submodule/haxe-TmLanguage.dep.yml index ddc166324a..0889401873 100644 --- a/vendor/licenses/git_submodule/haxe-TmLanguage.dep.yml +++ b/vendor/licenses/git_submodule/haxe-TmLanguage.dep.yml @@ -1,6 +1,6 @@ --- name: haxe-TmLanguage -version: ddad8b4c6d0781ac20be0481174ec1be772c5da5 +version: fcc3c81776d9e89c8117a84619ce1e1c3fd694be type: git_submodule homepage: https://github.com/vshaxe/haxe-TmLanguage license: mit diff --git a/vendor/licenses/git_submodule/ide-tools.dep.yml b/vendor/licenses/git_submodule/ide-tools.dep.yml index d9544c2b40..243e8709c4 100644 --- a/vendor/licenses/git_submodule/ide-tools.dep.yml +++ b/vendor/licenses/git_submodule/ide-tools.dep.yml @@ -1,6 +1,6 @@ --- name: ide-tools -version: 0262e89de1c9b1b4178d548bb4844df0b0cb4339 +version: 22c2b8cc7fe3f2be42b141e688913e2f41dfd6e3 type: git_submodule homepage: https://github.com/toitware/ide-tools.git license: mit diff --git a/vendor/licenses/git_submodule/ispc.syntax.dep.yml b/vendor/licenses/git_submodule/ispc.syntax.dep.yml index a92f1961c8..3f4d94a34e 100644 --- a/vendor/licenses/git_submodule/ispc.syntax.dep.yml +++ b/vendor/licenses/git_submodule/ispc.syntax.dep.yml @@ -1,6 +1,6 @@ --- name: ispc.syntax -version: 7b9dabece0b2f869d83cc1191a0059775f87f50a +version: 180b4beb0e5e64a6b2c200590ad0b168a5f7fa16 type: git_submodule homepage: https://github.com/ispc/ispc.syntax.git license: bsd-3-clause diff --git a/vendor/licenses/git_submodule/koka-textmate-grammar.dep.yml b/vendor/licenses/git_submodule/koka-textmate-grammar.dep.yml new file mode 100644 index 0000000000..943d9b2238 --- /dev/null +++ b/vendor/licenses/git_submodule/koka-textmate-grammar.dep.yml @@ -0,0 +1,139 @@ +--- +name: koka-textmate-grammar +version: 93b25e76bb6c125d6108e326dde956d0cd5f6a6e +type: git_submodule +homepage: https://github.com/koka-community/koka-textmate-grammar.git +license: apache-2.0 +licenses: +- sources: LICENSE + text: "Copyright 2012-2023, Microsoft Research, Daan Leijen.\n\nKoka is free software; + You can redistribute it and/or\nmodify it under the terms of this license.\n\n\f\nApache + License, Version 2.0\nApache License\nVersion 2.0, January 2004\nhttp://www.apache.org/licenses/\n\nTERMS + AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n1. Definitions.\n\n\"License\" + shall mean the terms and conditions for use, reproduction, and\ndistribution as + defined by Sections 1 through 9 of this document.\n\n\"Licensor\" shall mean the + copyright owner or entity authorized by the\ncopyright owner that is granting + the License.\n\n\"Legal Entity\" shall mean the union of the acting entity and + all other\nentities that control, are controlled by, or are under common control\nwith + that entity. For the purposes of this definition, \"control\" means\n(i) the power, + direct or indirect, to cause the direction or management\nof such entity, whether + by contract or otherwise, or (ii) ownership of\nfifty percent (50%) or more of + the outstanding shares, or (iii)\nbeneficial ownership of such entity.\n\n\"You\" + (or \"Your\") shall mean an individual or Legal Entity exercising\npermissions + granted by this License.\n\n\"Source\" form shall mean the preferred form for + making modifications,\nincluding but not limited to software source code, documentation + source,\nand configuration files.\n\n\"Object\" form shall mean any form resulting + from mechanical\ntransformation or translation of a Source form, including but + not limited\nto compiled object code, generated documentation, and conversions + to\nother media types.\n\n\"Work\" shall mean the work of authorship, whether + in Source or Object\nform, made available under the License, as indicated by a + copyright\nnotice that is included in or attached to the work (an example is\nprovided + in the Appendix below).\n\n\"Derivative Works\" shall mean any work, whether in + Source or Object form,\nthat is based on (or derived from) the Work and for which + the editorial\nrevisions, annotations, elaborations, or other modifications represent,\nas + a whole, an original work of authorship. For the purposes of this\nLicense, Derivative + Works shall not include works that remain separable\nfrom, or merely link (or + bind by name) to the interfaces of, the Work and\nDerivative Works thereof.\n\n\"Contribution\" + shall mean any work of authorship, including the original\nversion of the Work + and any modifications or additions to that Work or\nDerivative Works thereof, + that is intentionally submitted to Licensor for\ninclusion in the Work by the + copyright owner or by an individual or Legal\nEntity authorized to submit on behalf + of the copyright owner. For the\npurposes of this definition, \"submitted\" means + any form of electronic,\nverbal, or written communication sent to the Licensor + or its\nrepresentatives, including but not limited to communication on electronic\nmailing + lists, source code control systems, and issue tracking systems\nthat are managed + by, or on behalf of, the Licensor for the purpose of\ndiscussing and improving + the Work, but excluding communication that is\nconspicuously marked or otherwise + designated in writing by the copyright\nowner as \"Not a Contribution.\"\n\n\"Contributor\" + shall mean Licensor and any individual or Legal Entity on\nbehalf of whom a Contribution + has been received by Licensor and\nsubsequently incorporated within the Work.\n\n2. + Grant of Copyright License.\n\nSubject to the terms and conditions of this License, + each Contributor\nhereby grants to You a perpetual, worldwide, non-exclusive, + no-charge,\nroyalty-free, irrevocable copyright license to reproduce, prepare\nDerivative + Works of, publicly display, publicly perform, sublicense, and\ndistribute the + Work and such Derivative Works in Source or Object form.\n\n3. Grant of Patent + License.\n\nSubject to the terms and conditions of this License, each Contributor\nhereby + grants to You a perpetual, worldwide, non-exclusive, no-charge,\nroyalty-free, + irrevocable (except as stated in this section) patent\nlicense to make, have made, + use, offer to sell, sell, import, and\notherwise transfer the Work, where such + license applies only to those\npatent claims licensable by such Contributor that + are necessarily\ninfringed by their Contribution(s) alone or by combination of + their\nContribution(s) with the Work to which such Contribution(s) was\nsubmitted. + If You institute patent litigation against any entity\n(including a cross-claim + or counterclaim in a lawsuit) alleging that the\nWork or a Contribution incorporated + within the Work constitutes direct or\ncontributory patent infringement, then + any patent licenses granted to You\nunder this License for that Work shall terminate + as of the date such\nlitigation is filed.\n\n4. Redistribution.\n\nYou may reproduce + and distribute copies of the Work or Derivative Works\nthereof in any medium, + with or without modifications, and in Source or\nObject form, provided that You + meet the following conditions:\n\nYou must give any other recipients of the Work + or Derivative Works a copy\nof this License; and\nYou must cause any modified + files to carry prominent notices stating that\nYou changed the files; and\nYou + must retain, in the Source form of any Derivative Works that You\ndistribute, + all copyright, patent, trademark, and attribution notices\nfrom the Source form + of the Work, excluding those notices that do not\npertain to any part of the Derivative + Works; and\nIf the Work includes a \"NOTICE\" text file as part of its distribution,\nthen + any Derivative Works that You distribute must include a readable\ncopy of the + attribution notices contained within such NOTICE file,\nexcluding those notices + that do not pertain to any part of the Derivative\nWorks, in at least one of the + following places: within a NOTICE text file\ndistributed as part of the Derivative + Works; within the Source form or\ndocumentation, if provided along with the Derivative + Works; or, within a\ndisplay generated by the Derivative Works, if and wherever + such\nthird-party notices normally appear. The contents of the NOTICE file are\nfor + informational purposes only and do not modify the License. You may\nadd Your own + attribution notices within Derivative Works that You\ndistribute, alongside or + as an addendum to the NOTICE text from the Work,\nprovided that such additional + attribution notices cannot be construed as\nmodifying the License.\nYou may add + Your own copyright statement to Your modifications and may\nprovide additional + or different license terms and conditions for use,\nreproduction, or distribution + of Your modifications, or for any such\nDerivative Works as a whole, provided + Your use, reproduction, and\ndistribution of the Work otherwise complies with + the conditions stated in\nthis License.\n\n5. Submission of Contributions.\n\nUnless + You explicitly state otherwise, any Contribution intentionally\nsubmitted for + inclusion in the Work by You to the Licensor shall be under\nthe terms and conditions + of this License, without any additional terms or\nconditions. Notwithstanding + the above, nothing herein shall supersede or\nmodify the terms of any separate + license agreement you may have executed\nwith Licensor regarding such Contributions.\n\n6. + Trademarks.\n\nThis License does not grant permission to use the trade names,\ntrademarks, + service marks, or product names of the Licensor, except as\nrequired for reasonable + and customary use in describing the origin of the\nWork and reproducing the content + of the NOTICE file.\n\n7. Disclaimer of Warranty.\n\nUnless required by applicable + law or agreed to in writing, Licensor\nprovides the Work (and each Contributor + provides its Contributions) on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS + OF ANY KIND, either\nexpress or implied, including, without limitation, any warranties + or\nconditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\nPARTICULAR + PURPOSE. You are solely responsible for determining the\nappropriateness of using + or redistributing the Work and assume any risks\nassociated with Your exercise + of permissions under this License.\n\n8. Limitation of Liability.\n\nIn no event + and under no legal theory, whether in tort (including\nnegligence), contract, + or otherwise, unless required by applicable law\n(such as deliberate and grossly + negligent acts) or agreed to in writing,\nshall any Contributor be liable to You + for damages, including any direct,\nindirect, special, incidental, or consequential + damages of any character\narising as a result of this License or out of the use + or inability to use\nthe Work (including but not limited to damages for loss of + goodwill, work\nstoppage, computer failure or malfunction, or any and all other\ncommercial + damages or losses), even if such Contributor has been advised\nof the possibility + of such damages.\n\n9. Accepting Warranty or Additional Liability.\n\nWhile redistributing + the Work or Derivative Works thereof, You may choose\nto offer, and charge a fee + for, acceptance of support, warranty,\nindemnity, or other liability obligations + and/or rights consistent with\nthis License. However, in accepting such obligations, + You may act only on\nYour own behalf and on Your sole responsibility, not on behalf + of any\nother Contributor, and only if You agree to indemnify, defend, and hold\neach + Contributor harmless for any liability incurred by, or claims\nasserted against, + such Contributor by reason of your accepting any such\nwarranty or additional + liability.\n\nEND OF TERMS AND CONDITIONS\n\nAPPENDIX: How to apply the Apache + License to your work\n\nTo apply the Apache License to your work, attach the following\nboilerplate + notice, with the fields enclosed by brackets \"[]\" replaced\nwith your own identifying + information. (Don't include the brackets!) The\ntext should be enclosed in the + appropriate comment syntax for the file\nformat. We also recommend that a file + or class name and description of\npurpose be included on the same \"printed page\" + as the copyright notice\nfor easier identification within third-party archives.\n\n + \ Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache + License, Version 2.0 (the \"License\");\n you may not use this file except in + compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n + \ Unless required by applicable law or agreed to in writing, software\n distributed + under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES + OR CONDITIONS OF ANY KIND, either express or\n implied.\n See the License + for the specific language governing permissions and\n limitations under the + License.\n" +notices: [] diff --git a/vendor/licenses/git_submodule/lang-4d.dep.yml b/vendor/licenses/git_submodule/language-4d.dep.yml similarity index 92% rename from vendor/licenses/git_submodule/lang-4d.dep.yml rename to vendor/licenses/git_submodule/language-4d.dep.yml index 4e71b13c92..e4ad249e94 100644 --- a/vendor/licenses/git_submodule/lang-4d.dep.yml +++ b/vendor/licenses/git_submodule/language-4d.dep.yml @@ -1,13 +1,13 @@ --- type: git_submodule -name: lang-4d -version: db3ca1cd5acd195c00688eba642ae8ff7644dae7 +name: language-4d +version: 10c3400b2ee7b14a7c20de141821caf200f13823 license: mit licenses: - text: |- MIT License - Copyright (c) 2019 Ayoub Serti + Copyright (c) 2025 4D Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/vendor/licenses/git_submodule/language-etc.dep.yml b/vendor/licenses/git_submodule/language-etc.dep.yml index 6b599cb6a3..6955013205 100644 --- a/vendor/licenses/git_submodule/language-etc.dep.yml +++ b/vendor/licenses/git_submodule/language-etc.dep.yml @@ -1,6 +1,6 @@ --- name: language-etc -version: c92244d1aaf4715e918ee5404f46b5e0fa3e66e5 +version: ed1933244c7b82e2ddeca5474fc7436866301a5e type: git_submodule homepage: https://github.com/Alhadis/language-etc license: isc diff --git a/vendor/licenses/git_submodule/language-macaulay2.dep.yml b/vendor/licenses/git_submodule/language-macaulay2.dep.yml index f45ff06cc7..ea9d4b8398 100644 --- a/vendor/licenses/git_submodule/language-macaulay2.dep.yml +++ b/vendor/licenses/git_submodule/language-macaulay2.dep.yml @@ -1,6 +1,6 @@ --- name: language-macaulay2 -version: ee398efb8d5a05b78b4f5c47d74a46bd63487b2f +version: 33df9c7b216df30f460fc3450c5ef2e285096d33 type: git_submodule homepage: https://github.com/Macaulay2/language-macaulay2 license: mit diff --git a/vendor/licenses/git_submodule/language-toc-wow.dep.yml b/vendor/licenses/git_submodule/language-toc-wow.dep.yml index 1bded39402..9e533ee40a 100644 --- a/vendor/licenses/git_submodule/language-toc-wow.dep.yml +++ b/vendor/licenses/git_submodule/language-toc-wow.dep.yml @@ -1,6 +1,6 @@ --- name: language-toc-wow -version: 47a93276f939324ac11f0889518142abc9bb4d07 +version: 0f0793ac0313e8db4ebb963fd157e6575292a7f3 type: git_submodule homepage: https://github.com/nebularg/language-toc-wow license: unlicense diff --git a/vendor/licenses/git_submodule/language-tools.dep.yml b/vendor/licenses/git_submodule/language-tools.dep.yml index 15b4576b2b..b68f38b329 100644 --- a/vendor/licenses/git_submodule/language-tools.dep.yml +++ b/vendor/licenses/git_submodule/language-tools.dep.yml @@ -1,6 +1,6 @@ --- name: language-tools -version: a338d925a5cb76590f8fcba9577492c9ca9e596c +version: d94c100f416f5dbe9adfbdb24305537ee9cc326e type: git_submodule homepage: https://github.com/vuejs/language-tools.git license: mit diff --git a/vendor/licenses/git_submodule/leo-linguist.dep.yml b/vendor/licenses/git_submodule/leo-linguist.dep.yml new file mode 100644 index 0000000000..2607107cf6 --- /dev/null +++ b/vendor/licenses/git_submodule/leo-linguist.dep.yml @@ -0,0 +1,211 @@ +--- +name: leo-linguist +version: 67d682ce0c8f1ca09c49d1cafa56be1def4bd25c +type: git_submodule +homepage: https://github.com/ProvableHQ/leo-linguist.git +license: apache-2.0 +licenses: +- sources: LICENSE + text: |2 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +notices: [] diff --git a/vendor/licenses/git_submodule/liquid-tm-grammar.dep.yml b/vendor/licenses/git_submodule/liquid-tm-grammar.dep.yml index d0d489a74d..b2ab73e47a 100644 --- a/vendor/licenses/git_submodule/liquid-tm-grammar.dep.yml +++ b/vendor/licenses/git_submodule/liquid-tm-grammar.dep.yml @@ -1,6 +1,6 @@ --- name: liquid-tm-grammar -version: 91ef1e508a4723c640a15f65b809a279206bed78 +version: df3989fc5a563fdbad1406d94013ad31ab6f305b type: git_submodule homepage: https://github.com/Shopify/liquid-tm-grammar.git license: mit diff --git a/vendor/licenses/git_submodule/livescript-vscode.dep.yml b/vendor/licenses/git_submodule/livescript-vscode.dep.yml new file mode 100644 index 0000000000..6d5fa1a05e --- /dev/null +++ b/vendor/licenses/git_submodule/livescript-vscode.dep.yml @@ -0,0 +1,211 @@ +--- +name: livescript-vscode +version: 59eae642ff88ada8d6d1c59713e0b94df4852e52 +type: git_submodule +homepage: https://github.com/sharktide/livescript-vscode.git +license: apache-2.0 +licenses: +- sources: LICENSE + text: |2 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2025 Rihaan Meher + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +notices: [] diff --git a/vendor/licenses/git_submodule/moonbit-tmLanguage.dep.yml b/vendor/licenses/git_submodule/moonbit-tmLanguage.dep.yml index 57302642ab..e266570c9c 100644 --- a/vendor/licenses/git_submodule/moonbit-tmLanguage.dep.yml +++ b/vendor/licenses/git_submodule/moonbit-tmLanguage.dep.yml @@ -1,6 +1,6 @@ --- name: moonbit-tmLanguage -version: 3683d548d5877457f4b0b72e45d924d61f27ae1c +version: 184be8c2b55e5ef6ddb2d9f5eec9292e21cab57a type: git_submodule homepage: https://github.com/moonbitlang/moonbit-tmLanguage.git license: apache-2.0 diff --git a/vendor/licenses/git_submodule/nu-grammar.dep.yml b/vendor/licenses/git_submodule/nu-grammar.dep.yml index cad3372304..3c94485bdc 100644 --- a/vendor/licenses/git_submodule/nu-grammar.dep.yml +++ b/vendor/licenses/git_submodule/nu-grammar.dep.yml @@ -1,6 +1,6 @@ --- name: nu-grammar -version: 62bb72f6ab5a3fb6b3104c38f58cc8d9b0a27a6f +version: bbdee460ade7c02adbdd12de6b1daaa498e3639b type: git_submodule homepage: https://github.com/hustcer/nu-grammar.git license: mit diff --git a/vendor/licenses/git_submodule/pkl.tmbundle.dep.yml b/vendor/licenses/git_submodule/pkl.tmbundle.dep.yml index aed7474f9a..bfe912a009 100644 --- a/vendor/licenses/git_submodule/pkl.tmbundle.dep.yml +++ b/vendor/licenses/git_submodule/pkl.tmbundle.dep.yml @@ -1,6 +1,6 @@ --- name: pkl.tmbundle -version: 3cfd12a10a1e289365398842b5a2764e9e863fd8 +version: af454a169c7d328d4838e7f33fff111eb8e33967 type: git_submodule homepage: https://github.com/apple/pkl.tmbundle.git license: apache-2.0 diff --git a/vendor/licenses/git_submodule/qsharp.dep.yml b/vendor/licenses/git_submodule/qsharp.dep.yml index b0fb5e1286..6d0d55f744 100644 --- a/vendor/licenses/git_submodule/qsharp.dep.yml +++ b/vendor/licenses/git_submodule/qsharp.dep.yml @@ -1,6 +1,6 @@ --- name: qsharp -version: 1778307756977cc846421d80ab66b4f77e7c39ee +version: c8150772afce75621f2ccdb65d30135345f87b5e type: git_submodule homepage: https://github.com/microsoft/qsharp.git license: mit diff --git a/vendor/licenses/git_submodule/rescript-vscode.dep.yml b/vendor/licenses/git_submodule/rescript-vscode.dep.yml index 9091aea74a..486e76e32e 100644 --- a/vendor/licenses/git_submodule/rescript-vscode.dep.yml +++ b/vendor/licenses/git_submodule/rescript-vscode.dep.yml @@ -1,6 +1,6 @@ --- name: rescript-vscode -version: 79992f17373b6f6fc9af5b2e99ca16e5dbd27bf7 +version: 9f58cea6fe0589f51b1514b6229466a3d8d1705d type: git_submodule homepage: https://github.com/rescript-lang/rescript-vscode license: mit diff --git a/vendor/licenses/git_submodule/roc-vscode-unofficial.dep.yml b/vendor/licenses/git_submodule/roc-vscode-unofficial.dep.yml index 5b21bb7818..19e9ef30c9 100644 --- a/vendor/licenses/git_submodule/roc-vscode-unofficial.dep.yml +++ b/vendor/licenses/git_submodule/roc-vscode-unofficial.dep.yml @@ -1,6 +1,6 @@ --- name: roc-vscode-unofficial -version: 2b489649d1e6d658a2423a267a5a41fa346efe99 +version: f60596f4b8d65937e7a8df2c0b454a3a309aa91e type: git_submodule homepage: https://github.com/ivan-demchenko/roc-vscode-unofficial.git license: mit diff --git a/vendor/licenses/git_submodule/rust-syntax.dep.yml b/vendor/licenses/git_submodule/rust-syntax.dep.yml index 0a9fd1dc8d..cd025e3e9f 100644 --- a/vendor/licenses/git_submodule/rust-syntax.dep.yml +++ b/vendor/licenses/git_submodule/rust-syntax.dep.yml @@ -1,6 +1,6 @@ --- name: rust-syntax -version: c7670c5d7e4b4747d0ff2dab838d1399bd2c518a +version: 268fd42cfd4aa96a6ed9024a2850d17d6cd2dc7b type: git_submodule homepage: https://github.com/dustypomerleau/rust-syntax.git license: mit diff --git a/vendor/licenses/git_submodule/sail_vscode.dep.yml b/vendor/licenses/git_submodule/sail_vscode.dep.yml new file mode 100644 index 0000000000..81a397ccd8 --- /dev/null +++ b/vendor/licenses/git_submodule/sail_vscode.dep.yml @@ -0,0 +1,20 @@ +--- +name: sail_vscode +version: 3dce4a919a93eac85585ba7ef1c6f3534e8d5ebc +type: git_submodule +homepage: https://github.com/Timmmm/sail_vscode.git +license: mit +licenses: +- sources: LICENSE.md + text: | + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +- sources: README.md + text: All code licensed under the MIT license (see [`LICENSE.md`](https://github.com/timmmm/sail_vscode/blob/master/LICENSE.md)), + except `syntaxes/sail.tmLanguage.json` which was copied from the Sail project + [here](https://github.com/rems-project/sail/blob/f3bf59ea8f8a44089a2fb3306c75f35279e156ce/editors/vscode/sail/syntaxes/sail.tmLanguage.json) + and is 2-clause BSD licensed. +notices: [] diff --git a/vendor/licenses/git_submodule/slang-vscode-extension.dep.yml b/vendor/licenses/git_submodule/slang-vscode-extension.dep.yml index 62cd8a056c..b31303be42 100644 --- a/vendor/licenses/git_submodule/slang-vscode-extension.dep.yml +++ b/vendor/licenses/git_submodule/slang-vscode-extension.dep.yml @@ -1,6 +1,6 @@ --- name: slang-vscode-extension -version: 0b44829f755a065b5f95746b2512d01a8578ca93 +version: ae4509d8f899269e0a8b25e1329816b1a4213361 type: git_submodule homepage: https://github.com/shader-slang/slang-vscode-extension.git license: apache-2.0 diff --git a/vendor/licenses/git_submodule/slint-tmLanguage.dep.yml b/vendor/licenses/git_submodule/slint-tmLanguage.dep.yml index 8904d37354..b80b2f3df8 100644 --- a/vendor/licenses/git_submodule/slint-tmLanguage.dep.yml +++ b/vendor/licenses/git_submodule/slint-tmLanguage.dep.yml @@ -1,6 +1,6 @@ --- name: slint-tmLanguage -version: b0f91f4eb04731c9f868f382fba3fa5f5ea7840a +version: 5fa0e06c6a0ba2fa12cb93fe4b56ba37a243ad40 type: git_submodule homepage: https://github.com/slint-ui/slint-tmLanguage.git license: mit diff --git a/vendor/licenses/git_submodule/smithy-vscode.dep.yml b/vendor/licenses/git_submodule/smithy-vscode.dep.yml index c811e3f2e5..d08cf26b27 100644 --- a/vendor/licenses/git_submodule/smithy-vscode.dep.yml +++ b/vendor/licenses/git_submodule/smithy-vscode.dep.yml @@ -1,6 +1,6 @@ --- name: smithy-vscode -version: 63cf6da99e6f14019063b7464dfdb9bd65316f7a +version: ccef0a0368b17707f139f68a006200931a87ffb8 type: git_submodule homepage: https://github.com/awslabs/smithy-vscode.git license: apache-2.0 diff --git a/vendor/licenses/git_submodule/sourcepawn-vscode.dep.yml b/vendor/licenses/git_submodule/sourcepawn-vscode.dep.yml index 0f216bbc0f..31432441c4 100644 --- a/vendor/licenses/git_submodule/sourcepawn-vscode.dep.yml +++ b/vendor/licenses/git_submodule/sourcepawn-vscode.dep.yml @@ -1,6 +1,6 @@ --- name: sourcepawn-vscode -version: bbdb7646dc6a79631f919b4bed1644140aa8e564 +version: b8acdcecc6ef2499ad29219dbc8a181d29d6fdde type: git_submodule homepage: https://github.com/Sarrus1/sourcepawn-vscode.git license: mit diff --git a/vendor/licenses/git_submodule/sprocket-vscode.dep.yml b/vendor/licenses/git_submodule/sprocket-vscode.dep.yml index 22fc11bebe..32d65a9a22 100644 --- a/vendor/licenses/git_submodule/sprocket-vscode.dep.yml +++ b/vendor/licenses/git_submodule/sprocket-vscode.dep.yml @@ -1,6 +1,6 @@ --- name: sprocket-vscode -version: d2246e1e50d1f91201f6dc5c9201ace665d9da50 +version: 2a16cb9ff34f62c2086553ebb428cd0a27056ea1 type: git_submodule homepage: https://github.com/stjude-rust-labs/sprocket-vscode.git license: apache-2.0 diff --git a/vendor/licenses/git_submodule/sublime-odin.dep.yml b/vendor/licenses/git_submodule/sublime-odin.dep.yml index 3b0fdbeeb0..a94ddba177 100644 --- a/vendor/licenses/git_submodule/sublime-odin.dep.yml +++ b/vendor/licenses/git_submodule/sublime-odin.dep.yml @@ -1,6 +1,6 @@ --- name: sublime-odin -version: 5d6a0ed41e41ec3709ec74f40686dc3761d6596e +version: f8c146f1aca96626d75c7abb39d018aaaaf936c9 type: git_submodule homepage: https://github.com/odin-lang/sublime-odin license: mit diff --git a/vendor/licenses/git_submodule/sublimetext-nasl.dep.yml b/vendor/licenses/git_submodule/sublimetext-nasl.dep.yml index 873fb3c776..86576c87a8 100644 --- a/vendor/licenses/git_submodule/sublimetext-nasl.dep.yml +++ b/vendor/licenses/git_submodule/sublimetext-nasl.dep.yml @@ -1,6 +1,6 @@ --- name: sublimetext-nasl -version: 552a4eaeae92745d250f67ab2972159dfc6e02b7 +version: 3cb19fdf9855f44c93c8025d03576c6221d46145 type: git_submodule homepage: https://github.com/tenable/sublimetext-nasl license: mit diff --git a/vendor/licenses/git_submodule/sway-vscode-plugin.dep.yml b/vendor/licenses/git_submodule/sway-vscode-plugin.dep.yml index 07e43c0237..07cb94d57e 100644 --- a/vendor/licenses/git_submodule/sway-vscode-plugin.dep.yml +++ b/vendor/licenses/git_submodule/sway-vscode-plugin.dep.yml @@ -1,6 +1,6 @@ --- name: sway-vscode-plugin -version: 8dd0d09cdc480358e717c4e814544c0af278f503 +version: 4a081a51a97094f729d631253296be7e8eda3940 type: git_submodule homepage: https://github.com/FuelLabs/sway-vscode-plugin.git license: apache-2.0 diff --git a/vendor/licenses/git_submodule/swift-tmlanguage.dep.yml b/vendor/licenses/git_submodule/swift-tmlanguage.dep.yml index 1f6122ec0c..3df81d4f77 100644 --- a/vendor/licenses/git_submodule/swift-tmlanguage.dep.yml +++ b/vendor/licenses/git_submodule/swift-tmlanguage.dep.yml @@ -1,6 +1,6 @@ --- name: swift-tmlanguage -version: 6b5f2e44259da66a06c04793d9554d832d5c19a5 +version: d2461f240083b2d44be0de67d3a1596c4c87fe00 type: git_submodule homepage: https://github.com/jtbandes/swift-tmlanguage.git license: mit diff --git a/vendor/licenses/git_submodule/tact-sublime.dep.yml b/vendor/licenses/git_submodule/tact-sublime.dep.yml index c699208855..6a6a0a1a1a 100644 --- a/vendor/licenses/git_submodule/tact-sublime.dep.yml +++ b/vendor/licenses/git_submodule/tact-sublime.dep.yml @@ -1,6 +1,6 @@ --- name: tact-sublime -version: c7c5aeb7cdd5a1cdc553c3560754a564b6a8b538 +version: 11fe1c180824e93f462ed1aacef44a75d6477eb9 type: git_submodule homepage: https://github.com/tact-lang/tact-sublime.git license: mit diff --git a/vendor/licenses/git_submodule/templ-vscode.dep.yml b/vendor/licenses/git_submodule/templ-vscode.dep.yml index c571b65a2f..b8a28d9382 100644 --- a/vendor/licenses/git_submodule/templ-vscode.dep.yml +++ b/vendor/licenses/git_submodule/templ-vscode.dep.yml @@ -1,6 +1,6 @@ --- name: templ-vscode -version: 397f1ff7a257ba6f18e010a6de75342add63d6ea +version: 47596797b61a2de17f3311d1d6dd4a12cfc56536 type: git_submodule homepage: https://github.com/templ-go/templ-vscode.git license: mit diff --git a/vendor/licenses/git_submodule/typespec.dep.yml b/vendor/licenses/git_submodule/typespec.dep.yml index ee4a5f6d71..3060271509 100644 --- a/vendor/licenses/git_submodule/typespec.dep.yml +++ b/vendor/licenses/git_submodule/typespec.dep.yml @@ -1,6 +1,6 @@ --- name: typespec -version: e0a9683ae89168b56430df6da753403cd3657e64 +version: 44187f85974a88e60fd9d43ba766dc299d9b2f64 type: git_submodule homepage: https://github.com/microsoft/typespec.git license: mit diff --git a/vendor/licenses/git_submodule/typst-grammar.dep.yml b/vendor/licenses/git_submodule/typst-grammar.dep.yml index 44e4b81ccb..09837c15dd 100644 --- a/vendor/licenses/git_submodule/typst-grammar.dep.yml +++ b/vendor/licenses/git_submodule/typst-grammar.dep.yml @@ -1,6 +1,6 @@ --- name: typst-grammar -version: b9743f9db3827b5f923924bf4fabe328b9b3b487 +version: 275f3f62b1af0aedba27a79b59598ce9eeda523e type: git_submodule homepage: https://github.com/michidk/typst-grammar.git license: apache-2.0 diff --git a/vendor/licenses/git_submodule/vsc-ember-syntax.dep.yml b/vendor/licenses/git_submodule/vsc-ember-syntax.dep.yml index 91a400749d..1c0b5fb5a5 100644 --- a/vendor/licenses/git_submodule/vsc-ember-syntax.dep.yml +++ b/vendor/licenses/git_submodule/vsc-ember-syntax.dep.yml @@ -1,6 +1,6 @@ --- name: vsc-ember-syntax -version: 5971439b47f0002d4786f41c311568be75a719a2 +version: 3eff603c44a671dbb4cf1115b8f1bdfd60c49d5a type: git_submodule homepage: https://github.com/lifeart/vsc-ember-syntax.git license: mit @@ -9,7 +9,7 @@ licenses: text: | MIT License - Copyright (c) 2024 Alex Kanunnikov + Copyright (c) 2025 Alex Kanunnikov Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/vendor/licenses/git_submodule/vsc-language-1c-bsl.dep.yml b/vendor/licenses/git_submodule/vsc-language-1c-bsl.dep.yml index 95ac0533e0..32f88880a6 100644 --- a/vendor/licenses/git_submodule/vsc-language-1c-bsl.dep.yml +++ b/vendor/licenses/git_submodule/vsc-language-1c-bsl.dep.yml @@ -1,6 +1,6 @@ --- name: vsc-language-1c-bsl -version: 61ecbd3c58215a9afe461eef5399d1fdf2e9f984 +version: 93be46f229518cc84128f0837b6f8077941eb95b type: git_submodule homepage: https://github.com/1c-syntax/vsc-language-1c-bsl.git license: mit diff --git a/vendor/licenses/git_submodule/vscode-TalonScript.dep.yml b/vendor/licenses/git_submodule/vscode-TalonScript.dep.yml index 5e5964f817..161e3c6cdf 100644 --- a/vendor/licenses/git_submodule/vscode-TalonScript.dep.yml +++ b/vendor/licenses/git_submodule/vscode-TalonScript.dep.yml @@ -1,6 +1,6 @@ --- name: vscode-TalonScript -version: 75cbd5bd11582719443aa6fa584089f0c71c7bac +version: 96978ded90b6983064765e7dc565db5ca6ffcc99 type: git_submodule homepage: https://github.com/mrob95/vscode-TalonScript.git license: mit diff --git a/vendor/licenses/git_submodule/vscode-aiken.dep.yml b/vendor/licenses/git_submodule/vscode-aiken.dep.yml new file mode 100644 index 0000000000..74acc9d13c --- /dev/null +++ b/vendor/licenses/git_submodule/vscode-aiken.dep.yml @@ -0,0 +1,211 @@ +--- +name: vscode-aiken +version: c36cf20335dd002760d87df19d6c0779d0f5e636 +type: git_submodule +homepage: https://github.com/aiken-lang/vscode-aiken.git +license: apache-2.0 +licenses: +- sources: LICENSE + text: |2 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2022 Lucas Rosa + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +notices: [] diff --git a/vendor/licenses/git_submodule/vscode-antlers-language-server.dep.yml b/vendor/licenses/git_submodule/vscode-antlers-language-server.dep.yml index 646f9ba90f..fc282453ae 100644 --- a/vendor/licenses/git_submodule/vscode-antlers-language-server.dep.yml +++ b/vendor/licenses/git_submodule/vscode-antlers-language-server.dep.yml @@ -1,6 +1,6 @@ --- name: vscode-antlers-language-server -version: 157d0eac3de834662d8616fdc828f554b8a73095 +version: 74d6f49ebf1f102d9128f543c652f78c11ee5765 type: git_submodule homepage: https://github.com/Stillat/vscode-antlers-language-server.git license: mit diff --git a/vendor/licenses/git_submodule/vscode-bitbake.dep.yml b/vendor/licenses/git_submodule/vscode-bitbake.dep.yml index 744c4478b4..036743c0c3 100644 --- a/vendor/licenses/git_submodule/vscode-bitbake.dep.yml +++ b/vendor/licenses/git_submodule/vscode-bitbake.dep.yml @@ -1,6 +1,6 @@ --- name: vscode-bitbake -version: b9d5ecdfa8e362c9c3d6f3b1addd3ec9e3fc97e3 +version: 67e1b432db573059d199c183157d38257d7c9d0a type: git_submodule homepage: https://github.com/yoctoproject/vscode-bitbake.git license: mit diff --git a/vendor/licenses/git_submodule/vscode-brightscript-language.dep.yml b/vendor/licenses/git_submodule/vscode-brightscript-language.dep.yml index 888b305ee5..31de54794e 100644 --- a/vendor/licenses/git_submodule/vscode-brightscript-language.dep.yml +++ b/vendor/licenses/git_submodule/vscode-brightscript-language.dep.yml @@ -1,6 +1,6 @@ --- name: vscode-brightscript-language -version: 195c7e6b5a8de4dfbc1f43d2a2f1bfe3adcb56f3 +version: a28da3b70790cf4f4d315c663b3f79afcedb64b2 type: git_submodule homepage: https://github.com/rokucommunity/vscode-brightscript-language.git license: mit diff --git a/vendor/licenses/git_submodule/vscode-cmake-tools.dep.yml b/vendor/licenses/git_submodule/vscode-cmake-tools.dep.yml index c40776b38c..935eba576b 100644 --- a/vendor/licenses/git_submodule/vscode-cmake-tools.dep.yml +++ b/vendor/licenses/git_submodule/vscode-cmake-tools.dep.yml @@ -1,6 +1,6 @@ --- name: vscode-cmake-tools -version: e552a9f93186eb755b47f1164f870499dda8d890 +version: defc0b5369c64467c3466b1cee3faba9f9633a6a type: git_submodule homepage: https://github.com/microsoft/vscode-cmake-tools.git license: mit diff --git a/vendor/licenses/git_submodule/vscode-codeql.dep.yml b/vendor/licenses/git_submodule/vscode-codeql.dep.yml index 4e7d2e68b4..ae1f14fa56 100644 --- a/vendor/licenses/git_submodule/vscode-codeql.dep.yml +++ b/vendor/licenses/git_submodule/vscode-codeql.dep.yml @@ -1,6 +1,6 @@ --- name: vscode-codeql -version: 49bc5e771b7b893229ed8dfe42b639c8fad31cbf +version: dd6fbdec65ead3f73946c659f75ae8c068f59f46 type: git_submodule homepage: https://github.com/github/vscode-codeql license: mit diff --git a/vendor/licenses/git_submodule/vscode-gleam.dep.yml b/vendor/licenses/git_submodule/vscode-gleam.dep.yml index 284e913fac..d5918cb105 100644 --- a/vendor/licenses/git_submodule/vscode-gleam.dep.yml +++ b/vendor/licenses/git_submodule/vscode-gleam.dep.yml @@ -1,6 +1,6 @@ --- name: vscode-gleam -version: 94f893d11f1c4673da19867b60e80e053c30fb83 +version: c771e400c5847acdb431881018925d79bc270dda type: git_submodule homepage: https://github.com/gleam-lang/vscode-gleam.git license: apache-2.0 diff --git a/vendor/licenses/git_submodule/vscode-go.dep.yml b/vendor/licenses/git_submodule/vscode-go.dep.yml index ede8725f4d..e3e2421fec 100644 --- a/vendor/licenses/git_submodule/vscode-go.dep.yml +++ b/vendor/licenses/git_submodule/vscode-go.dep.yml @@ -1,6 +1,6 @@ --- name: vscode-go -version: eeb3c24fe991e47e130a0ac70a9b214664b4a0ea +version: 3673270a540086ac93d176350bd6fd8d30fd058e type: git_submodule homepage: https://github.com/golang/vscode-go license: mit diff --git a/vendor/licenses/git_submodule/vscode-ibmi-languages.dep.yml b/vendor/licenses/git_submodule/vscode-ibmi-languages.dep.yml index b45353a231..b37e99ad73 100644 --- a/vendor/licenses/git_submodule/vscode-ibmi-languages.dep.yml +++ b/vendor/licenses/git_submodule/vscode-ibmi-languages.dep.yml @@ -1,6 +1,6 @@ --- name: vscode-ibmi-languages -version: 7fa20a5205f2419148cf511786cfaf21d0b48953 +version: 22dc7e05b44ea5f07f2e469c2dbf38c7281229a9 type: git_submodule homepage: https://github.com/barrettotte/vscode-ibmi-languages license: mit diff --git a/vendor/licenses/git_submodule/vscode-jest.dep.yml b/vendor/licenses/git_submodule/vscode-jest.dep.yml index 8bd6267153..8208150db0 100644 --- a/vendor/licenses/git_submodule/vscode-jest.dep.yml +++ b/vendor/licenses/git_submodule/vscode-jest.dep.yml @@ -1,6 +1,6 @@ --- name: vscode-jest -version: 7d302028e73a76f1077a8afe64e3f9482ca576cb +version: c93ec7a278ec84c2ac909d16ed155caccaeca933 type: git_submodule homepage: https://github.com/jest-community/vscode-jest license: mit diff --git a/vendor/licenses/git_submodule/vscode-jsonc-syntax-highlighting.dep.yml b/vendor/licenses/git_submodule/vscode-jsonc-syntax-highlighting.dep.yml index ff4fc8b63f..f3005b748d 100644 --- a/vendor/licenses/git_submodule/vscode-jsonc-syntax-highlighting.dep.yml +++ b/vendor/licenses/git_submodule/vscode-jsonc-syntax-highlighting.dep.yml @@ -1,6 +1,6 @@ --- name: vscode-jsonc-syntax-highlighting -version: b3a09c98467d73620b3e92d08d1d1eec3146f6bf +version: 163059f763575aeb32da7a977dd48a3e49ca476a type: git_submodule homepage: https://github.com/DecimalTurn/vscode-jsonc-syntax-highlighting.git license: mit diff --git a/vendor/licenses/git_submodule/vscode-just.dep.yml b/vendor/licenses/git_submodule/vscode-just.dep.yml index 02e00a5a36..876109d16e 100644 --- a/vendor/licenses/git_submodule/vscode-just.dep.yml +++ b/vendor/licenses/git_submodule/vscode-just.dep.yml @@ -1,6 +1,6 @@ --- name: vscode-just -version: 0eda7b3a0be1728e7447355cf886601cca84cb84 +version: e539719363c9a9e36b431efc5546aaee0c840a56 type: git_submodule homepage: https://github.com/nefrob/vscode-just.git license: mit diff --git a/vendor/licenses/git_submodule/vscode-lean.dep.yml b/vendor/licenses/git_submodule/vscode-lean.dep.yml index b5d4c6dfd4..85bcaac033 100644 --- a/vendor/licenses/git_submodule/vscode-lean.dep.yml +++ b/vendor/licenses/git_submodule/vscode-lean.dep.yml @@ -1,6 +1,6 @@ --- name: vscode-lean -version: 0c5aad69566fdebe25132c3f7933fb6eb895db3f +version: 843c5401fc5795fa30d64fb0207b1d29d00a0916 type: git_submodule homepage: https://github.com/leanprover/vscode-lean license: apache-2.0 diff --git a/vendor/licenses/git_submodule/vscode-lean4.dep.yml b/vendor/licenses/git_submodule/vscode-lean4.dep.yml index 5e6e30d8c6..ed0ebc670e 100644 --- a/vendor/licenses/git_submodule/vscode-lean4.dep.yml +++ b/vendor/licenses/git_submodule/vscode-lean4.dep.yml @@ -1,6 +1,6 @@ --- name: vscode-lean4 -version: e844f6abe874fde8fda34160e82888476dd9c676 +version: 5a938adc7913fbb4e177391bc2b762a35ab29153 type: git_submodule homepage: https://github.com/leanprover/vscode-lean4.git license: apache-2.0 diff --git a/vendor/licenses/git_submodule/vscode-motoko.dep.yml b/vendor/licenses/git_submodule/vscode-motoko.dep.yml index 68d8a44a50..8999ddd150 100644 --- a/vendor/licenses/git_submodule/vscode-motoko.dep.yml +++ b/vendor/licenses/git_submodule/vscode-motoko.dep.yml @@ -1,6 +1,6 @@ --- name: vscode-motoko -version: f2a86c7229b949668aa740b684bb6ed5ba28a8fa +version: 59fe516b7d6107082b8b3540b22f4d36c0519c3d type: git_submodule homepage: https://github.com/dfinity/vscode-motoko.git license: apache-2.0 diff --git a/vendor/licenses/git_submodule/vscode-noir.dep.yml b/vendor/licenses/git_submodule/vscode-noir.dep.yml index 8768f0c546..f43ab44945 100644 --- a/vendor/licenses/git_submodule/vscode-noir.dep.yml +++ b/vendor/licenses/git_submodule/vscode-noir.dep.yml @@ -1,6 +1,6 @@ --- name: vscode-noir -version: fdfef7d5211d14a99a87cf9fbf10d74f2cfc8c15 +version: fca148c9f5570dfbe5426864dff204ed8dd7108d type: git_submodule homepage: https://github.com/noir-lang/vscode-noir.git license: apache-2.0 diff --git a/vendor/licenses/git_submodule/vscode-opa.dep.yml b/vendor/licenses/git_submodule/vscode-opa.dep.yml index 9220c38254..e1e43df15e 100644 --- a/vendor/licenses/git_submodule/vscode-opa.dep.yml +++ b/vendor/licenses/git_submodule/vscode-opa.dep.yml @@ -1,6 +1,6 @@ --- name: vscode-opa -version: 189652ae888fd0b57ac453038b68972cbe2d6ab6 +version: 4860758bdeebc11147578de37cb474a7b736018f type: git_submodule homepage: https://github.com/open-policy-agent/vscode-opa.git license: apache-2.0 diff --git a/vendor/licenses/git_submodule/vscode-prisma.dep.yml b/vendor/licenses/git_submodule/vscode-prisma.dep.yml index a0b7686a3a..b6d01e5c0f 100644 --- a/vendor/licenses/git_submodule/vscode-prisma.dep.yml +++ b/vendor/licenses/git_submodule/vscode-prisma.dep.yml @@ -1,6 +1,6 @@ --- name: vscode-prisma -version: f8a2ba54545c5150770c502e8f6d9c83702506f8 +version: b33abea963454af19f4711384988486594061deb type: git_submodule homepage: https://github.com/prisma/vscode-prisma license: apache-2.0 diff --git a/vendor/licenses/git_submodule/vscode-python.dep.yml b/vendor/licenses/git_submodule/vscode-python.dep.yml index 22931e3a77..caaeb0ca67 100644 --- a/vendor/licenses/git_submodule/vscode-python.dep.yml +++ b/vendor/licenses/git_submodule/vscode-python.dep.yml @@ -1,6 +1,6 @@ --- name: vscode-python -version: 6b7d8d1c12189126dce4c5d6733a74ab7762fb00 +version: 9b17438067c6a9193bb841f00f16678fcbc95f36 type: git_submodule homepage: https://github.com/microsoft/vscode-python.git license: mit diff --git a/vendor/licenses/git_submodule/vscode-rbs-syntax.dep.yml b/vendor/licenses/git_submodule/vscode-rbs-syntax.dep.yml index 544d291818..edbf39a95b 100644 --- a/vendor/licenses/git_submodule/vscode-rbs-syntax.dep.yml +++ b/vendor/licenses/git_submodule/vscode-rbs-syntax.dep.yml @@ -1,6 +1,6 @@ --- name: vscode-rbs-syntax -version: b99890fe161f1f5d9691239cce9ed44aeb5f8e0d +version: 875006de0d15f845aa0b447ec321657ba8db248f type: git_submodule homepage: https://github.com/soutaro/vscode-rbs-syntax.git license: mit diff --git a/vendor/licenses/git_submodule/vscode-scala-syntax.dep.yml b/vendor/licenses/git_submodule/vscode-scala-syntax.dep.yml index cb48c0a0da..3268b5129f 100644 --- a/vendor/licenses/git_submodule/vscode-scala-syntax.dep.yml +++ b/vendor/licenses/git_submodule/vscode-scala-syntax.dep.yml @@ -1,6 +1,6 @@ --- name: vscode-scala-syntax -version: 5537283d9aa49f9b0ee1e2cf129d408b4ece7aa9 +version: 856da8603d6fcf122b40c976be3f065c70cb363e type: git_submodule homepage: https://github.com/scala/vscode-scala-syntax license: mit diff --git a/vendor/licenses/git_submodule/vscode-vba.dep.yml b/vendor/licenses/git_submodule/vscode-vba.dep.yml index 9e8a147d73..0fb4aebec4 100644 --- a/vendor/licenses/git_submodule/vscode-vba.dep.yml +++ b/vendor/licenses/git_submodule/vscode-vba.dep.yml @@ -1,6 +1,6 @@ --- name: vscode-vba -version: 5c7eb1b4023930d52207113d065bedfa17c71619 +version: b57630128a2f76a0b6aa7c245047a1a2de789bdf type: git_submodule homepage: https://github.com/serkonda7/vscode-vba.git license: mpl-2.0 @@ -400,6 +400,5 @@ licenses: [gh-linguist]: https://github.com/github-linguist/linguist/tree/master/vendor - [sponsors-badge]: https://img.shields.io/badge/Sponsor-GitHub-blue.svg - [sponsors-profile]: https://github.com/sponsors/serkonda7 + [sslinky-vba-ls]: https://github.com/SSlinky/VBA-LanguageServer notices: [] diff --git a/vendor/licenses/git_submodule/vscode-vento.dep.yml b/vendor/licenses/git_submodule/vscode-vento.dep.yml new file mode 100644 index 0000000000..a4ec9010a9 --- /dev/null +++ b/vendor/licenses/git_submodule/vscode-vento.dep.yml @@ -0,0 +1,31 @@ +--- +name: vscode-vento +version: 3234e7c6a64b55a4acd716ac69c6c1401d3dda57 +type: git_submodule +homepage: https://github.com/ventojs/vscode-vento.git +license: mit +licenses: +- sources: LICENSE + text: |- + MIT License + + Copyright (c) 2023 - Oscar Otero + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. +notices: [] diff --git a/vendor/licenses/git_submodule/vscode-wit.dep.yml b/vendor/licenses/git_submodule/vscode-wit.dep.yml index 6f7072fc57..0e050a552e 100644 --- a/vendor/licenses/git_submodule/vscode-wit.dep.yml +++ b/vendor/licenses/git_submodule/vscode-wit.dep.yml @@ -1,6 +1,6 @@ --- name: vscode-wit -version: e4c1ca60cae7767a6bd4330dd5580f1d9e4f67e3 +version: e32c8a6b311cb96f936bfa945b2fa8c2710fa4e9 type: git_submodule homepage: https://github.com/bytecodealliance/vscode-wit.git license: apache-2.0 diff --git a/vendor/licenses/git_submodule/vscode.dep.yml b/vendor/licenses/git_submodule/vscode.dep.yml index 4b48c82235..64e13c3e5c 100644 --- a/vendor/licenses/git_submodule/vscode.dep.yml +++ b/vendor/licenses/git_submodule/vscode.dep.yml @@ -1,6 +1,6 @@ --- name: vscode -version: 2743752d99671a261fdcba91cc3eb2708e66407f +version: 20397a81a0a5c8cb91d5c132cc5610480fa038d7 type: git_submodule homepage: https://github.com/QB64Official/vscode.git license: mit diff --git a/vendor/licenses/git_submodule/vscode_cobol.dep.yml b/vendor/licenses/git_submodule/vscode_cobol.dep.yml index 31c8a81b59..b7f3db9f75 100644 --- a/vendor/licenses/git_submodule/vscode_cobol.dep.yml +++ b/vendor/licenses/git_submodule/vscode_cobol.dep.yml @@ -1,6 +1,6 @@ --- name: vscode_cobol -version: dba0ef913b74391d246e81c51c801c8c2e4c79c8 +version: e9c08d723f9454796f41d47140eafa4f37ff797d type: git_submodule homepage: https://github.com/spgennard/vscode_cobol.git license: mit diff --git a/vendor/licenses/git_submodule/wgsl-analyzer.dep.yml b/vendor/licenses/git_submodule/wgsl-analyzer.dep.yml index 1c47ce1482..0ffa8b935e 100644 --- a/vendor/licenses/git_submodule/wgsl-analyzer.dep.yml +++ b/vendor/licenses/git_submodule/wgsl-analyzer.dep.yml @@ -1,6 +1,6 @@ --- name: wgsl-analyzer -version: 93ee8f83e3b7e84c54bf71061dab32445f5d55c5 +version: a645cbc677dfeacbfd25792022e2b47958351624 type: git_submodule homepage: https://github.com/wgsl-analyzer/wgsl-analyzer.git license: mit diff --git a/vendor/licenses/git_submodule/zenstack.dep.yml b/vendor/licenses/git_submodule/zenstack.dep.yml new file mode 100644 index 0000000000..9ebef41544 --- /dev/null +++ b/vendor/licenses/git_submodule/zenstack.dep.yml @@ -0,0 +1,33 @@ +--- +name: zenstack +version: d8bc32d4d22737cf3fbaf22e982ada222f6b0b1c +type: git_submodule +homepage: https://github.com/zenstackhq/zenstack.git +license: mit +licenses: +- sources: LICENSE + text: | + MIT License + + Copyright (c) 2022 ZenStack + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. +- sources: README.md + text: "[MIT](LICENSE)" +notices: []