Releases: smallrye/smallrye-mutiny
3.0.1
Changelog
🐛 Fixes
tests
unscoped
- b8ad5b5 simplify awaiters tracking under lock conditions
- 9e34af4 memory leak in UniMemoizeOp, closes #1988
- 4c56647 context context propagation in Uni-calling operators, closes #1984
🔄️ Changes
- 8c94ac3 avoid star imports in UniMemoizeOp.java
🧰 Tasks
release
- d0babad update version metadata for Mutiny 3.0.1
- 1336cae clear RevAPI breaking change justifications
- bd6f612 set development version to 999-SNAPSHOT
🛠 Build
deps
- 4210cb4 bump io.smallrye:jandex-maven-plugin from 3.5.0 to 3.5.1
- f362079 bump kotlin.version from 2.2.20 to 2.2.21
- b87745b bump io.projectreactor:reactor-core from 3.7.11 to 3.7.12
- 91ec4c7 bump astral-sh/setup-uv from 6 to 7
- e408ac2 bump org.jacoco:jacoco-maven-plugin from 0.8.13 to 0.8.14
- 7278241 bump net.bytebuddy:byte-buddy from 1.17.7 to 1.17.8
- 4ddbb92 bump io.smallrye.config:smallrye-config
- e01ce75 bump org.apache.maven.plugins:maven-dependency-plugin
- 1c3dfa3 bump junit.version from 5.13.4 to 5.14.0
- 21995ad bump org.assertj:assertj-core from 3.27.5 to 3.27.6
- d0d9949 bump io.smallrye.config:smallrye-config
- 6928d86 bump org.codehaus.mojo:versions-maven-plugin
- 592b90e bump org.assertj:assertj-core from 3.27.4 to 3.27.5
- 992c14f bump io.smallrye.common:smallrye-common-annotation
deps-dev
- 7238a1a bump ch.qos.logback:logback-classic
- 03389a8 bump ch.qos.logback:logback-classic
- 348c24a bump io.reactivex.rxjava3:rxjava from 3.1.11 to 3.1.12
- 3170ba2 bump org.mockito:mockito-core from 5.19.0 to 5.20.0
unscoped
📝 Documentation
typo
- 1e3d62a fix a typo in ItemWithContext
Contributors
We'd like to thank the following people for their contributions:
Florian Heubeck, Julien Ponge
2.9.5
Changelog
🐛 Fixes
- 5ebeaa7 simplify awaiters tracking under lock conditions
- 9f55942 memory leak in UniMemoizeOp, closes #1988
- 36efc2e context context propagation in Uni-calling operators, closes #1984
- 54c89e9 correct typos in documentation comments for buffer size methods
🔄️ Changes
- 5444301 avoid star imports in UniMemoizeOp.java
🧰 Tasks
release
🛠 Build
deps
- 54fbb54 bump io.projectreactor:reactor-core from 3.7.10 to 3.7.11
- 236340c bump kotlin.version from 2.2.10 to 2.2.20
- 2cd313b bump io.projectreactor:reactor-core from 3.7.9 to 3.7.10
- f0468cd bump actions/setup-python from 5 to 6
- 9d7b3b5 bump codecov/codecov-action from 5.5.0 to 5.5.1
- 3ef5709 bump org.codehaus.mojo:versions-maven-plugin
- c3d87ae bump org.jreleaser:jreleaser-maven-plugin
- 272fcf6 bump actions/setup-java from 4 to 5
- 5fb0cb1 bump codecov/codecov-action from 5.4.3 to 5.5.0
- 4ba16a9 bump net.bytebuddy:byte-buddy from 1.17.6 to 1.17.7
- 8907f07 bump actions/checkout from 4 to 5
- 1ebe9c1 bump kotlin.version from 2.2.0 to 2.2.10
- a5506a5 bump io.projectreactor:reactor-core from 3.7.8 to 3.7.9
- 1e190a2 bump org.assertj:assertj-core from 3.27.3 to 3.27.4
- 6d57d28 bump io.smallrye.common:smallrye-common-annotation
- b4dfb9b bump io.smallrye.config:smallrye-config
- 7cad939 bump io.smallrye:jandex-maven-plugin from 3.2.7 to 3.4.0
deps-dev
- 9c6464e bump org.mockito:mockito-core from 5.18.0 to 5.19.0
docs
- ddc4bb1 update the Python dependencies
unscoped
- 6d33be4 fix the previous version for RevAPI
📝 Documentation
web
- 9782093 updates and use IBM Plex fonts
unscoped
- 5feef06 update MkDocs footer copyright override
Contributors
We'd like to thank the following people for their contributions:
Julien Ponge, dario
3.0.0
Changelog
🚀 Features
- 629e16d 🚨 allow Uni.join.all() empty lists
🐛 Fixes
- 54c89e9 correct typos in documentation comments for buffer size methods
🔄️ Changes
- 67fe9de misc code polishing edits
- c5949db changing the TT to E based on the pr comment
- f4d5bee 🚨 make the onFailure to be typed when we use onFailure(RuntimeException.class)
🧪 Tests
- 7ac49be add tests to cover all the methods with typed Exception handling
🧰 Tasks
release
🛠 Build
deps
- 6499b27 bump org.apache.maven.plugins:maven-shade-plugin
- 92bd147 bump version.surefire.plugin from 3.2.5 to 3.5.4
- 5d65673 bump io.smallrye:jandex-maven-plugin from 3.4.0 to 3.5.0
- 54fbb54 bump io.projectreactor:reactor-core from 3.7.10 to 3.7.11
- 236340c bump kotlin.version from 2.2.10 to 2.2.20
- 2cd313b bump io.projectreactor:reactor-core from 3.7.9 to 3.7.10
- f0468cd bump actions/setup-python from 5 to 6
- 9d7b3b5 bump codecov/codecov-action from 5.5.0 to 5.5.1
- 3ef5709 bump org.codehaus.mojo:versions-maven-plugin
- c3d87ae bump org.jreleaser:jreleaser-maven-plugin
- 272fcf6 bump actions/setup-java from 4 to 5
- 5fb0cb1 bump codecov/codecov-action from 5.4.3 to 5.5.0
- 4ba16a9 bump net.bytebuddy:byte-buddy from 1.17.6 to 1.17.7
- 8907f07 bump actions/checkout from 4 to 5
- 1ebe9c1 bump kotlin.version from 2.2.0 to 2.2.10
- a5506a5 bump io.projectreactor:reactor-core from 3.7.8 to 3.7.9
- 1e190a2 bump org.assertj:assertj-core from 3.27.3 to 3.27.4
- 6d57d28 bump io.smallrye.common:smallrye-common-annotation
- b4dfb9b bump io.smallrye.config:smallrye-config
- 7cad939 bump io.smallrye:jandex-maven-plugin from 3.2.7 to 3.4.0
deps-dev
- 9c6464e bump org.mockito:mockito-core from 5.18.0 to 5.19.0
docs
- ddc4bb1 update the Python dependencies
📝 Documentation
README
- e535204 document the 2.9.x branch existence and status
web
- 9782093 updates and use IBM Plex fonts
unscoped
- 5feef06 update MkDocs footer copyright override
Contributors
We'd like to thank the following people for their contributions:
Julien Ponge, Laszlo Hadadi, dario
2.9.4
Changelog
🐛 Fixes
- 826ee87 race condition in UniMemoizeOp on awaiters forwarding
🧰 Tasks
release
🛠 Build
deps
- 6a7d142 bump junit.version from 5.13.3 to 5.13.4
- 5255e63 bump io.smallrye.config:smallrye-config
- c0d792d bump io.projectreactor:reactor-core from 3.7.7 to 3.7.8
- af26032 bump org.jreleaser:jreleaser-maven-plugin
- e776fbd bump io.smallrye.common:smallrye-common-annotation
Contributors
We'd like to thank the following people for their contributions:
Julien Ponge
2.9.3
Changelog
🐛 Fixes
- 10a5ac5 deadlock in Uni memoization, closes #1910
- bea5e28 allow Multi ranges to be empty, closes #1901
🧰 Tasks
release
🛠 Build
deps
- 9bad7bc downgrade to JReleaser 1.18.0
- d812948 bump io.smallrye.common:smallrye-common-annotation
- c2b4a63 bump io.smallrye.common:smallrye-common-annotation
- 1de0082 bump junit.version from 5.13.2 to 5.13.3
- e2fe6b5 bump org.apache.maven.plugins:maven-gpg-plugin
- 7e393de bump org.jreleaser:jreleaser-maven-plugin
- 8987b2a bump io.smallrye.common:smallrye-common-annotation
- 813983b bump io.smallrye.common:smallrye-common-annotation
- 66b4a28 bump io.smallrye.common:smallrye-common-annotation
- 81f8c59 bump junit.version from 5.13.1 to 5.13.2
- 1ddfe5f bump kotlin.version from 2.1.21 to 2.2.0
deps-dev
- 83c4800 bump io.reactivex.rxjava3:rxjava from 3.1.10 to 3.1.11
Contributors
We'd like to thank the following people for their contributions:
Julien Ponge
2.9.2
Changelog
🐛 Fixes
🧰 Tasks
release
🛠 Build
deps
- 79c8d5b bump io.smallrye.common:smallrye-common-annotation
Contributors
We'd like to thank the following people for their contributions:
Julien Ponge
2.9.1
Changelog
🐛 Fixes
- 2064cdb ensure Uni blocking await cancels the upstream on timeout
🧰 Tasks
release
- 1c08b70 update version metadata for Mutiny 2.9.1
- 5920608 clear RevAPI breaking change justifications
- 4945116 set development version to 999-SNAPSHOT
🛠 Build
deps
- 1cc657b bump net.bytebuddy:byte-buddy from 1.17.5 to 1.17.6
- 0c75905 bump io.smallrye.config:smallrye-config
- 9fd8e6f bump io.projectreactor:reactor-core from 3.7.6 to 3.7.7
- 27c0a37 bump junit.version from 5.13.0 to 5.13.1
- 354674e bump io.smallrye.config:smallrye-config
- f3333a2 bump junit.version from 5.12.2 to 5.13.0
- 43832ed bump io.smallrye.config:smallrye-config
deps-dev
- 58554d2 bump org.mockito:mockito-core from 5.17.0 to 5.18.0
Contributors
We'd like to thank the following people for their contributions:
Julien Ponge
2.9.0
Changelog
🚀 Features
MultiEmitter
- 595642f introduce user callbacks for request and cancellation signals
unscoped
- fcb52bb gatherer API for reusable implementations
- 9f037c9 introduction of a Multi gathering operator, closes #1597
🐛 Fixes
MultiEmitterProcessor
- 36e2e92 check that callbacks parameters are not null
build
- 7ff4f45 skip cyclonedx-maven-plugin when not deploying
unscoped
- 24eeed2 clear RevAPI error on MultiGroupByOp internal API changes
- 5241f67 stagnation bug in MultiGroupByOp due to a lack of forwarded demand, closes #1856
- 03da9c1 harmonize cancellation and termination callback orders, closes #1843
- 4365696 add an automatic module name to mutiny-smallrye-context-propagation, closes #1790
🔄️ Changes
MultiEmitter
- 5dc3b82 reduce footprint using atomic field updaters
unscoped
- f310c70 introduce pre-fetching in group().by()
- b891d5e reduce the UniCreateFromPublisher operator footprint
- fb056b0 mark all gathering APIs as experimental
- bbf4540 replace Tuple2 with Extraction and increase coverage
🧰 Tasks
release
- a9ea0cf update version metadata for Mutiny 2.9.0
- fdc2984 set development version to 999-SNAPSHOT
- 9249fd5 update version metadata for Mutiny 2.9.0-RC1
- 4c7d033 clear RevAPI breaking change justifications
- abce1c8 set development version to 999-SNAPSHOT
🛠 Build
deps
- fef01bb update the Python documentation dependencies
- 30c7adc bump codecov/codecov-action from 5.4.2 to 5.4.3
- 0e3a877 bump io.projectreactor:reactor-core from 3.7.5 to 3.7.6
- b5373b3 bump kotlin.version from 2.1.20 to 2.1.21
- 9f0a5d1 bump astral-sh/setup-uv from 5 to 6
- 8fd83fd bump org.jreleaser:jreleaser-maven-plugin
- e2fd2a1 bump org.revapi:revapi-java from 0.28.3 to 0.28.4
- 4be2ac3 bump codecov/codecov-action from 5.4.0 to 5.4.2
- 40d1b92 coordinated RevAPI bumps to 0.28.3
- 25f8f50 bump io.projectreactor:reactor-core from 3.7.4 to 3.7.5
- bcb769c bump io.smallrye.common:smallrye-common-annotation
- 3fd78e4 bump junit.version from 5.12.1 to 5.12.2
- e051d29 bump io.smallrye:smallrye-context-propagation
- cfd9f76 bump org.jetbrains.kotlinx:kotlinx-coroutines-core
- 5497675 bump net.bytebuddy:byte-buddy from 1.17.4 to 1.17.5
- 421e22a bump version.surefire.plugin from 3.2.5 to 3.5.3
- 94105f7 bump org.junit.support:testng-engine from 1.0.5 to 1.0.6
- aaa49ee bump io.smallrye.config:smallrye-config
- 12d0499 bump io.smallrye.common:smallrye-common-annotation
- b036d22 bump net.bytebuddy:byte-buddy from 1.17.2 to 1.17.4
- 5e7fdae bump kotlin.version from 2.1.10 to 2.1.20
- 26c656d bump junit.version from 5.12.0 to 5.12.1
- fb0a5b8 bump io.projectreactor:reactor-core from 3.7.3 to 3.7.4
- 902c398 bump io.smallrye.config:smallrye-config
- 35d45bb bump codecov/codecov-action from 5.3.1 to 5.4.0
- 6e26d36 bump net.bytebuddy:byte-buddy from 1.17.1 to 1.17.2
- d251cac bump org.jreleaser:jreleaser-maven-plugin
- 7e9a64e bump org.apache.maven.plugins:maven-deploy-plugin
- 448b4b7 bump org.awaitility:awaitility from 4.2.2 to 4.3.0
- 57189be bump junit.version from 5.11.4 to 5.12.0
- 9ec98cb bump io.smallrye.config:smallrye-config
- ab24924 bump io.smallrye.config:smallrye-config
- 78c91ae bump io.smallrye:jandex-maven-plugin from 3.2.6 to 3.2.7
- d304dbc bump net.bytebuddy:byte-buddy from 1.17.0 to 1.17.1
- 6f78e35 bump org.testng:testng from 7.10.2 to 7.11.0
- dda07f1 bump io.smallrye:jandex-maven-plugin from 3.2.5 to 3.2.6
- b36479e bump io.smallrye.common:smallrye-common-annotation
- 225d182 bump io.projectreactor:reactor-core from 3.7.2 to 3.7.3
- 7718989 bump io.smallrye:jandex-maven-plugin from 3.2.4 to 3.2.5
- 0c1e242 bump io.smallrye.config:smallrye-config
- 3e77400 bump io.smallrye:jandex-maven-plugin from 3.2.3 to 3.2.4
- 29e6c7d bump net.bytebuddy:byte-buddy from 1.16.1 to 1.17.0
- bfc4a8e bump io.smallrye:smallrye-build-parent from 46 to 47
- d8bc0d6 bump codecov/codecov-action from 5.1.2 to 5.3.1
- fcf25a7 bump kotlin.version from 2.1.0 to 2.1.10
- 49c2acf bump io.smallrye.reactive:mutiny-zero-flow-adapters
deps-dev
- fdf22bf bump org.mockito:mockito-core from 5.16.1 to 5.17.0
- bf7b5af bump org.mockito:mockito-core from 5.16.1 to 5.17.0
- 16bcd3a bump ch.qos.logback:logback-classic
- 7ccb8a3 bump org.mockito:mockito-core from 5.16.0 to 5.16.1
- b07f698 bump org.mockito:mockito-core from 5.15.2 to 5.16.0
- 9c82f5c bump ch.qos.logback:logback-classic
unscoped
- 66bbfc2 ensure a changelog is re-computed before performing a release
- c55bb92 explicit JVM settings for Jacoco and Mockito agents
- 86fe3f1 test pull requests against Java 24
- f154599 skip CycloneDX in the quick build profile
📝 Documentation
README
- 20feb47 the baseline is Java 17, not 11
unscoped
2.9.0-RC1
Changelog
🚀 Features
MultiEmitter
- 595642f introduce user callbacks for request and cancellation signals
unscoped
- fcb52bb gatherer API for reusable implementations
- 9f037c9 introduction of a Multi gathering operator, closes #1597
🐛 Fixes
MultiEmitterProcessor
- 36e2e92 check that callbacks parameters are not null
build
- 7ff4f45 skip cyclonedx-maven-plugin when not deploying
unscoped
- 24eeed2 clear RevAPI error on MultiGroupByOp internal API changes
- 5241f67 stagnation bug in MultiGroupByOp due to a lack of forwarded demand, closes #1856
- 03da9c1 harmonize cancellation and termination callback orders, closes #1843
- 4365696 add an automatic module name to mutiny-smallrye-context-propagation, closes #1790
🔄️ Changes
MultiEmitter
- 5dc3b82 reduce footprint using atomic field updaters
unscoped
- f310c70 introduce pre-fetching in group().by()
- b891d5e reduce the UniCreateFromPublisher operator footprint
- fb056b0 mark all gathering APIs as experimental
- bbf4540 replace Tuple2 with Extraction and increase coverage
🧰 Tasks
release
- 9249fd5 update version metadata for Mutiny 2.9.0-RC1
- 4c7d033 clear RevAPI breaking change justifications
- abce1c8 set development version to 999-SNAPSHOT
🛠 Build
deps
- b5373b3 bump kotlin.version from 2.1.20 to 2.1.21
- 9f0a5d1 bump astral-sh/setup-uv from 5 to 6
- 8fd83fd bump org.jreleaser:jreleaser-maven-plugin
- e2fd2a1 bump org.revapi:revapi-java from 0.28.3 to 0.28.4
- 4be2ac3 bump codecov/codecov-action from 5.4.0 to 5.4.2
- 40d1b92 coordinated RevAPI bumps to 0.28.3
- 25f8f50 bump io.projectreactor:reactor-core from 3.7.4 to 3.7.5
- bcb769c bump io.smallrye.common:smallrye-common-annotation
- 3fd78e4 bump junit.version from 5.12.1 to 5.12.2
- e051d29 bump io.smallrye:smallrye-context-propagation
- cfd9f76 bump org.jetbrains.kotlinx:kotlinx-coroutines-core
- 5497675 bump net.bytebuddy:byte-buddy from 1.17.4 to 1.17.5
- 421e22a bump version.surefire.plugin from 3.2.5 to 3.5.3
- 94105f7 bump org.junit.support:testng-engine from 1.0.5 to 1.0.6
- aaa49ee bump io.smallrye.config:smallrye-config
- 12d0499 bump io.smallrye.common:smallrye-common-annotation
- b036d22 bump net.bytebuddy:byte-buddy from 1.17.2 to 1.17.4
- 5e7fdae bump kotlin.version from 2.1.10 to 2.1.20
- 26c656d bump junit.version from 5.12.0 to 5.12.1
- fb0a5b8 bump io.projectreactor:reactor-core from 3.7.3 to 3.7.4
- 902c398 bump io.smallrye.config:smallrye-config
- 35d45bb bump codecov/codecov-action from 5.3.1 to 5.4.0
- 6e26d36 bump net.bytebuddy:byte-buddy from 1.17.1 to 1.17.2
- d251cac bump org.jreleaser:jreleaser-maven-plugin
- 7e9a64e bump org.apache.maven.plugins:maven-deploy-plugin
- 448b4b7 bump org.awaitility:awaitility from 4.2.2 to 4.3.0
- 57189be bump junit.version from 5.11.4 to 5.12.0
- 9ec98cb bump io.smallrye.config:smallrye-config
- ab24924 bump io.smallrye.config:smallrye-config
- 78c91ae bump io.smallrye:jandex-maven-plugin from 3.2.6 to 3.2.7
- d304dbc bump net.bytebuddy:byte-buddy from 1.17.0 to 1.17.1
- 6f78e35 bump org.testng:testng from 7.10.2 to 7.11.0
- dda07f1 bump io.smallrye:jandex-maven-plugin from 3.2.5 to 3.2.6
- b36479e bump io.smallrye.common:smallrye-common-annotation
- 225d182 bump io.projectreactor:reactor-core from 3.7.2 to 3.7.3
- 7718989 bump io.smallrye:jandex-maven-plugin from 3.2.4 to 3.2.5
- 0c1e242 bump io.smallrye.config:smallrye-config
- 3e77400 bump io.smallrye:jandex-maven-plugin from 3.2.3 to 3.2.4
- 29e6c7d bump net.bytebuddy:byte-buddy from 1.16.1 to 1.17.0
- bfc4a8e bump io.smallrye:smallrye-build-parent from 46 to 47
- d8bc0d6 bump codecov/codecov-action from 5.1.2 to 5.3.1
- fcf25a7 bump kotlin.version from 2.1.0 to 2.1.10
- 49c2acf bump io.smallrye.reactive:mutiny-zero-flow-adapters
deps-dev
- fdf22bf bump org.mockito:mockito-core from 5.16.1 to 5.17.0
- bf7b5af bump org.mockito:mockito-core from 5.16.1 to 5.17.0
- 16bcd3a bump ch.qos.logback:logback-classic
- 7ccb8a3 bump org.mockito:mockito-core from 5.16.0 to 5.16.1
- b07f698 bump org.mockito:mockito-core from 5.15.2 to 5.16.0
- 9c82f5c bump ch.qos.logback:logback-classic
unscoped
- 66bbfc2 ensure a changelog is re-computed before performing a release
- c55bb92 explicit JVM settings for Jacoco and Mockito agents
- 86fe3f1 test pull requests against Java 24
- f154599 skip CycloneDX in the quick build profile
📝 Documentation
README
- 20feb47 the baseline is Java 17, not 11
unscoped
- ac443b1 stay on the same page when switching website versions
- b9418fc fix javadoc for ifNoItem method
Contributors
We'd like to thank the following people for their contributions:
Daniel Strobusch, Julien Ponge, Ozan Gunalp
2.8.0
Changelog
🚀 Features
java
- bc5efa2 🚨 move to Java 17 as a baseline
operators
🔄️ Changes
- f1f0a10 minor Java 17 code migrations
🧰 Tasks
release
- 4c7d033 clear RevAPI breaking change justifications
- abce1c8 set development version to 999-SNAPSHOT
- cebbed3 update version metadata for Mutiny 2.8.0
- bed63b4 clear RevAPI breaking change justifications
- 8b3295f set development version to 999-SNAPSHOT
🛠 Build
deps
- 98e61b3 bump net.bytebuddy:byte-buddy from 1.15.11 to 1.16.1
- 678e32a bump org.assertj:assertj-core from 3.27.2 to 3.27.3
- 5ca5a1d bump io.projectreactor:reactor-core from 3.7.1 to 3.7.2
- ae96bc9 bump io.smallrye.config:smallrye-config
- bd15c42 bump io.smallrye:smallrye-context-propagation
- 5428b25 bump org.assertj:assertj-core from 3.27.1 to 3.27.2
- 895ec9d bump org.assertj:assertj-core from 3.27.0 to 3.27.1
- db07f61 bump org.jreleaser:jreleaser-maven-plugin
- 038f81a bump codecov/codecov-action from 5.1.1 to 5.1.2
- 1f870c5 bump astral-sh/setup-uv from 4 to 5
- 480f174 bump org.jetbrains.kotlinx:kotlinx-coroutines-core
- ca3110b bump org.assertj:assertj-core from 3.26.3 to 3.27.0
- 02496df bump org.jetbrains.kotlinx:kotlinx-coroutines-core
- 3a72299 bump junit.version from 5.11.3 to 5.11.4
- 6aa6ef2 bump org.jetbrains.dokka:dokka-maven-plugin
- 591b14f bump net.bytebuddy:byte-buddy from 1.15.10 to 1.15.11
- 63cd938 bump io.projectreactor:reactor-core from 3.7.0 to 3.7.1
- ad8c32f bump codecov/codecov-action from 5.0.7 to 5.1.1
- 31f447b bump io.smallrye.config:smallrye-config
- 76559a0 bump org.cyclonedx:cyclonedx-maven-plugin
deps-dev
- 2f70651 bump ch.qos.logback:logback-classic
- 79f4877 bump org.mockito:mockito-core from 5.14.2 to 5.15.2
- e76dd5d bump ch.qos.logback:logback-classic
- 855329b bump ch.qos.logback:logback-classic
- 47f12ac bump ch.qos.logback:logback-classic
docs
kotlin
- da2d3cd 🚨 bump kotlin.version from 2.0.21 to 2.1.0 and updates kotlin compiler api and lang versions to 1.8
📝 Documentation
- 9157bef enable copy icon in snippets
Contributors
We'd like to thank the following people for their contributions:
Florian Heubeck, Julien Ponge