-
Notifications
You must be signed in to change notification settings - Fork 3.7k
[pigeon] Adds FFI and JNI support to swift and kotlin generators #11337
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
Open
tarrinneal
wants to merge
86
commits into
flutter:main
Choose a base branch
from
tarrinneal:Kamyshin
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+143,462
−2,673
Open
Changes from all commits
Commits
Show all changes
86 commits
Select commit
Hold shift + click to select a range
b9b0b5e
kotlin jni impementation
tarrinneal e599d1e
analyzer
tarrinneal 726975d
test fixes w jetski
tarrinneal f636cdb
Merge branch 'main' of https://github.com/flutter/packages into Kamyshin
tarrinneal 72a305e
remove future code
tarrinneal 4e59659
Merge branch 'main' of https://github.com/flutter/packages into Kamyshin
tarrinneal e22c55a
Merge branch 'main' of https://github.com/flutter/packages into Kamyshin
tarrinneal 3f0be1d
Merge remote-tracking branch 'origin/Frillback' into Kamyshin
tarrinneal 0d09615
minor cleanup
tarrinneal e0f23a9
Merge branch 'main' of https://github.com/flutter/packages into Kamyshin
tarrinneal 025376c
omit types
tarrinneal aa01700
Merge branch 'main' of https://github.com/flutter/packages into Kamyshin
tarrinneal 6a0df05
format
tarrinneal 022ed51
flutter api
tarrinneal 43f2e5a
fix swift optional bug
tarrinneal 5fd46e8
add nullable tests and more sync tests
tarrinneal a0c56ab
flutter api async methods
tarrinneal 2c252ae
error handling and tests
tarrinneal 5072a47
basic thread tests
tarrinneal b0cd2ec
fix swftFunction
tarrinneal 38bd37e
add back tests for named/optional params
tarrinneal 850cb2e
Merge branch 'main' of https://github.com/flutter/packages into Kamyshin
tarrinneal 9bb4bc5
fix const gen adapter classes
tarrinneal 0c7ef63
performance improvements to typedData and isEquals
tarrinneal 110ab70
stuff that I'm going to move to a different branch
tarrinneal 82065a8
Improve efficiency in some methods
tarrinneal 9861c00
analyze this
tarrinneal 11daedd
format
tarrinneal e197fc0
less repeating, and less listing
tarrinneal cbf4096
allow individual class types to not have colliding hashes
tarrinneal 935aa47
improve deep equals for non-collections
tarrinneal 4e9541f
allowing for NaN or other cases where identical is better
tarrinneal f30b44c
more tests, add other languages, unify behavior across platforms
tarrinneal 08a79f3
first pass at gobject
tarrinneal 8cb51ac
Merge branch 'main' of https://github.com/flutter/packages into effic
tarrinneal ddc41c2
analyze
tarrinneal 4ad3636
delete random extra files
tarrinneal 0a08ef5
fix kotlin generator change that broke unit test
tarrinneal 5855b23
fix broken gobject and cpp code
tarrinneal f99e64a
more bugs on languages I can't compile locally
tarrinneal 101fb0f
last few issues I hope
tarrinneal 7309d17
not being able to run things locally sucks
tarrinneal 24d0f23
bigobj
tarrinneal 21ad393
consolidate tests
tarrinneal 94a58c8
revert project files
tarrinneal 3fdd987
More consistency across languages
tarrinneal b920f50
revert -0.0 changes
tarrinneal 7df481e
gen example
tarrinneal 25021e7
Merge branch 'main' of https://github.com/flutter/packages into effic
tarrinneal 4cbfdcd
memecmp
tarrinneal 8c75a36
re-normalize -0.0 in hash methods to create consistent behavior acros…
tarrinneal 655229c
finish tests
tarrinneal 80d8bbc
lints and reverting of accidentally pushed files
tarrinneal a57dd6f
hopeful test fix
tarrinneal 4ded545
delete file that shouldn't ever have existed
tarrinneal 8698cb5
more tests and windows method rework
tarrinneal 7355a96
bug fixes and more robust map==
tarrinneal 45d8207
fix linix
tarrinneal ad236e7
Merge branch 'main' of https://github.com/flutter/packages into Kamyshin
tarrinneal 97b8e8c
one last linux fix
tarrinneal 38cffb2
nits and nats
tarrinneal ff33669
jnigen config yaml -> dart
tarrinneal a2a80b5
dentist has been busy today
tarrinneal b5b4506
Merge branch 'main' of https://github.com/flutter/packages into effic
tarrinneal 1305a1d
fix std::map hash
tarrinneal a5ce9cc
even more better
tarrinneal 6d92541
Merge branch 'main' of https://github.com/flutter/packages into effic
tarrinneal eba918b
revert dumb change
tarrinneal 8d55afd
Merge branch 'main' of https://github.com/flutter/packages into Kamyshin
tarrinneal 5097bdc
namespace
tarrinneal 0a5adee
Triple checked methods
tarrinneal a3e5531
update to jnigen 16, with some manual changes
tarrinneal 51d7b7c
jni error handling
tarrinneal 9ca1762
remove dead code
tarrinneal 69c20d2
Adds prefixing for classes that will have collisions within the same …
tarrinneal 214299f
remove similar methods and fix datatype methods to avoid poorly shape…
tarrinneal 393c5c8
lock ffi hash
tarrinneal 18f5c23
Merge branch 'main' of https://github.com/flutter/packages into Kamyshin
tarrinneal 7b8e9ec
reorg ni classes, remove duplicated error handling code
tarrinneal 944a09a
Merge branch 'main' of https://github.com/flutter/packages into Kamyshin
tarrinneal d4d8f92
fix spm build issues
tarrinneal 88bade6
revert swift messenger changes
tarrinneal 4c90953
revert unintentional proxy api changes
tarrinneal a5a1593
remove incidental changes and crusty stuff
tarrinneal 09d3960
Merge branch 'effic' into Kamyshin and move some files around
tarrinneal b9f0e4d
revert command changes and format, add license, update allowed deps
tarrinneal File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The deep equality check for
Mapinstances has a time complexity of O(n^2) due to the nested loops used for comparison. This could lead to significant performance degradation for large maps.A more performant approach should be considered. For example, if the keys'
hashCodeandequalsmethods are consistent withpigeonDeepEquals, you could iterate through one map's entries and perform lookups on the second map, which would be much faster. If that's not a safe assumption, an alternative to the nested loop would be to build a mutable copy of one map's entries and remove them as they are matched. This would reduce the complexity from O(n^2) to O(n) on average, at the cost of higher memory usage.