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

[WIP] iseq. A fast seq implementation. #2587

Closed
wants to merge 83 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
8aff77e
Added ISeq module
manofstick Mar 13, 2017
f22c20c
Updated remaining SurfaceArea files
manofstick Mar 14, 2017
594a3fa
Copied Seq tests and converted to ISeq
manofstick Mar 15, 2017
96847b2
Fix ordering in append
manofstick Mar 17, 2017
0429f21
mod test until cache is implemented
manofstick Mar 17, 2017
b897888
Fix indexing for iteri2
manofstick Mar 17, 2017
eb9b0c5
fix scan to include initialState
manofstick Mar 17, 2017
0bb5ab6
fixed tryItem when index > size of input seq
manofstick Mar 17, 2017
00679b5
Stubbed in remaining functions
manofstick Mar 18, 2017
39ffb7b
Expanded tests to cover previous missing ISeq functions
manofstick Mar 18, 2017
f1dd39b
Derived AppendEnumerable from ConcatEnumerable
manofstick Mar 20, 2017
ee148bc
Made CachedSeq an ISeq
manofstick Mar 20, 2017
2d3de54
Fix error message
manofstick Mar 21, 2017
7b2a50a
implemented chunkBySize
manofstick Mar 21, 2017
2109088
Removed checkNonNull as ISeq can't be null
manofstick Mar 21, 2017
de6184d
type checks for cast
manofstick Mar 21, 2017
d30c447
Removed type comparisons due to Choice<>
manofstick Mar 22, 2017
d3714f3
Restore somewhat dubious, I think, singleton
manofstick Mar 23, 2017
a61366f
Removed <summary> tag
manofstick Mar 26, 2017
ce235fb
Provided some comments around public interface
manofstick Mar 26, 2017
0089b05
Capitalized type names (of IIterate implementations)
manofstick Mar 26, 2017
d7b533a
Removed wrapping on Append to Empty
manofstick Mar 26, 2017
94c4438
Collapsed all the wrap specific modules into one
manofstick Mar 26, 2017
38f81b9
Add special handling for length
manofstick Mar 27, 2017
8bbc3d1
use UnfoldEnumerable directly in cache
manofstick Mar 27, 2017
180cbb4
Added IReadOnlyCollection to length handling
manofstick Mar 27, 2017
ad5c0f0
On 'take 0' set halted; check HaltedIdx up front
manofstick Mar 28, 2017
d971d6c
Conditional around IReadOnlyCollection
manofstick Mar 28, 2017
1ea9e6d
Use InitEnumerable for replicate
manofstick Mar 29, 2017
d97303a
singleton
manofstick Mar 29, 2017
c402022
Add ArgumentOutOfRangeException for replicate
manofstick Mar 29, 2017
2e4c42a
Added thin wrappers for array, list, ResizeArray
manofstick Mar 31, 2017
26e663c
call correct GetEnumerator on array
manofstick Mar 31, 2017
2e17813
scan use singleton
manofstick Apr 1, 2017
ae10fd3
Created Fold for Concat
manofstick Apr 1, 2017
760e126
Removed debugging WriteLines
manofstick Apr 1, 2017
cb20203
Added executeConcatThin
manofstick Apr 1, 2017
ca93369
Cleaning API surface; removed stopTailCall
manofstick Apr 5, 2017
8c4fb65
Cleaning API surface; remove 'State from Fold
manofstick Apr 5, 2017
4b2f36b
Moved minimal ISeq into seqcore.fsi
manofstick Apr 5, 2017
77b3249
Moved internal parts of ISeq into seqcore
manofstick Apr 6, 2017
138f235
GeneratedSequenceBase inherit EnumerableBase
manofstick Apr 6, 2017
ca5a95f
Promoted ISeq to prim_types
manofstick Apr 7, 2017
0f27eb3
Spread ISeq into simpleIntegralRange
manofstick Apr 7, 2017
8663c25
Composed/Identity in prim_types didn't work (??)
manofstick Apr 8, 2017
4c84d54
internal List.ofISeq
manofstick Apr 8, 2017
a770055
Removed Fold.(execute|executeThin)
manofstick Apr 8, 2017
7826ab1
Optimize nested concat
manofstick Apr 8, 2017
b8d6d33
Fix nested concat
manofstick Apr 12, 2017
acb2a4f
Updated SurfaceArea files
manofstick Apr 12, 2017
f4f0b28
Save tmp copy of Result
manofstick Apr 17, 2017
e5ced28
Removed Folder.StopFurtherProcessing
manofstick Apr 18, 2017
c3b50a4
Changed Folder style; HaltedIdx read only
manofstick Apr 18, 2017
5f0acf9
Add listening for StopFurtherProcessing
manofstick Apr 18, 2017
10c9179
Fixed concat (for good! ... hopefully)
manofstick Apr 19, 2017
6ddfc09
Used LanguagePrimitives.IntrinsicOperators.(&&)
manofstick Apr 20, 2017
2a617a9
Remove temp copies of Folder.Result
manofstick Apr 20, 2017
b0dfd6a
Minimize stack usage for List Folds
manofstick Apr 20, 2017
d899408
Updated surface area files
manofstick Apr 20, 2017
ede593c
Force capture of common folding closure
manofstick Apr 20, 2017
53ae164
throw away input on take 0
manofstick Apr 21, 2017
7be6430
Added null check for except's itemsToExclude
manofstick Apr 21, 2017
9941af4
Added check on negative input for take
manofstick Apr 21, 2017
aeeb049
Natively support ISeq on list
manofstick Apr 24, 2017
ba95b23
Added list specific overloads
manofstick Apr 26, 2017
8c16ea8
Optimization for 0/1 element arrays
manofstick Apr 29, 2017
bc92c68
Map/Set use Seq.fold to utilize ISeq implementation
manofstick Apr 29, 2017
919a2a1
ISeq.length optimized for list.length
manofstick May 1, 2017
b8335bc
Removed Upcast hack due to #2972
manofstick May 3, 2017
04f5eff
Consolidated common factory code
manofstick May 5, 2017
5b8aa9b
Converted TransformFactory into interface
manofstick May 5, 2017
1179590
Moved list/array before seq in compilation order
manofstick May 6, 2017
278742c
Removed duplicate code in Thin implementations
manofstick May 6, 2017
a38fb22
Added EnumerableBase.GetRaw
manofstick May 7, 2017
3331b82
made EnumerableBase internal
manofstick May 7, 2017
e51ce8b
Fix surface area
manofstick May 7, 2017
ffadb9f
Moved ISeq.length into Basics
manofstick May 8, 2017
c4f8b43
Added ISeq support in Array.ofSeq
manofstick May 8, 2017
eb5299f
Added IReadOnlyCollection to Array.ofSeq
manofstick May 8, 2017
3fd1243
Merged EnumeratorBase and Result
manofstick May 13, 2017
09e3c98
Use list for small ISeqs
manofstick May 13, 2017
f010085
Thin direct calls to IEnumerable.GetEnumerator
manofstick May 15, 2017
ded9bb7
Provided an optimized GetEnumerator for scan
manofstick May 18, 2017
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/fsharp/FSharp.Core.Unittests/FSharp.Core.Unittests.fsproj
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,11 @@
<Compile Include="FSharp.Core\Microsoft.FSharp.Collections\ObsoleteSeqFunctions.fs" />
<Compile Include="FSharp.Core\Microsoft.FSharp.Collections\SeqProperties.fs" />
<Compile Include="FSharp.Core\Microsoft.FSharp.Collections\CollectionModulesConsistency.fs" />
<Compile Include="FSharp.Core\Microsoft.FSharp.Collections\SeqProperties.fs" Condition=" '$(TargetFramework)' != 'portable47' " />
<Compile Include="FSharp.Core\Microsoft.FSharp.Collections\ISeqModule.fs" />
<Compile Include="FSharp.Core\Microsoft.FSharp.Collections\ISeqModule2.fs" />
<Compile Include="FSharp.Core\Microsoft.FSharp.Collections\ISeqProperties.fs" Condition=" '$(TargetFramework)' != 'portable47' " />
<Compile Include="FSharp.Core\Microsoft.FSharp.Collections\CollectionModulesConsistency.fs" Condition=" '$(TargetFramework)' != 'portable47' " />
<Compile Include="FSharp.Core\Microsoft.FSharp.Collections\StringModule.fs" />
<Compile Include="FSharp.Core\PrimTypes.fs" />
<Compile Include="FSharp.Core\ComparersRegression.fs" />
Expand Down
Loading