차를 좋아하는 나지만 여름에는 아무렴 뜨거운 차는 손이 잘 안 간다. 3~4g 찻잎을 넣고 진하게 우려서 얼음 위에다가 부어 마시는 '급랭법'을 사용해 차를 마시거나 미지근한 물에다가 차를 넣고 냉장고에 6~7시간 넣어놨다가 마시는 '냉침법'으로 마시곤 한다. 사실 어떤 방법이 중요한 게 아니라 본인 입맛에 맞고 편하면 그게 최고다.
- 박지혜의 《내가 좋아하는 것들, 차》 중에서 -
* 다도(茶道)라는 게 있습니다. 차를 마시면서 지켜야 할 예법을 익히는 것입니다. 그러나 지나치게 예법을 따지면 정작 차의 맛을 놓칠 때가 많습니다. 차에 따라, 마시는 사람 숫자에 따라, 계절 따라, 다구(茶具)에 따라, 각기 차를 넣어 우리는 시간이 다릅니다. 맛과 향, 느낌도 다릅니다. 여름에는 다도 예법보다 차고 시원한 것이 최고입니다.
아태지역 AI 시장에서 생성형 AI의 비중이 더 커질 것이라는 전망이 나왔다. 중국이 앞서가는 가운데 일본과 인도 시장이 빠르게 성장하리라는 분석이다.
30일 시장조사업체 한국IDC가 ‘전 세계 AI 및 생성형 AI 지출 가이드’ 보고서를 발표했다. 중국과 일본을 포함한 아시아 태평양 지역의 AI 시장을 조사했다. AI 기반 시스템을 위한 소프트웨어, 서비스, 하드웨어를 포함한다. 보고서에 따르면, 아태 지역 생성형 AI 지출은 연 평균 95.4% 성장해 2027년에는 260억 달러 규모가 될 전망이다. 생성형 AI의 비중은 더 커진다. 생성형 AI는 2024년 전체 AI 시장의 15%를 차지하지만, 2027년에는 29%까지 늘어날 것으로 업체는 예상했다.
IDC 아태지역에서 빅데이터 및 AI 리서치 헤드 디피카 기리는 "아시아 태평양 지역에서 생성형 AI의 도입이 급증하며 향후 2년 이내에 투자가 정점에 도달한 후 안정화 기간을 거칠 것으로 예상된다. 중국은 생성형 AI 기술 관련 지배 시장 위치를 유지할 것이며, 일본과 인도는 향후 몇 년 동안 가장 빠르게 성장하는 시장이 될 것이다"라고 말했다.
산업별로 보면, 금융, 소프트웨어 및 IT, 정부, 리테일, 내구재 등의 부문에서 성장이 두드러진다. 금융 서비스 산업의 AI 지출은 2027년까지 연평균 96.7%씩 성장해 43억 달러 규모를 형성할 전망이다. 사내 운영 효율성 개선, 반복 작업 자동화, 사기 탐지 및 복잡한 문서 작성과 같은 백오피스 프로세스 최적화에 생성형 AI를 주로 활용하는 추세라고 보고서는 분석했다.
소프트웨어 및 IT 산업은 마케팅, 데이터 분석, 소프트웨어 개발 등 다양한 분야에서 생성형 AI를 활용한다. 생성형 AI는 콘텐츠 제작을 간소화하여 마케팅 전략을 최적화하고 오디언스 참여를 극대화하며, 소프트웨어 개발 분야에서는 코딩 작업을 자동화하고 프로토타입을 생성해 개발자의 생산성과 효율성을 높이는 데 기여하는 것으로 나타났다.
정부 부문에서는 생성형 AI 기술 교육과 훈련을 발전시켜 새로운 일자리를 창출하고 기술 혁신 허브의 성장을 촉진하는 데 활용하고, 리테일 산업에서는 개인 맞춤화 경험 제공을 위해 AI 기술을 활용하는 것으로 보고서는 분석했다.
'나는 소중하기에' 내 소중한 삶을 유예할 수 없습니다. 자신의 관계 속 책무는 자신이 지켜나가야 할 '내 삶의 일부'입니다. 하지만 누군가를 부양하기 위한 도구로 내가 태어난 것은 아닙니다. 각자의 삶의 중심은 자기 자신에게 있습니다. 부양의 의무는 '내가 해야 할 일' 중에 하나일 뿐이지 그것이 '나의 모든 것'이 될 수는 없습니다.
- 송길영의 《시대예보: 핵개인의 시대》 중에서 -
* '나'는 소중합니다. 누군가를 부양하기 위해 태어난 것은 물론 아닙니다. 그러나 '나'는 그 누군가의 부양을 받았기 때문에 지금 이 순간에 존재하고 있습니다. 태중에서도, 태밖으로 나와서도 부양 받아 생명을 존속시켰습니다. 세상 모든 사람들은 서로가 서로를 위한 정교한 부양의 관계 속에서 살아가고 있습니다. 내가 소중하기에 나의 부양 의무도 소중합니다.
Welcome back for another exciting Flutter stable release! This time, we’re thrilled to present Flutter 3.22. We’re bringing WebAssembly to the stable channel, a fully featured Vulkan backend for Impeller on Android, promising smoother graphics and a major performance boost. We’re also introducing streamlined workflows with new widget state properties, dynamic view sizing, and improved form validation. But that’s not all — you’ll find flavor-conditional asset bundling, a preview of Vertex AI for Firebase in Dart, and updated DevTools to make your life easier.
In just a few months since our last update, we’ve merged an impressive 1595 pull requests from the Flutter community, with 37 new community members contributing to Flutter for the first time!
So, dive in and discover all the new features and enhancements that the Flutter community has brought to this latest release!
WebAssembly With the release of Flutter 3.22, Wasm is now available on the stable channel, offering significant performance improvements. In our internal benchmarks using Chrome on an M1 MacBook, the Wonderous app’s frame rendering time improved by 2x on average and 3x in worst-case scenarios.
These enhancements are vital for apps with animations and rich transitions, where maintaining a smooth frame rate is essential. Wasm helps achieve this by reducing performance bottlenecks, resulting in smoother animations and transitions. To start using Wasm with your Flutter web apps, check out our Dart Wasm documentation and Flutter Wasm documentation. For the full announcement, visit the Flutter at Google I/O blog post.
Engine Flutter 3.22 introduces significant updates to Impeller, the rendering engine that powers your Flutter applications. Key highlights include the completion of the Vulkan backend on Android for smoother graphics and improved performance, ongoing optimizations for blur effects and complex path rendering, and a new experimental API for testing with Impeller. In line with our roadmap, we’re committed to enhancing Impeller’s quality and performance, including completing the iOS migration to Impeller and expanding Android support.
Impeller Vulkan backend feature complete on Android In this release, Impeller’s Vulkan backend for Android is feature complete. In particular, in the past few months, the team has been hard at work completing the implementation of fast advanced blends, support for custom fragment shaders with the FragmentProgram API, PlatformView support (though it requires a small API migration), and fully implementing all blur styles.
Android preview In the 3.19 stable release, after releasing improvements in Impeller’s OpenGL backend, we invited users to try out Impeller on Android devices both with and without Vulkan support. Over the past few months, after evaluating the performance of the OpenGL backend and estimating the remaining work on the Vulkan backend, we have decided to focus our efforts on making the Vulkan backend production ready first.
Impeller solves the issue of shader compilation jank. Additionally, in our benchmarks it outperforms the legacy renderer on average, 90th, and 99th percentile frame times. We therefore believe that the performance of the Vulkan backend on Android is acceptable. In this release (3.22), an app that opts-in to Impeller will use the Vulkan backend where available. In a future release, this will become the default. When an app that opts-in to Impeller runs on a device that doesn’t support Vulkan, Flutter will gracefully fall back automatically to using OpenGL ES with Skia. No action is necessary on your part. In the future, when we believe the OpenGL ES Impeller backend is production ready, this fallback will also use Impeller.
As the Impeller preview on Android continues through the 3.22 stable cycle, we request that Flutter developers upgrade to the latest stable version, and file issues about any shortcomings noticed when Impeller is enabled. Feedback at this stage is invaluable to ensuring that Impeller is successful on Android and that we will be able to confidently make it the default renderer in a release later this year. The Android hardware ecosystem is very diverse. For that reason, the most helpful feedback about Impeller should include detailed information about the specific device and Android version where issues occurred.
Blur performance improvements Blur has been reimplemented in Impeller for both iOS and Android. In particular, the new approach, which is similar to Skia’s, reduces the CPU and GPU time of blurs by nearly half in benchmarks.
The chart below shows worst-case, 99%-ile, 90%-ile, and average frame rasterization times and GPU frame times in ms on an iPhone 11 device in a pathological benchmark intended to highlight blur performance. After rewriting Impeller’s blur, both the CPU and GPU cost of backdrop filter blurs has been nearly halved. This scale of this improvement translates to non-pathological cases as well, as would appear in typical apps.
99%-ile, 90%-ile and average frame rasterization times and GPU frame times in ms on an iPhone 11 device in a pathological benchmark intended to highlight blur performance Stencil-then-Cover Impeller on both iOS and Android has moved to a new rendering strategy based on the Stencil-then-Cover approach described in the chapter “Drawing Filled, Concave Polygons Using the Stencil Buffer” in the OpenGL Redbook. Team members discussed more on this technique as it applies to Flutter in GitHub issue #123671.
This approach solves the issue where the raster thread was spending too much time calculating tessellations for complex paths on the CPU for example, SVGs and Lottie animations. After the change, the total frame time (UI thread on the CPU + raster thread on the CPU + GPU work) is much lower for frames that contain complex paths. Users will notice that Lottie animations and other complex paths render more smoothly, with lower CPU utilization, and slightly higher GPU utilization.
(Left) A Lottie animation. Previously, Impeller on a recent iPhone took 64ms / frame of raster thread CPU time to render it. (Right) The same animation on the same device after we landed the Stencil-then-Cover optimization. Raster times are nearly 10x faster. While pleased with these improvements, there is still more work to do. Among other opportunities, we are aware that polyline generation remains prominent in CPU profiles, and we intend to investigate shifting this work to the GPU, as well.
New API While still experimental, flutter test now accepts the --enable-impeller flag, which exercises Impeller using the Vulkan backend.
Framework Widget state properties MaterialState has been moved outside of the Material library and renamed WidgetState, in order to make it available to Cupertino, the base Flutter framework, and package authors. For more information on migrating to the new WidgetState, see the migration guide.
Dynamic view sizing Enhancements to dynamic view sizing benefits developers building responsive layouts, ensuring better UI adaptability across various device screens.
Improved form validation Thanks to the contributions of Flutter community member SharbelOkzan, Flutter 3.22 comes with more flexible form validation methods allowing developers to create more robust user input handling, enhancing both usability and security.
Covariants in 2D APIs Reducing the need for type casts in 2D graphics APIs simplifies development workflows and enhances performance, important for games and complex animations.
Flavor-conditional asset bundling Developers using the flavors feature can now configure individual assets to be bundled only when building for a specific flavor. For more information, check out Conditionally bundling assets based on flavor.
Transformation of assets using Dart packages Users can now configure Dart packages to transform their app’s assets as they are bundled. For more information, check out Transforming assets at built time.
Android Deep linking Deep links can significantly improve the user experience in your Flutter app, acting as shortcuts that seamlessly guide users to specific content within your app, boosting engagement, and driving sales. While Universal Links for iOS and App Links for Android are highly recommended for their security and user-friendly nature, setting them up can be a bit tricky.
In the last Flutter stable release, we introduced a deep link validator tool within DevTools that supports checking web configuration for Android apps. In this version, we added a new set of features to help verify setups within your Android manifest files.
For more information on using this tool, check out Validate deep links.
Predictive back gesture Flutter now adds more support for Android’s upcoming predictive back feature, where users can peek at the previous route or even the previous app during a back gesture. This is still behind a feature flag on Android devices, but you can find details on how to try it out yourself on GitHub.
Flutter tool enforces version requirements on Gradle, AGP, Java, and Kotlin In this release, the Flutter tool enforces a policy regarding the versions that it supports for Gradle, the Android Gradle Plugin (AGP), Java, and Kotlin. Initially, the tool only provides warnings.
Currently, the supported version ranges are as follows:
Gradle — Fully supported 7.0.2 to current, warn otherwise AGP — Fully supported 7.0.0 to current, warn otherwise Java — Fully supported Java 11 to current, warn otherwise Kotlin — Fully supported 1.5.0 to current, warn otherwise In the next major release these warnings will become errors, which can be overridden with the flag --android-skip-build-dependency-validation. More generally speaking, the tool provides a warning for at least one release before fully dropping support (generating an error) for a given version of these dependencies.
This policy was discussed in an associated design spec. Comments and feedback are always welcome.
Support for using Gradle Kotlin DSL in Gradle build scripts on Android Gradle Kotlin DSL is now supported in Flutter, providing an alternative to the traditional Gradle Groovy DSL. This support allows for a better code editing experience, featuring auto-completion, quick access to documentation, source navigation, and context-aware refactoring.
This initial support was contributed by GitHub user bartekpacia. Developers can now choose to rewrite their Gradle build scripts in Kotlin to take advantage of these benefits, although the Flutter tool doesn’t yet allow for selecting Kotlin over Groovy when using flutter create.
For more details, check out the PR 140744 by bartekpacia.
Platform views improvements Heads up for all Flutter app developers! If you’re using Flutter to build apps that rely on native Android components (like maps, web views, or certain UI elements), we have some important news.
Due to a bug in Android 14, apps built with older versions of Flutter might not work properly on devices running this new Android version.
Flutter 3.22 fixes this issue and improves the overall performance of these native components in your Android apps. So, to ensure your app runs smoothly on all Android devices, make sure to rebuild and release your app with Flutter 3.22.
This update also includes behind-the-scenes improvements to make platform views on Android more reliable and performant overall.
End of support for KitKat Flutter’s minimum supported Android version is now Lollipop (API 21). Beginning with Flutter’s 3.22 stable release, Flutter will no longer work on devices running Android KitKat (API 19). For more details, see our deprecation guide.
iOS Platform view performance We understand that platform view performance on iOS has been a pain point for many Flutter developers. This has been especially noticeable within scroll views when using platform views.
Recent updates directly address these concerns, with significant improvements in scenarios like embedding multiple inline ads within an article. Here are some key improvements in our benchmark:
Reduced GPU usage: GPU usage has been reduced by 50%, leading to less power consumption and a potentially smoother user experience. Improved frame rendering: Average frame render times have decreased by 1.66ms (33%). Minimized jank: Worst-case frame render times have been reduced by 3.8ms (21%). If you’ve previously experienced performance challenges when using multiple platform views (like ads, maps, etc) within scrolling views, these optimizations offer the potential for a more fluid and responsive scrolling experience. Please give it a try and let us know what you think.
Ecosystem Vertex AI for Firebase Dart SDK preview release The Vertex AI for Firebase product has been released to public preview and includes the Dart SDK. This enables you to use the Gemini API to build generative AI features for your Dart or Flutter app, with production, performance and enterprise scale in mind. The SDK is integrated with Firebase App Check, which protects your API calls, and safeguards your backend infrastructure from serious threats like billing fraud, phishing, and app impersonation. Jump into the Getting Started for Dart and start using it with no cost with a promo code
The Google AI Dart SDK remains available, and is recommended for prototyping only. Google AI has free-of-charge access (within limits and where available) and pay-as-you-go pricing. If you have been prototyping with the Google AI Dart SDK, and are ready to migrate to Vertex AI for Firebase, check out the migration guide.
DevTools updates We continue to improve DevTools, the suite of performance and debugging tools for Dart and Flutter. This release includes performance improvements, general polish, and new features like including CPU samples in the timeline, advanced filtering, and support for importing and exporting memory snapshots.
Other notable improvements were shipped with the devtools_extensions and devtools_app_shared packages that support DevTools extension authors. We added support for connecting an extension to the new Dart Tooling Daemon (DTD), which allows DevTools extensions to access public methods registered by other DTD clients, such as an IDE, as well as allowing access to a minimal file system API for interacting with the development project.
To learn more about all the updates included in Flutter 3.22 check out the release notes for DevTools 2.32.0, 2.33.0, and 2.34.1.
Google Mobile Ads SDK for Flutter For those of you monetizing your Flutter apps with Ads, we’ve got some exciting news: Google Mobile Ads for Flutter has just released a major update to version 5.0.1!
Enhanced support for User Messaging Platform (UMP) SDK: The update adds support for the latest APIs from the Android UMP SDK version 2.2.0 and iOS UMP SDK version 2.4.0. The UMP SDK is crucial for complying with privacy regulations, making it easier for you to obtain user consent for personalized ads. This new version introduces several new APIs to simplify the consent gathering process.
Expanded mediation partners: We’ve broadened your ad monetization horizons by offering integrations with popular ad partners, including Unity, Meta, AppLovin, Iron Source, Mintegral, Pangle, DT Exchange, InMobi, and Liftoff. You can now maximize your app revenue with expanded mediation options and simplified implementation.
We encourage you to try out these new features in your Flutter apps and let us know which other mediation partners you’d like to see us support. Your feedback is invaluable as we continue to enhance the Google Mobile Ads SDK for Flutter.
Breaking Changes and Deprecations Removal of v1 Android embedding Deletion of version one of the Android embedding is under way. This will likely have no effect on most apps, as
Version two has been the default for many years The Flutter tool would already block building version one apps, unless specifically overridden with the flag -- ignore-deprecation. This release breaks Flutter tool support for v1 apps completely. It is no longer possible to override.
Plugin authors, please note: when the v1 android embedding was initially deprecated a migration doc was written for plugin authors at https://docs.flutter.dev/release/breaking-changes/plugin-api-migration. As part of this migration, it was recommended that plugin authors keep support for apps using the v1 embedding, by including in their *Plugin.java a method with the signature
public static void registerWith(@NonNull io.flutter.plugin.common.PluginRegistry.Registrar registrar)
We plan to fully delete the v1 Android embedding in the next release, at which point plugins that include a method with this signature will no longer compile (as it makes reference to a type from the v1 android embedding).
It currently serves no purpose, as this release has broken apps using the v1 embedding. We recommend that plugin authors release updated versions of their plugins with the v1 code removed as soon as possible, to avoid breakage in future versions of Flutter. For an example, check out PR 6494, which removed the plugins maintained by the Flutter team.
Deprecations removed in 3.22 Breaking changes in this release include deprecated APIs that expired after the release of v3.19. To see all affected APIs, along with additional context and migration guidance, see the deprecation guide for this release. Many of these are supported by Flutter fix, including quick fixes in the IDE. Bulk fixes can be evaluated and applied with the dart fix command-line tool.
As always, many thanks to the community for contributing tests — these help us identify these breaking changes. To learn more, check out Flutter’s breaking change policy.
Conclusion At the heart of Flutter’s success is you — our amazing community. This release wouldn’t be possible without your countless contributions and unwavering passion. From the bottom of our hearts, thank you.
Ready to explore Flutter 3.22? Dive into the full release notes and changelog, fire up your terminal, and run flutter upgrade. We can’t wait to see what you build!
저 짜증 잘 내요. 그런데 오래가지 않아요. 저 화 잘 나요. 그런데 화내지 않아요. 저 욕먹을 때도 있어요. 그런데 괜찮아요. 기분도 몸도 안 좋을 때가 많아요. 그런데 받아들여요. 무슨 일이 있어도 괜찮아요. 좋은 일 나쁜 일 둘 다 좋아요. 긍정의 태도는 놓지 않아요. 좋은 일도 나쁜 일도 없다는 걸 잘 알아요.
- 용수 스님의 《마음》 중에서 -
* 세상살이엔 좋은 일도 많고 나쁜 일도 많습니다. 아닙니다. 좋은 일도 없고 나쁜 일도 없습니다. 그러므로 무슨 일이 있어도 괜찮습니다. 나쁜 일도 좋은 일의 시작일 수가 있고, 좋은 일은 더 좋은 일의 디딤돌일 수 있기 때문입니다. 초긍정의 삶이 달인의 경지입니다.