Releases: arrow-kt/arrow
Releases · arrow-kt/arrow
2.0.0-rc.1
Release candidate for the new major version
2.0.0-beta.3
Prepare for 2.0 publication Co-authored-by: Alejandro Serrano <[email protected]> Co-authored-by: franciscodr <[email protected]>
1.2.4
1 Bug fixes:
- New
AutoCloseScope
DSL, make sure closing in reversed order
1 Rollback:
- Don't be too strict on return type of
Raise
DSL.
What's Changed
- chore(deps): update all dependencies by @renovate in #3383
- fix(autoclose): close
Closeable
s in reversed order by @hoc081098 in #3387 - chore(deps): update all dependencies by @renovate in #3392
- fix: Fold restriction not allowing any Function<*> to be returned is too strict in 4bd8694
Full Changelog: 1.2.3...1.2.4
1.2.3
We went from 1.2.1 directly to 1.2.3, since in 1.2.2 there is a crucial bug concerning KSP. This release features multiple new modules such as:
- arrow-autoclose: for enabling a typed DSL for working with
AutoCloseable
. - arrow-optics-compose: Specialised integration between Arrow Optics and Compose
- arrow-collectors: Allows composing operations over sequences of values
(lists, flows, sequences) while ensuring that the sequence is traversed only once. - arrow-eval: To provide forward compatibility for the deprecated
Eval
type
Many modules, and features were enhanced, and improved based on user feedback. You can read the full release post on the Arrow website.
Thanks to everyone involved, all new contributors, and all members of the Arrow community for supporting, and helping each other and providing feedback to make Arrow better together.
What's Changed
- Update plugin com.gradle.enterprise to v3.15 by @renovate in #3129
- Update all dependencies to v0.12.0-rc.6 by @renovate in #3131
- Update stefanzweifel/git-auto-commit-action action to v5 by @renovate in #3136
- Prepare for Kotlin community build by @serras in #3140
- Add Tuples test coverage by @vngrp in #3143
- Mention ignoreErrors in nullable's documentation by @CLOVIS-AI in #3139
- Update all dependencies by @renovate in #3132
- Use new Atomic types from Kotlin 1.9 by @serras in #3220
- Provide test coverage for NonEmptyList by @l2hyunwoo in #3135
- Update Arrow-Atomic by @nomisRev in #3225
- Bump Kotlin dev version by @serras in #3239
- Replace uses of deprecated
kotlin.native.concurrent.AtomicReference
by @serras in #3241 - Fix .toNonEmptyXxxOrNull for nullable types by @mjadczak in #3127
- Update all dependencies by @renovate in #3275
- Update dependency io.github.classgraph:classgraph to v4.8.164 by @renovate in #3281
- Enable Kover for serialization, disable for Optics KSP by @serras in #3284
- Update all dependencies to v5.10.1 by @renovate in #3285
- Roll back to Kover 0.7.3 by @serras in #3286
- chore(Raise.fold): remove duplicated
this is DefaultRaise && isTraced
by @hoc081098 in #3283 - Add iorNel builder and Ior.toIorNel function by @sampengilly in #3114
- chore(deps): update actions/setup-java action to v4 by @renovate in #3304
- chore(deps): update all dependencies by @renovate in #3300
- chore(deps): update all dependencies by @renovate in #3306
- Update to Java 17 by @serras in #3307
- fix(deps): update all dependencies to v1.6.2 by @renovate in #3308
- chore(deps): update dependency com.diffplug.spotless to v6.23.3 by @renovate in #3312
- chore(deps): update all dependencies by @renovate in #3313
- chore(deps): update all dependencies by @renovate in #3321
- chore(deps): update actions/upload-artifact action to v4 by @renovate in #3322
- Fix 3235 by @kyay10 in #3316
- chore(KProperty1.lens): Perform check for data class only once. by @kyay10 in #3315
- Add more options to memoization cache by @serras in #3296
- Correctly escape class names in Optics KSP when a property clashes with a package name by @serras in #3326
- chore(arrow-atomic): Cleanup atomic code by @kyay10 in #3318
- Run K2 using 2.0.0-Beta2 by @serras in #3327
- Safeguard for leaked 'raise' or 'bind' by @serras in #3329
- chore(deps): update all dependencies to v1.9.22 by @renovate in #3335
- chore(deps): update all dependencies by @renovate in #3339
- chore(deps): update plugin org.gradle.toolchains.foojay-resolver-convention to v0.8.0 by @renovate in #3345
- Update kotlin-compile-testing by @serras in #3330
- Arrow Collectors by @serras in #3280
- chore(deps): update dependency com.diffplug.spotless to v6.24.0 by @renovate in #3347
- Separate 'arrow-eval' module by @serras in #3332
- Rework IorRaise impl to use EmptyValue, and add tests by @kyay10 in #3338
- Deprecate Iterable#unzip in favor of stdlib method by @terminalnode in #3352
- Make a common public parent for raise exception by @nomisRev in #3349
- chore(deps): update all dependencies to v1.9.22-1.0.17 by @renovate in #3348
- Fix traced CCE when nested different types. by @kyay10 in #3337
- chore(deps): update dependency com.diffplug.spotless to v6.25.0 by @renovate in #3355
- Arrow Optics ❤️ Compose by @serras in #3299
- chore(deps): update all dependencies by @renovate in #3357
- chore(deps): update plugin com.gradle.enterprise to v3.16.2 by @renovate in #3361
- chore(deps): update gradle/gradle-build-action action to v3 by @renovate in #3362
- chore(deps): update dependency org.jetbrains.kotlinx.binary-compatibility-validator to v0.14.0 by @renovate in #3363
- Add AutoClose module by @nomisRev in #3356
- Update to gradle/actions/setup-gradle@v3 by @serras in #3364
- Added high arity for arrow-core.api functions by @yesitskev in #3360
- Deprecate widen by @kyay10 in #3369
- Add forEachAccumulating and refactor mapOrAccumulate by @kyay10 in #3367
- chore(deps): update all dependencies by @renovate in #3368
- Implement sealed class Lenses by @maksym-moroz in #3359
- fix(deps): update dependency androidx.compose.runtime:runtime to v1.6.1 by @renovate in #3371
- Update arrow-stack to mention all the projects by @serras in #3372
- added retryRaise and retryEither functions by @akotynski in #3373
- chore(deps): update all dependencies by @renovate in #3375
- Avoid storing more transformed elements than necessary by @serras in #3376
- Use macOS 14 runner by @serras in #3377
- fix(deps): update all dependencies by @renovate in #3378
- chore(deps): update dependency org.jetbrains.compose to v1.6.0 by @renovate in #3379
- Ignore properties in sealed hierarchies where the type changes across children by @serras in #3382
New Contributors
- @vngrp made their first contribution in #3143
- @CLOVIS-AI made their first contribution in #3139
- @mjadczak made their first contribution in #3127
- @sampengilly made their first contribution in #3114
- @terminalnode made their first contribution in #3352
- @yesitskev made their first contribution in #3360
- @maksym-moroz made their first contribution in #3359
- @akotynski made their first contribution in #3373
Full Changelog: 1.2.1...1.2.3
1.2.1
What's Changed
- Fix Option.tap deprecation message. by @wolpl in #3096
- Fix problem with optics and <*> generics by @serras in #3097
- Backport fix for K2 by @serras in #3098
- ignoreErrors for Raise by @serras in #3100
- Update all dependencies by @renovate in #3085
- Update all dependencies by @renovate in #3101
- Update all dependencies to v0.12.0-rc.5 by @renovate in #3102
- Update all dependencies to v1.9.0-1.0.12 by @renovate in #3103
- Update all dependencies to v5.10.0 by @renovate in #3104
- Remove references to shift in Either.kt by @nomisRev in #3105
- Update all dependencies by @renovate in #3106
- Update dependency org.jetbrains.kotlinx.kover to v0.7.3 by @renovate in #3107
- Update all dependencies by @renovate in #3112
parMapNotNull
by @raulraja in #3110parMapNotNullUnordered
forFlow
by @serras in #3111- Enable experimental K2 by @serras in #3087
- Update all dependencies by @renovate in #3118
- Update dependency com.diffplug.spotless to v6.21.0 by @renovate in #3119
- Inline
NonEmpty
maps by @serras in #3120 - Remove enableCompatibilityMetadataVariant by @nomisRev in #3124
- Update actions/checkout action to v4 by @renovate in #3125
- Update all dependencies by @renovate in #3121
New Contributors
Full Changelog: 1.2.0...1.2.1
1.2.0
What's Changed
- Add CNAME file to Dokka output by @franciscodr in #3029
- Remove legacy site code by @nomisRev in #3030
- Update README by @serras in #3033
- Cancel previous PR action on new commit by @nomisRev in #3032
- Remove legacy script files by @franciscodr in #3034
- Ensure optics type with "data" modifier is a class by @DeoTimeTheGithubUser in #3036
- Update all dependencies (major) by @renovate in #3042
- Remove test dependency from Arrow Fx by @nomisRev in #3046
- Bump Kotlin, KSP and coroutines version by @nomisRev in #3047
- fix mapIndexed when collecting multiple times by @hoc081098 in #3056
- Update versions by @nomisRev in #3058
- optics ksp plugin: fixed handling of variance (#3057) by @vladd-g in #3060
- Fixes recover inconsistency with raise DSL on types other than Either by @yoxjames in #3052
- Change NonEmptySet type parameter name from T to A by @franciscodr in #3062
- Add withError and (Eager)Effect.mapError by @kyay10 in #3059
- Update versions of several libraries by @serras in #3017
- Add merge builder for raise by @kyay10 in #3061
- Update all dependencies by @renovate in #3065
- Update dependency gradle to v8.2 by @renovate in #3070
- Fix warnings of single-subclass sealed classes by @jooohn in #3067
- KDoc for
Raise#raise
,Raise#ensure
andRaise#ensureNotNull
by @ILIYANGERMANOV in #3038 - Fix text repetition in EffectScope's deprecation message by @serras in #3072
- Introduce
NonEmptyCollection
by @serras in #3068 - Set up Spotless by @serras in #3075
- Update all dependencies by @renovate in #3079
- Add option to disable
inline
when using@optics
by @serras in #3078 - Update JS versions in
yarn.lock
by @serras in #3084 - Enable Automatic Modules for JVM by @serras in #3071
- Serialization module by @serras in #3077
- Add missing docs for
Raise
operations by @serras in #3082 - Add mapOrAccumulate extension in RaiseAccumulate by @nomisRev in #3086
- Additional tests for
copy
in Optics by @serras in #3089 - Apply Gradle Versioning in top project by @serras in #3092
- Add missing Versioning plug-in to
arrow-core-retrofit
by @serras in #3093 - Update
arrow-gradle-config
to 0.12-rc.4 by @serras in #3094 - MemoizedDeepRecursiveFunction by @serras in #3091
- Add reset and barrierAction to CyclicBarrier. by @HSAR in #3055
- [HOTFIX] Fix main publish by @nomisRev in #3095
New Contributors
- @DeoTimeTheGithubUser made their first contribution in #3036
- @vladd-g made their first contribution in #3060
- @yoxjames made their first contribution in #3052
- @kyay10 made their first contribution in #3059
- @jooohn made their first contribution in #3067
- @ILIYANGERMANOV made their first contribution in #3038
- @HSAR made their first contribution in #3055
Full Changelog: 1.2.0-RC...1.2.0
1.2.0-RC
What's Changed
- Arrow Resilience by @serras in #2885
- Add flattenOrAccumulate by @nomisRev in #2892
- Updated training link main menu by @israelpzglez in #2893
- Fix semantics of
untilOutput
anduntilInput
by @serras in #2896 - Use of macos-latest runner for building the landing page by @franciscodr in #2898
- Use Duration in Schedule by @serras in #2895
- Introduce parMap and deprecate parTraverseXXX by @nomisRev in #2863
- Adding
AT_MOST_ONCE
in lambdas by @poseidon2060 in #2901 - Back-port arrow-atomic form 2.x.x by @nomisRev in #2903
- Github Actions improvements, Revert karma config, and add KotestProjectConfig by @nomisRev in #2904
- Adding
EXACTLY_ONCE
in lambdas by @poseidon2060 in #2906 - Implement basic NonEmptySet by @ibado in #2899
- Add Saga type to Arrow Fx Resilience by @nomisRev in #2902
- Bump to Kotlin 1.8.10 by @nomisRev in #2914
- Fix annoying warnings in IntelliJ by @serras in #2918
- More contract annotations for Either, Ior, Nullable, and Option by @serras in #2915
- Backport Raise & error handlers by @nomisRev in #2912
zipOrAccumulate
forRaise
by @serras in #2919- Backport zipOrAccumulate for Either by @nomisRev in #2916
- Apply suggestions for
zipOrAccumulate
by @serras in #2920 - Overload Arrow FX ParZip for tupling #2821 by @lgtout in #2900
- Deprecate Const & Eval towards 2.x.x by @nomisRev in #2921
- Backport mapOrAccumulate by @nomisRev in #2922
- Update Kotlin/Native targets by @serras in #2926
- [Backport] MPP No Trace & Improve debugging experience of leaked raise calls by @nomisRev in #2923
- Introduce isLeft & isRight predicate API for Either by @nomisRev in #2927
- [PROPOSAL] Option API deprecation, and preparation for 2.x.x by @franciscodr in #2913
- Keyword sanitization for Lens code generation (#2924) by @hrafnthor in #2925
- Integration Xebia Functional by @israelpzglez in #2855
- Fix filterOrElse to handle null values correctly. by @bwanner in #2933
- Update dependency gradle to v8 by @renovate in #2931
- Fix Either.isLeft, Either.isRight & Option.isSome contract by @nomisRev in #2937
- Provide test coverage for Option.kt (#2894) by @swdevsm in #2934
- Adapting Dokka configuration for multi-module projects by @franciscodr in #2930
- Fix conflicting dokka config, downgrade Gradle for Dokka, and add GithubPages by @nomisRev in #2942
- Add DSL markers to all bind funs in Raise by @Zordid in #2944
- Remove ignored path option in the publish landing page workflow by @franciscodr in #2943
- Link KotlinX Coroutines to Arrow Fx Coroutines docs by @nomisRev in #2947
- Fix #2909 by @ibado in #2929
- Option: deprecate or, orElse and unzip by @nomisRev in #2949
- Deprecate Validated by @nomisRev in #2940
- Add exist fun to Either, for migration from Validated by @Zordid in #2941
- Simplify recover, and catch APIs. Add getOrElse by @nomisRev in #2954
- Fix ctx inconsistency by @nomisRev in #2956
- Allow bindNel in mapOrAccumulate, and add missing signatures by @nomisRev in #2952
- Bump org.gradle.kotlin.dsl.internal.io.timeout on CI to 2 minutes by @nomisRev in #2965
- Update Raise.xOrAccumulate by @nomisRev in #2958
- Iterable test by @abendt in #2960
- [PROPOSAL] Ior API deprecation, and preparation for 2.x.x by @gutiory in #2928
- Deprecation of
Semigroup
andMonoid
by @serras in #2935 - Fix
Either
deprecation replacement expressions by @gutiory in #2973 - Deprecate Either.toValidated() and Either.toValidatedNel() functions by @Zordid in #2974
- Update Circuit Breaker & remove Arrow Fx Coroutines dependency from Resilience by @nomisRev in #2905
- Show link text instead of link text and URL in documentation by @sesamzoo in #2961
- Speed up retrofit related long running tests (#2908) by @bbuallbest in #2962
- Deprecate
Result
zip
method in favour of DSL by @gutiory in #2977 - fix stdlib dependency by @i-walker in #2984
- Removes autobind DSL in favor of getOrElse by @nomisRev in #2968
- Tracing POC by @nomisRev in #2946
- Deprecate
Nullable
zip
method in favour of DSL by @gutiory in #2983 - New Schedule encoding for Fx Resilience by @nomisRev in #2979
- Remove strictly version from Resilience by @nomisRev in #2989
- Raise - Align names parameters, arguments and generic types by @nomisRev in #2987
- Missed block argument in fold by @nomisRev in #2991
- Recommend Either.getOrElse for handleError instead of recover by @nomisRev in #2986
- Add bind alias for Sequence operation in DSL by @nomisRev in #2978
- Deprecate Monoid and Semigroup in Optics by @serras in #2985
- Deprecate Iterable.traverse & niche APIs. Hygiene on docs. by @nomisRev in #2963
- Deprecate Map.kt traverse & niche signatures, hygiene & bindAll by @nomisRev in #2971
- Deprecate NonEmptyList.kt traverse & niche APIs by @franciscodr in #2990
- Deprecate
Sequence
signatures and hygiene by @gutiory in #2993 - Improve map test coverage by @abendt in #2980
- NonEmptyList: Add bindAll and more unit tests by @franciscodr in #2995
- Fix
Ior
deprecation replacement expressions by @gutiory in #2976 - Replace parTupled with parZipOrAccumulate by @nomisRev in #2957
- Add bindAll function for NonEmptySet by @franciscodr in #2997
- Fix
traverse
forEither
andOption
by @serras in #3000 - Check all uses of
Validated
for deprecation by @serras in #2994 - let Mapk 'zipN with nullable' tests use Arb.map2 to generate values by @abendt in #2999
- Remove
Monoid
andSemigroup
combine from replacements by @gutiory in #3003 - let memoize cache null result values by @abendt in #2998
- Add partitionMap to Iterable (#3001) by @jsoizo in #3004
- Create action to auto update a PR when destination branch is pushed by @gutiory in #3007
- Creating a new module for Arrow Resilience by @franciscodr in #3006
- Use
GITHUB_TOKEN
in auto-update-pr action by @gutiory in #3008 - arrow-core: speedup 'Arb.string()' related slow tests by @abendt in #3005
- arrow-optics: speedup 'Arb.string()' related slow tests by @abendt in #3010
- Remove deprecated code from KDoc in Either & Option by @nomisRev in #3012
- Fix sanitization of keywords by @serras in #3016
- Result & Sequence missing deprecation and revert post-fixed names by @nomisRev in #3015
- Update BOM by @nomisRev in #3018
- Backport creation of Isos for value classes by @serras in #3021
- Increase currying test coverage (#2894) by @lgtout in #2939
- Fix kotest duplicate testnames ...
1.1.5
What's Changed
- Remove
test
modules by @serras in #2874 - Mention Arrow 2.0 in README by @serras in #2878
- Prisms for Either by @serras in #2877
- Test 1.8.0 on CI by @nomisRev in #2864
- Implement 'align' using 'buildList' by @serras in #2886
- Improve debugging experience of leaked shift calls by @nomisRev in #2884
- Fix knitCheck & re-add check by @nomisRev in #2887
Full Changelog: 1.1.4...1.1.5
1.1.4
What's Changed
- [2743] Migrate internal use of CircuitBreaker double to duration by @mjmoore in #2748
- Fix typo by @valery1707 in #2824
- Make the server disconnect test more general by @lukasz-kalnik-gcx in #2822
- Update NonEmptyList.fromList deprecation to suggest
toOption()
instead by @StylianosGakis in #2832 - Improve Either.getOrHandle() docs by @lukasz-kalnik-gcx in #2833
- Correct
addressStrees
->addressStreet
in optics documentation by @vikrem in #2836 - Arrow Fx: deprecate Platform#composeError, never and unit() by @nomisRev in #2837
- Backport Optics KSP plugin NPE on multiplatform fix by @cvb941 in #2840
- Refactor - #2812 sequence separate performance by @Khepu in #2818
- Use
super
equals and hashCode overrides for NonEmptyList by @RusticFlare in #2825 - Resource API deprecation, and preparation for 2.x.x. & back port improvements by @nomisRev in #2847
- introduce iterable.toNonEmptyListOrNone() by @myuwono in #2843
- [PROPOSAL] Either API deprecation, and preparation for 2.x.x by @nomisRev in #2830
- Use major versions in GitHub Actions by @serras in #2849
- Weaken Either monoid dependencies to only require a semigroup on left by @mjvmroz in #2845
- Do not reuse the name of the file in Optics KSP by @serras in #2850
- Additional deprecations, and backports for JVM by @nomisRev in #2856
- Update various versions by @serras in #2852
- Add CountDownLatch by @nomisRev in #2854
- Add CyclicBarrier by @nomisRev in #2857
- Temp rollback error handling deprecations until 1.2.x by @nomisRev in #2858
- Setup Kover as test coverage tool by @MarkMarkyMarkus in #2793
- Fix Monad.either binary combat by @nomisRev in #2867
- Backport: MPP No Trace by @nomisRev in #2869
New Contributors
- @mjmoore made their first contribution in #2748
- @valery1707 made their first contribution in #2824
- @lukasz-kalnik-gcx made their first contribution in #2822
- @StylianosGakis made their first contribution in #2832
- @vikrem made their first contribution in #2836
- @cvb941 made their first contribution in #2840
- @RusticFlare made their first contribution in #2825
- @mjvmroz made their first contribution in #2845
- @MarkMarkyMarkus made their first contribution in #2793
Full Changelog: 1.1.3...1.1.4-rc.3
1.1.3
What's Changed
- Fix license url by @i-walker in #2712
- Add new workflow for publishing the landing page by @franciscodr in #2716
- Fix publish sync by @JavierSegoviaCordoba in #2717
- invert resource release order by @tKe in #2714
- Fix traversal code samples of docs by @b-schwab in #2719
- Adding kotlin-js-store folder by @franciscodr in #2724
- rename traverseX and sequenceX functions in core by @i-walker in #2715
- feat: contravariance for R, A in Effect, EagerEffect and
in
for *EffectScope by @i-walker in #2722 - deprecate flatMap and map in EagerEffect by @i-walker in #2726
- add Continuations and programs to overview section in arrow core by @i-walker in #2723
- Update all dependencies by @renovate in #2709
- revert java setup by @i-walker in #2730
- Add command to install bundler by @franciscodr in #2729
- Improve Nel constructor by @nomisRev in #2728
- improve generate-tag workflow by @i-walker in #2731
- revert arrow-gradle-config to 0.10.1 by @i-walker in #2738
- Rename duplicated test by @wojda in #2740
- Fix some compilation and test warnings by @wojda in #2741
- Convert Arrow core effect into a non-inline function by @franciscodr in #2734
- add merge to validated by @agusotto96 in #2739
- Fix compilation warnings by replacing usages of deprecated methods by @wojda in #2742
- Bump versions by @nomisRev in #2745
- Add
kotlin.mpp.enableCompatibilityMetadataVariant=true
by @JavierSegoviaCordoba in #2747 - fix alpha tag build task by @i-walker in #2749
- Fix build, inject kotlin.mpp.enableCompatibilityMetadataVariant in CI by @nomisRev in #2751
- add merge function for *Effect by @i-walker in #2752
- Small docs fix for widen function by @lenguyenthanh in #2754
- max and min methods for NonEmptyList by @dorians in #2622
- Deprecate arrow test modules by @i-walker in #2753
- Update kotlin-js-store/yarn.lock by @serras in #2756
- Update all dependencies except the compiler version by @serras in #2757
- Resource deprecate traverseResource, fixes arity-4 by @nomisRev in #2750
- Fix #2764 & #2760 by @nomisRev in #2765
- [2761] Add explicit visibility modifier for all the generated optics by @aangairbender in #2763
- catch for EffectScope by @serras in #2746
- Refine the Arrow version selector by @franciscodr in #2770
- update gradle wrapper by @i-walker in #2771
- Consent management osano by @israelperezglez in #2755
- Add ruby setup for publication task by @i-walker in #2774
- fix ruby set up by @i-walker in #2775
- Fix #2779 by @nomisRev in #2783
- deprecate orNull Either extension function by @i-walker in #2773
- Support generics and inner classes in
@optics
by @serras in #2776 - Generalized copy for optics by @serras in #2777
- Fix usage of startCoroutineUninterceptedOrReturn by @nomisRev in #2789
- Fix example in documentation by @obecker in #2790
- Backport flattening token/shift into Cont by @nomisRev in #2791
- Enable builder inference for optics
copy
by @serras in #2792 - Update API compatibility validator version by @serras in #2794
- [BUGFIX] Result.zip by @nomisRev in #2804
- Update docs from version 1.0.1 to 1.1.2 by @Dobiasd in #2808
- add separateEither and separateValidated test by @hoc081098 in #2814
- Refactor - #2812 iterable separate performance by @Khepu in #2815
- Add Resource.allocated() to decompose Resource into it's allocate and… by @custommonkey in #2820
New Contributors
- @tKe made their first contribution in #2714
- @b-schwab made their first contribution in #2719
- @wojda made their first contribution in #2740
- @agusotto96 made their first contribution in #2739
- @dorians made their first contribution in #2622
- @aangairbender made their first contribution in #2763
- @obecker made their first contribution in #2790
- @Dobiasd made their first contribution in #2808
- @hoc081098 made their first contribution in #2814
- @Khepu made their first contribution in #2815
- @custommonkey made their first contribution in #2820
Full Changelog: 1.1.2...1.1.3