Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Engine work #61

Open
wants to merge 119 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
119 commits
Select commit Hold shift + click to select a range
bd2a7c0
.net 7 update
rudzen Nov 30, 2022
e61fb7a
Fixed minor formatting etc.
rudzen Dec 22, 2022
01536f4
Various minor additions
rudzen Feb 12, 2023
543d49d
Update copyright year
rudzen Feb 12, 2023
f266641
Updated tables etc
rudzen Feb 12, 2023
f6919fd
Minor refactor
rudzen Feb 12, 2023
acd7091
Fixed unintended non-cleared span for piece validation
rudzen Feb 12, 2023
c16f3b4
Updated some types to be more clear
rudzen Feb 13, 2023
6a779d2
Modernized Perft application
rudzen Feb 13, 2023
150faf6
HiResTimer no longer computes delay if never going to be needed
rudzen Feb 18, 2023
b0082a8
Updated KillerMoves to jagged array
rudzen Feb 18, 2023
7408832
Various minor code updates
rudzen Feb 18, 2023
46a16d6
Improved HiResTimer a bit
rudzen Feb 18, 2023
8bd0fcf
Reworked basic setup to be IoC friendly
rudzen Feb 19, 2023
2f3cca9
Added move list object pool as IoC object
rudzen Feb 19, 2023
3d48a7c
PositionValidator can now be controlled through IoC
rudzen Feb 19, 2023
9a7a947
Minor update to PieceSquareEventArgs
rudzen Feb 19, 2023
bbddc16
Update State use a bit + added missing properties from IGame
rudzen Feb 20, 2023
00455d7
Refactorings
rudzen Mar 24, 2023
9d369f9
Nullability warnings fixed + minor pos validator fix
rudzen Mar 25, 2023
839f542
Fix xunit serializaton fatal error
rudzen Mar 25, 2023
6c57c0c
Added basic PGN file parser library
rudzen Mar 26, 2023
0b50b99
Update reg ex pgn parser
rudzen Mar 26, 2023
eb3164c
Fix using old sample pgn
rudzen Mar 27, 2023
0ac7a06
Added basic non-regex pgn parser
rudzen Mar 27, 2023
20b3ee1
Added simple SAN to move converter
rudzen Mar 27, 2023
00f86f7
Added notational move converter
rudzen Mar 27, 2023
de0188b
Accumative minor code updates
rudzen Apr 3, 2023
4c9af1a
Optimized Board.Squares() + minor styling
rudzen Apr 9, 2023
cb17655
Optimized start-up of KpkBitbase slightly
rudzen Apr 9, 2023
bea50c5
Reorder arguments for move generator internal methods
rudzen Apr 9, 2023
1155f9b
Cleanup + move gen types are now flags for simpler type detection
rudzen Apr 10, 2023
742f7b3
Enabled tiered pgo as default
rudzen Apr 10, 2023
7d01927
Updated various functionalities
rudzen Apr 12, 2023
4916c68
Better use of BitBoard.IsNotEmpty etc
rudzen Apr 12, 2023
542a90c
Minor updates
rudzen Apr 16, 2023
3a2e856
Minor improvements
rudzen Apr 24, 2023
c3d2c41
Updated RKiss method arguments
rudzen Apr 24, 2023
185465f
HashKeys now retrieved with ref from Zobrist (reminder: don't modify …
rudzen Apr 24, 2023
c05d910
Added Sign for Player (1 = White, -1 = Black)
rudzen Apr 26, 2023
ad6ee5b
Slightly improved startup-time + position init-time
rudzen Apr 27, 2023
063772c
Code update
rudzen May 3, 2023
b8d0b3d
Couple of updates
rudzen May 13, 2023
865774f
Update perft a bit
rudzen May 13, 2023
947e874
Updated code design
rudzen May 14, 2023
65ead6c
Update to progress towards stabilizing transposition table hashing
rudzen Aug 15, 2023
20ef9fa
Cleanup
rudzen Aug 15, 2023
7044184
Simplified
rudzen Aug 15, 2023
48d8670
Cleanup and fixed pgn tests
rudzen Aug 16, 2023
3f0fde1
Update dependencies + update perft applicaton to use actors (not comp…
rudzen Aug 29, 2023
67548b5
Microsoft.NET.Test.Sdk 17.7.1 -> 17.7.2
rudzen Aug 29, 2023
f25a25b
minor update to perft + uci now uses move list pool to convert move
rudzen Aug 30, 2023
e45ca03
minor code update + updated some dependencies
rudzen Oct 12, 2023
3430bfb
updated kpk bit base code to use refs
rudzen Nov 13, 2023
dfcc354
update zobrist with material key method
rudzen Nov 13, 2023
8a67e1c
update state stack to use regular string builder for now
rudzen Nov 13, 2023
4d7367a
simplify perft runner a bit
rudzen Nov 13, 2023
b8fe3bd
removed not needed dependency
rudzen Nov 13, 2023
ac6f462
update san to move tests
rudzen Nov 13, 2023
3c62e9b
update regex pgn parser
rudzen Nov 13, 2023
00ced65
update perft slightly
rudzen Nov 13, 2023
c3a834e
update position with an improved CanEnPassant() functionality
rudzen Nov 13, 2023
c516c02
update position key create
rudzen Nov 13, 2023
f18ce78
simplify perft tests
rudzen Nov 13, 2023
6d7a83b
update name of polyglot stream
rudzen Nov 13, 2023
d60dda3
update to .net 8
rudzen Nov 14, 2023
d2b28db
minor cleanup
rudzen Nov 14, 2023
dfbb979
minor simplifications
rudzen Nov 14, 2023
aee0b20
update todo file
rudzen Nov 14, 2023
2910a65
minor cleanups after .net 8 upgrade
rudzen Nov 14, 2023
2af2513
c# 12 update to collections + minor update to bitboard ToString
rudzen Jan 8, 2024
8512d69
simplify move list properties
rudzen Jan 11, 2024
71ccd00
update notation to be more compatible with DI
rudzen Jan 11, 2024
39b9f75
adopted new magic bb implementation (from portfish)
rudzen Feb 7, 2024
bc0c4da
updated fen generate function
rudzen Feb 7, 2024
b37d8c2
minor updates + chase for weird table hash bug
rudzen Feb 7, 2024
5305f58
update readme
rudzen Feb 7, 2024
aa41330
update magicbb
rudzen Feb 29, 2024
34946b7
various
rudzen Feb 29, 2024
0509f68
Added first draft for PGN generate
rudzen Feb 29, 2024
af47ed8
testing out ValMove no longer uses properties
rudzen Feb 29, 2024
61afc93
Added explicit Vector2 operator for Score
rudzen Feb 29, 2024
c9eec94
Added test version for new Perft Table
rudzen Feb 29, 2024
db7ae58
Updated MagicBB to use PEXT (from StockFish 16)
rudzen Feb 29, 2024
171acb2
cleaned up MagicBB class
rudzen Feb 29, 2024
6fb6fc8
Added implicit int operator for Piece + simplify usage of previous .A…
rudzen Feb 29, 2024
6023d3c
added int implicit operator to Square
rudzen Feb 29, 2024
7cbabb8
added implicit Player byte operator
rudzen Feb 29, 2024
dddc95e
added implicit Rank int operator
rudzen Feb 29, 2024
ea9e9b4
added more int implicit overloads + removed redundant perft stuff
rudzen Mar 1, 2024
e459479
minor updates
rudzen Mar 2, 2024
c653dc9
simplify move generator a bit
rudzen Mar 2, 2024
c58caab
simplify en-passant setup when parsing fen
rudzen Mar 2, 2024
7c97a7e
simplify board structure
rudzen Mar 3, 2024
1fe5571
updates
rudzen Mar 4, 2024
e4583c3
added Peter Jones' perft tests
rudzen Mar 4, 2024
abaea7d
Semi-major update:
rudzen Jun 26, 2024
5285b3a
simplify bitboard static ctor a bit
rudzen Jun 27, 2024
4c327fd
added methodimpl attributes to Board and updated File
rudzen Jun 27, 2024
9946645
remove redundant method call when updating board position
rudzen Jun 27, 2024
0a0010f
SetupPieces uses correct types for rank and file
rudzen Jun 27, 2024
86cc2f1
added more methodimpl to position
rudzen Jun 27, 2024
4fa0f20
update akka version
rudzen Jun 27, 2024
6737232
fix for updating File size
rudzen Jun 27, 2024
d7b7650
update location of perft + using akka host
rudzen Jun 27, 2024
790eee6
re-arrange src files structure in a more vertical friendly way
rudzen Jun 27, 2024
6174d6d
Update test.yml
rudzen Jun 27, 2024
4cf3bc6
Update publish.yml
rudzen Jun 27, 2024
28bdad4
link some files
rudzen Jun 28, 2024
298ae5c
various minor issues and warnings fixed
rudzen Jun 28, 2024
0ac016b
removed attribute from exceptions
rudzen Jun 28, 2024
7833774
fix a position assert
rudzen Jun 28, 2024
7f23f1d
fix several warnings and problems with projects + simplify configurat…
rudzen Jun 28, 2024
6171174
tests no longer configures options for configuration
rudzen Jun 28, 2024
0ecf070
remove duplicate package version declaration
rudzen Jun 29, 2024
96ba919
simplify some perft functionality a bit
rudzen Jun 29, 2024
98120fc
simplify move tests a bit
rudzen Jun 29, 2024
42d4f6f
simplify bitboard to string method a bit
rudzen Jun 29, 2024
f43af73
removed redundant project settings for perft project
rudzen Jun 29, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
226 changes: 226 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,226 @@
[*]
end_of_line = crlf
indent_size = 4
indent_style = space
insert_final_newline = false
max_line_length = 120
tab_width = 4
trim_trailing_whitespace = true
ij_continuation_indent_size = 8
ij_formatter_off_tag = @formatter:off
ij_formatter_on_tag = @formatter:on
ij_formatter_tags_enabled = true
ij_smart_tabs = false
ij_visual_guides =
ij_wrap_on_typing = false
charset = utf-8

# Microsoft .NET properties
csharp_new_line_before_members_in_object_initializers = false
csharp_preferred_modifier_order = public, private, protected, internal, file, new, static, abstract, virtual, sealed, readonly, override, extern, unsafe, volatile, async, required:suggestion
csharp_style_prefer_utf8_string_literals = true:suggestion
csharp_style_var_elsewhere = true:warning
csharp_style_var_for_built_in_types = true:warning
csharp_style_var_when_type_is_apparent = true:warning
dotnet_naming_rule.unity_serialized_field_rule.import_to_resharper = True
dotnet_naming_rule.unity_serialized_field_rule.resharper_description = Unity serialized field
dotnet_naming_rule.unity_serialized_field_rule.resharper_guid = 5f0fdb63-c892-4d2c-9324-15c80b22a7ef
dotnet_naming_rule.unity_serialized_field_rule.severity = warning
dotnet_naming_rule.unity_serialized_field_rule.style = lower_camel_case_style
dotnet_naming_rule.unity_serialized_field_rule.symbols = unity_serialized_field_symbols
dotnet_naming_style.lower_camel_case_style.capitalization = camel_case
dotnet_naming_symbols.unity_serialized_field_symbols.applicable_accessibilities = *
dotnet_naming_symbols.unity_serialized_field_symbols.applicable_kinds =
dotnet_naming_symbols.unity_serialized_field_symbols.resharper_applicable_kinds = unity_serialised_field
dotnet_naming_symbols.unity_serialized_field_symbols.resharper_required_modifiers = instance
dotnet_style_parentheses_in_arithmetic_binary_operators = never_if_unnecessary:none
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:none
dotnet_style_parentheses_in_relational_binary_operators = never_if_unnecessary:none
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
dotnet_style_predefined_type_for_member_access = true:suggestion
dotnet_style_qualification_for_event = false:suggestion
dotnet_style_qualification_for_field = false:suggestion
dotnet_style_qualification_for_method = false:suggestion
dotnet_style_qualification_for_property = false:suggestion
dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion

# ReSharper properties
resharper_accessor_owner_body = expression_body
resharper_autodetect_indent_settings = true
resharper_braces_for_dowhile = required_for_multiline
resharper_braces_for_fixed = required_for_multiline
resharper_braces_for_for = required_for_multiline
resharper_braces_for_foreach = required_for_multiline
resharper_braces_for_ifelse = required_for_multiline
resharper_braces_for_lock = required_for_multiline
resharper_braces_for_using = required_for_multiline
resharper_braces_for_while = required_for_multiline
resharper_csharp_empty_block_style = together_same_line
resharper_csharp_wrap_after_declaration_lpar = true
resharper_csharp_wrap_multiple_declaration_style = chop_always
resharper_enforce_line_ending_style = true
resharper_force_attribute_style = join
resharper_formatter_off_tag = @formatter:off
resharper_formatter_on_tag = @formatter:on
resharper_formatter_tags_enabled = true
resharper_keep_existing_attribute_arrangement = true
resharper_keep_existing_enum_arrangement = true
resharper_local_function_body = expression_body
resharper_max_enum_members_on_line = 8
resharper_method_or_operator_body = expression_body
resharper_object_creation_when_type_not_evident = target_typed
resharper_place_accessorholder_attribute_on_same_line = false
resharper_place_accessor_attribute_on_same_line = false
resharper_place_field_attribute_on_same_line = false
resharper_place_record_field_attribute_on_same_line = true
resharper_prefer_explicit_discard_declaration = true
resharper_show_autodetect_configure_formatting_tip = false
resharper_use_indent_from_vs = false
resharper_wrap_before_eq = true
resharper_wrap_before_extends_colon = true
resharper_wrap_enum_declaration = wrap_if_long
resharper_wrap_lines = true
resharper_xmldoc_space_after_last_attribute = true

# ReSharper inspection severities
resharper_arrange_redundant_parentheses_highlighting = hint
resharper_arrange_this_qualifier_highlighting = hint
resharper_arrange_type_member_modifiers_highlighting = hint
resharper_arrange_type_modifiers_highlighting = hint
resharper_built_in_type_reference_style_for_member_access_highlighting = hint
resharper_built_in_type_reference_style_highlighting = hint
resharper_redundant_base_qualifier_highlighting = warning
resharper_remove_redundant_braces_highlighting = hint
resharper_web_config_module_not_resolved_highlighting = warning
resharper_web_config_type_not_resolved_highlighting = warning
resharper_web_config_wrong_module_highlighting = warning

[*.properties]
ij_properties_align_group_field_declarations = false
ij_properties_keep_blank_lines = false
ij_properties_key_value_delimiter = equals
ij_properties_spaces_around_key_value_delimiter = false

[.editorconfig]
ij_editorconfig_align_group_field_declarations = false
ij_editorconfig_space_after_colon = false
ij_editorconfig_space_after_comma = true
ij_editorconfig_space_before_colon = false
ij_editorconfig_space_before_comma = false
ij_editorconfig_spaces_around_assignment_operators = true

[{*.ant,*.appxmanifest,*.axml,*.cscfg,*.csdef,*.disco,*.dotsettings,*.filelayout,*.fxml,*.jhm,*.jnlp,*.jrxml,*.manifest,*.myapp,*.nuspec,*.rng,*.stylecop,*.svcmap,*.tld,*.wadcfgx,*.webref,*.wsdl,*.xml,*.xsd,*.xsl,*.xslt,*.xul,StyleCop.Cache}]
ij_xml_align_attributes = true
ij_xml_align_text = false
ij_xml_attribute_wrap = normal
ij_xml_block_comment_add_space = false
ij_xml_block_comment_at_first_column = true
ij_xml_keep_blank_lines = 2
ij_xml_keep_indents_on_empty_lines = false
ij_xml_keep_line_breaks = true
ij_xml_keep_line_breaks_in_text = true
ij_xml_keep_whitespaces = false
ij_xml_keep_whitespaces_around_cdata = preserve
ij_xml_keep_whitespaces_inside_cdata = false
ij_xml_line_comment_at_first_column = true
ij_xml_space_after_tag_name = false
ij_xml_space_around_equals_in_attribute = false
ij_xml_space_inside_empty_tag = false
ij_xml_text_wrap = normal
ij_xml_use_custom_settings = false

[*.json]
indent_size = 2
ij_json_array_wrapping = split_into_lines
ij_json_keep_blank_lines_in_code = 0
ij_json_keep_indents_on_empty_lines = false
ij_json_keep_line_breaks = true
ij_json_keep_trailing_comma = false
ij_json_object_wrapping = split_into_lines
ij_json_property_alignment = do_not_align
ij_json_space_after_colon = true
ij_json_space_after_comma = true
ij_json_space_before_colon = false
ij_json_space_before_comma = false
ij_json_spaces_within_braces = false
ij_json_spaces_within_brackets = false
ij_json_wrap_long_lines = false
indent_style = space

[{*.htm,*.html,*.ng,*.sht,*.shtm,*.shtml}]
ij_html_add_new_line_before_tags = body,div,p,form,h1,h2,h3
ij_html_align_attributes = true
ij_html_align_text = false
ij_html_attribute_wrap = normal
ij_html_block_comment_add_space = false
ij_html_block_comment_at_first_column = true
ij_html_do_not_align_children_of_min_lines = 0
ij_html_do_not_break_if_inline_tags = title,h1,h2,h3,h4,h5,h6,p
ij_html_do_not_indent_children_of_tags = html,body,thead,tbody,tfoot
ij_html_enforce_quotes = false
ij_html_inline_tags = a,abbr,acronym,b,basefont,bdo,big,br,cite,cite,code,dfn,em,font,i,img,input,kbd,label,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var
ij_html_keep_blank_lines = 2
ij_html_keep_indents_on_empty_lines = false
ij_html_keep_line_breaks = true
ij_html_keep_line_breaks_in_text = true
ij_html_keep_whitespaces = false
ij_html_keep_whitespaces_inside = span,pre,textarea
ij_html_line_comment_at_first_column = true
ij_html_new_line_after_last_attribute = never
ij_html_new_line_before_first_attribute = never
ij_html_quote_style = double
ij_html_remove_new_line_before_tags = br
ij_html_space_after_tag_name = false
ij_html_space_around_equality_in_attribute = false
ij_html_space_inside_empty_tag = false
ij_html_text_wrap = normal

[{*.markdown,*.md}]
ij_markdown_force_one_space_after_blockquote_symbol = true
ij_markdown_force_one_space_after_header_symbol = true
ij_markdown_force_one_space_after_list_bullet = true
ij_markdown_force_one_space_between_words = true
ij_markdown_format_tables = true
ij_markdown_insert_quote_arrows_on_wrap = true
ij_markdown_keep_indents_on_empty_lines = false
ij_markdown_keep_line_breaks_inside_text_blocks = true
ij_markdown_max_lines_around_block_elements = 1
ij_markdown_max_lines_around_header = 1
ij_markdown_max_lines_between_paragraphs = 1
ij_markdown_min_lines_around_block_elements = 1
ij_markdown_min_lines_around_header = 1
ij_markdown_min_lines_between_paragraphs = 1
ij_markdown_wrap_text_if_long = true
ij_markdown_wrap_text_inside_blockquotes = true

[{*.pb,*.textproto}]
indent_size = 2
tab_width = 2
ij_continuation_indent_size = 4
ij_prototext_keep_blank_lines_in_code = 2
ij_prototext_keep_indents_on_empty_lines = false
ij_prototext_keep_line_breaks = true
ij_prototext_space_after_colon = true
ij_prototext_space_after_comma = true
ij_prototext_space_before_colon = false
ij_prototext_space_before_comma = false
ij_prototext_spaces_within_braces = true
ij_prototext_spaces_within_brackets = false

[{*.yaml,*.yml}]
indent_size = 2
ij_yaml_align_values_properties = do_not_align
ij_yaml_autoinsert_sequence_marker = true
ij_yaml_block_mapping_on_new_line = false
ij_yaml_indent_sequence_value = true
ij_yaml_keep_indents_on_empty_lines = false
ij_yaml_keep_line_breaks = true
ij_yaml_sequence_on_new_line = false
ij_yaml_space_before_colon = false
ij_yaml_spaces_within_braces = true
ij_yaml_spaces_within_brackets = true

[*.{appxmanifest,asax,ascx,aspx,axaml,build,c,c++,cc,cginc,compute,cp,cpp,cppm,cs,cshtml,cu,cuh,cxx,dtd,fs,fsi,fsscript,fsx,fx,fxh,h,hh,hlsl,hlsli,hlslinc,hpp,hxx,inc,inl,ino,ipp,ixx,master,ml,mli,mpp,mq4,mq5,mqh,nuspec,paml,razor,resw,resx,shader,skin,tpp,usf,ush,vb,xaml,xamlx,xoml,xsd}]
indent_style = space
indent_size = 4
tab_width = 4
2 changes: 1 addition & 1 deletion .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v2
with:
dotnet-version: 6.0.x
dotnet-version: 8.0.x
- name: Restore dependencies
run: dotnet restore
- name: Build
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v2
with:
dotnet-version: 6.0.x
dotnet-version: 8.0.x
- name: Restore dependencies
run: dotnet restore
- name: Build
Expand Down
10 changes: 10 additions & 0 deletions Directory.Build.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<Project>
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<LangVersion>12</LangVersion>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>warnings</Nullable>
<IsPackable>false</IsPackable>
<TieredPGO>true</TieredPGO>
</PropertyGroup>
</Project>
57 changes: 57 additions & 0 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.1" />
<PackageVersion Include="Microsoft.Extensions.ObjectPool" Version="8.0.6" />
<PackageVersion Include="Microsoft.Extensions.Options" Version="8.0.2" />
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="8.0.0" />
</ItemGroup>
<ItemGroup Label="Benchmark">
<PackageVersion Include="BenchmarkDotNet" Version="0.13.12" />
</ItemGroup>
<ItemGroup Label="Test">
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
<PackageVersion Include="SimdLinq" Version="1.3.2" />
<PackageVersion Include="coverlet.collector" Version="6.0.2" />
<PackageVersion Include="xunit" Version="2.8.1" />
<PackageVersion Include="xunit.analyzers" Version="1.14.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageVersion>
<PackageVersion Include="xunit.runner.visualstudio" Version="2.8.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageVersion>
</ItemGroup>
<ItemGroup Label="Perft">
<PackageVersion Include="Akka" Version="1.5.26" />
<PackageVersion Include="Akka.DependencyInjection" Version="1.5.26" />
<PackageVersion Include="Akka.Hosting" Version="1.5.25" />
<PackageVersion Include="CommandLineParser" Version="2.9.1" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
<PackageVersion Include="Serilog" Version="4.0.0" />
<PackageVersion Include="Serilog.Enrichers.Thread" Version="4.0.0" />
<PackageVersion Include="Serilog.Settings.Configuration" Version="8.0.1" />
<PackageVersion Include="Serilog.Sinks.Console" Version="6.0.0" />
<PackageVersion Include="Serilog.Sinks.File" Version="6.0.0" />
</ItemGroup>
<ItemGroup Label="WebApi Example">
<PackageVersion Include="Microsoft.Extensions.ApiDescription.Server" Version="8.0.6">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageVersion>
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="8.0.6" />
<PackageVersion Include="Microsoft.OpenApi" Version="1.6.15" />
<PackageVersion Include="Swashbuckle.AspNetCore" Version="6.6.2" />
<PackageVersion Include="Swashbuckle.AspNetCore.Swagger" Version="6.6.2" />
<PackageVersion Include="Swashbuckle.AspNetCore.SwaggerGen" Version="6.6.2" />
<PackageVersion Include="Swashbuckle.AspNetCore.SwaggerUI" Version="6.6.2" />
</ItemGroup>
</Project>
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2017-2022 Rudy Alex Kohn
Copyright (c) 2017-2023 Rudy Alex Kohn

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
25 changes: 22 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ A C# chess data library with complete move generation and all needed custom type

## Requirements

* .NET 6.0+
* .NET 8.0+

## What is this for?

Expand Down Expand Up @@ -73,22 +73,23 @@ Yes you can, it is designed with that in mind.
* Pawn blockage algorithm
* Cuckoo repetition algorithm
* Polyglot book support
* Basic PGN file import support
* Plenty of unit tests to see how it works

### Perft

Perft console test program approximate timings to depth 6 for normal start position

* AMD-FX 8350 = ~12.5 seconds. (without TT) (earlier version)
* Intel i7-8086k = ~3.3 seconds
* Intel i7-8086k = ~1.7 seconds

### Transposition Table

ph

### Move Generator

Example
#### Example

```c#
// generate all legal moves for current position
Expand All @@ -99,6 +100,24 @@ var moveList = game.Pos.GenerateMoves();
// ..
```

#### MoveList example

By using the MoveListPool you can avoid allocations and reuse the same MoveList instance.

```c#
var moveList = _moveListPool.Get();
moveList.Generate(position, MoveType.Legal);
var moves = moveList.Get();

foreach (var move in moves)
{
// do something
}

_moveListPool.Return(moveList);
```


## What is not included?

* Evaluation (except KPK)
Expand Down
Loading
Loading