The Final Review for DIP 1022, "foreach auto ref", is now
underway. Please do not leave any feedback in this thread, but
rather in the review thread in the General forum:
https://forum.dlang.org/post/ugkhpbbvqugvlafek...@forum.dlang.org
The author of DIP 1025, "Dynamic Arrays Only Shrink, Never Grow",
has withdrawn the DIP from consideration. The current round of
review has been terminated and the DIP has been removed from the
review queue.
https://forum.dlang.org/post/iouzzeyscvwekbsan...@forum.dlang.org
The first round of Community Review for DIP 1025, "Dynamic Arrays
Only Shrink, Never Grow", has begun. To participate, please visit
the review thread for the details:
https://forum.dlang.org/post/wvbeyxlcdthqvzsgl...@forum.dlang.org
*Please leave all feedback in the review thread rather than
On Sunday, 3 November 2019 at 13:35:36 UTC, Martin Nowak wrote:
Glad to announce D 2.089.0, ♥ to the 44 contributors.
The Blog:
https://dlang.org/blog/2019/11/06/dmd-2-089-0-released/
Reddit:
https://www.reddit.com/r/programming/comments/dsgrc2/d_20890_released/
On Wednesday, 6 November 2019 at 13:49:16 UTC, Ron Tarrant wrote:
On the one hand, it's nice to get a shiny, new version (thanks
to all involved), but is there any way the installer can be
more selective about what it tosses out so I don't have to
reconfigure GtkD libs, etc. in its
On Tuesday, 5 November 2019 at 03:04:30 UTC, Murilo wrote:
Oh, so they cover the costs if I can give an interesting talk?
I already had several ideas in mind to speak during DConf but I
never imagined that could get my costs covered.
If you submit a talk proposal and it's accepted, then you
On Sunday, 3 November 2019 at 00:51:38 UTC, Murilo wrote:
Hi guys. I'm eager to attend the next DConf, which is why I'm
already planning everything about how I will travel from Brazil
to the UK(or maybe Germany). When will you announce the place
and date of the next DConf?
When our plans are
BOSKorea has a few Korean programmers who had never used D before
joining the company. Now future hires can take the DLang Tour in
Korean. Thanks to Mathias Lang for initiating the translation
effort.
https://tour.dlang.org/tour/en/welcome/languages
The second round of Community Review for DIP 1024, "Shared
Atomics", has begun. To participate, please visit the review
thread for the details:
https://forum.dlang.org/post/jetqewtibsnrsdpcy...@forum.dlang.org
*Please leave all feedback in the review thread rather than here!*
Thanks!
On Wednesday, 23 October 2019 at 04:20:19 UTC, Exil wrote:
it's a bad idea. Why have two community reviews? Those are made
with the assumption that the DIP will actually change between
the reviews.
No, that's not the assumption. You're conflating Community Review
with Final Review. There
On Wednesday, 23 October 2019 at 04:20:19 UTC, Exil wrote:
Should create a DIPW process then, duck the foundation and any
formalities. Which stands for DIPWalter, which simply consists
of a single step where a single topic tries to convince Walter
it's a bad idea. Why have two community
DIP 1021, "Argument Ownership and Function Calls", has been
formally accepted with minor revision. It was updated to make
clear that the proposal is one piece of a bigger plan.
https://github.com/dlang/DIPs/blob/master/DIPs/accepted/DIP1021.md
The second round of Community Review for DIP 1022, "foreach auto
ref", has begun. To participate, please visit the review thread
for the details:
https://forum.dlang.org/post/kgfzzttzjwnmhmqca...@forum.dlang.org
*Please leave all feedback in the review thread rather than here!*
Thanks!
Shortly after DConf, I asked Átila to consider writing a blog
post once he got settled into his new role as a language
maintainer. I didn't have a clear idea of what the content should
be, but about three months ago GreatSam4sure requested in the
forums that Átila write a post about his vision
On Saturday, 5 October 2019 at 12:27:06 UTC, Mike Parker wrote:
On Saturday, 5 October 2019 at 02:59:58 UTC, Paul Backus wrote:
I was curious how C++17's std::variant compared to the options
we have in D, like Algebraic and SumType, so I did a simple
comparison of the generated assembly for
On Saturday, 5 October 2019 at 02:59:58 UTC, Paul Backus wrote:
I was curious how C++17's std::variant compared to the options
we have in D, like Algebraic and SumType, so I did a simple
comparison of the generated assembly for each of them. You can
read about it at the link below. And as you
The latest post on the blog details some new funding initiatives
from the D Language Foundation. This includes putting some of the
HR Fund to use and seeding the first two of a set of forthcoming
Bugzilla bounties.
The first round of Community Review for DIP 1024, "Shared
Atomics", has begun. To participate, please visit the review
thread for the details:
https://forum.dlang.org/post/wcoboszbrdgxcsidw...@forum.dlang.org
*Please leave all feedback in the review thread rather than here!*
Thanks!
On Monday, 30 September 2019 at 23:06:42 UTC, Guillaume Piolat
wrote:
Hello,
commonmark-d is a D translation of MD4C, a fast SAX-like
Markdown parser.
Thumbs up!
Andrea Fontana has contributed a guest post to the D blog about
his company's experience moving their online magazine from PHP to
D. Not only did they gain performance, they also saved quite a
bit of money as a result.
The blog:
The last chance for community feedback on DIP 1021, "Argument
Ownership and Function Calls", is now underway. Please do not
leave any feedback in this thread, but rather in the review
thread in the General forum:
https://forum.dlang.org/post/udqmnxucjsnuswdas...@forum.dlang.org
The second round of Community Review for DIP 1020, "Named
Parameters", has begun. To participate, please visit the review
thread for the details:
https://forum.dlang.org/post/guvpjsspfzaruimrm...@forum.dlang.org
*Please leave all feedback in the review thread rather than here!*
Thanks!
On Friday, 6 September 2019 at 14:15:14 UTC, JN wrote:
Minor typo in blog post: getAvaliable.
Thanks.
Could use some more descriptive title on reddit, because no one
who doesn't know D will click it. Perhaps something like "DMD
2.088.0 released - comes with std::string and std::vector
On Friday, 6 September 2019 at 14:32:21 UTC, Mike Parker wrote:
On Friday, 6 September 2019 at 14:15:14 UTC, JN wrote:
Minor typo in blog post: getAvaliable.
Thanks.
Could use some more descriptive title on reddit, because no
one who doesn't know D will click it. Perhaps something like
I've just published a new blog post announcing the 2.088.0
release of DMD and tacked on a few other news items at the end.
Most of it will not be news to readers of the forums, but please
keep an eye on the reddit comments if you've got time to spare.
Blog:
The first round of Community Review for DIP 1023, "Resolution of
Template Alias Formal Parameters in Template Functions", has
begun. To participate, please visit the review thread for the
details:
https://forum.dlang.org/post/dnyqxmgdazczwmmva...@forum.dlang.org
*Please leave all feedback in
On Sunday, 25 August 2019 at 13:38:24 UTC, Mike Parker wrote:
The Symmetry Autumn of Code 2019 application selection process
has come to an end. This year, we've got five projects instead
of three. Congratulations to everyone who was selected! You can
read about them and their projects over at
The Symmetry Autumn of Code 2019 application selection process
has come to an end. This year, we've got five projects instead of
three. Congratulations to everyone who was selected! You can read
about them and their projects over at the D Blog:
The last chance for community feedback on DIP 1019, "Named
Arguments Lite", is now underway. Please do not leave any
feedback in this thread, but rather in the review thread in the
General forum:
https://forum.dlang.org/post/gcirbltrwuhntbsvf...@forum.dlang.org
I want to thank everyone who has submitted an application to SAOC
2019. The application deadline has passed and we are no longer
accepting new applications.
This year, the SAOC committee consists of the following members:
John Colvin
Mathias Lang
Átila Neves
Robert Schadek
Ethan Watson
They
Thanks to BOS Platform Korea, the new Bug Bounty system is live.
Anyone willing to seed new bounties or increase the existing ones
is free to do so. We hope to see the number of bounties grow and
a few folks make some money from it. The details are in the blog
post:
The Symmetry Autumn of Code application deadline is this Sunday
(midnight AoE). If you haven't yet sent your application in, be
sure to read the SAOC page to make sure you get the details right.
https://dlang.org/blog/symmetry-autumn-of-code/
Don't be late!
Razvan Nitu and Eduard Staniloiu recently announced in the forums
that they taught a D Summer School at University POLITEHNICA of
Bucharest. They were kind enough to do a write-up for the D Blog.
Please give it a read and wish them luck for V2!
The blog:
The first round of Community Review for DIP 1022, "foreach auto
ref", has begun. To participate, please visit the review thread
for the details:
https://forum.dlang.org/post/nphczadgbedjzowuh...@forum.dlang.org
*Please leave all feedback in the review thread rather than here!*
In other DIP
On Friday, 2 August 2019 at 07:23:28 UTC, JN wrote:
By the way, why call it Digital Mars logo and not just D logo?
Because I think of it as the "Digital Mars D logo" as opposed to
the "D Rocket logo" or the "Royal D logo". I've renamed those
items to "Digital Mars D".
On Friday, 2 August 2019 at 01:13:33 UTC, James Blachly wrote:
Looking great. Can you set up die-cut stickers of the D Rocket
logo?
I've added standard stickers (round & square on the store page,
though you can select the shape during the order process) and
die-cut vinyl stickers. It
I know some of you have been waiting for this and I apologize for
the delay. You can now get your hands on some DLang swag and
support the D Language Foundation at the same time. See the blog
post for details:
https://dlang.org/blog/2019/08/01/the-dlang-swag-emporium-and-more/
Please let the talk be recorded So that people can watch it
later
Sorry, but we won’t be recording it this time. Maybe we can start
doing so at future meetups.
For the hordes of D programmers hiding somewhere in Seoul, Korea,
our next Seoul D meetup is at 7:00 PM on August, 14, at Hyundai
Studio Black near Gangnam Station. We've got ourselves a Meetup
page now [1], so we're moving up in the world.
We're calling the event "An Introduction to D" as
On Monday, 22 July 2019 at 14:04:32 UTC, rikki cattermole wrote:
https://dlang.org/blog/2019/07/22/symmetry-autumn-of-code-experience-report-porting-a-fork-based-gc/
Thanks!
Francesco Mecca ha written an experience report for the D Blog
about his SAOC 2018 project, porting Leandro Lucarella's old GC
from D1 to D2.
The blog:
https://dlang.org/blog/wp-admin/post.php?post=2148=edit
Reddit:
The first round of Community Review for DIP 1021, "Argument
Ownership and Function Calls", has begun. To participate, please
visit the review thread for the details:
https://forum.dlang.org/post/voxipsuzjjmuffwlw...@forum.dlang.org
*Please leave all feedback in the review thread rather than
In the Draft Review for Walter's DIP, Argument Ownership and
Function Calls (which in the next half hour or so will be
starting a community review as DIP 1021), some folks asked for
some information about the bigger picture. In response, Walter
has put together a post outlining his current
On Friday, 12 July 2019 at 17:27:36 UTC, Ron Tarrant wrote:
Okay, thanks, guys. That worked. Where I was trying to post was
r/dlang instead of r/d_language. Is r/dlang a defunct group?
The admin of it has never responded to our queries.
On Friday, 12 July 2019 at 11:49:26 UTC, Mike Parker wrote:
On Friday, 12 July 2019 at 11:23:29 UTC, Ron Tarrant wrote:
I decided to take matheus' (and others') advice and post the
gtkDcoding face-lift announcement on Reddit, but for some
reason, I have to get permission to post to the dlang
On Friday, 12 July 2019 at 11:23:29 UTC, Ron Tarrant wrote:
I decided to take matheus' (and others') advice and post the
gtkDcoding face-lift announcement on Reddit, but for some
reason, I have to get permission to post to the dlang group? I
was sure I'd done it before.
Anyway, I sent the
On Monday, 1 July 2019 at 09:24:31 UTC, Mike Parker wrote:
The D Language Foundation is partnering with Symmetry
Investments for the second Symmetry Autumn of Code. I've
written up a blog post about it [1] and updated the SAoC page
[2] with the new details.
Potential mentors, please be sure
On Thursday, 4 July 2019 at 08:11:26 UTC, Martin Nowak wrote:
Glad to announce D 2.087.0, ♥ to the 63 contributors.
This release comes with types matching single template alias
parameters, nested template methods/local template functions,
multi-threaded GC marking, and a phobos compiled with
The D Language Foundation is partnering with Symmetry Investments
for the second Symmetry Autumn of Code. I've written up a blog
post about it [1] and updated the SAoC page [2] with the new
details.
Potential mentors, please be sure to contact me or announce your
availability in the forums.
On Friday, 28 June 2019 at 07:52:59 UTC, Mike Parker wrote:
address DIPs in the review threads, but they are not required
I meant to say they're required to address *feedback* in the
review threads.
On Friday, 28 June 2019 at 07:22:56 UTC, Olivier FAURE wrote:
On Wednesday, 26 June 2019 at 10:51:33 UTC, Mike Parker wrote:
https://github.com/dlang/DIPs/pull/158
I'm going to be candid here:
Based on past experience, I'm worried that:
- This DIP will generate a lot of negative feedback.
-
Walter has a DIP currently in Draft Review that is a critical
feature for the implementation of safe ref counting. It needs to
have priority through the DIP process.
Before I move it to Community Review, it should be vetted for a
couple of weeks in the Draft Review. Anyone who has the time
The latest post from Kai Nacke shows how to use a fuzz-testing
tool called American Fuzzy Lop in conjunction with LDC to fuzz
test your D programs.
The blog:
https://dlang.org/blog/2019/06/25/fuzzing-your-d-application-with-ldc-and-afl/
Reddit:
On Sunday, 23 June 2019 at 05:19:41 UTC, Mike Parker wrote:
The details are in my latest blog post:
https://dlang.org/blog/2019/06/23/dconf-t-shirts-and-the-human-resource-fund/
On /r/d_language:
https://www.reddit.com/r/d_language/comments/c3zmbr/dconf_tshirts_and_the_human_resource_fund/
The details are in my latest blog post:
https://dlang.org/blog/2019/06/23/dconf-t-shirts-and-the-human-resource-fund/
Follow the instructions there to make a $60 donation to the HR
fund and receive a DConf 2019 t-shirt. DMan t-shirts and DConf
2020 discounts are also available for larger
I started writing this blog post shortly after I returned home
from DConf with a plan to publish it as soon as the videos were
all uploaded. It was a surprisingly difficult post to write. In
my revisions, I either had what I felt was too much detail or not
enough. Several revisions later, I
On Monday, 10 June 2019 at 13:49:27 UTC, Mike Parker wrote:
DIP 1013, "The Deprecation Process", has been accepted.
After six months without a response from the DIP author, I
decided to move this DIP out f Post-Final and into Formal
Assessment rather than marking it as Abandoned. It's a
DIP 1013, "The Deprecation Process", has been accepted.
After six months without a response from the DIP author, I
decided to move this DIP out f Post-Final and into Formal
Assessment rather than marking it as Abandoned. It's a simple DIP
and it was the last stage of the process, so it seemed
On Thursday, 6 June 2019 at 02:26:11 UTC, Mike Parker wrote:
On Wednesday, 5 June 2019 at 08:52:41 UTC, Mike Parker wrote:
On Wednesday, 5 June 2019 at 02:37:57 UTC, Mike Parker wrote:
The DConf 2019 playlist is available at:
On Friday, 7 June 2019 at 11:19:07 UTC, Paolo Invernizzi wrote:
On Friday, 7 June 2019 at 11:02:29 UTC, mate wrote:
On Friday, 7 June 2019 at 10:57:42 UTC, Mike Parker wrote:
No, the text is correct as published. See Andrei's
announcement at the beginning of the AGM:
On Friday, 7 June 2019 at 10:50:37 UTC, mate wrote:
Thanks for your work.
In the blog post did not you rather mean the following?
Any fundamental structural changes will need approval by
Walter and Andrei.
If yes please review the penultimate sentence of the post.
No, the text is
On Wednesday, 5 June 2019 at 08:52:41 UTC, Mike Parker wrote:
On Wednesday, 5 June 2019 at 02:37:57 UTC, Mike Parker wrote:
The DConf 2019 playlist is available at:
https://www.youtube.com/playlist?list=PLIldXzSkPUXWORGtUrnTo2ylziTHR8_Sq
Walter's keynote is up now. Others will be available
The second round of Community Review for DIP 1019, "Named
Arguments Lite", has begun. To participate, please visit the
review thread for the details:
https://forum.dlang.org/post/sbkftyukevoydivap...@forum.dlang.org
*Please leave all feedback in the review thread rather than here!*
And
On Wednesday, 5 June 2019 at 02:37:57 UTC, Mike Parker wrote:
The DConf 2019 playlist is available at:
https://www.youtube.com/playlist?list=PLIldXzSkPUXWORGtUrnTo2ylziTHR8_Sq
Walter's keynote is up now. Others will be available soon.
Again, I can't predict how long until they're all up,
On Tuesday, 4 June 2019 at 09:58:26 UTC, Mike Parker wrote:
I can't predict how long it will take, but when I get the first
one uploaded I'll post a notification in this thread so that
everyone can follow as they go up. I'll go in the order of the
schedule from Day 1 to Day 3.
The DConf
In response to concerns raised at the DConf AGM (and also
feedback here in the forums), I've updated the documentation for
the DIP process and the DIP author guidelines, and I've added
guidelines for reviewers. It's all summarized in this blog post:
It took a few days longer than anticipated, but I've just
received the link where I can download all of the DConf 2019
videos. I ask for a little more patience. I'm in the middle of
getting the DIP process sorted, but I'll be wrapping that up
shortly and will subsequently put all my focus on
On Friday, 17 May 2019 at 15:41:30 UTC, dayllenger wrote:
On Friday, 17 May 2019 at 13:39:35 UTC, drug wrote:
First of all, you are totally wrong.
Crimea ...
It's not a fact, it's just your opinion, very similar to one
that russian federal TV transmits.
And the last but no least - nobody
I've fallen quite far behind on my email correspondence in the
past two weeks. I'm decompressing from some serious jet lag right
now, but I've begun trying to catch up. If you've emailed me
recently and receive no reply by the end of this weekend, please
ping me.
On Monday, 13 May 2019 at 22:36:13 UTC, John Carter wrote:
On Wednesday, 8 May 2019 at 08:50:15 UTC, Mike Parker wrote:
Jens Mueller is speaking after Walter. His slides can be found
here:
Thanks for what you are doing here, I have looked at them all!
Is there a video and/or slides for
Anyone interested in the AGM can watch it at the following link.
You can leave feedback there, in IRC, or in Discord.
https://youtu.be/cpTAtiboIDs
Ali Çehreli closes out Day 3:
https://drive.google.com/open?id=1Q1CS-TAtp25ofQYlsSq8TQQ3aZMJ_TdF
On Friday, 10 May 2019 at 13:29:51 UTC, Les De Ridder wrote:
On Friday, 10 May 2019 at 07:10:25 UTC, Mike Parker wrote:
Join us on YouTube again for Day 3:
https://www.youtube.com/watch?v=nIXvs3mIg-E=youtu.be
Did anyone make a local copy of today's livestream by any
chance? YouTube seems to
John Colvin is up after Ethan:
https://drive.google.com/open?id=1uQFpdD2MZAqNrbW6SSRzPpNn0G0yiK14
Steven Schveighoffer is up after Bastiaan. His slides are here:
https://drive.google.com/open?id=13drfMduAOAJS9tLzsXvzieoc3qf6h0Bj
The second talk is by Bastiaan Veelo:
https://www.dropbox.com/s/c7is19vh6iizb9n/Veelo_DConf_2019.pdf?dl=0
The slides for Andrei's keynote can be found here:
https://drive.google.com/open?id=1nrya9553FSMyBfLUmioYovVbqOoYycMe
Join us on YouTube again for Day 3:
https://www.youtube.com/watch?v=nIXvs3mIg-E=youtu.be
For the Lightning Talks, some of the speakers have slides, some
do not. If there are no links below a speaker's name in the
following list, there are no slides. They'll be speaking in this
order:
1) Stefan Koch
2) Rainer Schütze
Eduard Staniloiu is up next:
https://drive.google.com/open?id=1HaBSASSnA9DTJnVTCjQ-fAG0znccvrnb
Followed by Alexandru Militaru:
https://drive.google.com/open?id=1cV2HYGkznFIHTc0QsbRykoi4Pm_1RTZM
Sorry everyone. I forgot to post Atila's slides:
https://drive.google.com/open?id=11tY2DfPLIqDSA9lkIa3mIAdRNVXbFlAm
Laeeth's Keynote is the first talk after lunch. His slides can be
found here:
https://github.com/Laeeth/keynote/blob/master/keynote.pdf
Please note that these slide links are not permanent. Once we
have them uploaded to the DConf website I'll be deleting them
from my Drive account.
Luís Marques's slides are available here:
https://drive.google.com/open?id=1zYMNne27lXqiRZzeGsAOoKOuYBGas_Gt
Our modified schedule for today looks like this (times in BST):
09:00 Francesco Gallà
10:00 Mathis Beer
11:00 Luís Marques
12:00 Lunch
13:30 Laeeth Isharc
14:30 Átila Neves
15:30 Eduard Staniloiu
16:00 Alexandru Militaru
16:30 Lightning Talks
Sebastian Wilzbach is up after Lio. His slides are online here:
https://dlang.rocks/contribute
On Wednesday, 8 May 2019 at 13:14:05 UTC, RazvanN wrote:
Will the recordings be uploaded somewhere (preferably youtube)?
YouTube in approximately two weeks.
On Wednesday, 8 May 2019 at 13:22:46 UTC, Mike Parker wrote:
The venue is not recording the videos through WebEx, so there's
nothing to publish. There's another guy running a separate
camera for the recordings.
And he can't give me an exact date on when the videos will be
ready for upload
On Wednesday, 8 May 2019 at 12:30:03 UTC, Dibyendu Majumdar wrote:
I am able to watch on Webex but I can't rewind back to the
morning presentations. Webex allows the recordings to be
published I think - can they be made available?
Thanks
The venue is not recording the videos through
On Wednesday, 8 May 2019 at 10:13:35 UTC, Ethan wrote:
Good news everyone! A Youtube stream will be arriving after the
lunch break.
Cheers for your patience.
Now I get to bring the bad news. There's an issue right now with
YouTube flipping the video horizontally in the livestream such
Robert Schadek's talk is the first one after lunch. His slides
are here:
https://drive.google.com/open?id=1_oSYdva4Xa-NMHqq0lFwPhpxww0t9JNX
On Wednesday, 8 May 2019 at 09:28:26 UTC, Dukc wrote:
On Wednesday, 8 May 2019 at 07:57:40 UTC, Mike Parker wrote:
The venue uses WebEx for livestreaming. All the information is
available in this PDF:
Why does the Webex plugin need access to data from all intenet
tabs, and outside the
Razvan Nitu's slides:
https://drive.google.com/open?id=1T6UEDAnQ0gUWc2K_uKuce-LjGDKy9IHC
I'll be posting links to the slides for each talk here before the
talk. Please don't comment in this thread so that everyone can
easily find the links.
Jens Mueller is speaking after Walter. His slides can be found
here:
https://drive.google.com/open?id=13q4YRvZ7anaWkwYmz01Qke7JcqeftD7J
On Wednesday, 8 May 2019 at 08:12:00 UTC, Bogdan wrote:
Probably not many people will watch the stream. Is it possible
to upload the stream on youtube at the end of the day?
I expect not, but I'll check into it.
On Wednesday, 8 May 2019 at 08:00:15 UTC, Andrej Mitrovic wrote:
On Wednesday, 8 May 2019 at 07:57:40 UTC, Mike Parker wrote:
The venue uses WebEx for livestreaming. All the information is
available in this PDF:
https://drive.google.com/open?id=1yekllbfOmxHqJNuuWIVeP9vNeROmfp1I
"When
The venue uses WebEx for livestreaming. All the information is
available in this PDF:
https://drive.google.com/open?id=1yekllbfOmxHqJNuuWIVeP9vNeROmfp1I
Victor Porton shows how he uses string mixins to generate structs
with Nullable fields at compile time to help him pass arbitrary
subsets of explicit and default arguments to functions in D.
The blog:
https://dlang.org/blog/2019/04/29/flexible-default-function-parameters/
Reddit:
To coincide with the announcement of DStep 1.0.0, Jacob submitted
a post to the D Blog that goes into detail on all the new stuff
included in this release.
The blog:
https://dlang.org/blog/2019/04/22/dstep-1-0-0/
Reddit:
On Wednesday, 17 April 2019 at 18:51:19 UTC, Jacob Carlborg wrote:
Looking at the Ecosystem Task List, I had expected something
more specific than just "close as many bugs as possible" for
various projects.
That's how I initially envisioned it. But on reflection, that's
probably not the
501 - 600 of 1062 matches
Mail list logo